Slide 1

Slide 1 text

IaC com AWS Cloud Development Kit (CDK) Marcelo Palladino @mfpalladino

Slide 2

Slide 2 text

“ Reduzir o tempo da entrega de valor em produção, aumentar o feedback entre os times e fornecer um ambiente seguro para experimentações e inovações de negócio.

Slide 3

Slide 3 text

D o m a i s i n t u i t i vo a t é o n í v e l m a i s a l t o d e a b s t r a ç ã o Quais são as opções para provisionar recursos na nuvem?

Slide 4

Slide 4 text

Criando tudo na mão, via console Amazon Simple Queue Service Amazon Simple Notification Service AWS Management Console

Slide 5

Slide 5 text

Prós e contras Intuitivo Não reproduzível Propenso a erros humanos Difícil de gerenciar o estado Consome tempo Desperdiça dinheiro

Slide 6

Slide 6 text

Utilizando chamadas de API, via AWS SDK Script.sh SDK Amazon Simple Queue Service Amazon Simple Notification Service

Slide 7

Slide 7 text

Prós e contras Diversas linguagens suportadas API’s para todos os recursos Muito, mas muito código genérico, que vai ser sempre igual Difícil de lidar com falhas Difícil de permitir execução concorrente Difícil de gerenciar o estado Como lidar atualizações? Como lidar com rollback? Consome muito tempo

Slide 8

Slide 8 text

Declarando a infraestrutura como código Template JSON YAML Amazon Simple Queue Service Amazon Simple Notification Service CloudFormation SDK Terraform

Slide 9

Slide 9 text

Declarando a infraestrutura como código Reproduzível/Previsível Fácil de automatizar Possui gerenciamento de estado Curva de aprendizado acentuada Pouca ou nenhuma abstração Difícil compartilhar padrões com o time (CloudFormation) Difícil de modularizar (CloudFormation) Não tem fluxos de controle embutidos

Slide 10

Slide 10 text

Dois problemas que aparecem com bastante frequência Baixa produtividade para escrever templates Dificuldade em modularizar e compartilhar soluções Dificuldade em utilizar fluxos de controle

Slide 11

Slide 11 text

Utilizando Document Object Model GoFormation (https://github.com/awslabs/goformation) Troposphere (https://github.com/cloudtools/Troposphere) Reproduzível Possui gerenciamento de estado Facilita o compartilhamento de padrões Pouca abstração Nem todos os recursos/configurações são suportados Todos os limites do CloudFormation Não é um padrão

Slide 12

Slide 12 text

AWS Cloud Development Kit (CDK) O AWS CDK é um framework de código aberto para definir infraestrutura de nuvem em código utilizando linguagens de programação conhecidas e provisiona-los através do utilitário de linha de comando AWS CDK CLI e do AWS CloudFormation.”

Slide 13

Slide 13 text

Utilizando o AWS Cloud Development Kit (CDK) Reproduzível/Previsível Testável Pode ser escrito em TS, JS, Java, .NET ou Python (https://github.com/aws/jsii) Muita abstração através do uso da AWS Construct Library Nem todos os recursos/configurações são suportados por construtores de “alto nível” Todos os limites do CloudFormation se aplicam ao CDK

Slide 14

Slide 14 text

O a m b i e n t e e a e s t r u t u r a d e u m p r o j e t o t í p i c o Criando a primeira aplicação CDK

Slide 15

Slide 15 text

Estrutura da AWS Construct Library Fonte: https://aws.amazon.com/blogs/

Slide 16

Slide 16 text

A d i f e r e n ç a e n t r e c o n s t r u t o r e s d e b a i x o e a l t o n í v e l Criando uma VPC

Slide 17

Slide 17 text

AWS Solutions Constructs Os “Constructs” de soluções da AWS são criados e mantidos pela AWS, usando práticas recomendadas estabelecidas pelo AWS Well-Architected Framework. https://aws.amazon.com/solutions/constructs/ https://aws.amazon.com/solutions/constructs/patterns/

Slide 18

Slide 18 text

U t i l i z a n d o a s o l u ç ã o a w s - a p i g a t e w a y - l a m b d a Criando uma API REST com API Gateway/AWS Lambda

Slide 19

Slide 19 text

aws-apigateway-lambda

Slide 20

Slide 20 text

CDK Patterns https://cdkpatterns.com https://github.com/cdk-patterns/serverless https://twitter.com/CdkPatterns https://www.youtube.com/c/DeconstructingAWSCDKPatterns

Slide 21

Slide 21 text

Juntando tudo e tirando as concluões AWS Solutions Constructs CDK Patterns Seu time Soluções opinativas aws_apigateway_lambda aws-apigateway-sqs aws-cloudfront-s3 ... The Big Fan The EventBridge ETL The Scalable Webhook ... A B C ...

Slide 22

Slide 22 text

Links úteis - https://aws.amazon.com/pt/cdk - https://github.com/aws/aws-cdk - https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html - https://aws.amazon.com/solutions/constructs/ - https://aws.amazon.com/solutions/constructs/patterns/ - https://cdkpatterns.com - https://github.com/cdk-patterns/serverless - https://twitter.com/CdkPatterns - https://www.youtube.com/c/DeconstructingAWSCDKPatterns - https://medium.com/@mfpalladino

Slide 23

Slide 23 text

Marcelo Palladino @mfpalladino