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 немесе Linux отбасында мамандануды таңдай аласыз.

3. Нұсқаларды басқару жүйелері

Нұсқаларды басқару жүйесін білмей, DevOps инженері еш жерде болмайды. Git - қазіргі уақытта ең танымал жүйелердің бірі.

4. Бұлттық провайдерлер

AWS, Google, Azure - әсіресе Windows бағыты туралы айтатын болсақ.

Кирилл Сергеев: «Бұлттық провайдерлер бізге CI/CD-ге тамаша сәйкес келетін виртуалды серверлерді ұсынады.

Он физикалық серверді орнату жүзге жуық қолмен жұмыс істеуді қажет етеді. Әрбір серверді қолмен іске қосып, қажетті операциялық жүйені орнату және конфигурациялау, осы он серверге біздің қолданбаны орнату, содан кейін барлығын он рет екі рет тексеру керек. Бұлттық қызметтер бұл процедураны кодтың он жолымен ауыстырады және жақсы DevOps инженері олармен жұмыс істей алуы керек. Бұл тұтынушы үшін де, компания үшін де уақытты, күш пен ақшаны үнемдейді».

5. Оркестрлік жүйелер: Docker және Kubernetes

Кирилл Сергеев: «Виртуалды серверлер контейнерлерге бөлінген, олардың әрқайсысында біз өз қосымшамызды орната аламыз. Контейнерлер көп болған кезде оларды басқару керек: біреуін қосыңыз, екіншісін өшіріңіз, бір жерде сақтық көшірме жасаңыз. Бұл өте күрделі болады және оркестрлік жүйені қажет етеді.

Бұрын әрбір қосымшаны жеке сервер өңдейтін - оның жұмысындағы кез келген өзгерістер қолданбаның қызмет көрсету мүмкіндігіне әсер етуі мүмкін. Контейнерлердің арқасында қолданбалар оқшауланып, бөлек жұмыс істейді - әрқайсысы жеке виртуалды машинада. Егер сәтсіздік орын алса, оның себебін іздеуге уақыт жоғалтудың қажеті жоқ. Ескі ыдысты жойып, жаңасын қосу оңайырақ».

6. Конфигурация жүйелері: Chef, Ansible, Puppet

Бүкіл серверлер паркін ұстау қажет болғанда, сіз бірдей операциялардың көп түрін орындауыңыз керек. Бұл ұзақ және қиын, ал қолмен жұмыс істеу қателік мүмкіндігін арттырады. Бұл жерде конфигурация жүйелері көмекке келеді. Олардың көмегімен олар бағдарламашыларға, DevOps инженерлеріне және жүйелік әкімшілерге оқуға оңай сценарий жасайды. Бұл сценарий серверлерде бірдей әрекеттерді автоматты түрде орындауға көмектеседі. Бұл қолмен жасалатын операцияларды (сондықтан қателерді) азайтады.

DevOps инженері қандай мансапты құра алады?

Сіз көлденең және тігінен дамыта аласыз.

Игорь Бойко: «Көлденең даму тұрғысынан алғанда, DevOps инженерлері енді кең перспективаларға ие. Барлығы үнемі өзгеріп отырады және сіз әртүрлі салаларда дағдыларды қалыптастыра аласыз: нұсқаларды басқару жүйелерінен мониторингке дейін, конфигурацияны басқарудан дерекқорларға дейін.

Егер қызметкер қолданбаның өмірлік циклінің барлық кезеңдерінде - әзірлеуден бастап қолдауға дейін қалай жұмыс істейтінін түсінуге қызығушылық танытса, сіз жүйе сәулетшісі бола аласыз».

Қалай DevOps инженері болуға болады?

  1. Феникс жобасы мен DevOps анықтамалығын оқыңыз. Бұл DevOps философиясының нақты тіректері, біріншісі көркем шығарма.
  2. Жоғарыдағы тізімнен технологияларды үйреніңіз: өз бетіңізше немесе онлайн курстар арқылы.
  3. Ашық бастапқы жоба үшін DevOps инженері ретінде қосылыңыз.
  4. Жеке және жұмыс жобаларыңызда DevOps тәжірибесін үйреніңіз және ұсыныңыз.

Ақпарат көзі: www.habr.com

пікір қалдыру