Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması
Yeni başlayanlar üçün beş addımda ilk DevOps zəncirinizi qurun.

DevOps çox yavaş, əlaqəsi kəsilmiş və başqa problemli inkişaf prosesləri üçün panacea çevrildi. Ancaq DevOps-da minimal biliklərə ehtiyacınız var. O, DevOps zənciri və beş addımdan birinin necə yaradılacağı kimi anlayışları əhatə edəcək. Bu, tam bir bələdçi deyil, yalnız genişləndirilə bilən bir "balıq" dır. Tarixdən başlayaq.

DevOps-a girişim

Mən əvvəllər Citi Group-da buludlarla işləyirdim və Citi-nin bulud infrastrukturunu idarə etmək üçün IaaS veb tətbiqini inkişaf etdirirdim, lakin inkişaf zəncirini optimallaşdırmaq və tərtibatçılar arasında mədəniyyəti necə təkmilləşdirmək həmişə məni maraqlandırırdı. Bulud Memarlığı və İnfrastruktur üzrə texniki direktorumuz Greg Lavender bu kitabı mənə tövsiyə etdi. "Feniks" layihəsi. O, DevOps prinsiplərini gözəl izah edir və roman kimi oxunur.

Arxadakı cədvəl şirkətlərin yeni versiyaları nə qədər tez-tez təqdim etdiyini göstərir:

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Amazon, Google və Netflix bu qədər geniş yayılmağı necə bacarır? Və bu sadədir: onlar demək olar ki, mükəmməl DevOps zəncirinin necə yaradılacağını anladılar.

Biz DevOps-a keçənə qədər Citi-də işlər bizim üçün çox fərqli idi. Sonra komandam fərqli mühitlərə sahib idi, lakin biz inkişaf serverinə çatdırılmanı əl ilə etdik. Bütün tərtibatçıların IBM WebSphere Application Server Community Edition əsasında yalnız bir inkişaf serverinə çıxışı var idi. Eyni vaxtda çatdırmaq cəhdi ilə server “yıxıldı” və hər dəfə öz aramızda “ağrılı” danışıqlar aparmalı olduq. Bizdə həmçinin testlərlə kifayət qədər kod əhatə dairəsi, vaxt aparan əl ilə çatdırılma prosesi və bəzi tapşırıq və ya müştəri tələbinin köməyi ilə kodun çatdırılmasını izləmək üçün heç bir yolumuz yox idi.

Təcili bir iş görmək lazım olduğu aydın idi və mən həmfikir bir həmkar tapdım. Biz birlikdə ilk DevOps zəncirini yaratmağa qərar verdik - o, virtual maşın və Tomcat proqram serveri qurdu və mən Jenkins, Atlassian Jira və BitBucket ilə inteqrasiya, eləcə də testlərlə kod əhatə dairəsi ilə məşğul oldum. Layihə uğurlu oldu: biz inkişaf zəncirini tam avtomatlaşdırdıq, inkişaf serverində demək olar ki, 100% işləmə müddətinə nail olduq, testlərlə kod əhatə dairəsini izləyə və təkmilləşdirə bildik və Git filialı Jira çatdırılması və buraxılışı ilə əlaqələndirilə bilər. Və DevOps zəncirini qurmaq üçün istifadə etdiyimiz alətlərin demək olar ki, hamısı açıq mənbə idi.

Əslində, zəncir sadələşdirildi, çünki biz Jenkins və ya Ansible istifadə edərək təkmil konfiqurasiyaları belə tətbiq etməmişik. Amma bacardıq. Bəlkə də bu prinsipin nəticəsidir Pareto (80/20 qaydası).

DevOps və CI/CD Zəncirinin Qısa Təsviri

DevOps-un fərqli tərifləri var. Agile kimi DevOps da müxtəlif fənləri əhatə edir. Lakin çoxları aşağıdakı təriflə razılaşacaqlar: DevOps proqram təminatının inkişafının bir üsulu və ya həyat dövrüdür, onun əsas prinsipi tərtibatçıların və digər işçilərin “eyni dalğa uzunluğunda” olduğu, əl əməyinin avtomatlaşdırıldığı bir mədəniyyət yaratmaqdır. hər kəs bacardığı işi görür, çatdırılma tezliyi artır, işin məhsuldarlığı artır, çeviklik artır.

Təkcə alətlər DevOps mühiti yaratmaq üçün kifayət etməsə də, onlar əvəzolunmazdır. Bunlardan ən vacibi davamlı inteqrasiya və davamlı çatdırılmadır (CI/CD). Hər bir mühit üçün zəncirdə müxtəlif mərhələlər var (məsələn, DEV (inkişaf), INT (inteqrasiya), TST (sınaq), QA (keyfiyyət təminatı), UAT (istifadəçinin qəbulu testi), STG (hazırlıq), PROD (istifadə)) , əl işləri avtomatlaşdırılıb, tərtibatçılar keyfiyyətli kod yarada, çatdıra və asanlıqla yenidən qura bilərlər.

