Эгер сиз DevOps менен жаңы болсоңуз, биринчи каналыңызды түзүү боюнча беш кадамдуу колдонмону карап көрүңүз.

DevOps жай, бөлүнгөн же бузулган программалык камсыздоону иштеп чыгуу процесстерин оңдоо үчүн стандарттуу чечим болуп калды. Көйгөй, эгер сиз DevOps менен жаңы болсоңуз жана эмнеден баштоону билбей жатсаңыз, бул ыкмаларды түшүнбөй калышыңыз мүмкүн. Бул макалада DevOps куурунун аныктамасы талкууланат жана аны түзүү үчүн беш кадамдуу көрсөтмөлөр берилет. Бул окуу куралы толук болбосо да, ал сизге саякатыңызды баштоого жана келечекте билимиңизди кеңейтүүгө негиз бериши керек. Бирок тарыхтан баштайлы.
Менин DevOps саякатым
Мен буга чейин Citi Group булуттук командасында Citi булуттук инфраструктурасын башкаруу үчүн Infrastructure-as-a-Service (IaaS) веб тиркемесин иштеп чыккам, бирок мен ар дайым иштеп чыгуу процессин натыйжалуураак кылып, маданиятка оң маданий өзгөрүүлөрдү алып келүүгө кызыкчумун. өнүктүрүү командасы. Мен жоопту Citiдеги булут архитектурасынын жана инфраструктурасынын CTO директору Грег Лавендер сунуштаган китептен таптым. Китеп Феникс долбоору деп аталды.), жана ал DevOps принциптерин түшүндүрөт, бирок ал роман сыяктуу окулат.
Китептин артындагы таблицада ар кандай компаниялар системаларын чыгаруу чөйрөсүндө канчалык көп жайгаштыраарын көрсөтөт:
Amazon: күнүнө 23
Google: күнүнө 5
Netflix: күнүнө 500
Facebook: күнүнө бир жолу
Twitter: жумасына 3 жолу
Кадимки компания: 9 айда бир жолу
Кантип Amazon, Google жана Netflix жыштыктары мүмкүн? Себеби, бул компаниялар дээрлик кемчиликсиз DevOps түтүгүн кантип түзүүнү ойлоп табышты.
Citiде DevOps ишке ашырылмайынча, биз мындан алыс болчубуз. Ал кезде менин командам ар кандай чөйрөлөргө ээ болчу, бирок иштеп чыгуу серверинде жайгаштыруу толугу менен кол менен болгон. Бардык иштеп чыгуучулар IBM WebSphere Application Server Community Edition негизинде бир гана иштеп чыгуу серверине кирүү мүмкүнчүлүгүнө ээ болушкан. Көйгөй бир эле учурда бир нече колдонуучу жайгаштырууга аракет кылганда сервер жабылып калчу, ошондуктан иштеп чыгуучулар өз ниеттерин бири-бирине билдирүүгө туура келди, бул абдан кыйналды. Кошумчалай кетсек, тесттик коддун камтылышынын төмөн деңгээли, кол менен жайылтуу процесстеринин татаалдыгы жана белгилүү бир тапшырма же колдонуучунун окуясы менен байланышкан коддун жайылышын көзөмөлдөө мүмкүн эместиги бар.
Бир нерсе кылыш керек экенин түшүнүп, пикирлеш кесиптеш таптым. Биз баштапкы DevOps түтүгүн курууда кызматташууну чечтик – ал Tomcat виртуалдык машинасын жана тиркеме серверин орнотту, ал эми мен Дженкинсте иштеп, Atlassian Jira менен BitBucketти бириктирип, тесттик коддун камтуусунда иштеген. Бул кошумча долбоор абдан ийгиликтүү болду: биз көптөгөн процесстерди дээрлик толугу менен автоматташтырдык, иштеп чыгуу серверибизде дээрлик 100% иштөө убактысына жетиштик, көзөмөлдөөнү камсыздап, коддун тесттик камтылышын жакшырттык жана Git филиалдарын Jira маселелерине же жайылтууларына байланыштыруу мүмкүнчүлүгүн коштук. DevOps куурубузду курууда колдонгон куралдарыбыздын көбү ачык булак болгон.
Эми мен биздин DevOps конвейерибиздин канчалык жөнөкөй экенин түшүндүм: биз Jenkins файлдары же Ansible сыяктуу кеңейтүүлөрдү колдонгон жокпуз. Бирок, бул жөнөкөй түтүк, балким, Парето принцибинин (80/20 эрежеси катары да белгилүү) аркасында жакшы иштеген.
DevOps жана CI/CD түтүгүнө кыскача киришүү
Эгер сиз бир нече адамдан: "DevOps деген эмне?" деп сурасаңыз, сиз бир нече түрдүү жооп аласыз. DevOps, Agile сыяктуу, көптөгөн ар кандай дисциплиналарды камтышы үчүн эволюцияланган, бирок көпчүлүк адамдар бир нече нерсеге макул болушат: DevOps бул программалык камсыздоону иштеп чыгуу практикасы же программалык камсыздоону иштеп чыгуунун жашоо цикли (SDLC), анын негизги жобосу иштеп чыгуучулар жана башка эместер болгон маданиятты өзгөртөт. иштеп чыгуучулар чөйрөдө бар:
Мурда кол менен аткарылган операциялар автоматташтырылган;
Ар бир адам эң жакшы кылганын кылат;
Белгилүү бир убакыттын ичинде ишке ашыруулардын саны көбөйөт; Өткөрүү жөндөмдүүлүгү жогорулайт;
Өнүгүү ийкемдүүлүгүн жогорулатуу.
Туура программалык куралдарга ээ болуу DevOps чөйрөсүн түзүү үчүн зарыл болгон жалгыз нерсе болбосо да, кээ бир куралдар абдан маанилүү. Негизги курал - үзгүлтүксүз интеграция жана үзгүлтүксүз жайылтуу (CI/CD). Бул түтүктө чөйрөлөр ар кандай этаптарга ээ (мисалы, DEV, INT, TST, QA, UAT, STG, PROD), көптөгөн операциялар автоматташтырылган жана иштеп чыгуучулар жогорку сапаттагы кодду жазып, иштеп чыгуунун ийкемдүүлүгүнө жана жайылтуу ылдамдыгына жетише алышат.
Бул макалада ачык булак куралдарын колдонуу менен төмөнкү диаграммада көрсөтүлгөндөй, DevOps түтүгүн түзүүнүн беш кадамдуу ыкмасы сүрөттөлөт.
1-кадам: CI/CD ыкмалары
Сизге керек болгон биринчи нерсе - CI/CD куралы. Дженкинс, Java негизиндеги ачык булак куралы жана MIT лицензиясы боюнча лицензияланган, DevOpsти популярдуу кылган жана иш жүзүндө стандартка айланган курал.
Ошентип, Дженкинс деген эмне? Аны ар кандай кызматтар жана инструменттер менен сүйлөшүп, уюштура ала турган сыйкырдуу универсалдуу алыстан башкаруучу деп ойлойсуз. Өз алдынча, Дженкинс сыяктуу CI/CD куралы пайдасыз, бирок ал ар кандай шаймандарга жана кызматтарга туташкан сайын күчтүүрөөк болуп калат.
Дженкинс бул DevOps түтүгүн куруу үчүн колдоно ала турган көптөгөн ачык булактуу CI/CD куралдарынын бири гана.
Дженкинс: Creative Commons жана MIT
Travis CI: MIT
CruiseControl: BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Cabie: GNU
DevOps процесстери CI/CD куралы менен кандай көрүнөт:

