Slide 1

Slide 1 text

Infraestrutura como código com AWS CloudFormation na prática 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

Demonstrações

Slide 11

Slide 11 text

Problemas conhecidos e outras opções

Slide 12

Slide 12 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 13

Slide 13 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 14

Slide 14 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 15

Slide 15 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 16

Slide 16 text

Marcelo Palladino @mfpalladino