Bu qeyd açıq mənbə alətlərindən istifadə edərək aşağıdakı şəkildə göstərildiyi kimi beş addımda DevOps zəncirinin necə yaradılacağını təsvir edir.

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Gəlin işə başlayaq.

Addım 1: CI/CD Platforması

İlk növbədə, sizə CI/CD aləti lazımdır. Jenkins DevOps hərəkatını populyarlaşdıran və CICD üçün faktiki standarta çevrilən Java-da yazılmış MIT lisenziyalı, açıq mənbəli CI/CD alətidir.

Jenkins nədir? Təsəvvür edin ki, müxtəlif xidmətlər və alətlər üçün sehrli idarəetmə paneliniz var. Jenkins kimi bir CI/CD aləti tək başına faydasızdır, lakin fərqli alətlər və xidmətlərlə o, hər şeydən güclü olur.

Jenkins-ə əlavə olaraq, bir çox başqa açıq mənbə alətləri var, hər hansı birini seçin.

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

CI/CD aləti ilə DevOps prosesinin necə göründüyü budur

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Localhost-da CI / CD alətiniz var, lakin hələ görüləsi çox iş yoxdur. Gəlin növbəti mərhələyə keçək.

Addım 2: Versiyalaşdırma

CI/CD alətinin sehrini sınamağın ən yaxşı (və şübhəsiz ki, asan) yolu onu mənbəyə nəzarətin idarə edilməsi (SCM) aləti ilə inteqrasiya etməkdir. Nə üçün versiya nəzarətinə ehtiyacınız var? Tutaq ki, siz ərizə verirsiniz. Siz onu Java, Python, C++, Go, Ruby, JavaScript və ya vaqon və kiçik araba olan hər hansı digər dildə yazırsınız. Yazdığınız şey mənbə kodu adlanır. Əvvəlcə, xüsusən də tək işləyirsinizsə, hər şeyi yerli kataloqda saxlaya bilərsiniz. Lakin layihə böyüdükcə və daha çox insan qoşulduqca, kod dəyişikliklərini paylaşmaq üçün bir yola ehtiyacınız var, lakin dəyişiklikləri birləşdirərkən münaqişələrdən qaçın. Həm də ehtiyat nüsxələrdən istifadə etmədən və kod faylları üçün kopyala-yapışdır metodundan istifadə etmədən əvvəlki versiyaları birtəhər bərpa etməlisiniz.

Və burada heç bir yerdə SCM olmadan. SCM kodu depolarda saxlayır, onun versiyalarını idarə edir və onu tərtibatçılar arasında əlaqələndirir.

Bir çox SCM alətləri var, lakin Git layiqincə faktiki standarta çevrildi. İstifadə etməyi məsləhət görürəm, amma başqa variantlar da var.

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

SCM əlavə etdikdən sonra DevOps boru kəməri necə görünür.

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

CI/CD aləti mənbə kodun yüklənməsini və endirilməsini və komanda əməkdaşlığını avtomatlaşdıra bilər. Pis deyil? Bəs indi bundan milyardlarla istifadəçi tərəfindən sevilən işləyən tətbiqi necə etmək olar?

Addım 3: Avtomatlaşdırma Alətini yaradın

Hər şey lazım olduğu kimi gedir. Siz kodu yükləyə və mənbə nəzarətinə dəyişikliklər edə və dostlarınızı sizinlə işləməyə dəvət edə bilərsiniz. Ancaq hələ tətbiqiniz yoxdur. Bunun veb tətbiqi olması üçün o, paylanma üçün tərtib edilməli və qablaşdırılmalı və ya icra olunan kimi işlədilməlidir. (JavaScript və ya PHP kimi tərcümə edilmiş proqramlaşdırma dilinin tərtib edilməsinə ehtiyac yoxdur.)

Quraşdırma avtomatlaşdırma alətindən istifadə edin. Hansı aləti seçdiyinizdən asılı olmayaraq, o, kodu düzgün formatda yığacaq və təmizləmə, tərtib, sınaq və çatdırılmanı avtomatlaşdıracaq. Quraşdırma alətləri dilə görə dəyişir, lakin aşağıdakı açıq mənbə seçimləri adətən istifadə olunur.

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Mükəmməl! İndi qurma avtomatlaşdırma alətinin konfiqurasiya fayllarını mənbə nəzarətinə daxil edək ki, CI/CD aləti onları qurur.

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Yaxşı hiss olunur. Bəs bütün bunları indi yaymaq haradadır?

Addım 4: Veb Tətbiq Serveri

Beləliklə, icra oluna və ya yayıla bilən paketlənmiş faylınız var. Tətbiqin həqiqətən faydalı olması üçün onun bir növ xidməti və ya interfeysi olmalıdır, lakin siz hamısını harasa yerləşdirməlisiniz.

