SlideShare uma empresa Scribd logo
1 de 60
Agosto/2016
Uma visão geral da
AWS para
desenvolvedores
Jardel Weyrich
jardel@teltecsolutions.com.br
• Ferramentas
• CLI
• SDK
• Serviços
• Elastic Beanstalk
• API Gateway
• Lambda
• SNS
• SQS
• CodeCommit, CodeDeploy, CodePipeline
• Outros serviços (não abordados):
• CloudFormation: Permite criar e gerenciar praticamente todos recursos da AWS,
inclusive automatizar o provisionamento de ambientes complexos usando
templates;
• Cognito: Autenticação de usuários;
• DynamoDB: Banco de dados NoSQL;
• Kinesis: Coleta de dados de streaming contínuo;
• Redshift: Armazenamento e consulta de dados na ordem de Petabytes (via
ODBC, JDBC);
• ElasticSearch: Um Elasticsearch gerenciado e escalável;
• ElasticCache: Cache em memória (memcached, Redis);
• EMR (Elastic Map Reduce): Processamento de enormes quantidades de dados -
Hadoop, Hive, Spark, Presto, HBase;
• OpsWorks: Chef na nuvem;
• SWF (Simple Workflow Service): Automatizador de processos, rastreador de
estados, e coordenador de tarefas;
CLI
CLI - Interface de linha de comando
“É uma ferramenta unificada para o gerenciamento
de seus serviços da AWS. Com apenas uma
ferramenta … você poderá controlar vários
serviços da AWS pela linha de comando e
automatizá-los usando scripts.”
Utiliza API REST sobre HTTPS
Referência: https://aws.amazon.com/pt/cli/
CLI
Requisitos:
1. Ter uma conta ativa na AWS;
2. Instalar a ferramenta CLI - MSI, pip, bundled
installer (zip + custom installer) -
http://docs.aws.amazon.com/cli/latest/userguide/i
nstalling.html;
3. Configurar CLI (Access Key, Secret Access Key,
região);
CLI
Configurando a CLI após a instalação
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
CLI
Configurando um perfil adicional
$ aws configure --profile user2
AWS Access Key ID [None]: AKIAIOSROAPN8EXAMPLE
AWS Secret Access Key [None]:
wJalrXUtnARMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
CLI
Configurando o perfil padrão
Linux / Mac / Unix
$ export AWS_DEFAULT_PROFILE=user2
Windows
> set AWS_DEFAULT_PROFILE=user2
CLI
Criando um Security Group
$ aws ec2 create-security-group --group-name
meu-sg --description "Meu security group”
{
"GroupId": "sg-903004f8"
}
CLI
Criando Snapshot de um volume
$ aws ec2 create-snapshot --region "sa-east-1" --description
"Meu snapshot" --volume-id “vol-6a898c8e”
{
"Description": "Meu snapshot",
"Encrypted": false,
"VolumeId": "vol-6a898c8e",
"State": "pending",
"VolumeSize": 3,
"Progress": "",
"StartTime": "2016-08-16T12:20:29.000Z",
"SnapshotId": "snap-8689a7b1",
"OwnerId": "409138808507"
}
CLI
Consultando dados de um Snapshot
$ aws ec2 describe-snapshots --region "sa-east-1"
--query
“Snapshots[0].{id:SnapshotId,desc:Description}"
{
"id": "snap-ac9002c4",
"desc": "pvlinux-debian-6.0-x86_1.0.1.92_120531_183609"
}
SDK
Open Source
Apache License, Version 2.0
https://github.com/aws
SDK
Onde pode ser usado?
• Smartphones
• Smartwatches
• Tablets
• PCs
• Macs
• Browsers: Chrome (28.0+), Firefox (23.0+), Opera (17.0+), IE
(10.0+), Safari (5.1+), Android Browser (4.3+)
• Praticamente qualquer dispositivo com Windows, Linux/Unix, OS X,
iOS, Android
SDK
Várias linguagens de programação
• Java (inclusive Android)
• .NET
• Objective-C (iOS)
• JavaScript (browser)
• Node.js
• PHP
• Python
• Ruby
• Go
• C++ (developer preview)
SDK
Exemplo de instalação do SDK para Node.js
# apt-get install nodejs
$ npm install aws-sdk
https://nodejs.org/en/download/
https://www.npmjs.com
SDK
Criando um bucket no S3 e fazendo upload
de um arquivo
$ wget https://goo.gl/BxEaMB -O demo.js
$ node demo.js <bucket> <arquivo>
Mais exemplos em
http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-examples.html
Elastic Beanstalk
“Faça deploy de aplicações sem se preocupar com
a infraestrutura que roda essas aplicações.”
Elastic Beanstalk
Como funciona?
1. Você cria uma aplicação no Beanstalk e especifica o tipo de
ambiente que ela deve rodar;
2. Faz upload de uma versão da aplicação em forma de bundle
(exemplo: J2EE seria um .war) para o Beanstalk;
3. Informa alguns dados sobre o ambiente (nome, URL);
4. Seleciona o tipo de instância e os serviços adicionais que
serão utilizados (RDS, etc);
5. Clica em Launch!
Elastic Beanstalk
Fonte:
http://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/GettingStarted.html
Elastic Beanstalk
Fonte:
http://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/GettingStarted.html
Elastic Beanstalk
Fonte:
http://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/GettingStarted.html
Elastic Beanstalk
Fonte:
http://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/GettingStarted.html
API Gateway
“Um serviço totalmente gerenciado que torna fácil publicar,
manter, monitorar, e proteger APIs em qualquer escala.”
Control: Permite você criar uma API RESTful para
mapear/expor funções do back-end. O back-end pode ser
outro serviço AWS, como Lambda, DynamoDB, ou uma
aplicação web existente;
Execution: Permite uma aplicação chamar/executar uma
API do back-end;
Referência:
http://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.htm
l
API Gateway
Algumas features suportadas:
• API staging
• API versioning
• API caching
• API quota
• API keys
• API Authorization
• Client certificates generation
• Request throttling
• API execution monitoring (estatísticas de latência, caching, erros, …)
• Native SDK generation: Android, JavaScript, iOS
• API import - incluindo Swagger - http://swagger.io
API Gateway
Etapas para criação de uma API:
1. Criar uma API;
2. Configurar o(s) método(s)
3. Configurar a integração que a API deve utilizar;
4. Se for necessário, configurar os mapeamentos de
requisição e/ou resposta;
5. Testar;
6. Fazer deploy!
API Gateway
Fonte: http://thenewstack.io/five-reasons-to-consider-amazon-api-gateway-for-your-
next-microservices-project/
API Gateway
Fonte: http://thenewstack.io/five-reasons-to-consider-amazon-api-gateway-for-your-
next-microservices-project/
API Gateway
Fonte: http://aws.amazon.com/api-gateway/details/
Lambda
Uma plataforma que permite rodar códigos sem
você precisar provisionar ou gerenciar servidores.
Zero administração!
Lambda
Como funciona?
1. Depois de você fazer upload do seu código, é
criada uma função Lambda;
2. O serviço cuida de todo provisionamento e
gerência dos servidores que rodarão o código;
Lambda
Quais linguagens são suportadas?
• Node.js (JavaScript)
• Java
• Python
Lambda
Como pode ser usado?
A. Como um serviço orientado a eventos onde o
AWS Lambda executa seu código em resposta a
eventos, tais como alterações em um bucket do
S3 ou em uma tabela do DynamoDB;
B. Como um serviço que executa seu código em
resposta a requisições HTTP usando o API
Gateway ou chamadas de API feitas usando
AWS SDK;
Lambda
O que é gerenciado automaticamente?
• Manutenção dos servidores e sistemas operacionais;
• Alta disponibilidade;
• Provisionamento de capacidade;
• Escalonamento automático;
• Monitoramento;
• Logging;
Lambda
Quais as limitações?
• Não existe instância/servidor para você logar;
• Você não pode customizar o sistema
operacional;
Lambda
Você pode usar o Amazon S3 para acionar o AWS
Lambda para processar os dados imediatamente
após um upload. Por exemplo, você pode usar o
Lambda para miniaturizar imagens, transcodificar
vídeos, indexar arquivos, processar logs, validar
conteúdo, e agregar e filtrar dados em tempo real.
Lambda
Fonte: https://aws.amazon.com/lambda/
Lambda
Fonte: https://aws.amazon.com/lambda/
SNS
“Sistema de mensagens por push gerenciado e
altamente escalável.”
Suporta pushes para dispositivos Apple, Android,
Amazon FireOS, e Windows.
Também pode entregar mensagens para SQS, Lambda,
Email, SMS, e endpoints HTTP, HTTPS.
Mais informações em https://aws.amazon.com/pt/sns/
SNS
Principais APIs:
CreateTopic: Cria um tópico nomeado para onde as notificações podem ser
publicadas;
CreatePlatformEndpoint: Cria um endpoint para um dispositivo e aplicação mobile
em um dos serviços de Push Notification suportados, como GCM ou APNS. O valor
retornado pode ser usado para Publish ou Subscribe.
Publish: Publica uma mensagem no tópico informado para todos endpoints
associados;
Subscribe: Inicia o processo de inscrição em um endpoint enviando um pedido de
aprovação para o dono do endpoint. O pedido de confirmação carrega um token
que é válido por 3 dias e pode ser confirmado pela API ConfirmSubscription;
Unsubscribe: Delete uma inscrição;
SNS
Fonte: http://inside.unbounce.com/product-dev/aws-messaging-patterns/
SNS
Fonte: http://inside.unbounce.com/product-dev/aws-messaging-patterns/
SQS
“Serviço de fila de mensagem rápido, confiável, escalável e totalmente
gerenciado.”
3 principais APIs:
• SendMessage: envia mensagens para uma fila específica;
• ReceiveMessage: retorna 1+ mensagens de uma fila específica;
• DeleteMessage: remove uma mensagem recebida anteriormente de uma fila
específica;
APIs adicionais estão disponíveis para oferecer funcionalidade avançada:
SendMessageBatch, DeleteMessageBatch, ChangeMessageVisibilityBatch,
CreateQueue, ListQueues, DeleteQueue, PurgeQueue, etc.
Referência: https://aws.amazon.com/pt/sqs/
SQS
1. O SISTEMA X precisa enviar uma mensagem para o SISTEMA Y. Ele seleciona uma
fila pré-determinada do SQS, e chama SendMessage para adicionar uma nova
mensagem à ela.
2. O SISTEMA Y que processa mensagens precisa de mais mensagens para processar,
portanto ele chama ReceiveMessage e essa mensagem é retornada.
3. Assim que uma mensagem tiver sido retornada por ReceiveMessage, ela não será
retornada por nenhum outro ReceiveMessage até que o tempo de espera de visibilidade
transcorra. Isso impede que vários computadores processem a mesma mensagem de
uma vez.
4. Se o sistema que processa mensagens encerrar com êxito o processamento desta
mensagem, ele chamará DeleteMessage, que removerá a mensagem da fila, de forma
que mais ninguém irá processá-la. Se o sistema apresentar falha no processamento da
mensagem, ele será lido por outra chamada ReceiveMessage assim que o tempo de
espera de visibilidade transcorrer.
5. Se você associou uma fila Dead Letter a uma fila de origem, as mensagens serão
movidas para a fila Dead Letter após o número máximo de tentativas de entrega que
você especificou ser atingido.
SQS
Fonte: docs.aws.amazon.com/autoscaling/latest/userguide/as-using-sqs-queue.html
CodeCommit
• Repositório Git gerenciado
• Criptografado em disco
• Sem limite de repositórios
• Sem limite de tamanho
CodeCommit
$ aws codecommit create-repository --region=us-east-1 --repository-
name <nome>
{
"repositoryMetadata": {
"repositoryName": "teste1",
"cloneUrlSsh": "ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/teste1",
"lastModifiedDate": 1471525092.53,
"repositoryId": "3dc94488-6b86-4a79-95fd-2be5d4aeef38",
"cloneUrlHttp": "https://git-codecommit.us-east-1.amazonaws.com/v1/repos/teste1",
"creationDate": 1471525092.53,
"Arn": "arn:aws:codecommit:us-east-1:409138808507:teste1",
"accountId": "409138808507"
}
}
$ git remote add origin <url>
CodeCommit
Fonte: https://aws.amazon.com/blogs/aws/code-management-and-deployment/
CodeDeploy
• Coordena deploy de aplicações para instâncias
EC2, on-premises, ou ambos;
• Suporta deploy a partir de S3 e GitHub;
• Seu projeto precisa de uma única modificação:
Um arquivo AppSpec (YAML específico para o
CodeDeploy);
• Controla as etapas do deploy e define ações a
serem tomadas em cada etapa;
CodeDeploy
• Suporta deploy em várias instâncias (deployment
group) ao mesmo tempo, inclusive em Auto
Scaling groups;
• Suporta triggers para envio de notificações de
eventos via SNS;
• Possui relatório que mostra quando e qual
revisão foi “deployada” em cada instância;
CodeDeploy
Integração com vários sistemas de Continuous Integration e
Continuous Delivery:
• Jenkins
• Travis CI
• CircleCI
• TeamCity
• Solano Labs
• AWS CodePipeline
• …
CodeDeploy
Fonte: http://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html#welcome-introducing
CodeDeploy
Como o deploy ocorre no orquestrador?
1. Uma nova revisão é criada;
2. Coordena o deploy nas instâncias do deployment
group conforme a configuração: Uma de cada vez,
todas de uma vez, metade de cada vez;
3. Executa triggers em cada etapa do deploy;
4. Aborta o deploy e faz rollback em caso de erro,
dependendo da configuração;
CodeDeploy
Como o deploy ocorre na instância?
1. Uma nova revisão é criada;
2. O orquestrador sinaliza para a instância iniciar o deploy
fazendo download do repositório/bundle do projeto;
3. O agente lê o arquivo AppSpec e executa as instruções
encontradas;
4. Aborta o deploy e faz rollback em caso de erro,
dependendo da configuração;
CodeDeploy
Exemplo de AppSpec:
version: 0.0
os: linux
files:
- source: Config/config.txt
destination: /webapps/Config
- source: source
destination: /webapps/myApp
hooks:
BeforeInstall:
- location: Scripts/UnzipResourceBundle.sh
- location: Scripts/UnzipDataBundle.sh
AfterInstall:
- location: Scripts/RunResourceTests.sh
timeout: 180
ApplicationStart:
- location: Scripts/RunFunctionalTests.sh
timeout: 3600
ValidateService:
- location: Scripts/MonitorService.sh
timeout: 3600
runas: codedeployuser
CodePipeline
“Serviço de Continuous Delivery que permite
modelar, visualizar e automatizar os passos
necessários para deploy do seu software.”
CodePipeline
Fonte: http://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html
CodePipeline
Neste exemplo:
1. O desenvolvedor envia a alteração para o repositório;
2. O processo de build é iniciado;
3. Se há testes configurados, os testes são executados;
4. Depois dos testes completarem, ocorre o deploy do resultado do build
(built code) em instâncias de staging;
5. Nas instâncias de staging, testes adicionais são executados, como
integrações e testes de carga;
6. Após finalizar todos testes com sucesso, ocorre o deploy em
instâncias de produção;
CodePipeline
O deploy pode ser realizado em instâncias EC2
através dos serviços:
• CodeDeploy
• Elastic Beanstalk
• OpsWorks
CodePipeline
Por onde começar?
http://docs.aws.amazon.com/cod
epipeline/latest/userguide/getting
-started.html
CodePipeline
Fonte: http://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html

