Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох
Эхлэгчдэд зориулж таван алхамаар анхны DevOps сүлжээгээ бүтээж байна.

DevOps нь хэт удаан, салангид, бусад асуудалтай хөгжлийн процессуудад эм тариа болсон. Гэхдээ танд DevOps дээр хамгийн бага мэдлэг хэрэгтэй. Энэ нь DevOps гинжин хэлхээ, хэрхэн таван алхам тутамд нэгийг бий болгох зэрэг ойлголтуудыг хамрах болно. Энэ бол бүрэн гарын авлага биш, зөвхөн "загас" -ыг өргөжүүлэх боломжтой. Түүхээс эхэлье.

Миний DevOps-ийн танилцуулга

Би өмнө нь Citi Group-т үүлтэй ажиллаж, Citi-ийн үүлэн дэд бүтцийг удирдах IaaS вэб программыг хөгжүүлдэг байсан ч хөгжүүлэлтийн сүлжээг хэрхэн оновчтой болгох, хөгжүүлэгчдийн соёлыг сайжруулах талаар үргэлж сонирхож ирсэн. Манай үүлэн архитектур, дэд бүтцийн ерөнхий захирал Грег Лавандер энэ номыг надад санал болгосон. Финикс төсөл. Энэ нь DevOps зарчмуудыг сайхан тайлбарлаж, роман шиг уншдаг.

Ар талд байгаа хүснэгтэд компаниуд хэр олон удаа шинэ хувилбар гаргаж байгааг харуулж байна:

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Амазон, Google болон Netflix хэрхэн ийм их хэмжээгээр гарч чадаж байна вэ? Энэ нь маш энгийн: тэд бараг төгс DevOps сүлжээг хэрхэн бий болгохыг олж мэдсэн.

Биднийг DevOps руу шилжих хүртэл Citi-д бүх зүйл тэс өөр байсан. Дараа нь манай баг өөр өөр орчинтой байсан ч бид хөгжүүлэлтийн серверт хүргэх ажлыг гараар хийсэн. Бүх хөгжүүлэгчид IBM WebSphere Application Server Community Edition дээр суурилсан зөвхөн нэг хөгжүүлэлтийн серверт хандах эрхтэй байсан. Нэгэн зэрэг хүргэх гэж оролдоход сервер "унасан" бөгөөд тэр болгонд бид өөр хоорондоо "зовлонтой" хэлэлцээр хийх шаардлагатай болсон. Мөн бид тестийн кодын хамрах хүрээ хангалтгүй, гар аргаар хүргэх үйл явц нь цаг хугацаа их шаарддаг бөгөөд зарим даалгавар эсвэл үйлчлүүлэгчийн шаардлагын тусламжтайгаар кодыг хүргэхийг хянах боломжгүй байсан.

Яаралтай ямар нэг зүйл хийх шаардлагатай байгаа нь тодорхой байсан тул би нэг санаа нэгтэй хамт олонтой болсон. Бид хамтдаа анхны DevOps сүлжээг бий болгохоор шийдсэн - тэр виртуал машин болон Tomcat програмын серверийг суулгасан бөгөөд би Женкинс, Atlassian Jira болон BitBucket-тай нэгтгэх, мөн тестүүдтэй кодын хамрах хүрээг хамарсан. Төсөл амжилттай болсон: бид хөгжүүлэлтийн сүлжээг бүрэн автоматжуулж, хөгжүүлэлтийн сервер дээр бараг 100% ажиллах боломжтой болсон, тестийн тусламжтайгаар кодын хамрах хүрээг хянаж, сайжруулах боломжтой болсон, Гит салбарыг Jira хүргэлт, асуудалтай холбож болно. Мөн бидний DevOps сүлжээг бүтээхэд ашигласан бараг бүх хэрэгслүүд нээлттэй эх сурвалж байсан.

Үнэн хэрэгтээ бид Jenkins эсвэл Ansible ашиглан дэвшилтэт тохиргоог ашиглаагүй тул гинжийг хялбаршуулсан. Гэхдээ бид амжилтанд хүрсэн. Магадгүй энэ нь зарчмын үр дагавар байж болох юм Парето (80/20 дүрэм гэх мэт).

