Съдържание[Крия][Покажи]
Инфраструктурата е важна част от процеса на разработка на софтуер, тъй като е пряко отговорна за безпроблемната работа на софтуерното приложение. Сървъри, балансьори на натоварване, защитни стени, бази данни и сложни контейнерни клъстери са примери за инфраструктура.
Тъй като инфраструктурните трудности проникват в целия процес на разработка, те са от значение и извън производствените ситуации.
Те включват CI/CD платформи, сценични среди и инструменти за тестване, наред с други неща.
С нарастването на сложността на софтуерния продукт тези инфраструктурни предизвикателства стават все по-критични. Традиционната техника за ръчно управление на инфраструктурата бързо се превръща в нескачаемо решение, което да отговаря на стремежите на днешните базирани на DevOps цикли за бърза разработка на софтуер.
В резултат на това Инфраструктурата като код (IaC) се превърна в де факто решение за развитие днес. Инфраструктурата като код (IaC) ви позволява да мащабирате и проследявате промените в инфраструктурата, когато възникнат.
Ще разгледаме по-отблизо инфраструктурата като код в тази част, включително нейните предимства, защо е жизненоважна и др. И така, нека започваме.
Каква е Инфраструктурата като код?
Инфраструктурата като код е процесът на предоставяне и конфигуриране на среда с помощта на код, а не ръчно конфигуриране на подходящите устройства и системи. Разработчиците изпълняват скриптове след дефиниране на параметри на кода, а IaC платформата автоматично генерира облачната инфраструктура.
Такива автоматизирани ИТ конфигурации позволяват на екипите бързо да изградят необходимата облачна настройка за тестване и стартиране на техния продукт. Инфраструктурата като код позволява на разработчиците да конструират какъвто инфраструктурен компонент искат, като мрежи, балансьори на натоварване, бази данни, виртуални машини и видове връзки.
Казано на лаици, това е процесът на доставка и управление на инфраструктура, определена с помощта на код, а не на ръка. IaC също е важна техника за DevOps, която е необходима за бърз жизнен цикъл на доставка на софтуер.
Той позволява на екипите на DevOps бързо да конструират и да версират инфраструктура по същия начин, по който се версии на изходния код, както и да проследяват тези версии, за да сведат до минимум несъответствието между ИТ среди, което може да причини големи проблеми по време на внедряването.
Декларативни срещу императивни подходи към IaC
Към IaC може да се подходи по два начина: декларативен или императивен.
Инструмент за IaC ще настрои системата вместо вас, ако използвате декларативен подход, който описва планираното състояние на системата, включително какви ресурси се нуждаете и каквито качества трябва да притежават.
Декларативният подход също така поддържа проследяване на текущото състояние на вашите системни обекти, което улеснява управлението на престоя на вашата инфраструктура. Императивен метод, от друга страна, очертава конкретните инструкции, които трябва да бъдат изпълнени в правилния ред, за да се създаде предвидената конфигурация.
Много технологии на IaC използват декларативен подход за предоставяне на инфраструктура и ще го направят автоматично. Декларативен инструмент за IaC ще приложи модификации към желаното състояние за вас, ако ги направите. Ще трябва да разберете как да приложите тези корекции, ако използвате основен инструмент. Инструментите на IaC често са в състояние да работят и в двата режима, въпреки че предпочитат единия пред другия.
Как работи инфраструктурата като код?
За да приложите напълно инфраструктурата като код, трябва да има няколко изисквания.
Платформа за облачен хостинг като услуга (IaaS)
Първата и най-важна нужда е хостингът за отдалечен достъп. Инструментът за управление на конфигурацията трябва да се свърже с отдалечения хост и да прави промени там. Вашият екип трябва да гарантира, че инструментът за управление на конфигурацията има достъп, ако отдалечената инфраструктура се управлява самостоятелно.
Приложните програмни интерфейси (API) на облачната хостинг платформа с активиран IaaS позволяват на клиентите да изграждат, премахват и променят инфраструктурни ресурси при поискване. Системите за управление на конфигурацията могат да използват тези API, за да автоматизират тези дейности още повече. Digital Ocean, Amazon AWS и Microsoft Azure са три основни IaaS системи.
Платформа за управление на конфигурацията
Пакетът от инструменти, който се свързва с API на IaaS и автоматизира типичните операции, е следващата предпоставка за завършване на IaC. Група хора могат да работят заедно, за да създадат колекция от скриптове и инструменти. Въпреки това ще са необходими значителни усилия, текуща поддръжка и минимална възвръщаемост на инвестицията. Terraform, Ansible, Salt Stack и Chef са само някои от инструментите за управление на конфигурацията с отворен код, които се справят с това предизвикателство.
Система за контрол на версиите
Платформата за управление на конфигурацията използва текстови файлове, написани на език за маркиране като YAML, за да предостави задачи и последователности за изпълнение на платформата. Тези текстови файлове могат да се третират като код на приложението и да се съхраняват в хранилище за контрол на версиите. Заявки за изтегляне и прегледи на код са разрешени в хранилището, което действа като единна точка на истината. Системата за контрол на версиите Git е най-популярната.
При наличие на тези предпоставки помислете за следния сценарий: разработчик иска да добави нова услуга за приложение към системата. Този пример илюстрира процес на IaC.
- В предпочитаната от тях платформа за управление на конфигурацията, Terraform, разработчикът модифицира текстов файл на YAML конфигурация. Промените посочват, че е необходим нов хостинг сървър.
- В хранилището на Git разработчикът извършва промени в клон на функции. Разработчикът създава заявка за изтегляне, тъй като Git хранилището на проекта се хоства на Bitbucket. Друг член на екипа преглежда заявката за изтегляне и забелязва новите подобрения на инфраструктурата. Заявката за изтегляне е одобрена от член на екипа и разработчикът интегрира промяната в основния клон на хранилището.
- На тази стъпка е необходима конфигурационната платформа, за да се извърши актуализация. Разработчикът може ръчно да инициира актуализацията. Тъй като екипът използва Bitbucket, те имат достъп до Bitbucket Pipelines и могат да използват такъв, за да автоматизират тази процедура.
- Terraform се свързва с IaaS на екипа след изпълнение. Terraform използва IaaS API за изпълнение на поредица от команди, които актуализират IaaS до очакваната конфигурация на инфраструктурата.
Предимства на IaC
IaC подпомага организациите при управлението на техните нужди от ИТ инфраструктура по различни начини чрез автоматизирани процедури. Някои от предимствата на инсталирането на IaC са, както следва:
- Последователност: IaC може да увеличи последователността и да намали грешките, които често възникват по време на ръчни настройки. Той също така предотвратява промяна в конфигурацията, която може да възникне по време на ръчна операция. IaC ви позволява да предотвратите недокументирани, ad-hoc конфигурации, като кодифицирате и документирате вашите стандарти за конфигурация.
- Ефективност: Кодифицирането на вашата инфраструктура създава шаблон за осигуряване, което улеснява системната конфигурация, поддръжка и администриране. Той изгражда гъвкава, повторяема и мащабируема инфраструктура. В резултат на това DevOps може да ускори всеки етап от разработката на софтуер, което води до публикуването на повече приложения на дневна база.
- Намалени разходи: IaC позволява виртуалните машини да се управляват програмно, премахвайки необходимостта от ръчна хардуерна конфигурация и надстройки. Използвайки същия код, един оператор може да инсталира и управлява една машина или 1000 единици. В резултат на това се изискват по-малко служители и вече не е необходимо ново оборудване, което води до значителни икономии на разходи.
- Скорост: IaC намалява времето, необходимо на разработчиците да доставят своята инфраструктура, като я превръща в прост скрипт. В резултат на това внедряването на приложенията вече не се забавя от инфраструктурата и новият софтуер може да бъде доставен значително по-бързо.
- Намаляване на риска: Както IaC насърчава контрол на версията, вашите конфигурационни файлове, както всеки друг файл с изходен код на софтуер, могат да бъдат проследени. В резултат на това рискът е намален.
Какъв проблем решава IaC?
Инфраструктурата като код е създадена, за да се справи с проблема с отклонението на средата на тръбопровода за освобождаване. Без IaC екипите са отговорни за поддържането на настройките на всяка среда за внедряване. Всяка среда се превръща в снежинка, единствена по рода си подредба, която не може да бъде възпроизведена автоматично.
По време на внедряването несъответствието между среди причинява проблеми. Снежинките се нуждаят от ръчни операции, които са трудни за управление и допринасят за грешки в администрирането и поддръжката на инфраструктурата.
Инфраструктурата като кодекс се придържа към идеята за идемпотентност.
Идемпотентността се отнася до факта, че командата за разгръщане винаги конфигурира целевата среда по един и същи начин, независимо от началното състояние на средата. Идемпотентността се постига чрез автоматично задаване на съществуваща цел или отхвърляне на съществуващата цел и започване отначало.
В резултат на това, използвайки IaC, екипите променят описанието на средата и версията на конфигурационния модел, който често е написан в добре документирани кодови формати като JSON. Моделът се изпълнява в тръбопровода за освобождаване, за да настрои целевите среди. Екипът редактира източника, а не целта, ако трябва да направи промени.
Какво значение има IaC в DevOps?
Внедряването на DevOps и методологиите за непрекъсната интеграция/непрекъсната доставка (CI/CD) налага използването на IaC. Това освобождава разработчиците от по-голямата част от отговорностите за осигуряване, като им позволява просто да стартират скрипт, за да задействат инфраструктурата си.
В резултат на това внедряването на приложенията не се спира, докато инфраструктурата е изградена, а системните администратори не са обременени с отнемащи време ръчни задачи. От интеграция и тестване до доставка и внедряване, CI/CD разчита на постоянна автоматизация и непрекъснат мониторинг през целия жизнен цикъл на приложението. За да работи автоматизацията, е необходима постоянна среда.
Когато екипът за разработка доставя приложения или конфигурира среди по един начин, а оперативният екип инсталира и конфигурира средата по различен начин, автоматизирането на внедряването на приложения не е възможно.
Методологията на DevOps изравнява екипите за разработка и операции, което води до по-малко грешки, ръчно внедряване и несъответствия. Тъй като екипите за разработка и операции могат да използват едно и също описание на внедряването на приложението, IaC ви помага да синхронизирате разработката и операциите, позволявайки подход на DevOps.
Всяка среда, включително вашата производствена среда, трябва да следва един и същ метод на внедряване. Всеки път, когато се използва IaC, се създава идентична среда.
Заключение
DevOps разчита в голяма степен на инфраструктура като код. Инфраструктурата като код е естествената следваща стъпка в подготовката на вашите операции за бъдещето в свят, в който разрушителните технологии непрекъснато трансформират ИТ сектора.
Позволява ви да реализирате пълния потенциал на изчислителни облаци, намалява грешките, свързани с ръчното управление на ИТ инфраструктурата, и подобрява скоростта, с която се разработва софтуерът. Всичко това се постига при намаляване на оперативните разходи.
Оставете коментар