DevOps nə üçün lazımdır və DevOps mütəxəssisləri kimlərdir?

Tətbiq işləmədikdə, həmkarlarınızdan eşitmək istədiyiniz son şey “problem sizin tərəfinizdədir” ifadəsidir. Nəticədə, istifadəçilər əziyyət çəkirlər və komandanın hansı hissəsinin qəzaya görə məsuliyyət daşıdığına əhəmiyyət vermirlər. DevOps mədəniyyəti son məhsul üçün ortaq məsuliyyət ətrafında inkişafı və dəstəyi bir araya gətirmək üçün dəqiq şəkildə ortaya çıxdı.

DevOps konsepsiyasına hansı təcrübələr daxildir və onlar nə üçün lazımdır? DevOps mühəndisləri nə edir və nəyi bacarmalıdırlar? EPAM-dan olan ekspertlər bu və digər suallara cavab verirlər: sistem mühəndisi və DevOps evangelisti Kirill Sergeev və aparıcı sistem mühəndisi və şirkətin DevOps komandalarından birinin koordinatoru İqor Boyko.

DevOps nə üçün lazımdır və DevOps mütəxəssisləri kimlərdir?

DevOps nə üçün lazımdır?

Əvvəllər tərtibatçılar və dəstək (sözdə əməliyyatlar) arasında bir maneə var idi. Paradoksal səslənir, lakin eyni şeyi etmələrinə baxmayaraq, onların fərqli məqsədləri və KPI-ləri var idi. İnkişafın məqsədi biznes tələblərini mümkün qədər tez həyata keçirmək və onları işləyən məhsula əlavə etmək idi. Dəstək tətbiqin sabit işləməsini təmin etmək üçün cavabdeh idi - və hər hansı dəyişiklik sabitliyi risk altına qoyur. Maraqlar toqquşması var - onu həll etmək üçün DevOps ortaya çıxdı.

DevOps nədir?

Bu, yaxşı sualdır və mübahisəli sualdır: dünya hələ bununla bağlı razılığa gəlməyib. EPAM hesab edir ki, DevOps texnologiyaları, prosesləri və komanda daxilində qarşılıqlı fəaliyyət mədəniyyətini özündə birləşdirir. Bu assosiasiya son istifadəçilərə davamlı olaraq dəyər təqdim etməyi hədəfləyir.

Kirill Sergeev: “Yaradıcılar kod yazır, testçilər onu nəzərdən keçirir və idarəçilər son məhsulu istehsala yerləşdirirlər. Uzun müddət komandanın bu hissələri bir qədər dağınıq idi və sonra onları ümumi proses vasitəsilə birləşdirmək ideyası yarandı. DevOps təcrübələri belə ortaya çıxdı."

Gün gəldi ki, tərtibatçılar və sistem mühəndisləri bir-birinin işi ilə maraqlandılar. İstehsal və dəstək arasındakı maneə aradan qalxmağa başladı. Təcrübələri, mədəniyyəti və komanda qarşılıqlı əlaqəsini ehtiva edən DevOps belə ortaya çıxdı.

DevOps nə üçün lazımdır və DevOps mütəxəssisləri kimlərdir?

DevOps mədəniyyətinin mahiyyəti nədir?

Fakt budur ki, son nəticəyə görə məsuliyyət komandanın hər bir üzvünün üzərinə düşür. DevOps fəlsəfəsindəki ən maraqlı və çətin şey, konkret bir insanın yalnız öz iş mərhələsi üçün deyil, bütün məhsulun necə işləyəcəyinə görə məsuliyyət daşıdığını başa düşməkdir. Problem heç kimin tərəfində deyil - paylaşılır və hər bir komanda üzvü onun həllinə kömək edir.

DevOps mədəniyyətində ən vacib şey yalnız DevOps təcrübələrini tətbiq etmək deyil, problemi həll etməkdir. Üstəlik, bu təcrübələr “kiminsə tərəfində” deyil, bütün məhsulda həyata keçirilir. Layihənin özlüyündə DevOps mühəndisinə ehtiyacı yoxdur - o, problemin həllinə ehtiyac duyur və DevOps mühəndisinin rolu müxtəlif ixtisaslara malik bir neçə komanda üzvü arasında bölüşdürülə bilər.