DevOps болон CI/CD хэлхээний товч тайлбар

DevOps нь өөр өөр тодорхойлолттой байдаг. DevOps нь Agile шиг өөр өөр салбаруудыг агуулдаг. Гэхдээ ихэнх нь дараахь тодорхойлолттой санал нийлэх болно: DevOps бол програм хангамжийг хөгжүүлэх арга буюу амьдралын мөчлөг бөгөөд гол зарчим нь хөгжүүлэгчид болон бусад ажилчид "ижил долгионы урттай", гар хөдөлмөр автоматжуулсан соёлыг бий болгох явдал юм. Хүн бүр хамгийн сайн чаддаг зүйлээ хийдэг, хүргэлтийн давтамж нэмэгдэж, ажлын бүтээмж нэмэгдэж, уян хатан байдал нэмэгддэг.

Зөвхөн хэрэгсэл нь DevOps орчинг бий болгоход хангалтгүй ч зайлшгүй шаардлагатай. Эдгээрээс хамгийн чухал нь тасралтгүй интеграци ба тасралтгүй хүргэх (CI/CD) юм. Хүрээлэн буй орчин бүрийн хувьд гинжин хэлхээнд өөр өөр үе шатууд байдаг (жишээ нь: DEV (хөгжүүлэлт), INT (интеграцчлал), TST (туршилт), QA (чанарын баталгаажуулалт), UAT (хэрэглэгчийн хүлээн авах туршилт), STG (бэлтгэл), PROD (ашиглалт)) , гарын авлагын даалгавруудыг автоматжуулсан, хөгжүүлэгчид чанартай код гаргаж, түүнийг хүргэж, хялбархан дахин бүтээх боломжтой.

Энэхүү тэмдэглэл нь нээлттэй эхийн хэрэгслүүдийг ашиглан доорх зурагт үзүүлсэн шиг таван алхмаар DevOps сүлжээг хэрхэн үүсгэхийг тайлбарласан болно.

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Ажилдаа орцгооё.

Алхам 1: CI/CD платформ

Юуны өмнө танд CI/CD хэрэгсэл хэрэгтэй. Женкинс бол MIT-ийн лицензтэй, Java хэл дээр бичигдсэн, DevOps хөдөлгөөнийг дэлгэрүүлж, CICD-ийн де факто стандарт болсон нээлттэй эхийн CI/CD хэрэгсэл юм.

Женкинс гэж юу вэ? Танд олон төрлийн үйлчилгээ, хэрэгслүүдийн ид шидийн хяналтын самбар байгаа гэж төсөөлөөд үз дээ. Женкинс шиг CI/CD хэрэгсэл нь дангаараа ашиггүй боловч өөр өөр хэрэгсэл, үйлчилгээтэй бол энэ нь үнэхээр хүчирхэг болдог.

Женкинсээс гадна өөр олон нээлттэй эхийн хэрэгслүүд байдаг бөгөөд аль нэгийг нь сонго.

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

DevOps процесс нь CI/CD хэрэглүүртэй хэрхэн харагдахыг эндээс үзнэ үү

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Танд localhost-д CI / CD хэрэгсэл байгаа ч хийх зүйл одоогоор алга. Дараагийн алхам руугаа явцгаая.

Алхам 2: Хувилбарын хяналт

CI/CD хэрэгслийн ид шидийг шалгах хамгийн сайн (мөн хамгийн хялбар) арга бол үүнийг эх сурвалжийн удирдлагын удирдлагын (SCM) хэрэгсэлтэй нэгтгэх явдал юм. Яагаад танд хувилбарын хяналт хэрэгтэй байна вэ? Та өргөдөл гаргаж байна гэж бодъё. Та үүнийг Java, Python, C++, Go, Ruby, JavaScript эсвэл вагон, жижиг тэрэг гэх мэт бусад хэлээр бичнэ. Таны бичсэн зүйлийг эх код гэж нэрлэдэг. Эхлээд, ялангуяа та ганцаараа ажиллаж байгаа бол бүх зүйлийг дотоод лавлах руу хадгалах боломжтой. Гэхдээ төсөл өсч, илүү олон хүн нэгдэхийн хэрээр танд кодын өөрчлөлтийг хуваалцах арга хэрэгтэй боловч өөрчлөлтийг нэгтгэх үед зөрчилдөөнөөс зайлсхийх хэрэгтэй. Мөн та нөөц хуулбарыг ашиглахгүйгээр, кодын файлуудыг хуулж буулгах аргыг ашиглахгүйгээр өмнөх хувилбаруудаа ямар нэгэн байдлаар сэргээх хэрэгтэй.

