Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру
Жаңадан бастаушылар үшін бес қадамда алғашқы DevOps тізбегін құру.

DevOps тым баяу, ажыратылған және басқа да проблемалық даму процестерінің панацеясына айналды. Бірақ сізге DevOps-та ең аз білім қажет. Ол DevOps тізбегі және бес қадамның бірін қалай жасау керек сияқты ұғымдарды қамтиды. Бұл толық нұсқаулық емес, тек кеңейтуге болатын «балық». Тарихтан бастайық.

Менің DevOps-қа кіріспе

Мен Citi Group-та бұлттармен жұмыс істедім және Citi бұлтты инфрақұрылымын басқару үшін IaaS веб-қосымшасын әзірледім, бірақ мені әзірлеу тізбегін оңтайландыру және әзірлеушілер арасындағы мәдениетті жақсарту жолы әрқашан қызықтырды. Бұл кітапты маған бұлтты архитектура және инфрақұрылым бойынша техникалық директоры Грег Лавандер ұсынды. Феникс жобасы. Ол DevOps принциптерін әдемі түсіндіреді және роман сияқты оқылады.

Артқы жағындағы кесте компаниялардың жаңа нұсқаларды қаншалықты жиі шығаратынын көрсетеді:

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Amazon, Google және Netflix осыншалықты қалай таратады? Және бұл қарапайым: олар тамаша дерлік DevOps тізбегін қалай жасау керектігін түсінді.

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

Шұғыл бірдеңе жасау керек екені анық болды, мен пікірлес әріптес таптым. Біз бірінші DevOps тізбегін бірге құруды ұйғардық - ол виртуалды машина мен Tomcat қолданба серверін орнатты, мен Дженкинс, Atlassian Jira және BitBucket-пен интеграция, сондай-ақ тесттермен кодты қамту туралы қамқорлық жасадым. Жоба сәтті болды: біз әзірлеу тізбегін толығымен автоматтандырдық, әзірлеу серверінде 100% дерлік жұмыс уақытына қол жеткіздік, тесттермен кодты қамтуды бақылап, жақсарта алдық және Git филиалын Jira жеткізу және шығарумен байланыстыруға болады. Біз DevOps тізбегін құру үшін пайдаланған құралдардың барлығы дерлік ашық бастапқы код болды.

Шын мәнінде, тізбек жеңілдетілді, өйткені біз Jenkins немесе Ansible көмегімен кеңейтілген конфигурацияларды қолданбадық. Бірақ біз сәтті болдық. Бұл қағиданың салдары шығар Парето (80/20 ережесі).

DevOps және CI/CD тізбегінің қысқаша сипаттамасы

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

DevOps ортасын құру үшін құралдардың өзі жеткіліксіз болғанымен, олар өте қажет. Олардың ең маңыздысы үздіксіз интеграция және үздіксіз жеткізу (CI/CD). Әрбір орта үшін тізбекте әртүрлі кезеңдері бар (мысалы, DEV (әзірлеу), INT (интеграция), TST (тестілеу), QA (сапаны қамтамасыз ету), UAT (пайдаланушыны қабылдау сынағы), STG (дайындық), PROD (пайдалану)) , қолмен орындалатын тапсырмалар автоматтандырылған, әзірлеушілер сапалы код жасап, оны жеткізе алады және оңай қалпына келтіре алады.

Бұл жазба төмендегі суретте көрсетілгендей, ашық бастапқы құралдарды пайдалана отырып, DevOps тізбегін бес қадаммен жасау жолын сипаттайды.

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Іске кірісейік.

1-қадам: CI/CD платформасы

Ең алдымен, сізге CI/CD құралы қажет. Дженкинс — MIT лицензиясы бар, Java тілінде жазылған, DevOps қозғалысын танымал еткен және CICD үшін іс жүзінде стандартқа айналған ашық бастапқы CI/CD құралы.

Дженкинс дегеніміз не? Сізде әртүрлі қызметтер мен құралдарға арналған сиқырлы басқару тақтасы бар деп елестетіңіз. Дженкинс сияқты CI/CD құралы өздігінен пайдасыз, бірақ әртүрлі құралдар мен қызметтермен ол өте қуатты болады.

Дженкинстен басқа көптеген ашық бастапқы құралдар бар, кез келгенін таңдаңыз.

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

DevOps процесі CI/CD құралымен қалай көрінеді

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Сізде жергілікті хостта CI/CD құралы бар, бірақ әлі көп нәрсе істеу керек емес. Келесі қадамға көшейік.

2-қадам: Нұсқаны басқару

CI/CD құралының сиқырын тексерудің ең жақсы (және ең оңай) жолы - оны көзді басқару (SCM) құралымен біріктіру. Неліктен сізге нұсқаны басқару керек? Сіз өтініш жасап жатырсыз делік. Сіз оны Java, Python, C++, Go, Ruby, JavaScript немесе вагон және кішкене арба сияқты кез келген басқа тілде жазасыз. Сіз жазған нәрсе бастапқы код деп аталады. Алдымен, әсіресе жалғыз жұмыс істеп жатсаңыз, барлығын жергілікті каталогқа сақтай аласыз. Бірақ жоба өскен сайын және көбірек адамдар қосылған сайын, код өзгерістерін ортақ пайдалану тәсілі қажет, бірақ өзгерістерді біріктіру кезінде қақтығыстарды болдырмаңыз. Сондай-ақ, сақтық көшірмелерді пайдаланбай және кодтық файлдар үшін көшіру-қою әдісін пайдаланбай, алдыңғы нұсқаларды қандай да бір жолмен қалпына келтіру керек.

