Text size
പരീക്ഷിച്ചറിഞ്ഞത്6 മിനിറ്റ് വായന

പുലുമി, ടെറാഫോർം അല്ലെങ്കിൽ സിഡികെ?

ഒരേ അടിസ്ഥാന സൌകര്യം മൂന്നു വിധത്തിൽ എഴുതിയിട്ടുണ്ട്, ഞാൻ പഠിച്ചതും.

Pulumi, Terraform or CDK?
AI ഉപയോഗിച്ച് സൃഷ്ടിച്ച ചിത്രീകരണം

അടിസ്ഥാന സൌകര്യങ്ങള് കോഡായി രണ്ടു വിഭാഗങ്ങളായി വിഭജിക്കപ്പെട്ടിരിക്കുന്നു. ഒന്ന്, അടിസ്ഥാന സൌകര്യങ്ങളെ ഒരു ഡിക്ലറേറ്റീവ് കോൺഫിഗറേഷൻ ഭാഷയില് വിവരിക്കണം എന്നാണ് പറയുന്നത്, ടെറഫോർമിന്റെ HCL പോലെ. മറ്റേത് പറയുന്നു: നമുക്ക് ഇതിനകം തന്നെ മികച്ച പ്രോഗ്രാമിങ് ഭാഷകളുണ്ട്, എന്തുകൊണ്ട് അവ ഉപയോഗിക്കാതിരിക്കുക? അതാണ് പുലുമിയുടെയും എഡബ്ല്യുഎസ് സിഡികെയുടെയും പിന്നിലെ ആശയം.

അവയെ താരതമ്യം ചെയ്യാനുള്ള ഏറ്റവും നല്ല മാർഗം, അവയിൽ ഒരേ കാര്യം തന്നെ എഴുതുക എന്നതാണ്. ഇവിടെ ഒരു ലളിതമായ എസ് 3 ബക്കറ്റ് ഉണ്ട്, ഓരോന്നിലും പതിപ്പ് നിയന്ത്രണം ഉണ്ട്.

ടെറാഫോർം (എച്ച് സി എൽ)

resource "aws_s3_bucket" "assets" {
  bucket = "acme-assets-prod"
  tags   = { environment = "production" }
}

resource "aws_s3_bucket_versioning" "assets" {
  bucket = aws_s3_bucket.assets.id
  versioning_configuration {
    status = "Enabled"
  }
}

output "bucket_name" {
  value = aws_s3_bucket.assets.bucket
}

പുലുമി (ടൈപ്പ് സ്ക്രിപ്റ്റ്)

import * as aws from "@pulumi/aws";

const assets = new aws.s3.BucketV2("assets", {
    bucket: "acme-assets-prod",
    tags: { environment: "production" },
});

new aws.s3.BucketVersioningV2("assets", {
    bucket: assets.id,
    versioningConfiguration: { status: "Enabled" },
});

export const bucketName = assets.bucket;

AWS സി ഡി കെ (ടൈപ്പ് സ്ക്രിപ്റ്റ്)

import { Stack, StackProps, Tags, CfnOutput } from "aws-cdk-lib";
import * as s3 from "aws-cdk-lib/aws-s3";
import { Construct } from "constructs";

export class AssetsStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const assets = new s3.Bucket(this, "Assets", {
      bucketName: "acme-assets-prod",
      versioned: true,
      encryption: s3.BucketEncryption.S3_MANAGED,
      blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
    });

    Tags.of(assets).add("environment", "production");
    new CfnOutput(this, "BucketName", { value: assets.bucketName });
  }
}

എച്ച് സി എൽ vs യഥാർത്ഥ ഭാഷകൾ

ഒരു ബക്കറ്റിന് വേണ്ടി ഈ ഉദാഹരണങ്ങൾ സമാനമാണ്. കാര്യങ്ങൾ വളരുന്തോറും വ്യത്യാസങ്ങൾ കാണും.

ഹ്ച്ല് (ടെറാഫം, ഓപ്പൺ ടോഫു) മനഃപൂർവം പരിമിതപ്പെടുത്തിയിരിക്കുന്നു. ലൂപ്പുകളും വ്യവസ്ഥകളും നിലവിലുണ്ട് (for_each, count, ത്രിത്വങ്ങൾ), പക്ഷെ ഇത് ഒരു പൂർണ്ണ പ്രോഗ്രാമിങ് ഭാഷയല്ല. അതൊരു സവിശേഷതയാണ്. കോൺഫിഗറേഷനുകൾ വായിക്കാൻ എളുപ്പമാണ്, ഡെവലപ്പർമാരല്ലാത്ത ആളുകൾക്ക് പോലും, ആരും മനസ്സിലാക്കാത്ത ബുദ്ധിപരമായ കോഡിന് ഇടമില്ല.