Локостуңузда иштеген CI/CD куралыңыз бар, бирок учурда сиз жасай ала турган көп нерсе жок. DevOps саякатынын кийинки этабына өтөбүз.
2-кадам: Булакты башкаруу тутумдарын башкаруу
Сиздин CI/CD куралыңыз өзүнүн сыйкырын жасай аларын текшерүүнүн эң жакшы (жана эң оңой) жолу - булак кодун башкаруу (SCM) куралы менен интеграциялоо. Эмне үчүн сизге булакты көзөмөлдөө керек? Сиз тиркемени иштеп жатасыз дейли. Тиркемени жараткан сайын, сиз программалап жатасыз жана Java, Python, C++, Go, Ruby, JavaScript же циллиондогон программалоо тилдерин колдонгонуңуз маанилүү эмес. Сиз жазган код баштапкы код деп аталат. Башында, өзгөчө, сиз жалгыз иштеп жатканыңызда, бардыгын жергиликтүү каталогго коюу туура болот. Бирок долбоор чоңойгон сайын жана сиз башка адамдарды кызматташууга чакырган сайын, өзгөртүүлөр менен бөлүшүп жатканда чыр-чатактын алдын алуунун жолу керек. Ошондой эле мурунку версияларды калыбына келтирүүнүн жолу керек, анткени резервдик көчүрмөлөрдү түзүү жана аларга көчүрүү/каптоо эскирип баратат. Сизге (жана сиздин командалаштарыңызга) жакшыраак нерсе керек.
Бул жерде баштапкы кодду көзөмөлдөө дээрлик зарылчылыкка айланат. Бул курал сиздин кодуңузду репозиторийлерде сактайт, версияларды көзөмөлдөйт жана долбоордун катышуучуларынын ишин координациялайт.
Ал жерде көптөгөн булактарды башкаруу куралдары бар болсо да, Git стандарттуу жана туура. Мен Gitти колдонууну сунуштайм, бирок эгер кааласаңыз, башка ачык булак варианттары бар.
Git: GPLv2 жана LGPL v2.1
Subversion: Apache 2.0
Concurrent Versions System (CVS): GNU
Веста: LGPL
Mercurial: GNU GPL v2+
Бул DevOps конвейери баштапкы коддун башкаруу элементтерин кошуу менен ушундай көрүнөт.

