Forstå IaC-værktøjer: AWS CDK vs. Terraform

AWS CDK og Terraform – ikke sikker på, hvad du skal vælge? Denne artikel hjælper dig med at træffe en informeret beslutning.

Cloud Computing har revolutioneret verden af ​​information og teknologi. Fra den måde, vi implementerer og vedligeholder applikationer til udviklingspraksis, er alt blevet stærkt påvirket af Cloud Computing. Alle nye applikationer er udviklet til at være cloud-native og kompatible med cloud-tjenester.

Cloud Computing hjælper os med at udvikle højt tilgængelige, skalerbare og effektive arkitekturer, hvilket gør cloud-tjenester mere og mere efterspurgte. Med dette boom i cloud computing kommer et behov for at vedligeholde infrastruktur som en kode. Vedligeholdelse af cloud-ressourcer manuelt via konsol kan være en kompleks opgave, som kan være meget svær at spore.

Infrastruktur som en kode, alias IAC eller IAAC, løser dette problem. Ved at bruge IAC kan vi definere vores ressourcer som kode og bruge denne kode til at levere cloud-tjenester. Brug af infrastruktur som en kode giver flere udviklere mulighed for at samarbejde om infrastruktur og holde styr på de ændringer, udviklere foretager.

Infrastruktur som en kode i AWS

AWS er ​​den største og mest udbredte cloud-udbyder globalt. Det har sit eget IAC-værktøj, AWS CloudFormation eller AWS CDK, og tillader også tredjeparts IAC-værktøjer som Terraform at levere ressourcer. Når man vælger IAC-værktøjer til AWS, er Terraform, et 3. parts værktøj, en solid konkurrence til de AWS-administrerede værktøjer, AWS CloudFormation og AWS CDK.

Med så mange valgmuligheder og funktioner, som hvert af disse værktøjer giver, kan det være udfordrende at vælge det rigtige IAC-værktøj. I denne artikel vil vi diskutere forskellen mellem AWS CDK og Terraform. AWS CDK bruger Cloudformation internt, så for et dybere indblik i Cloudformation og Terraform, se venligst den relaterede artikel, Understanding IAC tools: CloudFormation vs. Terraform.

Terraform

Terraform er en open source-infrastruktur som et kodeværktøj, som oprindeligt blev udviklet af Hashicorp. Det er et meget præcist og modent værktøj, der understøtter ikke kun AWS, men også andre cloud-udbydere. Terraform understøtter alle AWS-tjenesterne, og udviklingsfællesskabet er hurtig til at opfange enhver ny funktion, som AWS føjer til sine tjenester. Det giver os mulighed for at skrive kode i Hashicorp udviklet sprog (HCL). HCL er et JSON-lignende sprog til at definere infrastrukturressourcer.

  Sådan tænder du Moto E4-meddelelseslys

AWS CDK

AWS CDK er en indpakning omkring AWS CloudFormation. For at forstå, hvordan AWS CDK fungerer, bør du vide lidt om AWS CloudFormation. AWS CloudFormation er et AWS-administreret værktøj, der giver os mulighed for at definere AWS-infrastruktur i YML- eller JSON-format. Selvom det er nemt at læse JSON og YML, er de ikke egentlige programmeringssprog. Der er ingen indbygget understøttelse af loops og funktioner, hvilket gør det sværere og sværere at vedligeholde store infrastrukturer. Det er her AWS CDK kommer ind.

AWS CDK er en indpakning omkring AWS CloudFromation, der giver dig mulighed for at bruge velkendte programmeringssprog som – JAVA eller Python til at klargøre din infrastruktur. Dette gør det nemmere at skrive og vedligeholde kode.

Terraform vs. AWS CDK: Forskelle

#1. Sprog og brugervenlighed

Sprog og brugervenlighed er afgørende for at forstå forskellen mellem AWS CDK og Terraform.

Lad os først tale om Terraform. Terraform bruger et JSON-lignende sprog til at definere ressourcer og andre data, HCL eller HashiCorp Configuration Language. Det er ret ligetil, og dokumentationen er nem at forstå og følge, selv for begyndere.

Lad os se en kode til at oprette en S3-spand.

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

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

Koden er ret enkel at læse, og du kan se andre parametre, som denne ressource understøtter i Terraform dokumentation.

Som nævnt før er AWS CDK en CloudFormation-indpakning, der giver os mulighed for at definere vores ressourcer i programmeringssprog. Lad os se en AWS CDK-kode for at oprette en S3-spand.

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 lidt pænere ud end CDK, men både Terraform- og CDK-koder er ret enkle. Hvis du planlægger at bruge IAC til et lille projekt, er både Terraform og CDK gode muligheder, hvad angår sprog og brugervenlighed.

  Sådan bruger du Safari Privat browsing på en iPhone eller iPad

