Visão Geral do AWS CDK, Exemplos em TypeScript e Python e Desempenho

Ferramenta excelente para engenharia de plataforma na AWS.

Conteúdo da página

O AWS Cloud Development Kit (AWS CDK) é uma estrutura que permite definir e provisionar infraestrutura em nuvem usando linguagens de programação familiares como TypeScript, Python, Java e Go.

aws cdk chain of events

Esta estrutura de código aberto simplifica a infraestrutura como código, permitindo modelar recursos AWS com construtos de alto nível e, em seguida, sintetizá-los em templates CloudFormation para implantação. Isso facilita o desenvolvimento, a implantação e a iteração da sua infraestrutura AWS de uma maneira mais mantível e testável.

Aqui estão exemplos curtos de AWS CDK em TypeScript e Python:

Exemplo em TypeScript:

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';

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

    new s3.Bucket(this, 'MyFirstBucket', {
      versioned: true,
      removalPolicy: cdk.RemovalPolicy.DESTROY
    });
  }
}

Este exemplo cria um bucket S3 com versionamento ativado.

Exemplo em Python:

from aws_cdk import (
    Stack,
    aws_s3 as s3,
    RemovalPolicy
)
from constructs import Construct

class MyStack(Stack):
    def __init__(self, scope: Construct, id: str, **kwargs):
        super().__init__(scope, id, **kwargs)

        s3.Bucket(self, "MyFirstBucket",
                  versioned=True,
                  removal_policy=RemovalPolicy.DESTROY)

Este exemplo cria de forma similar um bucket S3 versionado com uma política de remoção para excluir na exclusão do stack.

Estes exemplos ilustram como o AWS CDK usa construtos, classes e objetos familiares da linguagem para definir a infraestrutura, que pode então ser implantada facilmente via cdk deploy.

O AWS CDK suporta outros recursos e padrões de infraestrutura mais complexos além destes exemplos simples. Ele também se integra bem com IDEs, frameworks de teste e pipelines de CI/CD para melhorar a experiência do desenvolvedor e a automação.

TypeScript vs Python para AWS CDK

TypeScript e Python são ambas linguagens totalmente suportadas para desenvolvimento e implantação AWS CDK, mas possuem algumas diferenças notáveis:

TypeScript

  • O AWS CDK é originalmente implementado em TypeScript, o que fornece verificação de tipo nativa, interfaces e tipagem estática forte.
  • O TypeScript beneficia-se da documentação oficial mais abrangente, exemplos e suporte da comunidade. Isso facilita a localização de recursos e a solução de problemas.
  • IDEs como o Visual Studio Code oferecem excelente suporte ao TypeScript com conclusões inteligentes, destaque de erros e refatoração.
  • Como o CDK em si é escrito em TypeScript, o uso tende a sentir-se mais “nativo” e fluido, com menos abstrações.
  • A tipagem estática do TypeScript detecta muitos problemas cedo, na hora da compilação, evitando alguns erros de tempo de execução.
  • Desenvolvedores que desejam segurança de tipos estrita e recursos comunitários maiores podem preferir TypeScript para o CDK.

Python

  • O suporte ao Python é estável e totalmente funcional, mas é uma ligação sobre o núcleo TypeScript via jsii, dependendo de tipagem dinâmica com dicas de tipo opcionais.
  • O Python usa convenções de nomenclatura snake_case em vez de camelCase do TypeScript, então pequenos ajustes de sintaxe são necessários ao traduzir exemplos.
  • O Python tem menos exemplos oficiais e recursos da comunidade, o que pode tornar o aprendizado e a depuração mais difíceis para iniciantes.
  • A tipagem dinâmica significa que alguns erros de tipo aparecem apenas em tempo de execução em vez de tempo de compilação, causando potencialmente detecção de erros atrasada. No entanto, módulos Python têm anotações de tipo que podem ser usadas com IDEs ou ferramentas de análise estática como MyPy.
  • Desenvolvedores Python apreciam ferramentas familiares como ambientes virtuais (virtualenv) e pip para gerenciamento de pacotes.
  • O Python é preferido se sua equipe ou projeto já é fortemente baseado em Python, mesmo que a documentação e o suporte da comunidade sejam um pouco mais limitados.

Desenvolvimento e Implantação

  • O CDK Toolkit (cdk deploy) funciona da mesma forma independentemente da escolha da linguagem, pois o CDK sintetiza templates AWS CloudFormation por trás das cenas.
  • Ambas as linguagens suportam a totalidade dos recursos e construtos AWS.
  • A escolha entre elas geralmente depende da expertise linguística da sua equipe, suporte da comunidade disponível e preferência por tipagem estática vs. dinâmica.

Resumo

  • O TypeScript oferece a experiência mais madura e polida com documentação mais rica, tipagem forte e integração nativa, já que o CDK é construído sobre ele.
  • O Python oferece funcionalidade robusta e facilidade de uso para programadores Python, mas com menos exemplos e alguns desafios adicionais devido à tipagem dinâmica e traduções entre idiomáticas linguísticas.
  • Se você deseja desenvolvimento rápido com recursos extensos, o TypeScript é frequentemente recomendado. Se seu projeto ou equipe é centrado no Python, o Python permanece uma boa escolha totalmente suportada, apesar de pequenas compensações.

Isso está alinhado com o feedback da comunidade e documentação oficial da AWS descrevendo seus respectivos prós e contras para desenvolvimento e implantação AWS CDK. Ambas as linguagens podem ser usadas de forma eficaz; sua escolha depende das suas prioridades para disciplina de tipagem, familiaridade com a linguagem e suporte ao ecossistema.

Linguagens oficialmente suportadas para AWS CDK

