Az IaC-eszközök megértése: AWS CDK vs. Terraform

AWS CDK és Terraform – nem tudja, melyiket válassza? Ez a cikk segít megalapozott döntés meghozatalában.

A felhőalapú számítástechnika forradalmasította az információs és technológiai világot. Az alkalmazások telepítésétől és karbantartásától kezdve a fejlesztési gyakorlatokig mindenre nagy hatással volt a Cloud Computing. Minden új alkalmazást úgy fejlesztettek ki, hogy felhőalapú legyen, és kompatibilis legyen a felhőszolgáltatásokkal.

A Cloud Computing segít kiválóan elérhető, méretezhető és hatékony architektúrák kifejlesztésében, ami egyre nagyobb keresletet tesz a felhőszolgáltatások iránt. A felhőalapú számítástechnika fellendülésével az infrastruktúra kódként való fenntartása szükséges. A felhő-erőforrások manuális karbantartása konzolon keresztül összetett feladat lehet, amelyet nagyon nehéz követni.

Az infrastruktúra kódként, más néven IAC vagy IAAC megoldja ezt a problémát. Az IAC használatával erőforrásainkat kódként határozhatjuk meg, és ezt a kódot használhatjuk felhőszolgáltatások biztosítására. Az infrastruktúra kódként történő használata lehetővé teszi több fejlesztő számára, hogy együttműködjön az infrastruktúrában, és nyomon kövesse a fejlesztők által végrehajtott változtatásokat.

Az infrastruktúra mint kód az AWS-ben

Az AWS a legnagyobb és legszélesebb körben használt felhőszolgáltató világszerte. Saját IAC-eszközzel rendelkezik, az AWS CloudFormation vagy AWS CDK, és lehetővé teszi harmadik fél IAC-eszközeinek, például a Terraformnak az erőforrások biztosítását. Amikor IAC-eszközöket választ az AWS-hez, a Terraform, egy harmadik féltől származó eszköz komoly versenytárs az AWS által kezelt eszközök, az AWS CloudFormation és az AWS CDK között.

Mivel ezek az eszközök számos választási lehetőséget és szolgáltatást kínálnak, a megfelelő IAC-eszköz kiválasztása kihívást jelenthet. Ebben a cikkben megvitatjuk az AWS CDK és a Terraform közötti különbséget. Az AWS CDK belsőleg használja a Cloudformation-t, ezért a Cloudformation és a Terraform alaposabb megismeréséhez tekintse meg a kapcsolódó cikket: Az IAC-eszközök megértése: CloudFormation vs. Terraform.

Terraform

A Terraform egy nyílt forráskódú infrastruktúra kódeszközként, amelyet eredetileg a Hashicorp fejlesztett ki. Ez egy rendkívül pontos és kiforrott eszköz, amely nemcsak az AWS-t, hanem más felhőszolgáltatókat is támogatja. A Terraform támogatja az összes AWS-szolgáltatást, és a fejlesztői közösség gyorsan felveszi az AWS által a szolgáltatásaihoz hozzáadott új funkciókat. Lehetővé teszi számunkra, hogy kódot írjunk a Hashicorp által fejlesztett nyelven (HCL). A HCL egy JSON-szerű nyelv az infrastruktúra-erőforrások meghatározásához.

  Egyéni billentyűparancs létrehozása az MS Word 2016-ban

AWS CDK

Az AWS CDK az AWS CloudFormation köré épülő csomag. Az AWS CDK működésének megértéséhez ismernie kell egy kicsit az AWS CloudFormationről. Az AWS CloudFormation egy AWS által felügyelt eszköz, amely lehetővé teszi az AWS infrastruktúra YML vagy JSON formátumban történő meghatározását. Annak ellenére, hogy a JSON és az YML olvasása egyszerű, ezek nem tényleges programozási nyelvek. A hurkok és funkciók natív támogatása nincs, ami egyre nehezebbé teszi a nagy infrastruktúrák karbantartását. Itt jön be az AWS CDK.

Az AWS CDK az AWS CloudFromation köré épülő csomag, amely lehetővé teszi az ismert programozási nyelvek, például a JAVA vagy a Python használatát az infrastruktúra biztosításához. Ez megkönnyíti a kód írását és karbantartását.

Terraform vs. AWS CDK: Különbségek

#1. Nyelv és könnyű használat

A nyelv és a könnyű használat létfontosságú az AWS CDK és a Terraform közötti különbség megértéséhez.

Először beszéljünk a Terraformról. A Terraform egy JSON-szerű nyelvet használ az erőforrások és egyéb adatok, a HCL vagy a HashiCorp konfigurációs nyelv meghatározásához. Nagyon egyszerű, és a dokumentáció könnyen érthető és követhető, még a kezdők számára is.

Lássunk egy kódot egy S3 vödör létrehozásához.

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

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

A kód meglehetősen egyszerűen olvasható, és az erőforrás által támogatott egyéb paramétereket is láthatja a Terraform dokumentáció.

Mint korábban említettük, az AWS CDK egy CloudFormation burkoló, amely lehetővé teszi számunkra, hogy erőforrásainkat programozási nyelveken határozzuk meg. Lássunk egy AWS CDK kódot egy S3 gyűjtődoboz létrehozásához.

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',
    });
 }
}

A Terraform kód kicsit szebbnek tűnhet, mint a CDK, de mind a Terraform, mind a CDK kódok meglehetősen egyszerűek. Ha egy kis projekthez tervezi az IAC használatát, a Terraform és a CDK is remek választás a nyelv és a könnyű használhatóság tekintetében.

  Bluetooth egér vagy Trackpad csatlakoztatása iPad készülékéhez

