АВС ЦлоудФорматион и Terraform – да ли сте у недоумици који од њих одабрати? Овај чланак ће вам помоћи да направите правилан избор.
Рачунарство у облаку је темељно променило свет ДевОпс-а. Оно више није само појам, већ стварност која мења начин на који развијамо и одржавамо наше апликације. Иако постоје бројни разлози зашто бисте требали користити рачунарство у облаку за све нивое пословања, један од изазова јесте ручно обезбеђивање инфраструктуре.
Потребно је приступати конзолама добављача облака и специфицирати шта тачно желите. Ово функционише добро за мале пројекте, али шта се дешава ако различити људи мењају конфигурације директно у конзоли? Можете завршити са изузетно компликованом инфраструктуром коју је све теже одржавати. Не постоји ефикасан начин за сарадњу или праћење промена у облачној инфраструктури. Или ипак постоји? Одговор је: Инфраструктура као код.
Инфраструктура као код (Infrastructure as Code, IaC) је веома заступљен термин у области рачунарства у облаку. То је приступ управљању ИТ инфраструктуром помоћу кода. Тако је, уместо ручног рада у конзоли, IaC вам омогућава да пишете конфигурационе датотеке које аутоматски обезбеђују вашу инфраструктуру у облаку. IaC нуди предности као што су доследност, једноставно и брзо одржавање, као и смањење могућности људске грешке.
Коришћење IaC са Амазон Веб Сервисима
АВС је водећи провајдер рачунарских услуга у облаку, са двоструко већим тржишним уделом од следећег провајдера. АВС нуди преко 200 услуга које могу задовољити стотине и хиљаде различитих потреба.
Када почнете да користите IaC са АВС-ом, често ћете се суочити са избором између АВС ЦлоудФорматион и алата отвореног кода Terraform. Приликом избора између ова два алата, разумевање свих функција које они нуде може бити изазовно. У овом чланку ћемо детаљно анализирати разлике између АВС ЦлоудФорматион-а и Terraform-а, како би вам помогли да одлучите који алат је најприкладнији за ваше потребе.
Terraform против АВС ЦлоудФорматион: Кључне разлике
Модуларност
У великим организацијама, приликом примене IaC, модуларност представља кључни фактор при избору правог алата.
ЦлоудФорматион
ЦлоудФорматион нема уграђену подршку за модуле. Уместо тога, користи се концепт „угнежђених стекова“ који функционишу као модули.
На пример, можете направити стандардну конфигурацију за креирање С3 кошева у оквиру ваше организације. Дакле, правите шаблон ЦлоудФорматион-а који креира С3 кошеве. Када корисник жели да направи С3 кош, он користи овај шаблон као угнежђени стек.
Постоји и мање позната АВС услуга, АВС Service Catalog, која вам може помоћи са модуларношћу вашег АВС ЦлоудФорматион-а. Service Catalog је АВС услуга намењена организацијама које желе да ограниче обим АВС услуга ради усклађивања са захтевима у погледу безбедности, трошкова или перформанси. И шта је занимљиво? Service Catalog користи ЦлоудФорматион шаблоне у позадини.
Да разјаснимо ово на примеру. С3 кошеви, ако се не користе правилно, могу угрозити ваше поверљиве податке. Желите да имате стандардни начин коришћења С3 у вашој организацији. Прва опција је креирање шаблона угнежђеног стека који се може користити у оквиру других ЦлоудФорматион стекова.
Ако не желите да корисници користе овај шаблон као угнежђени стек, можете користити АВС Service Catalog. Service Catalog омогућава корисницима да користе стандардни шаблон из корисничког интерфејса конзоле, уносећи одређене параметре за мање измене. Ово вам омогућава да контролишете начин на који се инфраструктура обезбеђује у оквиру ваших АВС налога, спречавајући нежељене ситуације.
Terraform
Terraform има уграђену подршку за модуле. Могуће је направити стандардне конфигурације, сличне АВС ЦлоудФорматион-у и користити их у другим Terraform конфигурацијама.
Како је Terraform алат отвореног кода, можете пронаћи и користити готове модуле отвореног кода у Terraform регистру. Такође можете креирати сопствене модуле и хостовати их у приватном регистру модула.
Лично, радије бих користио Terraform уместо CloudFormation-а, ако је модуларност кључни захтев.
Коришћење угнежђених стекова у CloudFormation-у није тако једноставно као коришћење модула у Terraform-у. Главни разлог је што пренос података из ЦФН шаблона у угнежђени стек може бити прилично компликован.
Не постоји стандардно место за дељење CloudFormation шаблона. Постоји АВС Service Catalog, али то је само начин да се примене одређена правила за креирање инфраструктуре преко конзоле. Када користите Service Catalog, иако су неки задаци инкапсулирани CloudFormation датотекама, и даље морате ручно приступити конзоли и унети параметре за креирање инфраструктуре.
Terraform, са друге стране, има уређен начин креирања, одржавања и дељења модула. У Terraform регистру можете видети тачне захтеве модула и врло лако их користити у својим Terraform датотекама.
Контрола и управљање инфраструктуром
Ако желите да ограничите ресурсе које ваши корисници могу да креирају на вашим АВС налозима, АВС CloudFormation и Terraform вам пружају потребне алате.
Прво, хајде да причамо о CloudFormation-у. CloudFormation сам по себи не нуди контролу над начином на који се шаблони користе, али можете користити АВС ИАМ политике да омогућите корисницима на вашем АВС налогу да користе само стандардне CloudFormation шаблоне за креирање ресурса. На пример, можете ограничити све „S3 Create“ дозволе за кориснике и омогућити им да креирају S3 кошеве само преко AWS Service Catalog-а или угнежђених стекова.
Terraform вам омогућава да контролишете ресурсе које ваши корисници могу креирати користећи политику као алатку за код Sentinel. Sentinel омогућава примену детаљних политика заснованих на логици како би се одобриле или одбиле радње корисника преко Terraform-а. На пример, можете забранити све ресурсе који креирају S3 кошеве и дозволити корисницима да их креирају само из стандардног модула.
Управљање стањем
И АВС CloudFormation и Terraform морају да евидентирају ресурсе којима управљају.
Terraform чува стање ваше инфраструктуре у датотеци стања. Ова датотека се подразумевано чува локално, али је можете чувати на удаљеним локацијама као што је S3 и омогућити више корисника да врше измене у истој инфраструктури.
CloudFormation не одржава датотеку стања, барем не на начин који је нама видљив. CloudFormation је услуга којом се управља, тако да се све провере стања обављају у позадини.
И АВС CloudFormation и Terraform имају механизме за проверу промена које ће бити примењене на вашу инфраструктуру. У Terraform-у можете покренути команду „terraform plan“ да видите како Terraform планира да примени промене. У CloudFormation-у, корисници могу да виде ове информације преко Change Sets.
Језик
Terraform користи HashiCorp Configuration Language (HCL), језик креиран од стране HashiCorp-а. Веома је сличан JSON-у са додатним уграђеним функцијама и могућностима.
CloudFormation шаблони се пишу у YAML или JSON форматима.
Евидентирање и враћање у претходно стање
И АВС CloudFormation и Terraform имају одличне могућности евидентирања. По мом искуству, грешке и проблеми су углавном били једноставни за дијагностику.
CloudFormation: У случају неуспеле промене стека, CloudFormation подразумевано поништава све ваше промене. Ово је корисна функција која се може искључити за потребе отклањања грешака.
Terraform: Terraform не поништава аутоматски промене у случају неуспеха. Међутим, увек можете покренути команду „terraform destroy“ да избришете делом обезбеђену конфигурацију и поново покренете Terraform apply.
Обим
Terraform није ограничен на АВС. Кључни фактор при избору између Terraform-а и CloudFormation-а је да Terraform подржава друге добављаче и услуге у облаку.
Дакле, ако планирате да користите IaC на више платформи у облаку, Terraform је најбољи избор. CloudFormation, иако је моћан алат, ограничен је само на АВС. Користећи Terraform, можете подесити инфраструктуру и применити апликацију на више облачних платформи, повећавајући њену доступност и робусност.
Подршка за функције
Обично, када АВС уводи нове услуге и функције, CloudFormation се ажурира пре Terraform-а, јер је то АВС услуга. За сада, оба алата покривају већину услуга и карактеристика ових услуга. Ово може бити мали недостатак коришћења Terraform-а, али постоји решење.
Такође, могуће је креирати CloudFormation стек унутар Terraform кода. Дакле, ако користите Terraform и недостаје му нека функција, можете привремено да подесите CloudFormation стек унутар свог Terraform кода.
Техничка подршка
Плаћени технички планови подршке за АВС такође покривају подршку за CloudFormation.
HashiCorp такође има плаћене техничке планове подршке за Terraform.
Закључак
И АВС CloudFormation и Terraform су моћни и добро развијени алати. Горе наведене разлике ће вам помоћи да направите информисан избор алата у складу са вашим захтевима. Ако планирате да користите више облачних платформи у будућности или тренутно користите више облака, требали бисте одабрати Terraform као јединствено решење за све ваше потребе. Ако тражите IaC алат само за АВС, и АВС CloudFormation и Terraform су подједнако добри избори.
Ако сте заинтересовани да научите Terraform, погледајте ове онлајн курсеве.