CI/CD куралы карап чыгуу, баштапкы кодду алуу жана мүчөлөр арасында кызматташуу процесстерин автоматташтыра алат. Жаман эмес? Бирок аны кантип миллиарддаган адамдар колдонуп, баалай алыш үчүн аны жумушчу тиркемеге айланта аласыз?
3-кадам: Build Automation куралын түзүү
Абдан жакшы! Сиз кодду карап чыгып, булакты көзөмөлдөөгө өзгөртүүлөрдү киргизип, досторуңузду иштеп чыгууда кызматташууга чакыра аласыз. Бирок сиз азырынча колдонмо түзө элексиз. Веб тиркемесин түзүү үчүн, ал жайгаштырылуучу пакет форматында компиляцияланышы жана пакеттелиши же аткарылуучу файл катары иштетилиши керек. (JavaScript же PHP сыяктуу чечмеленген программалоо тилин компиляциялоонун кереги жок экенин эске алыңыз).
Курулушту автоматташтыруу куралын колдонуңуз. Кайсы гана курууну автоматташтыруу куралын колдонууну чечкениңизге карабастан, алардын баары бир максатты көздөйт: баштапкы кодду каалаган форматта куруу жана тазалоо, компиляциялоо, сыноо жана белгилүү бир чөйрөгө жайылтуу тапшырмасын автоматташтыруу. Куруу куралдары программалоо тилиңизге жараша өзгөрөт, бирок бул жерде кээ бир жалпы ачык булак параметрлери бар.
ысым
лицензия
Программалоо тили
Акылман
Apache 2.0
Java
кумурска
Apache 2.0
Java
атин
Apache 2.0
Java
Базел
Apache 2.0
Java
жасоо
GNU
N / A
Грунт
MIT
JavaScript
жутуп алуу
MIT
JavaScript
Куруучу
Apache
лаал
тырмоо
MIT
лаал
AAP
GNU
Python
SCons
MIT
Python
BitBake
GPLv2
Python
торт / кекс
MIT
C#
ASDF
Экспат (MIT)
LISP
Так
BSD
Хэскелл
Абдан жакшы! Сиз курууну автоматташтыруу куралынын конфигурация файлдарын булак башкаруу тутумуңузга салып, CI/CD куралыңызга баарын чогултууга уруксат бере аласыз.

Баары жакшы, туурабы? Бирок колдонмоңузду кайда жайгаштыруу керек?
4-кадам: Web Application Server
Азырынча сизде аткарылуучу же орнотула турган пакеттелген файл бар. Ар бир тиркеме чындап пайдалуу болушу үчүн, ал кандайдыр бир кызматты же интерфейсти камсыз кылышы керек, бирок колдонмоңузду жайгаштыруу үчүн сизге контейнер керек.
Веб тиркеме сервери дал ушундай контейнер. Сервер жайгаштырылып жаткан пакеттин логикасын аныктоого боло турган чөйрөнү камсыз кылат. Сервер ошондой эле интерфейсти камсыз кылат жана розеткаларды тышкы дүйнөгө көрсөтүү менен веб-кызматтарды сунуштайт. Аны орнотуу үчүн сизге HTTP сервери, ошондой эле кандайдыр бир чөйрө (виртуалдык машина сыяктуу) керек. Азырынча, сиз бул жөнүндө көбүрөөк билесиз деп ойлойлу (бирок мен төмөндө контейнерлерди камтыйм).
Бир нече ачык булак веб-тиркеме серверлери бар.
ысым
лицензия
Программалоо тили
эркек мышык
Apache 2.0
Java
тосмо
Apache 2.0
Java
WildFly
GNU Lesser Public
Java
GlassFish
CDDL & GNU Less Public
Java
Пинин жашоосу
3-пункт BSD
Python
куюн
Apache 2.0
Python
gunicorn
MIT
Python
Python
MIT
Python
Код
MIT
лаал
Node.js
MIT
Javascript
DevOps кууруңуз дээрлик колдонууга даяр. Жакшы жумуш!

