arquitetura serverless e aws lambda - demo session

19
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Renato Barbosa Enterprise Solutions Architect Junho - 2016 Arquitetura Serverless e AWS Lambda

Upload: amazon-web-services-latam

Post on 20-Jan-2017

605 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Arquitetura Serverless e AWS Lambda - Demo Session

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Renato Barbosa – Enterprise Solutions Architect

Junho - 2016

Arquitetura Serverless e AWS

Lambda

Page 2: Arquitetura Serverless e AWS Lambda - Demo Session

Serverless e AWS Lambda

Deixe de se preocupar com:

• Servidores

• Dimencionamento

• Deployments

• Escalabilidade

• Tolerância a Falhas

• S.O e Updates

• Metricas e Log

E você pode facilmente:

• Executar código em

paralelo

• Trazer seu código e

bibliotecas nativas

• Criar backend, Ações

através de eventos e

sistemas de processamento

• Pagar apenas pelo

necessário

Page 3: Arquitetura Serverless e AWS Lambda - Demo Session

AWS Lambda – Benefícios

ESCALÁVEL POR EVENTOSSERVERLESS BILLING EM

MILISEGUNDOS

Page 4: Arquitetura Serverless e AWS Lambda - Demo Session

AWS Lambda – Integração

Amazon

S3

Amazon

DynamoDB

Amazon

Kinesis

AWS

CloudTrail

Amazon

CloudWatch

Logs

AWS

CloudFormation

Amazon

SNS

Amazon

SWF

Amazon

SES

Amazon

API Gateway

Amazon

Cognito

Page 5: Arquitetura Serverless e AWS Lambda - Demo Session

AWS Lambda – Histórico

re:Invent 2014Preview Launch

April 2015GA

Summer 2015 re:Invent 2015

• Node.js

• Event handlers

• CORS

• Mobile

Backends

• Sync calls

• Resource

policies

• Java

• Amazon S3

uploads

• Blueprints

• 1.5 GB

• Tokyo region

• Alexa Skills

• Pyhton

• Controle de

Versão

• Agendador

• Funções de até

5 min

Page 6: Arquitetura Serverless e AWS Lambda - Demo Session

AWS Lambda – Desafio do Demo

• Criar uma arquitetura e execução serverless para:

• Armezenar vídeos de Upload dos usuários

• Pós Upload converter vídeos e armazenar-los

• Pós conversão armazenar em um banco de dados

Metadados do vídeo

• Disponibilizar videos em uma estrutura de CDN Serverless

• Enviar notificação do novo vídeo aos usuários

Solução necessita ser SERVERLESS!

Page 7: Arquitetura Serverless e AWS Lambda - Demo Session

Arquitetura

Page 8: Arquitetura Serverless e AWS Lambda - Demo Session

Arquitetura – Serveless Storage

Page 9: Arquitetura Serverless e AWS Lambda - Demo Session

Arquitetura – Serverless Transcode

Page 10: Arquitetura Serverless e AWS Lambda - Demo Session

Arquitetura - Serverless Database e Notify

Page 11: Arquitetura Serverless e AWS Lambda - Demo Session

Arquitetura – Serveless CDN

Page 12: Arquitetura Serverless e AWS Lambda - Demo Session

AWS Lambda – Desenvolvendo

• Guia a Tira colo:

• http://boto3.readthedocs.io/en/latest/index.html

• Desenhar a solução e trabalhar nas APIs

• Inicio da solução….

Page 13: Arquitetura Serverless e AWS Lambda - Demo Session

1) Lambda pós Upload

##### Instanciando os servicos

s3 = boto3.client('s3')

etranscoder = boto3.client('elastictranscoder')

##### Id da Pipelinepipeline

Id = ('1463433351875-xzcffu')

##### Id do Preset preset

Id = ('1351620000001-000010')

def lambda_handler(event, context):

#print("Received event: " + json.dumps(event, indent=2))

# Get the object from the event and show its content type

bucket = event['Records'][0]['s3']['bucket']['name']

key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')

try:

##### Obtendo resposta do Evento

response = s3.get_object(Bucket=bucket, Key=key)

Page 14: Arquitetura Serverless e AWS Lambda - Demo Session

1) Lambda pós Upload

##### Realizando o Transcoding do Video

transcoder = etranscoder.create_job(

PipelineId = pipelineId,

Input={

'Key': key

},

Output={

'Key': key,

'PresetId': presetId

}

)

Page 15: Arquitetura Serverless e AWS Lambda - Demo Session

2) Lambda pós Transcode

##### Instanciando os servicos

s3 = boto3.client('s3')

dynamodb = boto3.resource('dynamodb')

sns = boto3.client('sns')

##### Acessando Tabela do DynamoDB

table = dynamodb.Table('Videos')

##### EndPoint do CloudFront

cloudfront = ('http://d397nnvlvhwg5r.cloudfront.net/')

##### ARN do Topic do SNStopic

ARN = ('arn:aws:sns:us-east-1:939664253159:videos')

Page 16: Arquitetura Serverless e AWS Lambda - Demo Session

2) Lambda pós Transcode

def lambda_handler(event, context):

....

##### Inserindo no DynamoDB os dados do acesso ao video e Status. put_item_dynamo = table.put_item(

Item = {

'Nome': key,

'Info': response['ContentType'],

'Status': '0',

'Link': cloudfront + key

}

)

##### Enviando alerta de video disponivel.

snsPublish = sns.publish(

TopicArn = topicARN,

Message = 'Novo video disponivel. Para acessar o video acessar o Link: '+ cloudfront + key,

Subject = 'Demo Summit! Tem novidade ai.',

MessageStructure = 'Raw',

)

Page 17: Arquitetura Serverless e AWS Lambda - Demo Session

Demo

#LambdaVoceTambem

Page 18: Arquitetura Serverless e AWS Lambda - Demo Session

Remember to complete

your evaluations!

Page 19: Arquitetura Serverless e AWS Lambda - Demo Session

Obrigado