O documento resume os principais pontos sobre desenvolvimento de arquitetura na nuvem AWS, incluindo:
1) Uma breve introdução sobre arquitetura na nuvem AWS e seus benefícios como economia de custos, alta disponibilidade e escalabilidade.
2) Exemplos de modelos de arquitetura como serverless, container e EC2.
3) Um passo-a-passo ilustrado sobre como implementar uma arquitetura serverless na AWS.
2. Sobre mim
Sobreponha sua imagem
e corte no formato indicado
Anderson de Oliveira Contreira
Líder Técnico e Analista de Sistemas Sênior na Rentcars.com
Experiência: Trabalho na área desde 2009;
Formação Acadêmica:
● Tecnólogo em Sistemas para Internet, Uninter - 2012;
● Pós em Arquitetura de Software Distribuído, PUC Minas (cursando);
Principais empresas que trabalhei:
● Ometz Group (Wise Up e You Move) - 2 anos e 6 meses;
● Rentcars.com - 3 anos e 4 meses;
Principais linguagens de desenvolvimento: PHP, Java, Node.js e Python.
https://www.linkedin.com/in/andersoncontreira
https://github.com/andersoncontreira
3. Sumário
01 Arquitetura na nuvem da AWS
02 Alguns modelos de arquiteturas
03 Arquitetura serverless
04 Exemplo prático
05 Step-by-step
06 Demonstração
07 Recomendações
08 Códigos fontes
5. Arquitetura na nuvem da AWS
Fonte: https://aws.amazon.com/pt/what-is-cloud-computing/?nc1=f_cc
01
03
02
04
A arquitetura fica separada em
contextos, nos quais você pode realizar
alterações controladas e programadas
sem afetar outras partes de sua
aplicação.
Arquitetura distribuída
Custos sob demanda e sem a
necessidade de manter uma
infraestrutura complexa e cara.
Economia de custos
A Amazon tem data centers em diversas
regiões do mundo, com isso há a
possibilidade de provisionar uma
aplicação nessas regiões de forma
prática.
Alta disponibilidade
Os recursos fornecidos pela Amazon
foram idealizados para serem escaláveis,
através de configurações se obtém esse
resultado.
Escalabilidade
6. Alguns modelos de arquiteturas
Exemplos de arquiteturas como: serverless, container e EC2
7. Alguns modelos de arquitetura
Sobreponha sua imagem
e corte no formato indicado
Fonte: https://www.gocd.org/2017/06/26/serverless-architecture-continuous-delivery/
01 Serviço serverless
Lambda + Jenkins CI.
02 Serviço serverless + Serverless framework
Lambda + Serverless framework.
03 Serviço em containers
Docker + Jenkins CI.
04 Serviço em instâncias EC2
8. Serviço serverless (Lambda + Jenkins CI)
A
B
C
D
E
Os desenvolvedores realizam a
implementação e mantém o código em
um repositório git.
A integração contínua é provida pelo Jenkins
CI.
A configuração dos recursos é realizada pela
equipe de DevOps.
9. Serviço serverless (Lambda + Serverless framework)
A
B
C
D
E
Os desenvolvedores realizam a
implementação e mantém o código em
um repositório git.
A integração contínua é realizada pelo
próprio desenvolvedor via Serverless
framework.
A configuração da aplicação por meio do
arquivo de configuração gera os recursos via
Cloud Formation.
10. Serviço em containers (Docker + Jenkins CI)
A
B
C
D
E
Os desenvolvedores realizam a
implementação e mantém o código em
um repositório git.
A integração contínua é provida pelo Jenkins
CI.
A configuração dos recursos é realizada pela
equipe de DevOps.
11. Serviço em instâncias EC2
A
B
C
D
E
Os desenvolvedores realizam a
implementação e mantém o código em
um repositório git.
.
A integração contínua é provida pelo Jenkins
CI.
A configuração dos recursos é realizada pela
equipe de DevOps.
13. Arquitetura serverless
● Arquitetura orientada a eventos
● Utilização de micro serviços
● Serviços gerenciados
● Processamento paralelizado
Vantagens
● Comunicação via APIs
● Dependência de terceiros
● Escalonamento automático sem
controle do responsável
● Complexidade na arquitetura se
não tiver o devido cuidado
Desvantagens
16. Exemplo prático - Analisar a necessidade
A teoria é legal, mas e a prática?
● Vou ilustrar a criação de uma arquitetura para um projeto MVP;
● Utilizar alguns dos recursos comuns da AWS;
● Desenvolver um arquitetura serverless.
O que eu preciso?
● Cadastro de usuários e currículos;
● Autenticação;
● Armazenamento de conteúdo;
● Manutenção fácil.
20. Step-by-step - Etapas
Fonte: Proxima Nova 6pt
Criar e dar acesso
ao usuário do
framework.
Serverless
framework
Desenvolver
micro serviços e
site estático.
Configurar o
serverless.
Micro serviços
e site estático Configurar o
CloudFront para
distribuir o site.
Configurar
certificado SSL
para o CNAME.
CloudFront
Criar repositórios
e estruturas
básicas dos
projetos.
Projetos e
repositórios
Criar bucket e
configurar o
mesmo como
static website.
S3
Configurar o Api
Gateway para
apontar para os
micro serviços.
Api Gateway
21. Step-by-step - Serverless framework
Sobreponha sua imagem
e corte no formato indicado
Instalar e configurar um usuário para o serverless.
22. Step-by-step - Serverless framework
Sobreponha sua imagem
e corte no formato indicado
Instalar e configurar um usuário para o serverless.
23. Step-by-step - Serverless framework
Sobreponha sua imagem
e corte no formato indicado
Instalar e configurar um usuário para o serverless.
24. Fonte: Proxima Nova 6pt
Criar e dar acesso
ao usuário do
framework.
Serverless
framework
Desenvolver
micro serviços e
site estático.
Configurar o
serverless.
Micro serviços
e site estático Configurar o
CloudFront para
distribuir o site.
Configurar
certificado SSL
para o CNAME.
CloudFront
Criar repositórios
e estruturas
básicas dos
projetos.
Projetos e
repositórios
Criar bucket e
configurar o
mesmo como
static website.
S3
Configurar o Api
Gateway para
apontar para os
micro serviços.
Api Gateway
Step-by-step - Etapas
25. Step-by-step - Projetos e repositórios
Sobreponha sua imagem
e corte no formato indicado
Criar e configurar os projetos.
26. Step-by-step - Projetos e repositórios
Sobreponha sua imagem
e corte no formato indicado
Criar e configurar os projetos.
27. Fonte: Proxima Nova 6pt
Criar e dar acesso
ao usuário do
framework.
Serverless
framework
Desenvolver
micro serviços e
site estático.
Configurar o
serverless.
Micro serviços
e site estático Configurar o
CloudFront para
distribuir o site.
Configurar
certificado SSL
para o CNAME.
CloudFront
Criar repositórios
e estruturas
básicas dos
projetos.
Projetos e
repositórios
Criar bucket e
configurar o
mesmo como
static website.
S3
Configurar o Api
Gateway para
apontar para os
micro serviços.
Api Gateway
Step-by-step - Etapas
28. Step-by-step - Micro serviços e site estático
Sobreponha sua imagem
e corte no formato indicado
Desenvolver código dos serviços.
29. Step-by-step - Micro serviços e site estático
Sobreponha sua imagem
e corte no formato indicado
Desenvolver código dos serviços.
30. Step-by-step - Micro serviços e site estático
Sobreponha sua imagem
e corte no formato indicado
Configurar serverless.
31. Step-by-step - Micro serviços e site estático
Sobreponha sua imagem
e corte no formato indicado
Desenvolver código do site estático.
32. Step-by-step - Micro serviços e site estático
Sobreponha sua imagem
e corte no formato indicado
Desenvolver código do site estático.
33. Step-by-step - Micro serviços e site estático
Sobreponha sua imagem
e corte no formato indicado
Desenvolver código do site estático.
34. Fonte: Proxima Nova 6pt
Criar e dar acesso
ao usuário do
framework.
Serverless
framework
Desenvolver
micro serviços e
site estático.
Configurar o
serverless.
Micro serviços
e site estático Configurar o
CloudFront para
distribuir o site.
Configurar
certificado SSL
para o CNAME.
CloudFront
Criar repositórios
e estruturas
básicas dos
projetos.
Projetos e
repositórios
Criar bucket e
configurar o
mesmo como
static website.
S3
Configurar o Api
Gateway para
apontar para os
micro serviços.
Api Gateway
Step-by-step - Etapas
35. Step-by-step - S3
Sobreponha sua imagem
e corte no formato indicado
Criar bucket e configurar o mesmo como static website.
36. Step-by-step - S3
Sobreponha sua imagem
e corte no formato indicado
Criar bucket e configurar o mesmo como static website.
37. Fonte: Proxima Nova 6pt
Criar e dar acesso
ao usuário do
framework.
Serverless
framework
Desenvolver
micro serviços e
site estático.
Configurar o
serverless.
Micro serviços
e site estático Configurar o
CloudFront para
distribuir o site.
Configurar
certificado SSL
para o CNAME.
CloudFront
Criar repositórios
e estruturas
básicas dos
projetos.
Projetos e
repositórios
Criar bucket e
configurar o
mesmo como
static website.
S3
Configurar o Api
Gateway para
apontar para os
micro serviços.
Api Gateway
Step-by-step - Etapas
41. Fonte: Proxima Nova 6pt
Criar e dar acesso
ao usuário do
framework.
Serverless
framework
Desenvolver
micro serviços e
site estático.
Configurar o
serverless.
Micro serviços
e site estático Configurar o
CloudFront para
distribuir o site.
Configurar
certificado SSL
para o CNAME.
CloudFront
Criar repositórios
e estruturas
básicas dos
projetos.
Projetos e
repositórios
Criar bucket e
configurar o
mesmo como
static website.
S3
Configurar o Api
Gateway para
apontar para os
micro serviços.
Api Gateway
Step-by-step - Etapas
42. Step-by-step - Api Gateway
Sobreponha sua imagem
e corte no formato indicado
Configurar o Api Gateway para apontar para os micro serviços.
43. Step-by-step - Api Gateway
Sobreponha sua imagem
e corte no formato indicado
Configurar o Api Gateway para apontar para os micro serviços.
44. Step-by-step - Api Gateway
Sobreponha sua imagem
e corte no formato indicado
Configurar o Api Gateway para apontar para os micro serviços.
45. Step-by-step - Api Gateway
Sobreponha sua imagem
e corte no formato indicado
Configurar o Api Gateway para apontar para os micro serviços.
46. Step-by-step - Api Gateway
Sobreponha sua imagem
e corte no formato indicado
Configurar o Api Gateway para apontar para os micro serviços.
47. Step-by-step - Api Gateway
Sobreponha sua imagem
e corte no formato indicado
Configurar o Api Gateway para apontar para os micro serviços.
48. Step-by-step - Api Gateway
Sobreponha sua imagem
e corte no formato indicado
Configurar o Api Gateway para apontar para os micro serviços.
49. Fonte: Proxima Nova 6pt
Criar e dar acesso
ao usuário do
framework.
Serverless
framework
Desenvolver
micro serviços e
site estático.
Configurar o
serverless.
Micro serviços
e site estático Configurar o
CloudFront para
distribuir o site.
Configurar
certificado SSL
para o CNAME.
CloudFront
Criar repositórios
e estruturas
básicas dos
projetos.
Projetos e
repositórios
Criar bucket e
configurar o
mesmo como
static website.
S3
Configurar o Api
Gateway para
apontar para os
micro serviços.
Api Gateway
Step-by-step - Etapas
50. Fonte: Proxima Nova 6pt
Configurar os
DNS desejados
para o
CloudFront.
Route 53
Realizar os testes
a fim de garantir o
correto
funcionamento.
Testar
Melhorar o que
for necessário, se
necessário.
Aprimorar
Configurar
credenciais para
disparo de emails.
SES
Publicar e
acompanhar a
aplicação.
Publicar
Step-by-step - Etapas
51. Step-by-step - Route 53
Sobreponha sua imagem
e corte no formato indicado
Configurar o CloudFront e Api Gateway.
52. Fonte: Proxima Nova 6pt
Configurar os
DNS desejados
para o
CloudFront.
Route 53
Realizar os testes
a fim de garantir o
correto
funcionamento.
Testar
Melhorar o que
for necessário, se
necessário.
Aprimorar
Configurar
credenciais para
disparo de emails.
SES
Publicar e
acompanhar a
aplicação.
Publicar
Step-by-step - Etapas
56. Fonte: Proxima Nova 6pt
Configurar os
DNS desejados
para o
CloudFront.
Route 53
Realizar os testes
a fim de garantir o
correto
funcionamento.
Testar
Melhorar o que
for necessário, se
necessário.
Aprimorar
Configurar
credenciais para
disparo de emails.
SES
Publicar e
acompanhar a
aplicação.
Publicar
Step-by-step - Etapas
64. Fonte: Proxima Nova 6pt
Configurar os
DNS desejados
para o
CloudFront.
Route 53
Realizar os testes
a fim de garantir o
correto
funcionamento.
Testar
Melhorar o que
for necessário, se
necessário.
Aprimorar
Configurar
credenciais para
disparo de emails.
SES
Publicar e
acompanhar a
aplicação.
Publicar
Step-by-step - Etapas
68. Fonte: Proxima Nova 6pt
Configurar os
DNS desejados
para o
CloudFront.
Route 53
Realizar os testes
a fim de garantir o
correto
funcionamento.
Testar
Melhorar o que
for necessário, se
necessário.
Aprimorar
Configurar
credenciais para
disparo de emails.
SES
Publicar e
acompanhar a
aplicação.
Publicar
Step-by-step - Etapas
72. Recomendações
Leituras que podem colaborar no seu desenvolvimento:
● Sobre serverless:
○ https://martinfowler.com/articles/serverless.html
○ http://viniciusgarcia.me/development/o-que-eh-arquitetura-serverless/
○ https://www.infoq.com/serverless/
○ https://medium.com/@fidelissauro/13-coisas-que-aprendi-em-1-ano-usando-serverless-em-produ%C3
%A7%C3%A3o-40e4e5e50470
○ https://medium.com/@dayvsonlima/voc%C3%AA-sabe-o-que-%C3%A9-arquitetura-serverless-1f6dd11
84e5b
● Exemplos de usos do framework serverless:
○ https://github.com/serverless/examples
74. Códigos fontes
Códigos fontes utilizados:
● Esqueleto para lambda function em Node.js:
○ https://github.com/andersoncontreira/aws-node-lambda-serverless-skeleton
● Serviço de autenticação:
○ https://github.com/andersoncontreira/satads-auth-service
● Serviço de dados da pessoa:
○ https://github.com/andersoncontreira/satads-mycv-service
● Site estático:
○ https://github.com/andersoncontreira/satads-mycv-static
● Apresentação:
○ https://github.com/andersoncontreira/satads-mycv-service
○ Obs: Vai estar junto ao projeto.
● Endpoint com a demonstração:
○ https://satads.hagatus.com.br/
76. Agradecimentos e Perguntas
Sobreponha sua imagem
e corte no formato indicado
OBRIGADO!
Perguntas?
Demonstração:
https://satads.hagatus.com.br
Você pode me encontrar por aqui:
https://www.linkedin.com/in/andersoncontreira
https://github.com/andersoncontreira