DevOps təcrübələrinin növləri hansılardır?

DevOps təcrübələri proqram təminatının həyat dövrünün bütün mərhələlərini əhatə edir.

İqor Boyko: “İdeal vəziyyət, biz layihənin başlanğıcında DevOps təcrübələrindən istifadə etməyə başladığımız zamandır. Memarlarla birlikdə tətbiqin hansı memarlıq mənzərəsinə sahib olacağını, harada yerləşəcəyini və necə miqyas alacağını planlaşdırırıq və platforma seçirik. Hazırda mikroservis arxitekturası dəbdədir - bunun üçün biz orkestrasiya sistemi seçirik: siz proqramın hər bir elementini ayrıca idarə etməyi və digərlərindən asılı olmayaraq yeniləməyi bacarmalısınız. Başqa bir təcrübə “kod kimi infrastruktur”dur. Bu, layihə infrastrukturunun serverlərlə birbaşa qarşılıqlı əlaqə vasitəsilə deyil, koddan istifadə etməklə yaradıldığı və idarə olunduğu bir yanaşmanın adıdır.

Sonra inkişaf mərhələsinə keçirik. Burada ən böyük təcrübələrdən biri CI/CD yaratmaqdır: siz tərtibatçılara dəyişiklikləri məhsula tez, kiçik hissələrdə, daha tez-tez və ağrısız şəkildə inteqrasiya etməyə kömək etməlisiniz. CI/CD kodun nəzərdən keçirilməsini, masterin kod bazasına yüklənməsini və tətbiqin sınaq və istehsal mühitlərinə yerləşdirilməsini əhatə edir.

CI/CD mərhələlərində kod keyfiyyət qapılarından keçir. Onların köməyi ilə tərtibatçının iş stansiyasından çıxan kodun müəyyən edilmiş keyfiyyət meyarlarına cavab verdiyini yoxlayırlar. Vahid və UI testi buraya əlavə olunur. Sürətli, ağrısız və diqqətli məhsul yerləşdirilməsi üçün uyğun yerləşdirmə növünü seçə bilərsiniz.

DevOps praktikantlarının da hazır məhsulun dəstəklənməsi mərhələsində öz yeri var. Onlar monitorinq, əks əlaqə, təhlükəsizlik və dəyişikliklərin tətbiqi üçün istifadə olunur. DevOps bütün bu vəzifələrə davamlı təkmilləşdirmə perspektivindən baxır. Biz təkrarlanan əməliyyatları minimuma endirir və onları avtomatlaşdırırıq. Buraya köçürmələr, tətbiqlərin genişləndirilməsi və performans dəstəyi də daxildir.”

DevOps təcrübələrinin faydaları nələrdir?

Müasir DevOps təcrübələri haqqında dərslik yazsaydıq, birinci səhifədə üç məqam olardı: avtomatlaşdırma, buraxılışların sürətləndirilməsi və istifadəçilərdən sürətli rəy.

Kirill Sergeev: “Birincisi avtomatlaşdırmadır. Biz komandada bütün qarşılıqlı əlaqəni avtomatlaşdıra bilərik: kodu yazdıq - onu yaydıq - yoxladıq - quraşdırdıq - rəy topladıq - başlanğıca qayıtdıq. Bütün bunlar avtomatikdir.

İkincisi, buraxılışı sürətləndirmək və hətta inkişafı asanlaşdırmaqdır. Müştəri üçün məhsulun bazara mümkün qədər tez daxil olması və rəqiblərin analoqlarından daha tez fayda verməyə başlaması həmişə vacibdir. Məhsulun çatdırılması prosesi sonsuz dərəcədə təkmilləşdirilə bilər: vaxtı azaltmaq, əlavə nəzarət işarələri əlavə etmək, monitorinqi təkmilləşdirmək.

Üçüncüsü, istifadəçi rəyinin sürətləndirilməsidir. Əgər onun şərhləri varsa, dərhal düzəlişlər edə və tətbiqi dərhal yeniləyə bilərik”.

DevOps nə üçün lazımdır və DevOps mütəxəssisləri kimlərdir?