Men når man vælger det rigtige IAC-værktøj til et stort projekt med mange udviklere, har Terraform en ulempe. Så simpelt som Terraform er, er det et nyt sprog, og du bliver nødt til at træne dine udviklere i et helt nyt sprog, der ikke ligner de andre programmeringssprog, der er i brug. Endnu vigtigere er datamanipulation i Terraform ikke så simpel som i andre programmeringssprog. For eksempel er det ikke så enkelt at gentage lister og objekter og transformere værdier, især for begyndere.

Personligt ville jeg foretrække AWS CDK frem for Terraform, hvis man overvejer brugervenligheden. Når jeg bruger Terraform, har der været tidspunkter, hvor jeg har været nødt til at bruge løsninger eller komplicerede scripts for at få de ønskede resultater. Den kontrol, vi har over data og muligheden for nemt at manipulere data på AWS CDK-sprog, er en stor gevinst for AWS CDK.

#2. Omfang

Terraform er et multi-cloud IAC-værktøj, hvilket betyder, at du ikke kun kan bruge Terraform med AWS, men også med andre cloud-udbydere som Azure eller GCP. Terraform er et fantastisk værktøj til at skabe multi-cloud-implementeringer og have et vilkårligt antal cloud-udbydere til din applikation.

Der har været tidspunkter, hvor udbredte globale platforme gik ned på grund af et problem i Cloud-udbyderens tjenester. I dagens tid er det en smart beslutning at have mere end én cloud-udbyder til dine applikationer.

AWS CDK er et AWS-tilbud til IAC. Så kraftfuld og moden CDK kan være, er den kun begrænset til AWS Cloud.

Når man overvejer omfanget af IAC-værktøjerne, er Terraform den åbenlyse vinder af de to. Det giver meget mening at få dine udviklere til at bruge et enkelt værktøj til alle cloud-platforme.

#3. Ydeevne

Ydeevne er normalt ikke det vigtigste kriterium, når du vælger det rigtige IAC-værktøj, men det kan have betydning i store projekter. Terraform implementerer ressourcer ved hjælp af AWS SDK, hvorimod CDK-koden først konverteres til CloudFormation-skabeloner og derefter anvendes.

  Sådan bruger du GameStop-belønningscertifikat online

Terraform ville arbejde lidt hurtigere end AWS CDK, især på grund af den tid, CDK tager at konvertere kode til CloudFormation Template.

#4. Modularitet

Både Terraform og AWS CDK kan bruges til at oprette moduler. Terraform har indbygget understøttelse af moduler. Du kan oprette dine egne moduler og hoste dem på et privat modulregister til brug i din organisation. Terraform har også et offentligt modulregister til hosting og brug af offentlige moduler.

I AWS CDK kan du oprette genbrugelige funktioner, klasser og dele denne kode i din organisation for at opnå det samme resultat. Dette er et stort plus i AWS CDK som det andet AWS IAC-værktøj – CloudFormation tillader dig ikke at oprette og genbruge kode som moduler. Du kan bruge indlejrede stakke i CloudFormation for at opnå dette krav, men at bruge AWS CDK er et meget mere passende alternativ.

Alt i alt er begge værktøjer ens i dette aspekt.

#5. Kontrol og styring

I sidste ende er al adgang til AWS Console kontrolleret af IAM, Identity Management Service fra AWS. Du kan bruge IAM-politikker med både AWS CDK og Terraform til at tillade og afvise bestemte handlinger. IAM giver dig mulighed for at have finmasket kontrol over, hvilke handlinger der kan udføres på din konto.

Ud over at bruge IAM til at kontrollere adgangen til kontoressourcer tilbyder Terraform en politik som en koderamme, Sentinel. Sentinel giver dig mulighed for at skrive finkornede politikker for korrekt at kontrollere en brugers handlinger via Terraform.

Konklusion

Da AWS CDK internt bruger CloudFormation, foreslår jeg, at du går gennem CloudFormation vs Terraform artiklen for bedre at forstå forskellene mellem AWS CDK og Terraform.

Samlet set er både AWS CDK og Terraform modne og kraftfulde værktøjer. Terraform har en lille ulempe, når det kommer til datamanipulation. Det er min erfaring, at når du først bliver mere fortrolig med at skrive Terraform, bliver det lettere at bruge løsninger og udføre datatransformationer. Til multi-cloud operationer er Terraform et oplagt valg; men hvis du ønsker at bruge AWS som din cloud-udbyder, er AWS CDK et glimrende alternativ.