Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish
Yangi boshlanuvchilar uchun besh bosqichda birinchi DevOps zanjiringizni yarating.

DevOps juda sekin, uzilgan va boshqa muammoli rivojlanish jarayonlari uchun panatseyaga aylandi. Ammo sizga DevOps-da minimal bilim kerak. U DevOps zanjiri va besh bosqichdan birini qanday yaratish kabi tushunchalarni qamrab oladi. Bu to'liq qo'llanma emas, balki faqat kengaytirilishi mumkin bo'lgan "baliq". Keling, tarixdan boshlaylik.

Mening DevOps-ga kirishim

Men Citi Group’da bulutlar bilan ishlaganman va Citi’ning bulutli infratuzilmasini boshqarish uchun IaaS veb-ilovasini ishlab chiqqanman, lekin men doimo rivojlanish zanjirini optimallashtirish va ishlab chiquvchilar o‘rtasida madaniyatni yaxshilash bilan qiziqib kelganman. Bulutli arxitektura va infratuzilma bo'yicha texnik direktorimiz Greg Lavender menga ushbu kitobni tavsiya qildi. "Feniks" loyihasi. U DevOps tamoyillarini chiroyli tarzda tushuntiradi va roman kabi o'qiydi.

Orqa tarafdagi jadval kompaniyalarning yangi versiyalarni qanchalik tez-tez chiqarayotganini ko'rsatadi:

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Qanday qilib Amazon, Google va Netflix bunchalik ko'p tarqatishga muvaffaq bo'lishadi? Va bu oddiy: ular deyarli mukammal DevOps zanjirini qanday yaratishni aniqladilar.

DevOps-ga o'tgunimizcha, Citi-da biz uchun ishlar juda boshqacha edi. Keyin mening jamoam turli xil muhitlarga ega edi, ammo biz ishlab chiqish serveriga etkazib berishni qo'lda qildik. Barcha ishlab chiquvchilar IBM WebSphere Application Server Community Edition asosidagi faqat bitta ishlab chiqish serveriga kirish huquqiga ega edilar. Bir vaqtning o'zida etkazib berishga urinish bilan server "yiqilib tushdi" va har safar o'zimiz bilan "og'riqli" muzokaralar olib borishga majbur bo'ldik. Shuningdek, bizda testlar bilan kod yetarli darajada qamrab olinmagan, qo‘lda yetkazib berish ko‘p vaqt talab qiladigan jarayon va ba’zi topshiriqlar yoki mijoz talablari yordamida kod yetkazib berilishini kuzatishning imkoni yo‘q edi.

Tezda nimadir qilish kerakligi aniq edi va men hamkasb topdim. Biz birgalikda birinchi DevOps zanjirini yaratishga qaror qildik - u virtual mashina va Tomcat dastur serverini o'rnatdi va men Jenkins, Atlassian Jira va BitBucket bilan integratsiya, shuningdek testlar bilan kodni qamrab olish haqida g'amxo'rlik qildim. Loyiha muvaffaqiyatli bo'ldi: biz ishlab chiqish zanjirini to'liq avtomatlashtirdik, ishlab chiqish serverida deyarli 100% ish vaqtiga erishdik, testlar yordamida kod qamrovini kuzatish va yaxshilashga muvaffaq bo'ldik va Git filiali Jira yetkazib berish va chiqarish bilan bog'lanishi mumkin edi. Va biz DevOps zanjirini yaratishda foydalangan deyarli barcha vositalar ochiq manba edi.

Aslida, zanjir soddalashtirilgan edi, chunki biz Jenkins yoki Ansible yordamida ilg'or konfiguratsiyalarni ham qo'llamagan edik. Lekin biz muvaffaqiyatga erishdik. Ehtimol, bu printsipning natijasidir Pareto (aka 80/20 qoidasi).

DevOps va CI/CD zanjirining qisqacha tavsifi

DevOps turli xil ta'riflarga ega. DevOps, xuddi Agile kabi, turli fanlarni o'z ichiga oladi. Ammo ko'pchilik quyidagi ta'rifga rozi bo'ladi: DevOps - bu dasturiy ta'minotni ishlab chiqish usuli yoki hayot aylanishi, uning asosiy printsipi ishlab chiquvchilar va boshqa xodimlar "bir xil to'lqin uzunligida", qo'l mehnati avtomatlashtirilgan madaniyatni yaratish, har kim o'zi eng yaxshi narsani qiladi, etkazib berish chastotasi oshadi, ish unumdorligi oshadi, moslashuvchanlik oshadi.

DevOps muhitini yaratish uchun asboblarning o'zi etarli bo'lmasa-da, ular ajralmas hisoblanadi. Ulardan eng muhimi uzluksiz integratsiya va uzluksiz yetkazib berishdir (CI/CD). Har bir muhit uchun zanjirda turli bosqichlar mavjud (masalan, DEV (ishlab chiqish), INT (integratsiya), TST (sinov), QA (sifat kafolati), UAT (foydalanuvchini qabul qilish testi), STG (tayyorlash), PROD (foydalanish)) , qo'lda vazifalar avtomatlashtirilgan, ishlab chiquvchilar sifatli kod ishlab chiqarishi, uni yetkazib berishlari va osongina qayta qurishlari mumkin.