Mais conteúdo relacionado

Destaque

2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
Informarción comercial de alemania 2011 perú
Informarción comercial de alemania 2011  perúInformarción comercial de alemania 2011  perú
Informarción comercial de alemania 2011 perúJhonny Alvarez Gaspar
 
Broschüre - Lindesnes Leuchtturm - Norwegen
Broschüre - Lindesnes Leuchtturm - NorwegenBroschüre - Lindesnes Leuchtturm - Norwegen
Broschüre - Lindesnes Leuchtturm - NorwegenLindesnesFyr
 
Recorrido De La Maraton Y Llegada A Santa Rosa
Recorrido De La Maraton Y Llegada A Santa RosaRecorrido De La Maraton Y Llegada A Santa Rosa
Recorrido De La Maraton Y Llegada A Santa RosaYamid Murillo
 
Informatik: Das Besondere - Die Unendlichkeit - Weihnachtsbaum 2.0
Informatik: Das Besondere - Die Unendlichkeit - Weihnachtsbaum 2.0Informatik: Das Besondere - Die Unendlichkeit - Weihnachtsbaum 2.0
Informatik: Das Besondere - Die Unendlichkeit - Weihnachtsbaum 2.0Informatik-Forum Stuttgart e.V.
 
1ª tarefa conexart 2013
1ª tarefa conexart 20131ª tarefa conexart 2013
1ª tarefa conexart 2013conexart
 
