DevOps яагаад хэрэгтэй вэ, DevOps мэргэжилтнүүд гэж хэн бэ?

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

DevOps-ийн үзэл баримтлалд ямар практикууд багтсан бөгөөд яагаад хэрэгтэй вэ? DevOps инженерүүд юу хийдэг вэ, тэд юу хийх чадвартай байх ёстой вэ? EPAM-ын мэргэжилтнүүд эдгээр болон бусад асуултад хариулж байна: системийн инженер, DevOps-ийн сайн мэдээг түгээгч Кирилл Сергеев, компанийн DevOps багийн нэгний зохицуулагч, системийн тэргүүлэх инженер Игорь Бойко.

DevOps яагаад хэрэгтэй вэ, DevOps мэргэжилтнүүд гэж хэн бэ?

DevOps яагаад хэрэгтэй вэ?

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

DevOps гэж юу вэ?

Энэ бол сайн асуулт бөгөөд маргаантай асуулт юм: дэлхий энэ талаар эцэслэн тохиролцоогүй байна. EPAM нь DevOps нь баг доторх технологи, үйл явц, харилцан үйлчлэлийн соёлыг нэгтгэдэг гэж үздэг. Энэхүү холбоо нь эцсийн хэрэглэгчдэд үнэ цэнийг тасралтгүй хүргэх зорилготой.

Кирилл Сергеев: "Хөгжүүлэгчид код бичиж, шалгагчид үүнийг хянаж, администраторууд эцсийн бүтээгдэхүүнийг үйлдвэрлэлд нэвтрүүлдэг. Удаан хугацааны туршид багийн эдгээр хэсгүүд тодорхой хэмжээгээр тархсан байсан бөгөөд дараа нь нийтлэг үйл явцаар тэднийг нэгтгэх санаа гарч ирэв. DevOps-ийн дадлага ийм байдлаар гарч ирсэн."

Хөгжүүлэгчид болон системийн инженерүүд бие биенийхээ ажлыг сонирхож эхэлсэн өдөр ирлээ. Үйлдвэрлэл, дэмжлэгийн хоорондох саад бэрхшээл алга болж эхлэв. Практик, соёл, багийн харилцан үйлчлэлийг багтаасан DevOps ийм байдлаар бий болсон юм.

DevOps яагаад хэрэгтэй вэ, DevOps мэргэжилтнүүд гэж хэн бэ?

DevOps соёлын мөн чанар юу вэ?

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

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

DevOps практикийн төрлүүд юу вэ?

DevOps дадлага нь програм хангамжийн амьдралын мөчлөгийн бүх үе шатыг хамардаг.

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

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

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

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

DevOps практикийн давуу тал юу вэ?

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

Кирилл Сергеев: “Хамгийн эхний зүйл бол автоматжуулалт. Бид багийн бүх харилцан үйлчлэлийг автоматжуулж чадна: код бичсэн - үүнийг гаргасан - шалгасан - суулгасан - санал хүсэлт цуглуулсан - эхэнд нь буцсан. Энэ бүхэн автомат.

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

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

DevOps яагаад хэрэгтэй вэ, DevOps мэргэжилтнүүд гэж хэн бэ?

"Системийн инженер", "барилгын инженер" болон "DevOps инженер" гэсэн ойлголтууд хоорондоо ямар холбоотой вэ?

Тэдгээр нь давхцаж байгаа боловч арай өөр газар нутагт хамаардаг.

EPAM-д системийн инженер бол албан тушаал. Тэд янз бүрийн түвшинд байдаг: бага шатнаас ахлах мэргэжилтэн хүртэл.

Барилгын инженер бол төсөл дээр гүйцэтгэх боломжтой үүрэг юм. Одоо CI/CD-ийг хариуцдаг хүмүүсийг ингэж нэрлэдэг.

DevOps инженер бол DevOps практикийг төсөл дээр хэрэгжүүлдэг мэргэжилтэн юм.

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

DevOps инженер яг юу хийдэг вэ?

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

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

Кирилл Сергеев: "Бүтээгдэхүүнд шинэчлэлт хийхээс өмнө тэдгээрийг гуравдагч талын орчинд туршиж үзэх шаардлагатай. Үүнийг DevOps инженерүүд бэлтгэдэг. Тэд DevOps соёлыг төсөлд бүхэлд нь суулгаж өгдөг: тэд төслийн бүх давхаргад DevOps практикийг нэвтрүүлдэг. Эдгээр гурван зарчим: автоматжуулалт, хялбарчлал, хурдатгал - тэд хаана ч хүрч чаддаг.