Ushbu eslatma quyidagi rasmda ko'rsatilganidek, ochiq manba vositalaridan foydalangan holda besh bosqichda DevOps zanjirini qanday yaratishni tasvirlaydi.

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Keling, biznesga kirishaylik.

1-qadam: CI/CD platformasi

Avvalo, sizga CI/CD vositasi kerak. Jenkins MIT litsenziyasiga ega, Java-da yozilgan, DevOps harakatini ommalashtirgan va CICD uchun amalda standartga aylangan ochiq manbali CI/CD vositasi.

Jenkins nima? Tasavvur qiling-a, sizda turli xizmatlar va vositalar uchun sehrli boshqaruv paneli mavjud. O'z-o'zidan, Jenkins kabi CI/CD vositasi foydasiz, ammo turli xil vositalar va xizmatlar bilan u juda kuchli bo'ladi.

Jenkinsga qo'shimcha ravishda, boshqa ko'plab ochiq manba vositalari mavjud, ulardan birini tanlang.

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

DevOps jarayoni CI/CD vositasida qanday ko'rinishga ega

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Sizda localhost-da CI/CD vositasi bor, lekin hali qiladigan ko'p narsa yo'q. Keling, keyingi bosqichga o'tamiz.

2-qadam: Versiyalash

CI/CD vositasining sehrini sinab ko'rishning eng yaxshi (va, ehtimol, eng oson) usuli uni manba boshqaruvini boshqarish (SCM) vositasi bilan birlashtirishdir. Nega sizga versiya nazorati kerak? Aytaylik, siz ariza beryapsiz. Siz uni Java, Python, C++, Go, Ruby, JavaScript yoki vagon va kichik arava bo'lgan boshqa tillarda yozasiz. Siz yozgan narsa manba kodi deb ataladi. Avvaliga, ayniqsa, yolg'iz ishlayotgan bo'lsangiz, hamma narsani mahalliy katalogga saqlashingiz mumkin. Ammo loyiha o'sib borayotgani va ko'proq odamlar qo'shilgani uchun sizga kod o'zgarishlarini almashish usuli kerak bo'ladi, lekin o'zgarishlarni birlashtirishda ziddiyatlardan qochish kerak. Shuningdek, zaxira nusxalarini ishlatmasdan va kod fayllari uchun nusxa ko'chirish-joylashtirish usulidan foydalanmasdan oldingi versiyalarni qandaydir tarzda tiklashingiz kerak.

Va bu erda hech qanday joyda SCM holda. SCM kodni omborlarda saqlaydi, uning versiyalarini boshqaradi va uni ishlab chiquvchilar o'rtasida muvofiqlashtiradi.

Ko'p SCM vositalari mavjud, ammo Git haqli ravishda de-fakto standartiga aylandi. Men sizga undan foydalanishni maslahat beraman, lekin boshqa variantlar ham bor.

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

SCM qo'shgandan keyin DevOps quvur liniyasi qanday ko'rinishga ega.

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

CI/CD vositasi manba kodini yuklash va yuklab olishni va jamoaviy hamkorlikni avtomatlashtirishi mumkin. Yomon emas? Ammo endi milliardlab foydalanuvchilar tomonidan yaxshi ko'rilgan ishchi dasturni qanday qilish kerak?

3-qadam: Avtomatlashtirish vositasini yaratish

Hammasi kerak bo'lganidek ketmoqda. Siz kodni yuklashingiz va manba boshqaruviga o'zgartirishlar kiritishingiz va do'stlaringizni siz bilan ishlashga taklif qilishingiz mumkin. Lekin sizda hali ilova yo'q. Bu veb-ilova bo'lishi uchun uni tarqatish uchun kompilyatsiya qilish va paketlash yoki bajariladigan fayl sifatida ishga tushirish kerak. (JavaScript yoki PHP kabi talqin qilingan dasturlash tilini kompilyatsiya qilish shart emas.)

Qurilishni avtomatlashtirish vositasidan foydalaning. Qaysi vositani tanlasangiz, u kodni to'g'ri formatda yig'adi va tozalash, kompilyatsiya, sinov va yetkazib berishni avtomatlashtiradi. Qurilish vositalari tilga qarab farq qiladi, lekin quyidagi ochiq manba variantlari odatda qo'llaniladi.

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Mukammal! Keling, CI/CD vositasi ularni yaratishi uchun qurilishni avtomatlashtirish vositasi konfiguratsiya fayllarini manba boshqaruviga kiritamiz.

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Bu yaxshi his qiladi. Ammo bularning barchasi hozir qayerda?

4-qadam: Veb ilovalar serveri

