Хэрэв та DevOps-т шинээр орсон бол анхны шугамаа үүсгэх таван алхамт гарын авлагыг үзээрэй.
DevOps нь удаан, салангид эсвэл эвдэрсэн програм хангамж хөгжүүлэх процессыг засах стандарт шийдэл болсон. Асуудал нь хэрэв та DevOps-т шинээр орсон бөгөөд хаанаас эхлэхээ мэдэхгүй байгаа бол эдгээр аргуудын талаар ойлголт дутмаг байж магадгүй юм. Энэ нийтлэл нь DevOps дамжуулах хоолойн тодорхойлолтыг авч үзэх бөгөөд үүнийг үүсгэх таван алхамтай зааварчилгааг өгөх болно. Хэдийгээр энэ заавар нь бүрэн дүүрэн биш ч гэсэн энэ нь танд аялалаа эхлүүлж, ирээдүйд мэдлэгээ өргөжүүлэх үндэс суурийг өгөх болно. Гэхдээ түүхээс эхэлье.
Миний DevOps аялал
Би өмнө нь Citi-ийн үүлэн дэд бүтцийг удирдахын тулд Infrastructure-as-a-Service (IaaS) вэб программыг боловсруулахаар Citi Group-ийн үүлэн баг дээр ажиллаж байсан боловч хөгжүүлэлтийн үйл явцыг хэрхэн илүү үр дүнтэй болгох, соёлын эерэг өөрчлөлтийг бий болгох талаар үргэлж сонирхож байсан. хөгжүүлэлтийн баг. Би хариултыг Ситигийн Үүлэн архитектур, дэд бүтцийн ерөнхий захирал Грег Лавандерын санал болгосон номноос олсон. Энэ номыг Финиксийн төсөл гэж нэрлэсэн.
Номын арын хүснэгтэд янз бүрийн компаниуд системээ гаргах орчинд хэр олон удаа байрлуулдгийг харуулав.
Амазон: өдөрт 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 хэрэглүүртэй хэрхэн харагдана:
Таны 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 дамжуулах хоолой ийм харагдаж байна.
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 хэрэгслээр бүх зүйлийг нэгтгэхийг зөвшөөрч болно.
Бүх зүйл сайхан байна, тийм үү? Гэхдээ програмаа хаана байрлуулах вэ?
Алхам 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 дамжуулах хоолой ашиглахад бараг бэлэн боллоо. Сайн ажил!
Та интеграцийг өөрөө шийдэж чадах ч програм хөгжүүлэгчийн санаа зовох зүйл бол кодын чанар юм.
Алхам 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
SkillFactory-аас төлбөртэй онлайн сургалтанд хамрагдан ур чадвар, цалингийн хувьд хэрхэн эрэлттэй мэргэжлийг эхнээс нь авах эсвэл Level Up хийх талаар дэлгэрэнгүй мэдээлэл аваарай.
DevOps курс (12 сар)
илүү олон курс
Машины сургалтын курс (12 долоо хоног)Мэдээллийн шинжлэх ухааны мэргэжлийг эхнээс нь заах (12 сар)Ямар ч гарааны түвшний шинжээч мэргэжилтэй (9 сар)Вэб хөгжүүлэлтийн курст зориулсан Python (9 сар)
Хэрэгцээтэй
Айви лигийн 450 үнэгүй курс Өгөгдлийн шинжлэх ухааны чиг хандлага 2020 Өгөгдлийн шинжлэх ухаан үхсэн. Бизнесийн шинжлэх ухаан урт удаан наслаарай Стероидын талаархи мэдээллийн шинжлэх ухаан: Шийдвэрлэх оюун ухааны талаархи танилцуулга Хамгийн амжилттай, хамгийн дуулиантай Data Science төсөл: Cambridge Analytica
Эх сурвалж: www.habr.com