Estevão e Willian - Apresentação
Estevão e Willian - Apresentação Estevão e Willian - Apresentação
Estevão e Willian - Apresentação BR PRESS
 
Embarazos a edad temprana
Embarazos a edad tempranaEmbarazos a edad temprana
Embarazos a edad tempranaCarmen Peña
 
Segmentación y Posicionamiento
Segmentación y PosicionamientoSegmentación y Posicionamiento
Segmentación y PosicionamientoD_Acosta
 
Perlick flow control_faucet_ad_mar_aprii
Perlick flow control_faucet_ad_mar_apriiPerlick flow control_faucet_ad_mar_aprii
Perlick flow control_faucet_ad_mar_apriiParikshit kakkar
 
ATD Training Certificate
ATD Training CertificateATD Training Certificate
ATD Training CertificateNabeel Oqbi
 
Praesentation statuskonferenz 2013
Praesentation statuskonferenz 2013Praesentation statuskonferenz 2013
Praesentation statuskonferenz 2013Sibylle Würz
 
Estadisticas Cancer
Estadisticas CancerEstadisticas Cancer
Estadisticas Cancerjesusangar
 
V3 vru mod 05 action plan (spanish)
V3 vru mod 05 action plan (spanish)V3 vru mod 05 action plan (spanish)
V3 vru mod 05 action plan (spanish)Nidia Ochoa
 