Veb tətbiqi veb proqram serverində yerləşdirilə bilər. Tətbiq serveri paketdən proqram məntiqini yerinə yetirə biləcəyiniz, interfeys göstərilməsini həyata keçirə biləcəyiniz və bir rozetka üzərindən veb xidmətləri göstərə biləcəyiniz bir mühit təmin edir. Tətbiq serverini quraşdırmaq üçün sizə HTTP serveri və bir neçə başqa mühit (məsələn, virtual maşın) lazımdır. Hələlik, elə tutaq ki, siz getdiyiniz zaman bütün bunlarla məşğul olursunuz (baxmayaraq ki, aşağıda konteynerlər haqqında danışacağam).

Bir neçə açıq veb proqram serverləri var.

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Artıq demək olar ki, işləyən DevOps zəncirimiz var. Əla işdir!

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Prinsipcə, burada dayana bilərsiniz, sonra özünüz idarə edə bilərsiniz, amma kodun keyfiyyəti haqqında danışmağa dəyər.

Addım 5: Test əhatəsi

Sınaq çox vaxt və səy tələb edir, lakin səhvləri dərhal tapmaq və son istifadəçiləri razı salmaq üçün kodu təkmilləşdirmək daha yaxşıdır. Bu məqsədlə, yalnız kodu test etməyəcək, həm də onu necə yaxşılaşdırmaq barədə məsləhət verəcək bir çox açıq vasitə var. Əksər CI/CD alətləri bu alətlərə qoşula və prosesi avtomatlaşdıra bilər.

Test iki hissəyə bölünür: testlərin yazılması və icrası üçün test çərçivələri və kod keyfiyyətini yaxşılaşdırmaq üçün göstərişlər olan alətlər.

Test Çərçivələri

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Keyfiyyətli məsləhətləri olan alətlər

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Bu alətlərin və çərçivələrin əksəriyyəti Java, Python və JavaScript üçün yazılmışdır, çünki C++ və C# mülkiyyətlidir (baxmayaraq ki, GCC açıq mənbədir).

Biz sınaq əhatəsi alətlərini tətbiq etdik və indi DevOps boru kəməri dərsliyin əvvəlindəki şəkildəki kimi görünməlidir.

Əlavə addımlar

Konteynerlər

Daha əvvəl dediyim kimi, proqram serveri virtual maşında və ya serverdə yerləşdirilə bilər, lakin konteynerlər daha populyardır.

Konteynerlər nədir? Bir sözlə, virtual maşında əməliyyat sistemi tez-tez tətbiqdən daha çox yer tutur və bir konteyner adətən bir neçə kitabxana və konfiqurasiya ilə kifayət edir. Bəzi hallarda virtual maşınlar əvəzolunmazdır, lakin konteyner əlavə xərc çəkmədən serverlə birlikdə tətbiqi yerləşdirə bilər.

Konteynerlər üçün adətən Docker və Kubernetes alınır, baxmayaraq ki, başqa variantlar var.

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Docker və Kubernetes haqqında məqalələri burada oxuyun opensource.com:

Orta proqramın avtomatlaşdırılması vasitələri

Bizim DevOps zəncirimiz proqramın birgə qurulmasına və çatdırılmasına yönəlib, lakin DevOps alətləri ilə edə biləcəyiniz başqa maraqlı şeylər də var. Məsələn, İnfrastrukturdan Kod (IaC) alətləri kimi istifadə edin, həmçinin ara proqram avtomatlaşdırma alətləri kimi tanınır. Bu alətlər ara proqram üçün quraşdırma, idarəetmə və digər tapşırıqları avtomatlaşdırmağa kömək edir. Məsələn, avtomatlaşdırma aləti düzgün konfiqurasiyaya malik proqramları (veb proqram serveri, verilənlər bazası, monitorinq alətləri) götürə və onları proqram serverinə itələyə bilər.

Açıq ara proqram avtomatlaşdırma vasitələri üçün bəzi seçimlər bunlardır:

Dummies Bələdçisi: Açıq Mənbə Alətləri ilə DevOps Zəncirlərinin qurulması

Təfərrüatlar məqalələrdə opensource.com:

İndi nə?

Bu, aysberqin yalnız görünən hissəsidir. DevOps zənciri daha çox şey edə bilər. CI/CD aləti ilə başlayın və işinizi asanlaşdırmaq üçün başqa nələri avtomatlaşdıra biləcəyinizi görün. haqqında unutmayın açıq ünsiyyət vasitələri səmərəli əməkdaşlıq üçün.

Yeni başlayanlar üçün daha yaxşı DevOps məqalələri bunlardır:

Siz həmçinin DevOps-u açıq çevik alətlərlə birləşdirə bilərsiniz:

Mənbə: www.habr.com

Добавить комментарий