പുലുമി ടൈപ്പ്സ്ക്രിപ്റ്റ്, പൈത്തൺ, ഗോ, സി#, ജാവ, യാംൽ എന്നിവ ഉപയോഗിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. നിങ്ങൾക്ക് യഥാർത്ഥ ലൂപ്പുകൾ, ഫംഗ്ഷനുകൾ, ക്ലാസുകൾ, പാക്കേജുകൾ, ഐ. ഡി. ഇ യുടെ ഓട്ടോമാറ്റിക് പൂരിപ്പിക്കൽ, പരിചിതമായ ഫ്രെയിം വർക്കുകളുമായി യൂണിറ്റ് ടെസ്റ്റുകൾ എന്നിവ ലഭിക്കും. സങ്കീർണ്ണമായ യുക്തിക്ക് ഉത്തമമാണ്, മറ്റൊരു ഭാഷ പഠിക്കാന് ആഗ്രഹിക്കാത്ത ഡവലപ്പർമാര് ക്ക്. അപകടം: വളരെ ബുദ്ധിമാനായ ഒരു ഇൻഫ്രാസ്ട്രക്ചർ കോഡ്.

AWS സി ഡി കെ യഥാർത്ഥ ഭാഷകളും ഉപയോഗിക്കുന്നു, പക്ഷേ അതിന്റെ ശക്തി നിർമ്മാണങ്ങൾ: നല്ല നിലവാരമുള്ള കെട്ടിടങ്ങൾ. മുകളിലുള്ള സിഡികെ ബക്കറ്റിന് എങ്ങനെ എൻക്രിപ്ഷൻ ലഭിച്ചുവെന്നും പൊതുജനങ്ങൾക്ക് സൌജന്യമായി പ്രവേശനം തടഞ്ഞുവെന്നും ശ്രദ്ധിക്കുക. ഉയർന്ന തലത്തിലുള്ള നിർമ്മാണങ്ങൾക്ക് കുറച്ച് വരികളിൽ ഒരു ലോഡ് ബാലൻസിംഗ് കണ്ടെയ്നർ സേവനം സൃഷ്ടിക്കാൻ കഴിയും. അതിന് താഴെ ക്ലൌഡ് ഫോർമേഷൻ സൃഷ്ടിക്കുന്നു, അത് AWS മാത്രം.

എച്ച്. സി. എൽ. നിങ്ങള് ക്ക് എഴുതാന് കഴിയുന്നതിനെ പരിമിതപ്പെടുത്തുന്നു. യഥാർത്ഥ ഭാഷകൾ ഒന്നും പരിമിതപ്പെടുത്തുന്നില്ല, അതവരുടെ ശക്തിയും അപകടവും ആണ്.

സംസ്ഥാനം, താരതമ്യം

  • ടെറാഫോർം/ഓപ്പൺ ടോഫു: നിങ്ങൾ കൈകാര്യം ചെയ്യുന്ന ഒരു ബാക്ക് എൻഡിൽ (S3, GCS, Azure Storage) അല്ലെങ്കിൽ HCP Terraform- ലും മറ്റ് പ്ലാറ്റ്ഫോമുകളിലും സ്റ്റേറ്റ് ഫയൽ.
  • പുലുമി: പൂലുമി ക്ലൌഡിലെ സ്റ്റേറ്റ് സ്ഥിരസ്ഥിതിയായി, അല്ലെങ്കിൽ ഒരു ഒബ്ജക്ട് സ്റ്റോറേജ് ബക്കറ്റിൽ സ്വയം നിയന്ത്രിതമാണ്.
  • സിഡികെ: പ്രത്യേക സംസ്ഥാന ഫയൽ ഇല്ല. ക്ലൌഡ് ഫോർമേഷൻ AWS ലെ സ്റ്റാക്കിന്റെ അവസ്ഥയെ ട്രാക്കുചെയ്യുന്നു. ലളിതമാണ്, പക്ഷെ നിങ്ങള് ക്ക് ക്ലൌഡ് ഫോര് മേഷന് റെ വേഗതയും പരിമിതികളും ലഭിക്കും.

ഏത് ടീമിന് അനുയോജ്യമാണ്

