Forstå IaC-verktøy: AWS CDK vs. Terraform

AWS CDK og Terraform – usikker på hva du skal velge? Denne artikkelen vil hjelpe deg å ta en informert beslutning.

Cloud Computing har revolusjonert verden av informasjon og teknologi. Fra måten vi distribuerer og vedlikeholder applikasjoner til utviklingspraksis, har alt blitt sterkt påvirket av Cloud Computing. Alle nye applikasjoner er utviklet for å være skybaserte og kompatible med skytjenester.

Cloud Computing hjelper oss med å utvikle svært tilgjengelige, skalerbare og effektive arkitekturer, noe som gjør skytjenester mer og mer etterspurt. Med denne boomen i cloud computing kommer et behov for å vedlikeholde infrastruktur som en kode. Å vedlikeholde skyressurser manuelt via konsoll kan være en kompleks oppgave som kan være svært vanskelig å spore.

Infrastruktur som en kode, aka IAC eller IAAC, løser dette problemet. Ved å bruke IAC kan vi definere ressursene våre som kode og bruke denne koden til å levere skytjenester. Ved å bruke infrastruktur som en kode kan flere utviklere samarbeide om infrastruktur og holde styr på endringene utviklet av utviklere.

Infrastruktur som en kode i AWS

AWS er ​​den største og mest brukte skyleverandøren globalt. Den har sitt eget IAC-verktøy, AWS CloudFormation eller AWS CDK, og lar også tredjeparts IAC-verktøy som Terraform klargjøre ressurser. Når du velger IAC-verktøy for AWS, er Terraform, et tredjepartsverktøy, en solid konkurranse til AWS-administrerte verktøy, AWS CloudFormation og AWS CDK.

Med så mange valg og funksjoner som hvert av disse verktøyene gir, kan det være utfordrende å velge riktig IAC-verktøy. I denne artikkelen vil vi diskutere forskjellen mellom AWS CDK og Terraform. AWS CDK bruker Cloudformation internt, så for en dypere oversikt over Cloudformation og Terraform, se den relaterte artikkelen, Understanding IAC tools: CloudFormation vs. Terraform.

Terraform

Terraform er en åpen kildekode Infrastructure as a Code-verktøy som opprinnelig ble utviklet av Hashicorp. Det er et svært nøyaktig og modent verktøy som støtter ikke bare AWS, men også andre skyleverandører. Terraform støtter alle AWS-tjenestene, og utviklingsfellesskapet er raskt ute med å plukke opp alle nye funksjoner som AWS legger til sine tjenester. Det lar oss skrive kode i Hashicorp utviklet språk (HCL). HCL er et JSON-lignende språk for å definere infrastrukturressurser.

  12 beste vertsplattformer for det tyske markedet

AWS CDK

AWS CDK er en innpakning rundt AWS CloudFormation. For å forstå hvordan AWS CDK fungerer, bør du vite litt om AWS CloudFormation. AWS CloudFormation er et AWS-administrert verktøy som lar oss definere AWS-infrastruktur i YML- eller JSON-format. Selv om det er enkelt å lese JSON og YML, er de ikke egentlige programmeringsspråk. Det er ingen innebygd støtte for løkker og funksjoner, noe som gjør vedlikehold av store infrastrukturer vanskeligere og vanskeligere. Det er her AWS CDK kommer inn.

AWS CDK er en innpakning rundt AWS CloudFromation som lar deg bruke kjente programmeringsspråk som – JAVA eller Python for å klargjøre infrastrukturen din. Dette gjør det lettere å skrive og vedlikeholde kode.

Terraform vs. AWS CDK: Forskjeller

#1. Språk og brukervennlighet

Språk og brukervennlighet er avgjørende for å forstå forskjellen mellom AWS CDK og Terraform.

La oss snakke om Terraform først. Terraform bruker et JSON-lignende språk for å definere ressurser og andre data, HCL eller HashiCorp Configuration Language. Det er ganske enkelt, og dokumentasjonen er lett å forstå og følge, selv for nybegynnere.

La oss se en kode for å lage en S3-bøtte.

resource "aws_s3_bucket" "my_s3_bucket" {
  bucket = "my-tf-bucket"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }
}

Koden er ganske enkel å lese, og du kan se andre parametere som denne ressursen støtter i Terraform dokumentasjon.

Som nevnt før, er AWS CDK en CloudFormation-innpakning som lar oss definere ressursene våre i programmeringsspråk. La oss se en AWS CDK-kode for å lage en S3-bøtte.

import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';

export class BucketStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    new s3.Bucket(this, 'MyFirstBucket', {
      bucketName: 'my-first-bucket',
    });
 }
}