O AWS Cloud Development Kit (AWS CDK) suporta oficialmente as seguintes linguagens de programação:

  • TypeScript
  • JavaScript
  • Python
  • Java
  • C# (.NET)
  • Go

Todas essas linguagens têm suporte de primeira classe, sendo o CDK originalmente desenvolvido em TypeScript e depois estendido para outros usando uma ferramenta chamada JSII, que gera ligações linguísticas para fazer o CDK sentir-se natural na sintaxe e convenções de cada linguagem.

Em relação à qual linguagem é melhor, isso depende das suas preferências e contexto:

  • TypeScript é frequentemente recomendado como a melhor escolha porque o AWS CDK é originalmente construído em TypeScript. Possui o ecossistema mais maduro, a documentação oficial mais rica e exemplos da comunidade. Sua tipagem estática e forte suporte de IDE melhoram a produtividade do desenvolvedor e detectam muitos erros precocemente.

  • Python é uma alternativa muito popular, especialmente para aqueles que vêm de um background em Python. Tem uma sintaxe limpa que o torna mais intuitivo para iniciantes, embora sua tipagem dinâmica signifique que alguns erros são detectados apenas em tempo de execução. O suporte de ferramentas e disponibilidade de exemplos do Python são sólidos, mas não tão extensos quanto os do TypeScript.

  • Java, C# e Go são totalmente suportados, mas geralmente têm menos exemplos da comunidade e documentação um pouco menos extensa em comparação com TypeScript e Python. Eles são adequados se sua equipe for proficiente nessas linguagens.

Em resumo:

  • TypeScript oferece a experiência mais nativa, polida e amplamente suportada para desenvolvimento AWS CDK.
  • Python oferece uma sintaxe mais simples e uma experiência amigável para iniciantes com suporte total ao CDK, mas com um polimento de ferramentas ligeiramente menor.
  • Java, C# e Go são boas opções se se adequarem às suas habilidades existentes ou requisitos do projeto, mas podem exigir mais esforço para encontrar recursos de aprendizado.

Sua escolha deve considerar a expertise linguística da sua equipe, a disponibilidade de exemplos e suporte, e se você prefere tipagem estática (TypeScript, Java, C#) ou tipagem dinâmica (Python). Tanto TypeScript quanto Python tendem a ser os mais populares e recomendados para projetos AWS CDK.

Desempenho das linguagens no desenvolvimento e implantação AWS CDK

Ao considerar o melhor desempenho no desenvolvimento e implantação AWS CDK, é importante esclarecer que a funcionalidade central do AWS CDK em si — a síntese de infraestrutura como código em templates CloudFormation e a implantação — é agnóstica à linguagem. Todas as linguagens suportadas (TypeScript, Python, Java, C#, Go) compilam para os mesmos templates AWS CloudFormation subjacentes, portanto, o desempenho de tempo de execução para implantação não difere pela linguagem.

No entanto, do ponto de vista do desempenho de desenvolvimento — significando eficiência, detecção de erros, ferramentas e facilidade de codificação — o TypeScript é geralmente considerado o ambiente de linguagem com melhor desempenho para AWS CDK:

  • TypeScript é a linguagem nativa do AWS CDK, originalmente desenvolvido nela. Isso resulta nas ferramentas mais fluidas, tipagem estática mais forte e detecção de erros mais cedo durante o desenvolvimento, tornando a codificação mais rápida e menos propensa a erros.
  • A documentação mais rica, exemplos da comunidade e suporte de IDE (como conclusões inteligentes e refatoração no Visual Studio Code) existem para o TypeScript, acelerando a produtividade do desenvolvedor.
  • O código TypeScript detecta muitos erros em tempo de compilação, evitando surpresas em tempo de execução e problemas de implantação, o que acelera o desenvolvimento iterativo e a depuração.

Python é uma segunda opção muito próxima para a experiência de desenvolvimento, favorecido por sua sintaxe mais simples e legível e popularidade em DevOps. No entanto, devido à sua tipagem dinâmica e ser uma ligação de linguagem JSII sobre o núcleo TypeScript, alguns erros surgem apenas em tempo de execução, o que pode desacelerar ligeiramente a depuração e o desenvolvimento.

Outras linguagens como Java, C# e Go são suportadas, mas geralmente têm menos recursos, ferramentas menos maduras e, portanto, podem oferecer menos velocidade de desenvolvimento.

Resumo:

Aspecto TypeScript Python Outros (Java, C#, Go)
Implementação CDK nativa Sim Não Não
Tipagem estática Forte (tempo de compilação) Dinâmica (tempo de execução) Forte (tempo de compilação)
Ferramentas e suporte de IDE Melhor (VS Code, Autocompletar) Bom, mas menos maduro Menos maduro
Comunidade/exemplos Mais abundante Bom, mas menos que TS Limitado
Velocidade de desenvolvimento Rápido, menos propenso a erros Mais lento devido à tipagem dinâmica Geralmente mais lento
Desempenho de implantação Igual (saída CloudFormation) Igual Igual

Portanto, o TypeScript oferece o melhor desempenho de desenvolvimento com o AWS CDK, tornando a codificação de infraestrutura mais rápida, segura e eficiente. O desempenho de implantação é equivalente em todas as linguagens suportadas, pois todos produzem os mesmos templates CloudFormation.

Isso está alinhado com a orientação oficial da AWS e ampla experiência da comunidade que destacam o suporte nativo e otimizado do TypeScript para o desenvolvimento AWS CDK. O Python permanece uma alternativa forte, especialmente se sua equipe o preferir ou valorizar a simplicidade da sintaxe. Outras linguagens são viáveis, mas geralmente menos ótimas para desenvolvimento rápido.