Змест[Схаваць][Паказаць]
Інфраструктура з'яўляецца важнай часткай працэсу распрацоўкі праграмнага забеспячэння, паколькі яна непасрэдна адказвае за бесперабойную працу праграмнага прыкладання. Серверы, балансіры нагрузкі, брандмаўэры, базы дадзеных і складаныя кантэйнерныя кластары - гэта прыклады інфраструктуры.
Паколькі інфраструктурныя цяжкасці пранізваюць увесь працэс распрацоўкі, яны актуальныя і за межамі вытворчых сітуацый.
Сярод іншага, яны ўключаюць у сябе платформы CI/CD, асяроддзе пастаноўкі і інструменты тэставання.
Па меры павелічэння складанасці праграмнага прадукту гэтыя праблемы інфраструктуры становяцца ўсё больш крытычнымі. Традыцыйная тэхніка ручнога кіравання інфраструктурай хутка становіцца немасштабируемым рашэннем, якое адпавядае памкненням сучасных цыклаў хуткай распрацоўкі праграмнага забеспячэння на аснове DevOps.
У выніку, Infrastructure as Code (IaC) сёння стала рашэннем дэ-факта для распрацоўкі. Інфраструктура як код (IaC) дазваляе маштабаваць і адсочваць змены інфраструктуры па меры іх узнікнення.
У гэтым артыкуле мы больш падрабязна разгледзім інфраструктуру як код, у тым ліку яе перавагі, чаму гэта жыццёва важна і многае іншае. Такім чынам, давайце пачнем.
Што такое Інфраструктура як кодэкс?
Інфраструктура як код - гэта працэс забеспячэння і канфігурацыі асяроддзя з выкарыстаннем кода, а не ўручную наладжвання адпаведных прылад і сістэм. Распрацоўшчыкі запускаюць скрыпты пасля вызначэння параметраў кода, а платформа IaC аўтаматычна генеруе воблачную інфраструктуру.
Такія аўтаматызаваныя ІТ-канфігурацыі дазваляюць камандам хутка ствараць неабходныя налады воблака для тэставання і запуску свайго прадукту. Інфраструктура як код дазваляе распрацоўшчыкам будаваць любы кампанент інфраструктуры, які яны хочуць, напрыклад, сеткі, балансіроўкі нагрузкі, базы дадзеных, віртуальныя машыны і віды злучэнняў.
Калі казаць непрафесіяналам, гэта працэс пастаўкі і кіравання інфраструктурай, зададзены з дапамогай кода, а не ўручную. IaC таксама з'яўляецца важным метадам DevOps, які неабходны для хуткага жыццёвага цыклу пастаўкі праграмнага забеспячэння.
Гэта дазваляе камандам DevOps хутка ствараць і версіі інфраструктуры такім жа чынам, як версіі зыходнага кода, а таксама адсочваць гэтыя версіі, каб звесці да мінімуму неадпаведнасць паміж ІТ-асяроддзямі, што можа выклікаць сур'ёзныя праблемы падчас разгортвання.
Дэкларатыўны супраць імператыўны падыходы да IaC
IaC можна падысці двума спосабамі: дэкларатыўным або імператыўным.
Інструмент IaC наладзіць сістэму за вас, калі вы выкарыстоўваеце дэкларатыўны падыход, які апісвае меркаваны стан сістэмы, у тым ліку якія рэсурсы вам патрэбныя і якія якасці яны павінны валодаць.
Дэкларатыўны падыход таксама адсочвае бягучы стан вашых сістэмных аб'ектаў, што палягчае кіраванне часам прастою вашай інфраструктуры. Імператыўны метад, з іншага боку, акрэслівае канкрэтныя інструкцыі, якія павінны быць выкананы ў належным парадку для стварэння меркаванай канфігурацыі.
Многія тэхналогіі IaC выкарыстоўваюць дэкларатыўны падыход да забеспячэння інфраструктуры і будуць рабіць гэта аўтаматычна. Дэкларатыўны інструмент IaC будзе прымяняць для вас змены да жаданага стану, калі вы іх зробіце. Вам трэба будзе даведацца, як прымяніць гэтыя карэкціроўкі, калі вы выкарыстоўваеце неабходны інструмент. Інструменты IaC часта здольныя працаваць у абодвух рэжымах, хоць яны аддаюць перавагу адзін перад іншым.
Як працуе інфраструктура як код?
Каб цалкам рэалізаваць інфраструктуру ў выглядзе кода, неабходна выканаць некалькі патрабаванняў.
Платформа для хмарнага хостынгу як паслугі (IaaS)
Першая і самая важная патрэба - гэта хостынг аддаленага доступу. Інструмент кіравання канфігурацыяй павінен падключыцца да выдаленага хоста і ўнесці там змены. Ваша каманда павінна гарантаваць, што інструмент кіравання канфігурацыяй мае доступ, калі аддаленая інфраструктура самакіруецца.
API на воблачнай хостынгавай платформе з падтрымкай IaaS дазваляюць кліентам ствараць, выдаляць і змяняць рэсурсы інфраструктуры па патрабаванні. Сістэмы кіравання канфігурацыяй могуць выкарыстоўваць гэтыя API для далейшай аўтаматызацыі гэтых дзеянняў. Digital Ocean, Amazon AWS і Microsoft Azure - гэта тры асноўныя сістэмы IaaS.
Платформа для кіравання канфігурацыяй
Наступнай неабходнай умовай для завяршэння IaC з'яўляецца набор інструментаў, які падключаецца да API IaaS і аўтаматызуе тыповыя аперацыі. Група людзей можа працаваць разам, каб стварыць калекцыю сцэнарыяў і інструментаў. Аднак для гэтага спатрэбіцца прыкласці значныя намаганні, пастаяннае абслугоўванне і мінімальная аддача на інвестыцыі. Terraform, Ansible, Salt Stack і Chef - гэта толькі некаторыя інструменты кіравання канфігурацыяй з адкрытым зыходным кодам, якія спраўляюцца з гэтай праблемай.
Сістэма кантролю версій
Платформа кіравання канфігурацыяй выкарыстоўвае тэкставыя файлы, напісаныя на мове разметкі, такім як YAML, каб забяспечыць задачы і паслядоўнасці для выканання платформы. Гэтыя тэкставыя файлы можна разглядаць як код праграмы і захоўваць у рэпазітары кантролю версій. Pull-запыты і агляды кода дапускаюцца ў сховішчы, якое дзейнічае як адзіная кропка праўды. Самай папулярнай з'яўляецца сістэма кантролю версій Git.
Пры выкананні гэтых перадумоў разгледзім наступны сцэнар: распрацоўшчык хоча дадаць у сістэму новую службу прыкладанняў. Гэты прыклад ілюструе працэс IaC.
- У сваёй пераважнай платформе кіравання канфігурацыяй, Terraform, распрацоўшчык змяняе тэкставы файл канфігурацыі YAML. У зменах гаворыцца, што патрабуецца новы хостынг-сервер.
- У рэпазітары Git распрацоўшчык фіксуе змены ў галінцы функцый. Распрацоўшчык стварае запыт на выцягванне, паколькі рэпазітар Git праекта размешчаны на Bitbucket. Яшчэ адзін член каманды праглядае запыт на выцягванне і заўважае новыя паляпшэнні інфраструктуры. Запыт на выцягванне зацвярджаецца членам каманды, і распрацоўшчык інтэгруе змены ў галоўную галіну рэпазітара.
- На гэтым этапе патрабуецца канфігурацыйная платформа, каб выканаць абнаўленне. Распрацоўшчык можа ініцыяваць абнаўленне ўручную. Паколькі каманда выкарыстоўвае Bitbucket, яны маюць доступ да канвеераў Bitbucket і могуць выкарыстоўваць адзін для аўтаматызацыі гэтай працэдуры.
- Terraform падключаецца да IaaS каманды пасля выканання. Terraform выкарыстоўвае API IaaS для выканання паслядоўнасці каманд, якія абнаўляюць IaaS да меркаванай канфігурацыі інфраструктуры.
Перавагі IaC
IaC дапамагае арганізацыям кіраваць патрэбамі ІТ-інфраструктуры рознымі спосабамі з дапамогай аўтаматызаваных працэдур. Некаторыя перавагі ўстаноўкі IaC заключаюцца ў наступным:
- Узгодненасць: IaC можа павялічыць паслядоўнасць і паменшыць памылкі, якія часта ўзнікаюць падчас ручных налад. Гэта таксама прадухіляе знос канфігурацыі, які можа адбыцца падчас ручной працы. IaC дазваляе прадухіліць недакументаваныя, спецыяльныя змены канфігурацыі, кадыфікуючы і дакументуючы стандарты канфігурацыі.
- Эфектыўнасць: кадыфікацыя вашай інфраструктуры стварае шаблон забеспячэння, што робіць канфігурацыю сістэмы, абслугоўванне і адміністраванне прасцей. Ён стварае гнуткую, паўтаральную і маштабаваную інфраструктуру. У выніку DevOps можа паскорыць кожны этап распрацоўкі праграмнага забеспячэння, у выніку чаго штодня публікуецца больш прыкладанняў.
- Зніжэнне кошту: IaC дазваляе кіраваць віртуальнымі машынамі праграмна, пазбаўляючы ад неабходнасці ручной канфігурацыі абсталявання і абнаўлення. Выкарыстоўваючы адзін і той жа фрагмент кода, адзін аператар можа ўсталяваць і кіраваць адной машынай або 1000 адзінкамі. У выніку патрабуецца меншая колькасць супрацоўнікаў і больш не патрабуецца новае абсталяванне, што прыводзіць да значнай эканоміі выдаткаў.
- Хуткасць: IaC скарачае час, якое патрабуецца распрацоўшчыкам на пастаўку сваёй інфраструктуры, ператвараючы яе ў просты сцэнар. У выніку інфраструктура больш не затрымлівае разгортванне прыкладанняў, а новае праграмнае забеспячэнне можа пастаўляцца значна хутчэй.
- Знізіць рызыку: Як заахвочвае IaC кантролю версій, вашы канфігурацыйныя файлы, як і любы іншы файл зыходнага кода праграмнага забеспячэння, можна прасачыць. Як следства, рызыка зніжаецца.
Якую праблему вырашае IaC?
Infrastructure as Code была створана для вырашэння праблемы дрэйфу асяроддзя канвеера выпуску. Без IaC каманды адказваюць за падтрыманне налад кожнай асяроддзя разгортвання. Кожнае асяроддзе эвалюцыянуе ў сняжынку, адзіны ў сваім родзе аранжыроўку, якую немагчыма паўтарыць аўтаматычна.
Падчас разгортвання неадпаведнасць асяроддзя выклікае праблемы. Сняжынкі патрабуюць ручных аперацый, якімі цяжка кіраваць і якія спрыяюць памылкам у адміністраванні і абслугоўванні інфраструктуры.
Інфраструктура як кодэкс прытрымліваецца ідэі ідэмпатэнцыі.
Ідэмпатэнцыя адносіцца да таго факту, што каманда разгортвання заўсёды канфігуруе мэтавае асяроддзе аднолькава, незалежна ад пачатковага стану асяроддзя. Ідэмпатэнцыя дасягаецца альбо аўтаматычнай устаноўкай існуючай мэты, альбо адхіленнем існуючай мэты і пачаткам спачатку.
У выніку, выкарыстоўваючы IaC, каманды змяняюць апісанне асяроддзя і версію мадэлі канфігурацыі, якая часта пішацца ў добра дакументаваных фарматах кода, такіх як JSON. Мадэль запускаецца ў канвеер выпуску для налады мэтавых асяроддзяў. Каманда рэдагуе крыніцу, а не мэта, калі ім трэба ўнесці змены.
Як важны IaC у DevOps?
Укараненне метадалогій DevOps і бесперапыннай інтэграцыі/бесперапыннай дастаўкі (CI/CD) патрабуе выкарыстання IaC. Гэта вызваляе распрацоўшчыкаў ад большасці абавязкаў па прадастаўленні інфармацыі, дазваляючы ім проста запусціць скрыпт, каб запусціць сваю інфраструктуру.
У выніку разгортванне прыкладанняў не спыняецца падчас стварэння інфраструктуры, а сістэмныя адміны не абцяжараныя працаёмкімі ручнымі задачамі. Ад інтэграцыі і тэставання да дастаўкі і разгортвання CI/CD абапіраецца на пастаянную аўтаматызацыю і бесперапынны маніторынг на працягу ўсяго жыццёвага цыклу прыкладання. Для працы аўтаматызацыі патрабуецца пастаяннае асяроддзе.
Калі каманда распрацоўшчыкаў пастаўляе прыкладанні або наладжвае сераду ў адзін бок, а аперацыйная група ўсталёўвае і наладжвае асяроддзе іншым спосабам, аўтаматызацыя разгортвання прыкладанняў немагчымая.
Метадалогія DevOps выраўноўвае групы распрацоўшчыкаў і аперацый, што прыводзіць да меншай колькасці памылак, разгортвання ўручную і неадпаведнасцяў. Паколькі групы распрацоўшчыкаў і аперацый могуць выкарыстоўваць аднолькавае апісанне разгортвання прыкладання, IaC дапамагае вам сінхранізаваць распрацоўку і аперацыі, што дазваляе выкарыстоўваць падыход DevOps.
Кожнае асяроддзе, у тым ліку ваша вытворчае асяроддзе, павінна прытрымлівацца аднаго і таго ж метаду разгортвання. Кожны раз, калі IaC выкарыстоўваецца, ствараецца ідэнтычнае асяроддзе.
заключэнне
DevOps у значнай ступені залежыць ад інфраструктуры ў якасці кода. Інфраструктура як код - гэта наступны натуральны крок у падрыхтоўцы вашай дзейнасці да будучыні ў свеце, дзе падрыўныя тэхналогіі пастаянна трансфармуюць ІТ-сектар.
Гэта дазваляе рэалізаваць увесь патэнцыял хмарных вылічэнняў, зніжае колькасць памылак, звязаных з ручным кіраваннем ІТ-інфраструктурай, і павышае хуткасць распрацоўкі праграмнага забеспячэння. Усё гэта дасягаецца пры зніжэнні аперацыйных выдаткаў.
Пакінуць каментар