Мөн энд SCM-гүй хаана ч байхгүй. SCM нь кодыг хадгалах газарт хадгалж, түүний хувилбаруудыг удирдаж, хөгжүүлэгчид хооронд зохицуулдаг.

Олон SCM хэрэгслүүд байдаг ч Git нь бодит стандарт болсон. Би үүнийг ашиглахыг зөвлөж байна, гэхдээ өөр сонголтууд байдаг.

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

SCM-г нэмсний дараа DevOps дамжуулах хоолой хэрхэн харагдахыг энд харуулав.

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

CI/CD хэрэгсэл нь эх кодыг байршуулах, татаж авах, багийн хамтын ажиллагааг автоматжуулах боломжтой. Муугүй шүү? Харин одоо үүнээс хэдэн тэрбум хэрэглэгчдийн дуртай программыг хэрхэн хийх вэ?

Алхам 3: Автоматжуулалтын хэрэгсэл бүтээх

Бүх зүйл байх ёстой шигээ явж байна. Та код байршуулж, эх сурвалжийн хяналтад өөрчлөлт оруулах, мөн найзуудаа тантай хамтран ажиллахыг урих боломжтой. Гэхдээ танд одоогоор апп байхгүй байна. Энэ нь вэб програм байхын тулд үүнийг тараах зорилгоор эмхэтгэн багцалсан эсвэл гүйцэтгэх файл болгон ажиллуулах ёстой. (JavaScript эсвэл PHP гэх мэт тайлбарласан програмчлалын хэлийг эмхэтгэх шаардлагагүй.)

Барилгын автоматжуулалтын хэрэгслийг ашиглана уу. Таны сонгосон аль ч хэрэгсэл нь кодыг зөв форматаар цуглуулж, цэвэрлэх, эмхэтгэх, турших, хүргэх ажлыг автоматжуулах болно. Бүтээлийн хэрэгслүүд нь хэлнээсээ хамаарч өөр өөр байдаг ч дараах нээлттэй эхийн сонголтуудыг ихэвчлэн ашигладаг.

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Төгс! Одоо CI/CD хэрэглүүр бүтээхийн тулд бүтээх автоматжуулалтын хэрэгслийн тохиргооны файлуудыг эх сурвалжийн удирдлагад оруулъя.

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Сайхан санагдаж байна. Гэхдээ энэ бүхэн одоо хаана байна вэ?

Алхам 4: Вэб програмын сервер

Тиймээс, танд гүйцэтгэх эсвэл тарааж болох багцалсан файл байна. Аппликешн үнэхээр хэрэгтэй байхын тулд ямар нэгэн үйлчилгээ эсвэл интерфейстэй байх ёстой, гэхдээ та бүгдийг нь хаа нэгтээ байрлуулах хэрэгтэй.

Вэб програмыг вэб програмын сервер дээр байрлуулж болно. Програмын сервер нь багцалсан логикийг гүйцэтгэх, интерфэйс гаргах, вэб үйлчилгээг залгуураар харуулах орчинг бүрдүүлдэг. Програмын серверийг суулгахын тулд танд HTTP сервер болон бусад цөөн хэдэн орчин (жишээ нь виртуал машин) хэрэгтэй. Одоохондоо та энэ бүх асуудлыг шийдэж байгаа мэт дүр эсгэе (хэдийгээр би савны талаар доор ярих болно).

Нээлттэй вэб програмын хэд хэдэн серверүүд байдаг.

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Бидэнд бараг ажиллаж байгаа DevOps сүлжээ бий. Сайн ажил!

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Зарчмын хувьд та энд зогсоож болно, дараа нь та өөрөө үүнийг зохицуулж чадна, гэхдээ кодын чанарын талаар ярих нь зүйтэй.

Алхам 5: Туршилтын хамрах хүрээ

