Connection Information

To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not your credentials, you should your web host.

Connection Type

Connection Information

To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not your credentials, you should your web host.

Connection Type

▷ Noções básicas sobre ferramentas de IaC: AWS CDK vs. Terraform

Noções básicas sobre ferramentas de IaC: AWS CDK vs. Terraform

Nota: O seguinte artigo irá ajudá-lo com: Noções básicas sobre ferramentas de IaC: AWS CDK vs. Terraform

AWS CDK e Terraform – não sabe qual escolher? Este artigo irá ajudá-lo a tomar uma decisão informada.

A computação em nuvem revolucionou o mundo da informação e da tecnologia. Desde a forma como implantamos e mantemos aplicativos até as práticas de desenvolvimento, tudo foi altamente impactado pela Cloud Computing. Todos os novos aplicativos são desenvolvidos para serem nativos da nuvem e compatíveis com serviços em nuvem.

A computação em nuvem nos ajuda a desenvolver arquiteturas altamente disponíveis, escaláveis ​​e eficientes, o que torna os serviços em nuvem cada vez mais procurados. Com esse boom na computação em nuvem, surge a necessidade de manter a infraestrutura como um código. Manter recursos de nuvem manualmente por meio do console pode ser uma tarefa complexa que pode ser muito difícil de rastrear.

A infraestrutura como código, também conhecida como IAC ou IAAC, resolve esse problema. Ao usar o IAC, podemos definir nossos recursos como código e usar esse código para provisionar serviços em nuvem. Usar a infraestrutura como um código permite que vários desenvolvedores colaborem na infraestrutura e acompanhem as alterações feitas pelos desenvolvedores.

Infraestrutura como um código na AWS

A AWS é o maior e mais utilizado provedor de nuvem globalmente. Ele tem sua própria ferramenta de IAC, o AWS CloudFormation ou AWS CDK, e também permite que ferramentas de IAC de terceiros, como o Terraform, provisionem recursos. Ao escolher as ferramentas IAC para AWS, o Terraform, uma ferramenta de terceiros, é uma sólida concorrência para as ferramentas gerenciadas pela AWS, AWS CloudFormation e AWS CDK.

Com tantas opções e recursos que cada uma dessas ferramentas oferece, escolher a ferramenta IAC certa pode ser um desafio. Neste artigo, discutiremos a diferença entre o AWS CDK e o Terraform. O AWS CDK usa o Cloudformation internamente, portanto, para obter uma visão mais detalhada do Cloudformation e do Terraform, consulte o artigo relacionado Compreendendo as ferramentas IAC: CloudFormation vs. Terraform.

Terraform

O Terraform é uma ferramenta de infraestrutura como código de código aberto inicialmente desenvolvida pela Hashicorp. É uma ferramenta altamente precisa e madura que a não apenas a AWS, mas também outros provedores de nuvem. O Terraform oferece e a todos os serviços da AWS, e a comunidade de desenvolvimento rapidamente percebe qualquer novo recurso que a AWS adiciona aos seus serviços. Ele nos permite escrever código na linguagem desenvolvida pela Hashicorp (HCL). HCL é uma linguagem semelhante a JSON para definir recursos de infraestrutura.

CDK da AWS

AWS CDK é um wrapper em torno do AWS CloudFormation. Para entender o funcionamento do AWS CDK, você deve conhecer um pouco sobre o AWS CloudFormation. AWS CloudFormation é uma ferramenta gerenciada pela AWS que nos permite definir a infraestrutura da AWS no formato YML ou JSON. Mesmo que ler JSON e YML seja fácil, eles não são linguagens de programação reais. Não há e nativo para loops e funções, o que dificulta cada vez mais a manutenção de grandes infraestruturas. É aí que entra o AWS CDK.

O AWS CDK é um wrapper em torno do AWS CloudFromation que permite usar linguagens de programação familiares como JAVA ou Python para provisionar sua infraestrutura. Isso torna mais fácil escrever e manter o código.

Terraform vs. AWS CDK: diferenças

#1. Idioma e facilidade de uso

A linguagem e a facilidade de uso são vitais para entender a diferença entre o AWS CDK e o Terraform.

Vamos falar primeiro sobre o Terraform. O Terraform usa uma linguagem semelhante a JSON para definir recursos e outros dados, a HCL ou a linguagem de configuração HashiCorp. É bastante simples e a documentação é fácil de entender e seguir, mesmo para iniciantes.

Vamos ver um código para criar um bucket do S3.

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

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

O código é bastante simples de ler e você pode ver outros parâmetros que esse recurso a na documentação do Terraform.

Como mencionado anteriormente, o AWS CDK é um wrapper do CloudFormation que nos permite definir nossos recursos em linguagens de programação. Vamos ver um código AWS CDK para criar um bucket do S3.

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