“Sistem mühəndisi”, “qurma mühəndisi” və “DevOps mühəndisi” anlayışları necə əlaqəlidir?

Onlar üst-üstə düşür, lakin bir qədər fərqli sahələrə aiddir.

EPAM-da sistem mühəndisi vəzifəsidir. Onlar müxtəlif səviyyələrdə olurlar: kiçikdən tutmuş baş mütəxəssisə qədər.

İnşaat mühəndisi daha çox layihədə yerinə yetirilə bilən bir roldur. İndi CI/CD-yə cavabdeh olan insanlar belə adlanır.

DevOps mühəndisi bir layihədə DevOps təcrübələrini həyata keçirən mütəxəssisdir.

Bütün bunları ümumiləşdirsək, belə bir şey əldə edirik: sistem mühəndisi vəzifəsində olan bir şəxs layihədə tikinti mühəndisi rolunu oynayır və orada DevOps təcrübələrinin həyata keçirilməsində iştirak edir.

DevOps mühəndisi tam olaraq nə edir?

DevOps mühəndisləri bir layihəni təşkil edən bütün parçaları birləşdirir. Onlar proqramçıların, testerlərin, sistem administratorlarının işinin xüsusiyyətlərini bilir və onların işini sadələşdirməyə kömək edirlər. Onlar biznesin ehtiyac və tələblərini, onun inkişaf prosesindəki rolunu başa düşürlər və prosesi müştərinin maraqlarını nəzərə alaraq qururlar.

Avtomatlaşdırma haqqında çox danışdıq - DevOps mühəndisləri ilk növbədə bununla məşğul olurlar. Bu, çox böyük bir məqamdır ki, bura başqa şeylərlə yanaşı, ətraf mühitin də hazırlanması daxildir.

Kirill Sergeev: “Məhsulda yeniləmələri tətbiq etməzdən əvvəl onlar üçüncü tərəf mühitində sınaqdan keçirilməlidir. O, DevOps mühəndisləri tərəfindən hazırlanır. Onlar bütövlükdə layihəyə DevOps mədəniyyətini aşılayırlar: onlar DevOps təcrübələrini layihələrinin bütün təbəqələrində təqdim edirlər. Bu üç prinsip: avtomatlaşdırma, sadələşdirmə, sürətləndirmə – çata bildikləri yerə gətirirlər”.

DevOps mühəndisi nə bilməlidir?

Ümumiyyətlə, o, müxtəlif sahələrdə biliklərə malik olmalıdır: proqramlaşdırma, əməliyyat sistemləri ilə işləmək, verilənlər bazası, montaj və konfiqurasiya sistemləri. Bunlar bulud infrastrukturu, orkestrləşdirmə və monitorinq sistemləri ilə işləmək bacarığı ilə tamamlanır.

1. Proqramlaşdırma dilləri

DevOps mühəndisləri avtomatlaşdırma üçün bir neçə əsas dil bilirlər və məsələn, proqramçıya deyə bilərlər: “Bəs siz kodu əl ilə deyil, hər şeyi avtomatlaşdıran skriptimizdən istifadə etməklə quraşdırırsınız? Bunun üçün konfiqurasiya faylı hazırlayacağıq, oxumaq həm sizin, həm də bizim üçün əlverişli olacaq və onu istənilən vaxt dəyişdirə biləcəyik. Biz də görəcəyik ki, kim, nə vaxt və niyə ona dəyişikliklər edir”.

DevOps mühəndisi bu dillərdən birini və ya bir neçəsini öyrənə bilər: Python, Groovy, Bash, Powershell, Ruby, Go. Onları dərin səviyyədə bilmək lazım deyil - sintaksis əsasları, OOP prinsipləri və avtomatlaşdırma üçün sadə skriptlər yazmaq bacarığı kifayətdir.

2. Əməliyyat sistemləri

DevOps mühəndisi məhsulun hansı serverdə quraşdırılacağını, hansı mühitdə işləyəcəyini və hansı xidmətlərlə qarşılıqlı əlaqədə olacağını başa düşməlidir. Siz Windows və ya Linux ailəsində ixtisaslaşa bilərsiniz.

3. Versiyaya nəzarət sistemləri