Сиз ошол жерде токтоп, интеграцияны өзүңүз чечсеңиз да, коддун сапаты колдонмону иштеп чыгуучу үчүн тынчсыздана турган маанилүү нерсе.
5-кадам: Code Testing камтуу
Сыноолорду ишке ашыруу дагы бир түйшүктүү талап болушу мүмкүн, бирок иштеп чыгуучулар колдонмодогу бардык мүчүлүштүктөрдү эрте байкап, акыркы колдонуучулардын ыраазы болушу үчүн коддун сапатын жакшыртуулары керек. Бактыга жараша, кодуңузду сынап көрүү жана анын сапатын жакшыртуу боюнча сунуштарды берүү үчүн көптөгөн ачык булак куралдары бар. Андан да жакшысы, көпчүлүк CI/CD куралдары бул куралдарга туташып, процессти автоматташтыра алат.
Код тестирлөө эки бөлүктөн турат: тесттерди жазууга жана иштетүүгө жардам берген код тестирлөө алкактары жана кодуңуздун сапатын жакшыртууга жардам берүүчү сунуш куралдары.
Код тестирлөө системалары
ысым
лицензия
Программалоо тили
JUnit
Eclipse Public License
Java
EasyMock
Apache
Java
mockito
MIT
Java
PowerMock
Apache 2.0
Java
Pytest
MIT
Python
Алмас
Mozilla
Python
Токс
MIT
Python
Кодду жакшыртуу боюнча рекомендация системалары
ысым
лицензия
Программалоо тили
Cobertura
GNU
Java
CodeCover
Eclipse Public (EPL)
Java
Coverage.py
Apache 2.0
Python
Эмма
Common Public License
Java
JaCoCo
Eclipse Public License
Java
Алмас
Mozilla
Python
Токс
MIT
Python
жасмин
MIT
JavaScript
карма
MIT
JavaScript
Mocha
MIT
JavaScript
жок
MIT
JavaScript
Эскерте кетсек, жогоруда айтылган инструменттердин жана алкактардын көпчүлүгү Java, Python жана JavaScript үчүн жазылган, анткени C++ жана C# менчик программалоо тилдери (GCC ачык булак болсо да).
Эми сиз сыноону камтуу куралдарын ишке ашырганыңыздан кийин, DevOps конвейериңиз ушул окуу куралынын башында көрсөтүлгөн диаграммага окшош болушу керек.
Кошумча кадамдар
Контейнерлер
Мен айткандай, сиз сервериңизди виртуалдык машинада же серверде жайгаштырсаңыз болот, бирок контейнерлер популярдуу чечим болуп саналат.
Контейнерлер деген эмне? Кыскача түшүндүрмө, виртуалдык машинага тиркеменин көлөмүнөн ашкан операциялык тутумдун эстутумунун чоң көлөмү керек, ал эми контейнерге тиркемени иштетүү үчүн бир нече китепкана жана конфигурациялар гана керек. Албетте, виртуалдык машина үчүн дагы эле маанилүү колдонуулар бар, бирок контейнер тиркемени, анын ичинде тиркеме серверин жайгаштыруу үчүн жеңил чечим болуп саналат.
Башка контейнер параметрлери бар болсо да, эң популярдуу Docker жана Kubernetes.
Докер: Apache 2.0
Kubernetes: Apache 2.0
Автоматташтыруунун орто куралдары
Биздин DevOps конвейерибиз, биринчи кезекте, биргелешкен тиркемелерди түзүүгө жана жайылтууга багытталган, бирок DevOps куралдары менен жасала турган башка көптөгөн нерселер бар. Алардын бири - инфраструктураны код катары (IaC) инструменттерин колдонуу, алар орто программалык автоматташтыруу куралдары катары да белгилүү. Бул куралдар орто программаны орнотууну, башкарууну жана башка милдеттерди автоматташтырууга жардам берет. Ошентип, мисалы, автоматташтыруу куралы веб-тиркеме сервери, маалымат базасы жана туура конфигурациялары бар мониторинг куралы сыяктуу тиркемелерди чыгарып, аларды тиркеме серверине жайгаштыра алат.
Бул жерде кээ бир ачык булак орто программалык автоматташтыруу куралдары бар:
Ansible: GNU Public
SaltStack: Apache 2.0
Ашпозчу: Apache 2.0
Куурчак: Apache же GPL

SkillFactory'ден акы төлөнүүчү онлайн курстарынан өтүү менен, нөлдөн баштап же шык-жөндөмдүүлүк жана айлык акы боюнча Level Up кантип талап кылынган кесипке ээ болуу боюнча чоо-жайын билип алыңыз:
- (12 ай)
көбүрөөк курстар
- (12 жума)
- (12 ай)
- (9 ай)
- (9 ай)
пайдалуу
Source: www.habr.com