O código do Terraform pode parecer um pouco mais organizado do que o CDK, mas os códigos do Terraform e do CDK são bem simples. Se você planeja usar o IAC para um projeto pequeno, tanto o Terraform quanto o CDK são ótimas opções em termos de linguagem e facilidade de uso.

No entanto, ao escolher a ferramenta IAC certa para um grande projeto com muitos desenvolvedores, o Terraform tem uma desvantagem. Por mais simples que o Terraform seja, é uma nova linguagem, e você precisará treinar seus desenvolvedores em uma linguagem totalmente nova que não seja semelhante às outras linguagens de programação em uso. Mais importante, a manipulação de dados no Terraform não é tão simples quanto em outras linguagens de programação. Por exemplo, iterar por meio de listas e objetos e transformar valores não é tão simples, especialmente para iniciantes.

Pessoalmente, eu preferiria o AWS CDK ao Terraform se considerar a facilidade de uso. Ao usar o Terraform, houve momentos em que tive que usar soluções alternativas ou scripts complicados para obter os resultados desejados. O controle que temos sobre os dados e a capacidade de manipular dados facilmente nas linguagens do AWS CDK é uma grande vitória para o AWS CDK.

#2. Alcance

O Terraform é uma ferramenta IAC multinuvem, o que significa que você pode não apenas usar o Terraform com AWS, mas também com outros provedores de nuvem, como Azure ou G. O Terraform é uma ótima ferramenta para criar implantações em várias nuvens e ter qualquer número de provedores de nuvem para seu aplicativo.

Houve momentos em que plataformas globais amplamente utilizadas caíram devido a um problema nos serviços do provedor de nuvem. Atualmente, é uma decisão inteligente ter mais de um provedor de nuvem para seus aplicativos.

AWS CDK é uma oferta da AWS para IAC. Por mais poderoso e maduro que seja o CDK, ele é limitado apenas à Nuvem AWS.

Ao considerar o escopo das ferramentas IAC, o Terraform é o vencedor óbvio dos dois. Faz muito sentido que seus desenvolvedores usem uma única ferramenta para todas as plataformas de nuvem.

#3. atuação

O desempenho geralmente não é o critério mais importante ao escolher a ferramenta IAC certa, mas pode ser importante em grandes projetos. O Terraform implanta recursos usando o AWS SDK, enquanto o código CDK é primeiro convertido em modelos do CloudFormation e depois aplicado.

O Terraform funcionaria um pouco mais rápido que o AWS CDK, principalmente devido ao tempo que o CDK leva para converter o código para o modelo do CloudFormation.

#4. Modularidade

Tanto o Terraform quanto o AWS CDK podem ser usados ​​para criar módulos. O Terraform tem e nativo para módulos. Você pode criar seus próprios módulos e hospedá-los em um registro de módulo privado para uso em sua organização. O Terraform também possui um registro de módulo público para hospedagem e uso de módulos públicos.

No AWS CDK, você pode criar funções e classes reutilizáveis ​​e compartilhar esse código em sua organização para obter o mesmo resultado. Essa é uma grande vantagem no AWS CDK como a outra ferramenta AWS IAC – o CloudFormation não permite que você crie e reutilize código como módulos. Você pode usar pilhas aninhadas no CloudFormation para atender a esse requisito, mas usar o AWS CDK é uma alternativa muito mais adequada.

Em suma, ambas as ferramentas são semelhantes neste aspecto.

#5. Controle e Governança

Em última análise, todo o o ao Console AWS é controlado pelo IAM, o Identity Management Service da AWS. Você pode usar políticas do IAM com o AWS CDK e o Terraform para permitir e negar determinadas ações. O IAM permite que você tenha controle refinado sobre quais ações podem ser executadas em sua conta.

Além de usar o IAM para controlar o o aos recursos da conta, o Terraform oferece uma política como estrutura de código, Sentinela. O Sentinel permite escrever políticas refinadas para controlar corretamente as ações de um usuário por meio do Terraform.

Conclusão

Como o AWS CDK usa o CloudFormation internamente, sugiro que você leia o artigo CloudFormation vs. Terraform para entender melhor as diferenças entre o AWS CDK e o Terraform.

No geral, o AWS CDK e o Terraform são ferramentas maduras e poderosas. O Terraform tem uma pequena desvantagem quando se trata de manipulação de dados. No entanto, na minha experiência, uma vez que você se sente mais à vontade para escrever o Terraform, fica mais fácil usar soluções alternativas e realizar transformações de dados. Para operações em várias nuvens, o Terraform é uma escolha óbvia; no entanto, se você deseja usar a AWS como seu provedor de nuvem, o AWS CDK é uma excelente alternativa.