Ал мұнда SCM жоқ еш жерде. SCM кодты репозиторийлерде сақтайды, оның нұсқаларын басқарады және оны әзірлеушілер арасында үйлестіреді.

Көптеген SCM құралдары бар, бірақ Git де-факто стандартына айналды. Мен сізге оны пайдалануға кеңес беремін, бірақ басқа нұсқалар бар.

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Міне, SCM қосқаннан кейін DevOps құбыры қалай көрінеді.

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

CI/CD құралы бастапқы кодты жүктеп салу мен жүктеп алуды және топпен бірлесіп жұмыс істеуді автоматтандыруы мүмкін. Жаман емес? Енді миллиардтаған пайдаланушылар жақсы көретін осыдан жұмыс қосымшасын қалай жасауға болады?

3-қадам: Автоматтандыру құралын құру

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

Құрастыруды автоматтандыру құралын пайдаланыңыз. Қай құралды таңдасаңыз да, ол кодты дұрыс пішімде жинап, тазалауды, құрастыруды, тестілеуді және жеткізуді автоматтандырады. Құрастыру құралдары тілге байланысты өзгереді, бірақ келесі ашық бастапқы код опциялары әдетте пайдаланылады.

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Керемет! Енді құрастыруды автоматтандыру құралының конфигурация файлдарын CI/CD құралы құрастыратындай бастапқы басқаруға кірістірейік.

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Бұл жақсы сезінеді. Бірақ мұның барлығын қазір шығару қайда?

4-қадам: Веб қолданбалар сервері

Сонымен, сізде орындалатын немесе шығарылатын пакеттелген файл бар. Қолданба шынымен пайдалы болуы үшін оның қандай да бір қызметі немесе интерфейсі болуы керек, бірақ оның барлығын бір жерге қою керек.

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

Бірнеше ашық веб-бағдарлама серверлері бар.

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Бізде дерлік жұмыс істейтін DevOps тізбегі бар. Жақсы жұмыс!

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Негізінде, сіз осы жерде тоқтай аласыз, содан кейін оны өзіңіз шеше аласыз, бірақ кодтың сапасы туралы айту керек.

5-қадам: Сынақпен қамту

Тестілеу көп уақыт пен күш жұмсайды, бірақ соңғы пайдаланушыларды қуанту үшін қателерді бірден тауып, кодты жақсартқан дұрыс. Осы мақсатта кодты сынап қана қоймай, оны жақсарту бойынша кеңес беретін көптеген ашық құралдар бар. CI/CD құралдарының көпшілігі осы құралдарға қосылып, процесті автоматтандыруы мүмкін.

Тестілеу екі бөлікке бөлінеді: тесттерді жазу және орындау үшін тестілеу құрылымдары және код сапасын жақсартуға арналған кеңестері бар құралдар.

Тестілеу шеңберлері

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Сапалы кеңестері бар құралдар

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Бұл құралдар мен фреймворктардың көпшілігі Java, Python және JavaScript үшін жазылған, себебі C++ және C# жеке меншік болып табылады (бірақ GCC ашық бастапқы код).

Біз сынақты қамту құралдарын қолдандық, енді DevOps құбыры оқулықтың басындағы суретке ұқсас болуы керек.

Қосымша қадамдар

Контейнерлер

Жоғарыда айтқанымдай, қолданбалы серверді виртуалды машинада немесе серверде орналастыруға болады, бірақ контейнерлер көбірек танымал.

Контейнерлер дегеніміз не? Қысқаша айтқанда, виртуалды машинада операциялық жүйе қолданбаға қарағанда көбірек орын алады және контейнер әдетте бірнеше кітапхана мен конфигурациямен жеткілікті. Кейбір жағдайларда виртуалды машиналар өте қажет, бірақ контейнер қосымша ақысыз сервермен бірге қолданбаны орналастыра алады.

Контейнерлер үшін әдетте Docker және Kubernetes алынады, дегенмен басқа опциялар бар.

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Docker және Kubernetes туралы мақалаларды мына жерден оқыңыз opensource.com:

Орташа бағдарламалық құралды автоматтандыру құралдары

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

Мұнда ашық орта автоматтандыру құралдарының кейбір нұсқалары берілген:

Манекендерге арналған нұсқаулық: ашық бастапқы құралдармен DevOps тізбектерін құру

Мақалалардағы мәліметтер opensource.com:

Енді не істеу керек?

Бұл айсбергтің ұшы ғана. DevOps тізбегі көп нәрсені істей алады. CI/CD құралымен бастаңыз және жұмысыңызды жеңілдету үшін тағы нені автоматтандыруға болатынын көріңіз. туралы ұмытпаңыз ашық байланыс құралдары тиімді ынтымақтастық үшін.

Жаңадан бастаушыларға арналған тағы бірнеше жақсы DevOps мақалалары:

Сондай-ақ DevOps-ті ашық икемді құралдармен біріктіруге болады:

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

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