Terraform-kode kan se litt penere ut enn CDK, men både Terraform- og CDK-koder er ganske enkle. Hvis du planlegger å bruke IAC for et lite prosjekt, er både Terraform og CDK gode alternativer når det gjelder språk og brukervennlighet.

  Slik kopierer du formatering raskt og enkelt i Google Dokumenter

Men når du velger riktig IAC-verktøy for et stort prosjekt med mange utviklere, har Terraform en ulempe. Så enkelt som Terraform er, det er et nytt språk, og du må trene utviklerne dine i et helt nytt språk som ikke ligner på de andre programmeringsspråkene som er i bruk. Enda viktigere, datamanipulering i Terraform er ikke så enkelt som i andre programmeringsspråk. For eksempel er det ikke like enkelt å iterere gjennom lister og objekter og transformere verdier, spesielt for nybegynnere.

Personlig vil jeg foretrekke AWS CDK fremfor Terraform hvis jeg vurderer brukervennligheten. Når jeg bruker Terraform, har det vært tider hvor jeg har måttet bruke løsninger eller kompliserte skript for å få de ønskede resultatene. Kontrollen vi har over data og muligheten til å enkelt manipulere data på AWS CDK-språk er en stor gevinst for AWS CDK.

#2. omfang

Terraform er et multi-cloud IAC-verktøy, noe som betyr at du ikke bare kan bruke Terraform med AWS, men også med andre skyleverandører som Azure eller GCP. Terraform er et flott verktøy for å lage multisky-implementeringer og ha et hvilket som helst antall skyleverandører for applikasjonen din.

Det har vært tider da mye brukte globale plattformer gikk ned på grunn av et problem i skyleverandørens tjenester. I dagens tid er det en smart avgjørelse å ha mer enn én skyleverandør for applikasjonene dine.

AWS CDK er et AWS-tilbud for IAC. Så kraftig og moden CDK kan være, er den bare begrenset til AWS Cloud.

Når man vurderer omfanget av IAC-verktøyene, er Terraform den åpenbare vinneren av de to. Det er veldig fornuftig å la utviklerne dine bruke ett enkelt verktøy for alle skyplattformene.

#3. Opptreden

Ytelse er vanligvis ikke det viktigste kriteriet når du velger riktig IAC-verktøy, men det kan ha betydning i store prosjekter. Terraform distribuerer ressurser ved å bruke AWS SDK, mens CDK-koden først konverteres til CloudFormation-maler og deretter brukes.

  Topp 50 beste gratis iPhone-apper

Terraform ville fungere litt raskere enn AWS CDK, spesielt på grunn av tiden CDK tar å konvertere kode til CloudFormation Template.

#4. Modularitet

Både Terraform og AWS CDK kan brukes til å lage moduler. Terraform har innebygd støtte for moduler. Du kan lage dine egne moduler og være vert for dem i et privat modulregister for bruk i organisasjonen din. Terraform har også et offentlig modulregister for hosting og bruk av offentlige moduler.

I AWS CDK kan du opprette gjenbrukbare funksjoner, klasser og dele denne koden i organisasjonen din for å oppnå samme resultat. Dette er et stort pluss i AWS CDK som det andre AWS IAC-verktøyet – CloudFormation lar deg ikke opprette og gjenbruke kode som moduler. Du kan bruke nestede stabler i CloudFormation for å oppnå dette kravet, men bruk av AWS CDK er et mye mer passende alternativ.

Alt i alt er begge verktøyene like i dette aspektet.

#5. Kontroll og styring

Til syvende og sist kontrolleres all tilgang til AWS-konsollen av IAM, Identity Management Service fra AWS. Du kan bruke IAM-policyer med både AWS CDK og Terraform for å tillate og avvise visse handlinger. IAM lar deg ha finmasket kontroll over hvilke handlinger som kan utføres på kontoen din.

I tillegg til å bruke IAM for å kontrollere tilgang til kontoressurser, tilbyr Terraform en policy som et koderammeverk, Sentinel. Sentinel lar deg skrive finmaskede retningslinjer for å kontrollere en brukers handlinger korrekt via Terraform.

Konklusjon

Siden AWS CDK internt bruker CloudFormation, foreslår jeg at du går gjennom CloudFormation vs Terraform-artikkelen for å bedre forstå forskjellene mellom AWS CDK og Terraform.

Totalt sett er både AWS CDK og Terraform modne og kraftige verktøy. Terraform har en liten ulempe når det kommer til datamanipulering. Men etter min erfaring, når du først blir mer komfortabel med å skrive Terraform, blir det enklere å bruke løsninger og utføre datatransformasjoner. For multisky-operasjoner er Terraform et opplagt valg; men hvis du ønsker å bruke AWS som din skyleverandør, er AWS CDK et utmerket alternativ.