Destaque (18)

2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Aula 4 - Introdução a aws
Aula 4 - Introdução a awsAula 4 - Introdução a aws
Aula 4 - Introdução a aws
 
Informarción comercial de alemania 2011 perú
Informarción comercial de alemania 2011  perúInformarción comercial de alemania 2011  perú
Informarción comercial de alemania 2011 perú
 
Broschüre - Lindesnes Leuchtturm - Norwegen
Broschüre - Lindesnes Leuchtturm - NorwegenBroschüre - Lindesnes Leuchtturm - Norwegen
Broschüre - Lindesnes Leuchtturm - Norwegen
 
Recorrido De La Maraton Y Llegada A Santa Rosa
Recorrido De La Maraton Y Llegada A Santa RosaRecorrido De La Maraton Y Llegada A Santa Rosa
Recorrido De La Maraton Y Llegada A Santa Rosa
 
Informatik: Das Besondere - Die Unendlichkeit - Weihnachtsbaum 2.0
Informatik: Das Besondere - Die Unendlichkeit - Weihnachtsbaum 2.0Informatik: Das Besondere - Die Unendlichkeit - Weihnachtsbaum 2.0
Informatik: Das Besondere - Die Unendlichkeit - Weihnachtsbaum 2.0
 
1ª tarefa conexart 2013
1ª tarefa conexart 20131ª tarefa conexart 2013
1ª tarefa conexart 2013
 