ടെറാഫോർം അല്ലെങ്കിൽ ഓപ്പൺടോഫു തിരഞ്ഞെടുക്കുക നിങ്ങള് ഒന്നിലധികം ക്ലൌഡുകളിലും SaaS ദാതാക്കലിലും ജോലി ചെയ്യുന്നുണ്ടെങ്കില് (ദാതാക്കളുടെ പരിസ്ഥിതി വ്യവസ്ഥയാണ് ഏറ്റവും വലിയത്). - നിങ്ങളുടെ ടീമില് പ്രധാനമായും ഡെവലപ്പർമാരല്ലാത്ത ഓപ്സ് ആളുകളുണ്ട്. - ഏറ്റവും കൂടുതൽ അറിയപ്പെടുന്ന ഉപകരണവും, ഏറ്റവും കൂടുതൽ ഉദാഹരണങ്ങളും, നിയമന ഓപ്ഷനുകളും വേണം.

പുലുമി തിരഞ്ഞെടുക്കുക. നിങ്ങളുടെ ടീം ഡെവലപ്പർമാരെ വളരെയധികം ഇഷ്ടപ്പെടുന്നു, ടൈപ്പ്സ്ക്രിപ്റ്റ്, പൈത്തൺ അല്ലെങ്കിൽ ഗോ എന്നിവ ഇഷ്ടപ്പെടുന്നു. - നിങ്ങളുടെ അടിസ്ഥാന സൌകര്യത്തിന് സങ്കീർണ്ണമായ ഒരു യുക്തി ഉണ്ട് അത് HCL ൽ വേദനാജനകമാണ്. - സാധാരണ യൂണിറ്റ് ടെസ്റ്റിംഗ് ടൂളുകളുമായി ഇൻഫ്രാസ്ട്രക്ചർ കോഡ് പരിശോധിക്കണം.

AWS സിഡികെ തിരഞ്ഞെടുക്കുക - നിങ്ങള് AWS-ല് എല്ലാം പങ്കുവെക്കുന്നു, അവിടെ തന്നെ തുടരാനാണ് ഉദ്ദേശിക്കുന്നത്. - നല്ല ഡിഫോൾട്ട് ഉള്ള ഉയർന്ന നിലവാരമുള്ള നിർമ്മാണങ്ങളെ ഇഷ്ടമാണ്. - നിങ്ങളുടെ ടീം ക്ലൌഡ് ഫോർമേഷന് അറിയുന്നു, അല്ലെങ്കിൽ അത് ആശ്രയിക്കാൻ സന്തോഷമുണ്ട്.

ഞാൻ പഠിച്ചത്

ഒരേ അടിസ്ഥാന സൌകര്യം മൂന്നു പ്രാവശ്യം എഴുതുന്നത് ഒരു കാര്യം വ്യക്തമാക്കുന്നു: ഭാഷ അച്ചടക്കത്തെക്കാൾ പ്രധാനമാണ്. നല്ല മോഡുലര് അല്ലെങ്കിൽ ഘടക രൂപകല് പന, ചെറിയ സംസ്ഥാന അതിര്, സ്ഥിരമായ നാമകരണം, പരിശോധനകളും അവലോകനങ്ങളും മൂന്നും പ്രധാനമാണ്.

ഞാൻ ജോലി ചെയ്യുന്ന മിക്ക ടീമുകൾക്കും, ടെറഫോർം അല്ലെങ്കിൽ ഓപ്പൺ ടോഫു അതിന്റെ പരിസ്ഥിതി വ്യവസ്ഥയും വായനക്ഷമതയും കാരണം സ്ഥിരസ്ഥിതിയായി തുടരുന്നു. പക്ഷെ ഡെവലപ്പർമാർ നയിക്കുന്ന ടീമുകൾക്ക്, പുലുമി ഇൻഫ്രാസ്ട്രക്ചറിനെ കൂടുതൽ ആക്സസ് ചെയ്യാവുന്നതാക്കുന്നു.

എന്റെ അഭിപ്രായം: നിങ്ങളുടെ ടീം വായിക്കുകയും സന്തോഷത്തോടെ പരിപാലിക്കുകയും ചെയ്യുന്ന ഉപകരണം തിരഞ്ഞെടുക്കുക. ഇൻഫ്രാസ്ട്രക്ചർ കോഡ് എഴുതുന്നതിനേക്കാൾ കൂടുതല് വായിക്കപ്പെടുന്നു.

ഡെസ്ലി