DevOps инженер юу мэдэх ёстой вэ?

Ерөнхийдөө тэрээр янз бүрийн чиглэлээр мэдлэгтэй байх ёстой: програмчлал, үйлдлийн системтэй ажиллах, мэдээллийн сан, угсралт, тохиргооны системүүд. Эдгээр нь үүлэн дэд бүтэц, зохион байгуулалт, хяналтын системтэй ажиллах чадвараар нэмэгддэг.

1. Програмчлалын хэлүүд

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

DevOps инженер Python, Groovy, Bash, Powershell, Ruby, Go зэрэг нэг буюу хэд хэдэн хэлийг сурах боломжтой. Тэдгээрийг гүнзгий түвшинд мэдэх шаардлагагүй - синтаксийн үндэс, OOP зарчим, автоматжуулалтын энгийн скрипт бичих чадвар хангалттай.

2. Үйлдлийн системүүд

DevOps инженер нь тухайн бүтээгдэхүүнийг ямар сервер дээр суулгах, ямар орчинд ажиллах, ямар үйлчилгээнүүдтэй харьцах зэргийг ойлгох ёстой. Та Windows эсвэл Линукс гэр бүлд мэргэшихээр сонгож болно.

3. Хувилбарын хяналтын систем

Хувилбарын хяналтын системийн мэдлэггүй бол DevOps инженер хаана ч байхгүй. Git бол одоогийн байдлаар хамгийн алдартай системүүдийн нэг юм.

4. Үүл үйлчилгээ үзүүлэгчид

AWS, Google, Azure - ялангуяа бид Windows чиглэлийн талаар ярьж байгаа бол.

Кирилл Сергеев: "Үүлэн үйлчилгээ үзүүлэгчид CI/CD-д төгс тохирох виртуал серверүүдийг бидэнд олгодог.

Арван физик сервер суулгахад зуу орчим гар ажиллагаа шаардлагатай. Сервер бүрийг гараар эхлүүлж, шаардлагатай үйлдлийн системийг суулгаж, тохируулж, эдгээр арван сервер дээр манай програмыг суулгаж, дараа нь бүх зүйлийг арван удаа дахин шалгасан байх ёстой. Үүлэн үйлчилгээ нь энэ процедурыг арван мөр кодоор солих бөгөөд сайн DevOps инженер тэдгээртэй ажиллах чадвартай байх ёстой. Энэ нь үйлчлүүлэгч болон компанийн хувьд цаг хугацаа, хүчин чармайлт, мөнгөө хэмнэдэг."

5. Оркестрийн систем: Docker болон Kubernetes

Кирилл Сергеев: "Виртуал серверүүд нь контейнер болгонд хуваагддаг бөгөөд тэдгээрт бид програмаа суулгаж болно. Олон тооны сав байгаа үед та тэдгээрийг удирдах хэрэгтэй: нэгийг асаах, нөгөөг нь унтраах, хаа нэг газар нөөцлөлт хийх. Энэ нь нэлээд төвөгтэй болж, зохион байгуулалтын систем шаарддаг.

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

6. Тохиргооны системүүд: Chef, Ansible, Puppet

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

DevOps инженер ямар төрлийн карьерыг бий болгож чадах вэ?

Та хэвтээ болон босоо аль алиныг нь хөгжүүлж чадна.

Игорь Бойко: "Хэвтээ хөгжлийн үүднээс авч үзвэл DevOps инженерүүд одоо хамгийн өргөн ирээдүйтэй байна. Бүх зүйл байнга өөрчлөгдөж байдаг бөгөөд та хувилбарын хяналтын системээс хяналт, тохиргооны удирдлагаас өгөгдлийн сан зэрэг янз бүрийн чиглэлээр ур чадвараа хөгжүүлэх боломжтой.

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

Хэрхэн DevOps инженер болох вэ?

  1. Phoenix Project болон DevOps гарын авлагыг уншина уу. Эдгээр нь DevOps философийн жинхэнэ тулгуур багана бөгөөд эхнийх нь уран зохиолын бүтээл юм.
  2. Дээрх жагсаалтаас технологид суралцаарай: бие даан эсвэл онлайн сургалтаар дамжуулан.
  3. Нээлттэй эхийн төсөлд DevOps инженерээр элсээрэй.
  4. Хувийн болон ажлын төслүүд дээрээ DevOps дадлага хийж, санал болго.

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

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