Туршилт хийхэд маш их цаг хугацаа, хүчин чармайлт шаардагддаг боловч алдааг даруй олж, эцсийн хэрэглэгчдэд таалагдахын тулд кодыг сайжруулах нь дээр. Энэ зорилгоор кодыг туршихаас гадна түүнийг хэрхэн сайжруулах талаар зөвлөгөө өгөх олон нээлттэй хэрэгслүүд байдаг. Ихэнх CI/CD хэрэгслүүд нь эдгээр хэрэгслүүдэд холбогдож үйл явцыг автоматжуулах боломжтой.

Туршилтыг хоёр хэсэгт хуваадаг: тест бичих, гүйцэтгэх тестийн хүрээ, кодын чанарыг сайжруулах зөвлөмж бүхий хэрэгслүүд.

Туршилтын хүрээ

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Чанартай зөвлөмж бүхий хэрэгслүүд

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

C++ болон C# нь хувийн өмч учраас эдгээр хэрэгслүүд болон хүрээний ихэнх нь Java, Python болон JavaScript-д зориулагдсан болно (хэдийгээр GCC нь нээлттэй эх сурвалж юм).

Бид туршилтын хамрах хүрээний хэрэгслүүдийг ашигласан бөгөөд одоо DevOps дамжуулах шугам нь сургалтын эхэнд байгаа зураг шиг харагдах ёстой.

Нэмэлт алхамууд

Контейнер

Өмнө нь хэлсэнчлэн, програмын серверийг виртуал машин эсвэл серверт байрлуулж болох боловч контейнерууд илүү түгээмэл байдаг.

Контейнер гэж юу вэ? Товчоор хэлбэл, виртуал машинд үйлдлийн систем нь ихэвчлэн програмаас илүү зай эзэлдэг бөгөөд ихэвчлэн цөөн тооны номын сан, тохиргоотой контейнер хангалттай байдаг. Зарим тохиолдолд виртуал машинууд зайлшгүй шаардлагатай байдаг ч контейнер нь нэмэлт зардалгүйгээр програмыг сервертэй хамт байрлуулах боломжтой.

Контейнерын хувьд Docker болон Kubernetes-ийг ихэвчлэн авдаг, гэхдээ бусад сонголтууд байдаг.

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Докер ба Кубернетесийн тухай нийтлэлүүдийг эндээс уншина уу opensource.com:

Дунд програмын автоматжуулалтын хэрэгслүүд

Манай DevOps сүлжээ нь программыг хамтран бүтээх, хүргэхэд чиглэдэг боловч DevOps хэрэгслээр хийх бусад сонирхолтой зүйлс бий. Жишээлбэл, дэд бүтцийг код (IaC) хэрэглүүр болгон ашиглаж, дунд програмын автоматжуулалтын хэрэгсэл гэж нэрлэдэг. Эдгээр хэрэгслүүд нь дунд програмыг суулгах, удирдах болон бусад ажлыг автоматжуулахад тусалдаг. Жишээлбэл, автоматжуулалтын хэрэгсэл нь зөв тохиргоотой програмуудыг (вэб програмын сервер, мэдээллийн сан, хяналтын хэрэгсэл) авч, програмын сервер рүү түлхэж болно.

Нээлттэй дунд програм хангамжийн автоматжуулалтын хэрэгслүүдийн зарим сонголтууд энд байна:

Dummies гарын авлага: Нээлттэй эхийн хэрэгслээр DevOps сүлжээг бий болгох

Нийтлэл дэх дэлгэрэнгүй мэдээлэл opensource.com:

Одоо юу гэж?

Энэ бол мөсөн уулын зөвхөн үзүүр юм. DevOps сүлжээ нь илүү их зүйлийг хийж чадна. CI/CD хэрэгслээр эхэлж, ажлаа хөнгөвчлөх өөр юуг автоматжуулж болохыг хараарай. тухай мартаж болохгүй нээлттэй харилцааны хэрэгсэл үр дүнтэй хамтын ажиллагааны төлөө.

Эхлэгчдэд зориулсан илүү сайн DevOps нийтлэлүүд энд байна:

Та мөн DevOps-ийг нээлттэй agile хэрэгслээр нэгтгэж болно:

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх