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

Хэрэв та DevOps-т шинээр орсон бол анхны шугамаа үүсгэх таван алхамт гарын авлагыг үзээрэй.

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

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

Миний DevOps аялал

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

Номын арын хүснэгтэд янз бүрийн компаниуд системээ гаргах орчинд хэр олон удаа байрлуулдгийг харуулав.

Амазон: өдөрт 23
Google: Өдөрт 5
Netflix: өдөрт 500
Facebook: Өдөрт нэг удаа
Twitter: Долоо хоногт 3 удаа
Ердийн компани: 9 сар тутамд нэг удаа

Амазон, Google болон Netflix-ийн давтамжийг яаж ашиглах боломжтой вэ? Учир нь эдгээр компаниуд бараг төгс DevOps дамжуулах хоолойг хэрхэн бүтээх талаар олж мэдсэн.

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

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

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

DevOps болон CI/CD дамжуулах хоолойн товч танилцуулга

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

Өмнө нь гараар хийж байсан үйлдлүүдийг автоматжуулсан;
Хүн бүр хамгийн сайн хийдэг зүйлээ хийдэг;
Тодорхой хугацааны туршид хэрэгжүүлэлтийн тоо нэмэгддэг; Дамжуулах чадвар нэмэгддэг;
Хөгжлийн уян хатан байдал нэмэгдсэн.

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

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

Алхам 1: CI/CD аргууд

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

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

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

Женкинс: Creative Commons ба MIT
Travis CI: MIT
Cruise Control: BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Cabie: GNU

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

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

Таны localhost дээр ажиллаж байгаа CI/CD хэрэгсэл байгаа ч одоогоор та хийж чадах зүйл алга. DevOps аяллын дараагийн шат руу орцгооё.

Алхам 2: Эх сурвалжийн хяналтын системийг удирдах

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

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

Хэдийгээр эх сурвалжийг хянах олон хэрэгслүүд байдаг ч Git бол стандарт бөгөөд энэ нь зөв юм. Хэрэв та хүсвэл бусад нээлттэй эхийн сонголтууд байгаа ч би Git-г ашиглахыг зөвлөж байна.

Git: GPLv2 ба LGPL v2.1
Хувилбар: Apache 2.0
Concurrent Versions System (CVS): GNU
Барилга: LGPL
Меркуриал: GNU GPL v2+

Эх кодын хяналтыг нэмснээр DevOps дамжуулах хоолой ийм харагдаж байна.

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

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

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

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

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

Гарчиг
Тусгай зөвшөөрөл
Програмчлалын хэл

Модон
Apache 2.0
Java

Ant
Apache 2.0
Java

Хөвөө
Apache 2.0
Java

Базел
Apache 2.0
Java

Ид шид,
GNU
N / A

хурхирах
MIT
JavaScript

Гулсах
MIT
JavaScript

Барилгачин
Апачи
Ruby

Тармуур
MIT
Ruby

AAP
GNU
Python

Скон
MIT
Python

BitBake
GPLv2
Python

Бялуу
MIT
C#

ASDF
Экспат (MIT)
LISP

Кабал
BSD
Хасселл

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

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

Бүх зүйл сайхан байна, тийм үү? Гэхдээ програмаа хаана байрлуулах вэ?

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

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

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

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

Гарчиг
Тусгай зөвшөөрөл
Програмчлалын хэл

Tomcat
Apache 2.0
Java

Jetty
Apache 2.0
Java

WildFly
GNU Lesser Public
Java

Шилэн загас
CDDL & GNU Олон нийтэд бага
Java

Django
BSD 3-р зүйл
Python

Торнадо
Apache 2.0
Python

Буу эвэрт
MIT
Python

Python
MIT
Python

Төмөр зам
MIT
Ruby

Node.js
MIT
Javascript

Таны DevOps дамжуулах хоолой ашиглахад бараг бэлэн боллоо. Сайн ажил!

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

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

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

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

Кодын тест нь тест бичих, ажиллуулахад туслах кодын тестийн хүрээ, кодын чанарыг сайжруулахад туслах санал болгох хэрэгслүүд гэсэн хоёр хэсгээс бүрдэнэ.

Кодын туршилтын систем

Гарчиг
Тусгай зөвшөөрөл
Програмчлалын хэл

JUnit
Eclipse нийтийн лиценз
Java

EasyMock
Апачи
Java

мокито
MIT
Java

PowerMock
Apache 2.0
Java

Питест
MIT
Python

Таамаглал
Mozilla
Python

Хортой
MIT
Python

Кодыг сайжруулах зөвлөмжийн системүүд

Гарчиг
Тусгай зөвшөөрөл
Програмчлалын хэл

Кобертура
GNU
Java

CodeCover
Eclipse Public (EPL)
Java

Хамрах хүрээ.py
Apache 2.0
Python

Эмма
Нийтийн нийтийн лиценз
Java

JaCoCo
Eclipse нийтийн лиценз
Java

Таамаглал
Mozilla
Python

Хортой
MIT
Python

Жасмин
MIT
JavaScript

карма
MIT
JavaScript

Mocha
MIT
JavaScript

байна
MIT
JavaScript

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

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

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

Контейнер

Миний хэлсэнчлэн та серверээ виртуал машин эсвэл сервер дээр байршуулж болно, гэхдээ контейнер бол түгээмэл шийдэл юм.

Контейнер гэж юу вэ? Богино тайлбар нь виртуал машинд програмын хэмжээнээс хэтэрсэн асар их хэмжээний үйлдлийн системийн санах ой хэрэгтэй байдаг бол контейнерт програмыг ажиллуулахын тулд хэдхэн номын сан, тохиргоо хэрэгтэй. Мэдээжийн хэрэг, виртуал машинд чухал ач холбогдолтой хэрэглээ байсаар байгаа ч контейнер нь програм, түүний дотор програмын серверийг байрлуулахад хялбар шийдэл юм.

Бусад савны сонголтууд байдаг ч хамгийн алдартай нь Docker болон Kubernetes юм.

Докер: Apache 2.0
Kubernetes: Apache 2.0

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

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

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

Хариулт: GNU Public
SaltStack: Apache 2.0
Тогооч: Apache 2.0
Хүүхэлдэй: Apache эсвэл GPL

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

SkillFactory-аас төлбөртэй онлайн сургалтанд хамрагдан ур чадвар, цалингийн хувьд хэрхэн эрэлттэй мэргэжлийг эхнээс нь авах эсвэл Level Up хийх талаар дэлгэрэнгүй мэдээлэл аваарай.

илүү олон курс

Хэрэгцээтэй

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

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