Estevão e Willian - Apresentação
Estevão e Willian - Apresentação Estevão e Willian - Apresentação
Estevão e Willian - Apresentação
 
Embarazos a edad temprana
Embarazos a edad tempranaEmbarazos a edad temprana
Embarazos a edad temprana
 
Segmentación y Posicionamiento
Segmentación y PosicionamientoSegmentación y Posicionamiento
Segmentación y Posicionamiento
 
Perlick flow control_faucet_ad_mar_aprii
Perlick flow control_faucet_ad_mar_apriiPerlick flow control_faucet_ad_mar_aprii
Perlick flow control_faucet_ad_mar_aprii
 
ATD Training Certificate
ATD Training CertificateATD Training Certificate
ATD Training Certificate
 
Prevision fevrier 07 2016
Prevision fevrier 07 2016Prevision fevrier 07 2016
Prevision fevrier 07 2016
 
Praesentation statuskonferenz 2013
Praesentation statuskonferenz 2013Praesentation statuskonferenz 2013
Praesentation statuskonferenz 2013
 
Estadisticas Cancer
Estadisticas CancerEstadisticas Cancer
Estadisticas Cancer
 
Wholesale products1
Wholesale products1Wholesale products1
Wholesale products1
 
V3 vru mod 05 action plan (spanish)
V3 vru mod 05 action plan (spanish)V3 vru mod 05 action plan (spanish)
V3 vru mod 05 action plan (spanish)
 
Cen Del Pan
Cen Del PanCen Del Pan
Cen Del Pan
 

Semelhante a Visão geral da AWS para desenvolvedores

Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasAmazon Web Services LATAM
 
Tony\'s Top 10 Computer Forensics Artifacts
Tony\'s Top 10 Computer Forensics ArtifactsTony\'s Top 10 Computer Forensics Artifacts
Tony\'s Top 10 Computer Forensics Artifactstonyrodrigues
 
Curso de Node.js e MongoDB - 19
Curso de Node.js e MongoDB - 19Curso de Node.js e MongoDB - 19
Curso de Node.js e MongoDB - 19Luiz Duarte
 
Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...
Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...
Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...Amazon Web Services LATAM
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumElias Nogueira
 
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Luis Cipriani
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...BrunoSouza617
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScriptHeider Lopes
 
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSAplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSJackson F. de A. Mafra
 
Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Fabio Vieira Mello
 

Semelhante a Visão geral da AWS para desenvolvedores (20)

Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernas
 
Tony\'s Top 10 Computer Forensics Artifacts
Tony\'s Top 10 Computer Forensics ArtifactsTony\'s Top 10 Computer Forensics Artifacts
Tony\'s Top 10 Computer Forensics Artifacts
 
Curso de Node.js e MongoDB - 19
Curso de Node.js e MongoDB - 19Curso de Node.js e MongoDB - 19
Curso de Node.js e MongoDB - 19
 
Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...
Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...
Deep dive em aceleração de entrega de conteúdo, APIs e Aplicações utilizando ...
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
 
Deep dive de AWS IoT
Deep dive de AWS IoTDeep dive de AWS IoT
Deep dive de AWS IoT
 
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
Python 08
Python 08Python 08
Python 08
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRSAplicações Realtime em Android | Fisl 15 | GuMobileRS
Aplicações Realtime em Android | Fisl 15 | GuMobileRS
 
Infraestrutura como codigo
Infraestrutura como codigoInfraestrutura como codigo
Infraestrutura como codigo
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!
 