Versiyaya nəzarət sistemi haqqında məlumatı olmayan bir DevOps mühəndisi heç yerdə yoxdur. Git hazırda ən populyar sistemlərdən biridir.

4. Bulud provayderləri

AWS, Google, Azure - xüsusilə Windows istiqamətindən danışırıqsa.

Kirill Sergeev: “Bulud provayderləri bizə CI/CD-yə mükəmməl uyğun gələn virtual serverlər təqdim edir.

On fiziki serverin quraşdırılması yüzə yaxın əl əməliyyatı tələb edir. Hər bir server əl ilə işə salınmalı, lazımi əməliyyat sistemini quraşdırmalı və konfiqurasiya etməli, tətbiqimizi bu on serverə quraşdırmalı və sonra hər şeyi on dəfə iki dəfə yoxlamalısınız. Bulud xidmətləri bu proseduru on sətir kodla əvəz edir və yaxşı bir DevOps mühəndisi onlarla işləməyi bacarmalıdır. Bu həm müştəri, həm də şirkət üçün vaxta, səyə və pula qənaət edir”.

5. Orkestrləşdirmə sistemləri: Docker və Kubernetes

Kirill Sergeev: “Virtual serverlər konteynerlərə bölünür, onların hər birində tətbiqimizi quraşdıra bilərik. Çox konteyner olduqda, onları idarə etmək lazımdır: birini yandırın, digərini söndürün, haradasa ehtiyat nüsxəsini çıxarın. Bu olduqca mürəkkəbləşir və orkestr sistemi tələb edir.

Əvvəllər hər bir proqram ayrıca server tərəfindən idarə olunurdu - onun işində hər hansı dəyişiklik tətbiqin xidmət qabiliyyətinə təsir göstərə bilər. Konteynerlər sayəsində proqramlar təcrid olunur və ayrıca işləyir - hər biri öz virtual maşınında. Bir uğursuzluq baş verərsə, səbəbi axtarmaq üçün vaxt itirməyə ehtiyac yoxdur. Köhnə qabı məhv edib yenisini əlavə etmək daha asandır”.

6. Konfiqurasiya sistemləri: Chef, Ansible, Puppet

Bütün serverlər parkını saxlamaq lazım olduqda, eyni tipli çoxlu əməliyyatlar etməlisiniz. Bu uzun və çətindir və əl işi də səhv şansını artırır. Bu, konfiqurasiya sistemlərinin xilasetməyə gəldiyi yerdir. Onların köməyi ilə proqramçılar, DevOps mühəndisləri və sistem administratorları üçün oxumaq asan olan skript yaradırlar. Bu skript eyni əməliyyatları serverlərdə avtomatik həyata keçirməyə kömək edir. Bu, əl əməliyyatlarını (və buna görə də səhvləri) azaldır.

DevOps mühəndisi hansı karyera qura bilər?

Həm üfüqi, həm də şaquli olaraq inkişaf edə bilərsiniz.

İqor Boyko: “Üfüqi inkişaf nöqteyi-nəzərindən DevOps mühəndislərinin indi ən geniş perspektivləri var. Hər şey daim dəyişir və siz müxtəlif sahələrdə bacarıqlar inkişaf etdirə bilərsiniz: versiyaya nəzarət sistemlərindən monitorinqə, konfiqurasiya idarəetməsindən verilənlər bazalarına qədər.

Əgər işçi tətbiqin həyat dövrünün bütün mərhələlərində – inkişafdan tutmuş dəstəyə qədər necə işlədiyini anlamaqda maraqlıdırsa, siz sistem memarı ola bilərsiniz”.

Necə DevOps mühəndisi olmaq olar?

  1. Phoenix Layihəsini və DevOps Təlimatını oxuyun. Bunlar DevOps fəlsəfəsinin əsl sütunlarıdır, birincisi bədii əsərdir.
  2. Yuxarıdakı siyahıdan texnologiyaları öyrənin: təkbaşına və ya onlayn kurslar vasitəsilə.
  3. Açıq mənbə layihəsi üçün DevOps mühəndisi kimi qoşulun.
  4. Şəxsi və iş layihələrinizdə DevOps təcrübələrini məşq edin və təklif edin.

Mənbə: www.habr.com

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