Ha azonban a megfelelő IAC-eszközt választja egy nagy projekthez, sok fejlesztővel, a Terraformnak van egy hátránya. Amilyen egyszerű a Terraform, ez egy új nyelv, és egy teljesen új nyelvre kell képeznie fejlesztőit, amely nem hasonlít a többi használatban lévő programozási nyelvhez. Ennél is fontosabb, hogy az adatok kezelése a Terraformban nem olyan egyszerű, mint más programozási nyelvekben. Például a listák és objektumok iterálása és az értékek átalakítása nem olyan egyszerű, különösen a kezdők számára.

Én személy szerint az AWS CDK-t preferálnám a Terraform helyett, ha figyelembe vesszük a könnyű használhatóságot. A Terraform használata során előfordult, hogy megkerülő megoldásokat vagy bonyolult szkripteket kellett alkalmaznom a kívánt eredmény eléréséhez. Az adatok feletti irányítás és az adatok egyszerű manipulálása az AWS CDK nyelveken nagy nyereség az AWS CDK számára.

#2. Hatály

A Terraform egy többfelhős IAC-eszköz, ami azt jelenti, hogy nem csak az AWS-vel, hanem más felhőszolgáltatókkal is használhatja, mint például az Azure vagy a GCP. A Terraform nagyszerű eszköz többfelhős telepítések létrehozására, és tetszőleges számú felhőszolgáltatóval rendelkezik az alkalmazáshoz.

Előfordult már, hogy a széles körben használt globális platformok leálltak a felhőszolgáltató szolgáltatásaival kapcsolatos probléma miatt. Manapság okos döntés, ha egynél több felhőszolgáltatóval rendelkezik az alkalmazásaihoz.

Az AWS CDK egy AWS-ajánlat az IAC számára. Bármilyen erős és érett is a CDK, csak az AWS Cloudra korlátozódik.

Ha figyelembe vesszük az IAC-eszközök hatókörét, a Terraform nyilvánvaló nyertes a kettő közül. Nagyon logikus, ha a fejlesztők egyetlen eszközt használnak az összes felhőplatformhoz.

  8 kriptográfiai híroldal, hogy lépést tartson a legújabb frissítésekkel

#3. Teljesítmény

A megfelelő IAC-eszköz kiválasztásakor általában nem a teljesítmény a legfontosabb kritérium, de nagy projekteknél számíthat. A Terraform az AWS SDK használatával telepíti az erőforrásokat, míg a CDK-kódot először CloudFormation-sablonokká konvertálja, majd alkalmazza.

A Terraform valamivel gyorsabban működne, mint az AWS CDK, különösen azért, mert a CDK-nak időbe telik a kód CloudFormation Template-vé konvertálásához.

#4. Modularitás

A Terraform és az AWS CDK egyaránt használható modulok létrehozására. A Terraform natív modultámogatással rendelkezik. Létrehozhatja saját moduljait, és tárolhatja őket egy privát modul-nyilvántartásban, amelyet a szervezeten belül használhat. A Terraform rendelkezik egy nyilvános modulnyilvántartással is a nyilvános modulok tárolására és használatára.

Az AWS CDK-ban újrafelhasználható függvényeket, osztályokat hozhat létre, és megoszthatja ezt a kódot a szervezeten belül ugyanazon eredmény elérése érdekében. Ez egy nagy előny az AWS CDK-ban, mint a másik AWS IAC-eszközben – a CloudFormation nem teszi lehetővé a kód modulként történő létrehozását és újrafelhasználását. Használhat beágyazott veremeket a CloudFormationben ennek a követelménynek a teljesítéséhez, de az AWS CDK használata sokkal alkalmasabb alternatíva.

Összességében mindkét eszköz hasonló ebből a szempontból.

#5. Irányítás és kormányzás

Végső soron az AWS-konzolhoz való minden hozzáférést az IAM, az AWS Identity Management Service szabályozza. Használhat IAM-házirendeket az AWS CDK-val és a Terraformmal is bizonyos műveletek engedélyezéséhez és letiltásához. Az IAM lehetővé teszi, hogy pontosan szabályozza, milyen műveleteket lehet végrehajtani a fiókjában.

Amellett, hogy IAM-et használ a fiókerőforrásokhoz való hozzáférés szabályozására, a Terraform kódkeretként kínál házirendet, a Sentinel-t. A Sentinel lehetővé teszi, hogy részletes házirendeket írjon a felhasználó tevékenységeinek Terraformon keresztüli helyes vezérléséhez.

Következtetés

Mivel az AWS CDK belsőleg a CloudFormation szolgáltatást használja, azt javaslom, hogy olvassa el a CloudFormation vs. Terraform cikket, hogy jobban megértse az AWS CDK és a Terraform közötti különbségeket.

Összességében mind az AWS CDK, mind a Terraform kiforrott és hatékony eszközök. A Terraformnak van egy kis hátránya az adatkezelés terén. Tapasztalataim szerint azonban, ha már kényelmesebbé válik a Terraform írása, könnyebbé válik a kerülő megoldások alkalmazása és az adatátalakítások végrehajtása. Többfelhős műveletekhez a Terraform kézenfekvő választás; Ha azonban az AWS-t szeretné felhőszolgáltatóként használni, az AWS CDK kiváló alternatíva.