Visão geral da AWS para desenvolvedores

  • 1. Agosto/2016 Uma visão geral da AWS para desenvolvedores Jardel Weyrich jardel@teltecsolutions.com.br
  • 2. • Ferramentas • CLI • SDK • Serviços • Elastic Beanstalk • API Gateway • Lambda • SNS • SQS • CodeCommit, CodeDeploy, CodePipeline
  • 3. • Outros serviços (não abordados): • CloudFormation: Permite criar e gerenciar praticamente todos recursos da AWS, inclusive automatizar o provisionamento de ambientes complexos usando templates; • Cognito: Autenticação de usuários; • DynamoDB: Banco de dados NoSQL; • Kinesis: Coleta de dados de streaming contínuo; • Redshift: Armazenamento e consulta de dados na ordem de Petabytes (via ODBC, JDBC); • ElasticSearch: Um Elasticsearch gerenciado e escalável; • ElasticCache: Cache em memória (memcached, Redis); • EMR (Elastic Map Reduce): Processamento de enormes quantidades de dados - Hadoop, Hive, Spark, Presto, HBase; • OpsWorks: Chef na nuvem; • SWF (Simple Workflow Service): Automatizador de processos, rastreador de estados, e coordenador de tarefas;
  • 4. CLI CLI - Interface de linha de comando “É uma ferramenta unificada para o gerenciamento de seus serviços da AWS. Com apenas uma ferramenta … você poderá controlar vários serviços da AWS pela linha de comando e automatizá-los usando scripts.” Utiliza API REST sobre HTTPS Referência: https://aws.amazon.com/pt/cli/
  • 5. CLI Requisitos: 1. Ter uma conta ativa na AWS; 2. Instalar a ferramenta CLI - MSI, pip, bundled installer (zip + custom installer) - http://docs.aws.amazon.com/cli/latest/userguide/i nstalling.html; 3. Configurar CLI (Access Key, Secret Access Key, região);
  • 6. CLI Configurando a CLI após a instalação $ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: ENTER
  • 7. CLI Configurando um perfil adicional $ aws configure --profile user2 AWS Access Key ID [None]: AKIAIOSROAPN8EXAMPLE AWS Secret Access Key [None]: wJalrXUtnARMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: ENTER
  • 8. CLI Configurando o perfil padrão Linux / Mac / Unix $ export AWS_DEFAULT_PROFILE=user2 Windows > set AWS_DEFAULT_PROFILE=user2
  • 9. CLI Criando um Security Group $ aws ec2 create-security-group --group-name meu-sg --description "Meu security group” { "GroupId": "sg-903004f8" }
  • 10. CLI Criando Snapshot de um volume $ aws ec2 create-snapshot --region "sa-east-1" --description "Meu snapshot" --volume-id “vol-6a898c8e” { "Description": "Meu snapshot", "Encrypted": false, "VolumeId": "vol-6a898c8e", "State": "pending", "VolumeSize": 3, "Progress": "", "StartTime": "2016-08-16T12:20:29.000Z", "SnapshotId": "snap-8689a7b1", "OwnerId": "409138808507" }
  • 11. CLI Consultando dados de um Snapshot $ aws ec2 describe-snapshots --region "sa-east-1" --query “Snapshots[0].{id:SnapshotId,desc:Description}" { "id": "snap-ac9002c4", "desc": "pvlinux-debian-6.0-x86_1.0.1.92_120531_183609" }
  • 12. SDK Open Source Apache License, Version 2.0 https://github.com/aws
  • 13. SDK Onde pode ser usado? • Smartphones • Smartwatches • Tablets • PCs • Macs • Browsers: Chrome (28.0+), Firefox (23.0+), Opera (17.0+), IE (10.0+), Safari (5.1+), Android Browser (4.3+) • Praticamente qualquer dispositivo com Windows, Linux/Unix, OS X, iOS, Android
  • 14. SDK Várias linguagens de programação • Java (inclusive Android) • .NET • Objective-C (iOS) • JavaScript (browser) • Node.js • PHP • Python • Ruby • Go • C++ (developer preview)
  • 15. SDK Exemplo de instalação do SDK para Node.js # apt-get install nodejs $ npm install aws-sdk https://nodejs.org/en/download/ https://www.npmjs.com
  • 16. SDK Criando um bucket no S3 e fazendo upload de um arquivo $ wget https://goo.gl/BxEaMB -O demo.js $ node demo.js <bucket> <arquivo> Mais exemplos em http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-examples.html
  • 17. Elastic Beanstalk “Faça deploy de aplicações sem se preocupar com a infraestrutura que roda essas aplicações.”
  • 18. Elastic Beanstalk Como funciona? 1. Você cria uma aplicação no Beanstalk e especifica o tipo de ambiente que ela deve rodar; 2. Faz upload de uma versão da aplicação em forma de bundle (exemplo: J2EE seria um .war) para o Beanstalk; 3. Informa alguns dados sobre o ambiente (nome, URL); 4. Seleciona o tipo de instância e os serviços adicionais que serão utilizados (RDS, etc); 5. Clica em Launch!
  • 23. API Gateway “Um serviço totalmente gerenciado que torna fácil publicar, manter, monitorar, e proteger APIs em qualquer escala.” Control: Permite você criar uma API RESTful para mapear/expor funções do back-end. O back-end pode ser outro serviço AWS, como Lambda, DynamoDB, ou uma aplicação web existente; Execution: Permite uma aplicação chamar/executar uma API do back-end; Referência: http://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.htm l
  • 24. API Gateway Algumas features suportadas: • API staging • API versioning • API caching • API quota • API keys • API Authorization • Client certificates generation • Request throttling • API execution monitoring (estatísticas de latência, caching, erros, …) • Native SDK generation: Android, JavaScript, iOS • API import - incluindo Swagger - http://swagger.io
  • 25. API Gateway Etapas para criação de uma API: 1. Criar uma API; 2. Configurar o(s) método(s) 3. Configurar a integração que a API deve utilizar; 4. Se for necessário, configurar os mapeamentos de requisição e/ou resposta; 5. Testar; 6. Fazer deploy!
  • 29. Lambda Uma plataforma que permite rodar códigos sem você precisar provisionar ou gerenciar servidores. Zero administração!
  • 30. Lambda Como funciona? 1. Depois de você fazer upload do seu código, é criada uma função Lambda; 2. O serviço cuida de todo provisionamento e gerência dos servidores que rodarão o código;
  • 31. Lambda Quais linguagens são suportadas? • Node.js (JavaScript) • Java • Python
  • 32. Lambda Como pode ser usado? A. Como um serviço orientado a eventos onde o AWS Lambda executa seu código em resposta a eventos, tais como alterações em um bucket do S3 ou em uma tabela do DynamoDB; B. Como um serviço que executa seu código em resposta a requisições HTTP usando o API Gateway ou chamadas de API feitas usando AWS SDK;
  • 33. Lambda O que é gerenciado automaticamente? • Manutenção dos servidores e sistemas operacionais; • Alta disponibilidade; • Provisionamento de capacidade; • Escalonamento automático; • Monitoramento; • Logging;
  • 34. Lambda Quais as limitações? • Não existe instância/servidor para você logar; • Você não pode customizar o sistema operacional;
  • 35. Lambda Você pode usar o Amazon S3 para acionar o AWS Lambda para processar os dados imediatamente após um upload. Por exemplo, você pode usar o Lambda para miniaturizar imagens, transcodificar vídeos, indexar arquivos, processar logs, validar conteúdo, e agregar e filtrar dados em tempo real.
  • 38. SNS “Sistema de mensagens por push gerenciado e altamente escalável.” Suporta pushes para dispositivos Apple, Android, Amazon FireOS, e Windows. Também pode entregar mensagens para SQS, Lambda, Email, SMS, e endpoints HTTP, HTTPS. Mais informações em https://aws.amazon.com/pt/sns/
  • 39. SNS Principais APIs: CreateTopic: Cria um tópico nomeado para onde as notificações podem ser publicadas; CreatePlatformEndpoint: Cria um endpoint para um dispositivo e aplicação mobile em um dos serviços de Push Notification suportados, como GCM ou APNS. O valor retornado pode ser usado para Publish ou Subscribe. Publish: Publica uma mensagem no tópico informado para todos endpoints associados; Subscribe: Inicia o processo de inscrição em um endpoint enviando um pedido de aprovação para o dono do endpoint. O pedido de confirmação carrega um token que é válido por 3 dias e pode ser confirmado pela API ConfirmSubscription; Unsubscribe: Delete uma inscrição;
  • 42. SQS “Serviço de fila de mensagem rápido, confiável, escalável e totalmente gerenciado.” 3 principais APIs: • SendMessage: envia mensagens para uma fila específica; • ReceiveMessage: retorna 1+ mensagens de uma fila específica; • DeleteMessage: remove uma mensagem recebida anteriormente de uma fila específica; APIs adicionais estão disponíveis para oferecer funcionalidade avançada: SendMessageBatch, DeleteMessageBatch, ChangeMessageVisibilityBatch, CreateQueue, ListQueues, DeleteQueue, PurgeQueue, etc. Referência: https://aws.amazon.com/pt/sqs/
  • 43. SQS 1. O SISTEMA X precisa enviar uma mensagem para o SISTEMA Y. Ele seleciona uma fila pré-determinada do SQS, e chama SendMessage para adicionar uma nova mensagem à ela. 2. O SISTEMA Y que processa mensagens precisa de mais mensagens para processar, portanto ele chama ReceiveMessage e essa mensagem é retornada. 3. Assim que uma mensagem tiver sido retornada por ReceiveMessage, ela não será retornada por nenhum outro ReceiveMessage até que o tempo de espera de visibilidade transcorra. Isso impede que vários computadores processem a mesma mensagem de uma vez. 4. Se o sistema que processa mensagens encerrar com êxito o processamento desta mensagem, ele chamará DeleteMessage, que removerá a mensagem da fila, de forma que mais ninguém irá processá-la. Se o sistema apresentar falha no processamento da mensagem, ele será lido por outra chamada ReceiveMessage assim que o tempo de espera de visibilidade transcorrer. 5. Se você associou uma fila Dead Letter a uma fila de origem, as mensagens serão movidas para a fila Dead Letter após o número máximo de tentativas de entrega que você especificou ser atingido.
  • 45. CodeCommit • Repositório Git gerenciado • Criptografado em disco • Sem limite de repositórios • Sem limite de tamanho
  • 46. CodeCommit $ aws codecommit create-repository --region=us-east-1 --repository- name <nome> { "repositoryMetadata": { "repositoryName": "teste1", "cloneUrlSsh": "ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/teste1", "lastModifiedDate": 1471525092.53, "repositoryId": "3dc94488-6b86-4a79-95fd-2be5d4aeef38", "cloneUrlHttp": "https://git-codecommit.us-east-1.amazonaws.com/v1/repos/teste1", "creationDate": 1471525092.53, "Arn": "arn:aws:codecommit:us-east-1:409138808507:teste1", "accountId": "409138808507" } } $ git remote add origin <url>
  • 48. CodeDeploy • Coordena deploy de aplicações para instâncias EC2, on-premises, ou ambos; • Suporta deploy a partir de S3 e GitHub; • Seu projeto precisa de uma única modificação: Um arquivo AppSpec (YAML específico para o CodeDeploy); • Controla as etapas do deploy e define ações a serem tomadas em cada etapa;
  • 49. CodeDeploy • Suporta deploy em várias instâncias (deployment group) ao mesmo tempo, inclusive em Auto Scaling groups; • Suporta triggers para envio de notificações de eventos via SNS; • Possui relatório que mostra quando e qual revisão foi “deployada” em cada instância;
  • 50. CodeDeploy Integração com vários sistemas de Continuous Integration e Continuous Delivery: • Jenkins • Travis CI • CircleCI • TeamCity • Solano Labs • AWS CodePipeline • …
  • 52. CodeDeploy Como o deploy ocorre no orquestrador? 1. Uma nova revisão é criada; 2. Coordena o deploy nas instâncias do deployment group conforme a configuração: Uma de cada vez, todas de uma vez, metade de cada vez; 3. Executa triggers em cada etapa do deploy; 4. Aborta o deploy e faz rollback em caso de erro, dependendo da configuração;
  • 53. CodeDeploy Como o deploy ocorre na instância? 1. Uma nova revisão é criada; 2. O orquestrador sinaliza para a instância iniciar o deploy fazendo download do repositório/bundle do projeto; 3. O agente lê o arquivo AppSpec e executa as instruções encontradas; 4. Aborta o deploy e faz rollback em caso de erro, dependendo da configuração;
  • 54. CodeDeploy Exemplo de AppSpec: version: 0.0 os: linux files: - source: Config/config.txt destination: /webapps/Config - source: source destination: /webapps/myApp hooks: BeforeInstall: - location: Scripts/UnzipResourceBundle.sh - location: Scripts/UnzipDataBundle.sh AfterInstall: - location: Scripts/RunResourceTests.sh timeout: 180 ApplicationStart: - location: Scripts/RunFunctionalTests.sh timeout: 3600 ValidateService: - location: Scripts/MonitorService.sh timeout: 3600 runas: codedeployuser
  • 55. CodePipeline “Serviço de Continuous Delivery que permite modelar, visualizar e automatizar os passos necessários para deploy do seu software.”
  • 57. CodePipeline Neste exemplo: 1. O desenvolvedor envia a alteração para o repositório; 2. O processo de build é iniciado; 3. Se há testes configurados, os testes são executados; 4. Depois dos testes completarem, ocorre o deploy do resultado do build (built code) em instâncias de staging; 5. Nas instâncias de staging, testes adicionais são executados, como integrações e testes de carga; 6. Após finalizar todos testes com sucesso, ocorre o deploy em instâncias de produção;
  • 58. CodePipeline O deploy pode ser realizado em instâncias EC2 através dos serviços: • CodeDeploy • Elastic Beanstalk • OpsWorks