Shunday qilib, sizda bajarilishi yoki chiqarilishi mumkin bo'lgan paketlangan fayl mavjud. Ilova haqiqatan ham foydali bo'lishi uchun u qandaydir xizmat yoki interfeysga ega bo'lishi kerak, lekin barchasini biror joyga qo'yish kerak.

Veb-ilova veb-ilovalar serverida joylashtirilishi mumkin. Ilova serveri siz paketli mantiqni bajarishingiz, interfeyslarni ko'rsatishingiz va rozetka orqali veb-xizmatlarni ko'rsatishingiz mumkin bo'lgan muhitni ta'minlaydi. Ilova serverini o'rnatish uchun sizga HTTP serveri va bir nechta boshqa muhitlar (masalan, virtual mashina) kerak. Hozircha, keling, siz bularning barchasi bilan shug'ullanayotgandek ko'raylik (garchi men quyida konteynerlar haqida gapiraman).

Bir nechta ochiq veb-ilovalar serverlari mavjud.

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Bizda allaqachon deyarli ishlaydigan DevOps zanjiri mavjud. Yaxshi bajarilgan ish!

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Asos sifatida, siz bu erda to'xtashingiz mumkin, keyin uni o'zingiz hal qilishingiz mumkin, ammo kodning sifati haqida gapirishga arziydi.

5-qadam: Sinov qamrovi

Sinov ko'p vaqt va kuch talab etadi, lekin oxirgi foydalanuvchilarni xursand qilish uchun xatolarni darhol topib, kodni yaxshilash yaxshiroqdir. Shu maqsadda ko'plab ochiq vositalar mavjud bo'lib, ular nafaqat kodni sinab ko'rish, balki uni qanday yaxshilash bo'yicha maslahat berishadi. Aksariyat CI/CD vositalari ushbu vositalarga ulanishi va jarayonni avtomatlashtirishi mumkin.

Sinov ikki qismga bo'linadi: testlarni yozish va bajarish uchun test tizimlari va kod sifatini yaxshilash uchun maslahatlar mavjud.

Sinov ramkalari

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Sifatli maslahatlarga ega vositalar

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Ushbu vositalar va ramkalarning aksariyati Java, Python va JavaScript uchun yozilgan, chunki C++ va C# xususiydir (garchi GCC ochiq manba bo'lsa ham).

Biz sinovni qamrab olish vositalarini qo'lladik va endi DevOps quvur liniyasi o'quv qo'llanmasining boshidagi rasmga o'xshash bo'lishi kerak.

Qo'shimcha qadamlar

Konteynerlar

Yuqorida aytib o'tganimdek, dastur serveri virtual mashinada yoki serverda joylashtirilishi mumkin, ammo konteynerlar ko'proq mashhur.

Konteynerlar nima? Muxtasar qilib aytganda, virtual mashinada operatsion tizim ko'pincha dasturdan ko'ra ko'proq joy egallaydi va konteyner odatda bir nechta kutubxonalar va konfiguratsiyalar bilan kifoya qiladi. Ba'zi hollarda virtual mashinalar ajralmas hisoblanadi, ammo konteyner ilovani server bilan birga qo'shimcha xarajatlarsiz joylashtirishi mumkin.

Konteynerlar uchun odatda Docker va Kubernetes olinadi, ammo boshqa variantlar mavjud.

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Docker va Kubernetes haqidagi maqolalarni o'qing opensource.com:

O'rta dasturni avtomatlashtirish vositalari

Bizning DevOps zanjirimiz hamkorlikda yaratish va ilovani yetkazib berishga qaratilgan, ammo DevOps vositalari bilan boshqa qiziqarli narsalarni ham qilishingiz mumkin. Masalan, Infratuzilmani Kod sifatida (IaC) vositalaridan foydalaning, shuningdek, vositachi avtomatlashtirish vositalari sifatida ham tanilgan. Ushbu vositalar vositachi dasturlarni o'rnatish, boshqarish va boshqa vazifalarni avtomatlashtirishga yordam beradi. Masalan, avtomatlashtirish vositasi ilovalarni (veb-ilovalar serveri, ma'lumotlar bazasi, monitoring vositalari) to'g'ri konfiguratsiyaga ega bo'lishi va ularni dastur serveriga surishi mumkin.

Ochiq o'rta dasturni avtomatlashtirish vositalarining ba'zi variantlari:

Dummies uchun qo'llanma: Ochiq manba vositalari bilan DevOps zanjirlarini yaratish

Tafsilotlar maqolalarda opensource.com:

Endi nima?

Bu aysbergning faqat uchi. DevOps zanjiri ko'proq narsani qila oladi. CI/CD vositasidan boshlang va ishingizni osonlashtirish uchun yana nimalarni avtomatlashtirishingiz mumkinligini ko'ring. Haqida unutmang ochiq aloqa vositalari samarali hamkorlik uchun.

Yangi boshlanuvchilar uchun yana bir qancha yaxshi DevOps maqolalari:

Shuningdek, DevOps-ni ochiq tezkor vositalar bilan birlashtirishingiz mumkin:

Manba: www.habr.com

a Izoh qo'shish