SlideShare uma empresa Scribd logo
1 de 25
Mario Guedes – #ID: 36
Mario?
- Codificador Delphi desde 1999 – Vinte anos e contando!
- Obrigado Rodrigo!
- Fui Instrutor Delphi na TDS de 2011 à 2013
- Obrigado Leandro!
- Palestrante na EC, e outros eventos, desde 2011 – Nono ano!
- Obrigado Andreano!
- Fui Colunista na Active Delphi de 2012 à 2014
- Obrigado Kelver!
- Embarcadero MVP desde 2016 – Quarto ano!
- Obrigado Marcão!
Não sou eu! Sou eu!
Mario Guedes – #ID: 36
Siga a ArrayOf.io
- Modernize o seu legado conosco!
- Os primeiros cursos estão saindo!
Mario Guedes – #ID: 36
Hoje falaremos de:
Mario Guedes – #ID: 36
Pesquisa rápida
- Quantos aqui são Administradores de Rede?
- Quantos aqui são DBA?
- Quantos aqui são DevOps, SysAdmin e por aí vai?
- Quantos aqui manjam de servidores e Sistema Operacional profundamente?
- Windows?
- Linux?
- Agora: Quantos aqui são desenvolvedores?
Mario Guedes – #ID: 36
BaaS + FaaS = Serverless
- IaaS: Infra estrutura como serviço
Quando contratamos servidores virtuais estamos usando o IaaS.
Aqui ainda não temos o serverless em ação.
e.g. EC2 da AWS
- BaaS: Backend como serviço
Mas quando contratamos um banco de dados ou um serviço de autenticação por exemplo, estamos
lançando mão do BaaS. Mas só é verdade se este for acessível diretamente ao front-end.
e.g. Firebase do Google
- FaaS: Função como serviço
Agora, se um serviço nos permite subir um código e este código ser executado sob demanda – aí
estamos usando o FaaS.
e.g. AWS Lambda da Amazon, Cloud Functions da Google ou Azure Functions da Microsoft
Mario Guedes – #ID: 36
TL;DR
- Serverless: Sem servidor
- Você escolhe um provedor de serviços (Amazon, Google, Microsoft entre outras menores)
- Explora os diversos serviços nas seguintes áreas:
- Execução de código
- Armazenamento de dados e arquivos
- Servidão REST
- Tudo isto sem levantar nenhuma máquina, seja física ou virtual
- Você paga pelo recurso que usar e quando usar
- Hoje iremos explorar alguns serviços da Amazon.
- E não é propaganda OK? É aquela que uso e conheço.
Mario Guedes – #ID: 36
Qual a dor que o serverless resolve?
• Imagine um solução baseada em aplicativo web, mobile ou IoT
• Você terá que desenvolver uma aplicação que consumirá, necessariamente, um
backend
• Portanto você terá que desenvolver a aplicação de backend se preocupando com a
escalabilidade da coisa toda
• Logo você terá que utilizar um banco de dados para armazenar os dados
• E eventualmente uma máquina para armazenamento de arquivos – fotos, XMLs e
etc
• Como é uma solução cloud você terá que contratar um datacenter e terá que
comprar/alocar equipamentos
• Por segurança você criará dois ambientes
Mario Guedes – #ID: 36
Problemas levantados:
- Custos de contratação, aquisição, configuração e manutenção de servidores
- Tempo de desenvolvimento dos serviços de backend
- Custos de propriedade dos servidores pois nos primeiros meses ou anos eles
estarão subtilizados
- Mas você tem que deixa-las ligadas full time afinal nunca se sabe quando um
usuário se logará
- E você não tem este dinheiro nem o conhecimento necessário para lidar com isso
tudo porque você é programador e só quer colocar a sua solução no ar
- Seria tão bom se você não precisasse se preocupar com servidores ...
Mario Guedes – #ID: 36
Foco no app ...
- Você tem que focar no que o seu aplicativo se propõe a fazer de melhor
- E terceirizar aspectos que fogem ao propósito primordial da sua solução
- Use e abuse de todo o seu conhecimento em Delphi para desenvolver a melhor solução do seu
segmento de mercado
- Com isso você ganha velocidade de desenvolvimento e, consequentemente, lançamento do seu
produto no mercado
- Aquilo que você “terceirizar” será consumido via API REST
Mario Guedes – #ID: 36
... viva o serverless!
- Vamos conhecer 5 serviços da AWS:
- AWS Lambda
- AWS API Gateway
- AWS DynamoDB
- AWS S3
- AWS Cognito
- Porém o Google Plataform Cloud e a Microsoft Azure oferecem serviços com os mesmos propósitos
- Escolha a que mais lhe agradar
- Preço, camada free, familiaridade, confiabilidade são bons critérios de escolha
- Cuidado com o vendor-lock: a migração entre plataformas ainda é um processo doloroso –
mas há iniciativas a respeito
Mario Guedes – #ID: 36
Recursos Compartilhados X Dedicados
- Já sabemos que a AWS oferece máquinas virtuais e instâncias de banco de dados (SQL Server por
exemplo). Qual é a diferença?
- A diferença é que a AWS EC2 ou a AWS RDS são recursos dedicados:
- Você paga pelo fato deles estarem ativos, não importa se está sendo utilizado ou não
- Já serviços como AWS Lambda ou AWS DynamoDB são recursos compartilhados:
- Por isso você paga apenas por aquilo que foi utilizado
- A camada free é generosa – você poderá ficar um bom tempo sem gastar nada ou
gastar muito pouco – mesmo com a solução em produção
Mario Guedes – #ID: 36
AWS Lambda
- Aqui você codificará as suas regras de negócio
- Oferece várias linguagens mas sugere-se Python ou NodeJS pois são as que tem menores cold start.
- A pior é Java, pra variar
- Evite um grande acoplamento ao ambiente da AWS para facilitar uma eventual migração.
- Essas funções são executadas em contêineres efêmeros:
- Contêiner com pouco tempo de vida que sobe, executa o código e é descartada logo
em seguida
- Por isso que o cold start é importante: impacta no tempo global da execução
Mario Guedes – #ID: 36
Monolítico X Microserviços X Nanoserviços
- As funções também são
conhecidos por nanoserviços
- Você codifica somente e tão
somente o necessário para
atender a sua regra de
negócio:
- Não precisa se preocupar
com HTTP, Thread,
Instância disso ou daquilo
...
- Direto ao ponto!
Mario Guedes – #ID: 36
AWS API Gateway
- Equivalente ao DataSnap, manja?
- Você configura os endpoints da sua API e direciona o conteúdo para algum outro serviço
- Pode vir a quantidade que for de requisições que será atendida!
- Mas se não vier nenhuma tudo bem.
- Você define o direcionamento que será dado à requisição HTTP:
- Uma função Lambda?
- Um endpoint em uma máquina EC2?
- Enfileirar no AWS-SQS? (Mensageria da AWS)
- Algum outro serviço?
- Daí responde ao chamador.
Mario Guedes – #ID: 36
AWS DynamoDB
- Equivale, mais ou menos, à uma mistura de Redis com MongoDB
- É um banco de dados noSQL orientado à chave e valor
- A monetização é baseada – principalmente - em unidade de leitura e escrita: RCU e WCU
Cenário de exemplo:
Uma aplicação recebe 3 milhões de leituras por mês e 500 mil de escrita.
O cálculo seria:
3.000.000 / 30 dias / 24 horas / 60 minutos / 60 segundos / 2 por unidade ~= 1 unidade de escrita por segundo
2.000.000 / 30 / 24 / 60 / 60 ~= 1 unidade de escrita por segundo
Isso perfaz o valor de:
1 unidade leitura x US$ 0,09 == US$ 0,09
1 unidade de escrita x US$ 0,47 == US$ 0,47
Soma: US$ 0,56
Mario Guedes – #ID: 36
AWS S3
- Equivale à um servidor FTP da vida.
- Você armazena, essencialmente, arquivos.
- Bacana que você pode hospedar site estático ou até mesmo um SPA ou PWA desenvolvido em
Angular ou React por exemplo.
- É como a zueira no BR: Sem limites
Mario Guedes – #ID: 36
AWS Cognito
- Podemos utilizar o AWS Cognito para gerir as autenticações e permissões de usuários.
- Associado ao AWS IAM podemos definir todas as regras de acesso.
- É foda difícil entender no começo mas depois fica entra na veia
Mario Guedes – #ID: 36
DEMOSTRAÇÃO
Mario Guedes – #ID: 36
Outros serviços
- A AWS, bem como os outros provedores, possuem diversos outros serviços que podem e devem
ser explorados
- Basicamente falamos de uma arquitetura orientada a eventos.
Mario Guedes – #ID: 36
Case em desenvolvimento
- Software house que desenvolve sistema para lojas de móveis
- +20 anos de estrada
- Sistema on premise ou seja – instalado na casa do cliente (servidor e tudo o mais)
- Clientes querendo ir para a Internet, aplicativo – enfim ...
- Concorrente babando ...
- Solução:
- Criação de um ambiente na AWS: Lambda + API Gateway + Dynamo + S3
- Criação de um aplicativo de força de vendas
- Legado alimenta o Dynamo: produto x preço
- Legado alimenta o S3: fotos dos produtos
- Criação de um aplicativo Delphi que consome o ambiente AWS
- Quando um aplicativo fecha uma venda, bate no Lambda que faz uma chamada ao DataSnap
da loja
Mario Guedes – #ID: 36
Crie aplicativos com serviços, não servidores
- Talvez o serveless não resolva todo o seu problema mas talvez algum problema específico
- Infelizmente não há suporte à nossa linguagem preferida, Delphi – mas encaro isso como escrever stored
procedures no banco ou uma macro no Excel: é da vida
- Sugiro Python como linguagem para o AWS Lambda pois é o que tem menor cold start, assim como o
NodeJS.
- Cuidado com a documentação e gestão da coisa toda! Quem faz o que, quem chama o que, onde
armazena a informação tal, permissões e por aí vai
- Codificar menos, gerenciar mais
- Escolha bem a região: EUA = mais barato AND maior latência X BRASIL = mais caro AND menor latência
- Monitore constantemente o que esta acontecendo no seu ambiente para não ter surpresas na sua fatura.
- Não precisa ter medo, basta controlar.
Mario Guedes – #ID: 36
Perguntas e considerações
- Se você é de Porto Alegre e região lembre-se que teremos o TDC, com a Trilha Delphi presente!
- Sexta feira, 29/11 – Estaremos lá
- https://thedevelopersconference.com.br/tdc/2019/portoalegre/trilha-delphi
#ID
36
Mario Guedes – #ID: 36
Referências
- https://medium.com/@dayvsonlima/você-sabe-o-que-é-arquitetura-serverless-1f6dd1184e5b
- https://www.slideshare.net/AmazonWebServices/serverless-for-developers
- https://medium.com/@oieduardorabelo/serverless-framework-as-10-melhores-práticas-
recomendadas-e2ec59f92699
Referências consultadas em Outubro de 2019
mario@arrayof.io
/arrayof.io
/arrayof_io
/arrayof.io

Mais conteúdo relacionado

Semelhante a Foco no app, viva o serverless!

Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Leandro Silva
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à práticaMario Guedes
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?tdc-globalcode
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros PassosJackson F. de A. Mafra
 
Data center MCSBRC2010-slides.pdf
Data center MCSBRC2010-slides.pdfData center MCSBRC2010-slides.pdf
Data center MCSBRC2010-slides.pdfssuser1198af
 
Introdução a arquitetura Serverless na AWS
Introdução a arquitetura Serverless na AWSIntrodução a arquitetura Serverless na AWS
Introdução a arquitetura Serverless na AWSTimóteo Nascimento
 
Ferramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de SoftwareFerramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de SoftwareDanilo Sousa
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorWebinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorAmazon Web Services LATAM
 
TDC - Qual o tamanho adequado de um micro serviço?
TDC - Qual o tamanho adequado de um micro serviço?TDC - Qual o tamanho adequado de um micro serviço?
TDC - Qual o tamanho adequado de um micro serviço?Rafael Salerno de Oliveira
 
Utilizando NoSQL para Big Data com DynamoDB
Utilizando NoSQL para Big Data com DynamoDB Utilizando NoSQL para Big Data com DynamoDB
Utilizando NoSQL para Big Data com DynamoDB Amazon Web Services LATAM
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsRafael Salerno de Oliveira
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...Ricardo Martinelli de Oliveira
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2Maurício Linhares
 
Construindo sua Infraestrutura de Videos e Conteudos na Nuvem
Construindo sua Infraestrutura de Videos e Conteudos na NuvemConstruindo sua Infraestrutura de Videos e Conteudos na Nuvem
Construindo sua Infraestrutura de Videos e Conteudos na NuvemAmazon Web Services LATAM
 
Cloud & AWS: Da teoria à prática
Cloud & AWS: Da teoria à práticaCloud & AWS: Da teoria à prática
Cloud & AWS: Da teoria à práticaRicardo Martins ☁
 

Semelhante a Foco no app, viva o serverless! (20)

Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à prática
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Data center MCSBRC2010-slides.pdf
Data center MCSBRC2010-slides.pdfData center MCSBRC2010-slides.pdf
Data center MCSBRC2010-slides.pdf
 
#{GCODE}
#{GCODE}#{GCODE}
#{GCODE}
 
Introdução a arquitetura Serverless na AWS
Introdução a arquitetura Serverless na AWSIntrodução a arquitetura Serverless na AWS
Introdução a arquitetura Serverless na AWS
 
Ferramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de SoftwareFerramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de Software
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorWebinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
 
Aws summit arquitetura big data-v1.2
Aws summit arquitetura big data-v1.2Aws summit arquitetura big data-v1.2
Aws summit arquitetura big data-v1.2
 
TDC - Qual o tamanho adequado de um micro serviço?
TDC - Qual o tamanho adequado de um micro serviço?TDC - Qual o tamanho adequado de um micro serviço?
TDC - Qual o tamanho adequado de um micro serviço?
 
Utilizando NoSQL para Big Data com DynamoDB
Utilizando NoSQL para Big Data com DynamoDB Utilizando NoSQL para Big Data com DynamoDB
Utilizando NoSQL para Big Data com DynamoDB
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2
 
Construindo sua Infraestrutura de Videos e Conteudos na Nuvem
Construindo sua Infraestrutura de Videos e Conteudos na NuvemConstruindo sua Infraestrutura de Videos e Conteudos na Nuvem
Construindo sua Infraestrutura de Videos e Conteudos na Nuvem
 
Cloud & AWS: Da teoria à prática
Cloud & AWS: Da teoria à práticaCloud & AWS: Da teoria à prática
Cloud & AWS: Da teoria à prática
 

Mais de Mario Guedes

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitMario Guedes
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISMario Guedes
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumMario Guedes
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTMario Guedes
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - CookbookMario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsMario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsMario Guedes
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Mario Guedes
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis Mario Guedes
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisMario Guedes
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Mario Guedes
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Mario Guedes
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiMario Guedes
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Mario Guedes
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiMario Guedes
 
Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Mario Guedes
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaMario Guedes
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Mario Guedes
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosMario Guedes
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBMario Guedes
 

Mais de Mario Guedes (20)

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST Summit
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDIS
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da Ethereum
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - Cookbook
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e Redis
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe Delphi
 
Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistema
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
 

Foco no app, viva o serverless!

  • 1.
  • 2. Mario Guedes – #ID: 36 Mario? - Codificador Delphi desde 1999 – Vinte anos e contando! - Obrigado Rodrigo! - Fui Instrutor Delphi na TDS de 2011 à 2013 - Obrigado Leandro! - Palestrante na EC, e outros eventos, desde 2011 – Nono ano! - Obrigado Andreano! - Fui Colunista na Active Delphi de 2012 à 2014 - Obrigado Kelver! - Embarcadero MVP desde 2016 – Quarto ano! - Obrigado Marcão! Não sou eu! Sou eu!
  • 3. Mario Guedes – #ID: 36 Siga a ArrayOf.io - Modernize o seu legado conosco! - Os primeiros cursos estão saindo!
  • 4. Mario Guedes – #ID: 36 Hoje falaremos de:
  • 5. Mario Guedes – #ID: 36 Pesquisa rápida - Quantos aqui são Administradores de Rede? - Quantos aqui são DBA? - Quantos aqui são DevOps, SysAdmin e por aí vai? - Quantos aqui manjam de servidores e Sistema Operacional profundamente? - Windows? - Linux? - Agora: Quantos aqui são desenvolvedores?
  • 6. Mario Guedes – #ID: 36 BaaS + FaaS = Serverless - IaaS: Infra estrutura como serviço Quando contratamos servidores virtuais estamos usando o IaaS. Aqui ainda não temos o serverless em ação. e.g. EC2 da AWS - BaaS: Backend como serviço Mas quando contratamos um banco de dados ou um serviço de autenticação por exemplo, estamos lançando mão do BaaS. Mas só é verdade se este for acessível diretamente ao front-end. e.g. Firebase do Google - FaaS: Função como serviço Agora, se um serviço nos permite subir um código e este código ser executado sob demanda – aí estamos usando o FaaS. e.g. AWS Lambda da Amazon, Cloud Functions da Google ou Azure Functions da Microsoft
  • 7. Mario Guedes – #ID: 36 TL;DR - Serverless: Sem servidor - Você escolhe um provedor de serviços (Amazon, Google, Microsoft entre outras menores) - Explora os diversos serviços nas seguintes áreas: - Execução de código - Armazenamento de dados e arquivos - Servidão REST - Tudo isto sem levantar nenhuma máquina, seja física ou virtual - Você paga pelo recurso que usar e quando usar - Hoje iremos explorar alguns serviços da Amazon. - E não é propaganda OK? É aquela que uso e conheço.
  • 8. Mario Guedes – #ID: 36 Qual a dor que o serverless resolve? • Imagine um solução baseada em aplicativo web, mobile ou IoT • Você terá que desenvolver uma aplicação que consumirá, necessariamente, um backend • Portanto você terá que desenvolver a aplicação de backend se preocupando com a escalabilidade da coisa toda • Logo você terá que utilizar um banco de dados para armazenar os dados • E eventualmente uma máquina para armazenamento de arquivos – fotos, XMLs e etc • Como é uma solução cloud você terá que contratar um datacenter e terá que comprar/alocar equipamentos • Por segurança você criará dois ambientes
  • 9. Mario Guedes – #ID: 36 Problemas levantados: - Custos de contratação, aquisição, configuração e manutenção de servidores - Tempo de desenvolvimento dos serviços de backend - Custos de propriedade dos servidores pois nos primeiros meses ou anos eles estarão subtilizados - Mas você tem que deixa-las ligadas full time afinal nunca se sabe quando um usuário se logará - E você não tem este dinheiro nem o conhecimento necessário para lidar com isso tudo porque você é programador e só quer colocar a sua solução no ar - Seria tão bom se você não precisasse se preocupar com servidores ...
  • 10. Mario Guedes – #ID: 36 Foco no app ... - Você tem que focar no que o seu aplicativo se propõe a fazer de melhor - E terceirizar aspectos que fogem ao propósito primordial da sua solução - Use e abuse de todo o seu conhecimento em Delphi para desenvolver a melhor solução do seu segmento de mercado - Com isso você ganha velocidade de desenvolvimento e, consequentemente, lançamento do seu produto no mercado - Aquilo que você “terceirizar” será consumido via API REST
  • 11. Mario Guedes – #ID: 36 ... viva o serverless! - Vamos conhecer 5 serviços da AWS: - AWS Lambda - AWS API Gateway - AWS DynamoDB - AWS S3 - AWS Cognito - Porém o Google Plataform Cloud e a Microsoft Azure oferecem serviços com os mesmos propósitos - Escolha a que mais lhe agradar - Preço, camada free, familiaridade, confiabilidade são bons critérios de escolha - Cuidado com o vendor-lock: a migração entre plataformas ainda é um processo doloroso – mas há iniciativas a respeito
  • 12. Mario Guedes – #ID: 36 Recursos Compartilhados X Dedicados - Já sabemos que a AWS oferece máquinas virtuais e instâncias de banco de dados (SQL Server por exemplo). Qual é a diferença? - A diferença é que a AWS EC2 ou a AWS RDS são recursos dedicados: - Você paga pelo fato deles estarem ativos, não importa se está sendo utilizado ou não - Já serviços como AWS Lambda ou AWS DynamoDB são recursos compartilhados: - Por isso você paga apenas por aquilo que foi utilizado - A camada free é generosa – você poderá ficar um bom tempo sem gastar nada ou gastar muito pouco – mesmo com a solução em produção
  • 13. Mario Guedes – #ID: 36 AWS Lambda - Aqui você codificará as suas regras de negócio - Oferece várias linguagens mas sugere-se Python ou NodeJS pois são as que tem menores cold start. - A pior é Java, pra variar - Evite um grande acoplamento ao ambiente da AWS para facilitar uma eventual migração. - Essas funções são executadas em contêineres efêmeros: - Contêiner com pouco tempo de vida que sobe, executa o código e é descartada logo em seguida - Por isso que o cold start é importante: impacta no tempo global da execução
  • 14. Mario Guedes – #ID: 36 Monolítico X Microserviços X Nanoserviços - As funções também são conhecidos por nanoserviços - Você codifica somente e tão somente o necessário para atender a sua regra de negócio: - Não precisa se preocupar com HTTP, Thread, Instância disso ou daquilo ... - Direto ao ponto!
  • 15. Mario Guedes – #ID: 36 AWS API Gateway - Equivalente ao DataSnap, manja? - Você configura os endpoints da sua API e direciona o conteúdo para algum outro serviço - Pode vir a quantidade que for de requisições que será atendida! - Mas se não vier nenhuma tudo bem. - Você define o direcionamento que será dado à requisição HTTP: - Uma função Lambda? - Um endpoint em uma máquina EC2? - Enfileirar no AWS-SQS? (Mensageria da AWS) - Algum outro serviço? - Daí responde ao chamador.
  • 16. Mario Guedes – #ID: 36 AWS DynamoDB - Equivale, mais ou menos, à uma mistura de Redis com MongoDB - É um banco de dados noSQL orientado à chave e valor - A monetização é baseada – principalmente - em unidade de leitura e escrita: RCU e WCU Cenário de exemplo: Uma aplicação recebe 3 milhões de leituras por mês e 500 mil de escrita. O cálculo seria: 3.000.000 / 30 dias / 24 horas / 60 minutos / 60 segundos / 2 por unidade ~= 1 unidade de escrita por segundo 2.000.000 / 30 / 24 / 60 / 60 ~= 1 unidade de escrita por segundo Isso perfaz o valor de: 1 unidade leitura x US$ 0,09 == US$ 0,09 1 unidade de escrita x US$ 0,47 == US$ 0,47 Soma: US$ 0,56
  • 17. Mario Guedes – #ID: 36 AWS S3 - Equivale à um servidor FTP da vida. - Você armazena, essencialmente, arquivos. - Bacana que você pode hospedar site estático ou até mesmo um SPA ou PWA desenvolvido em Angular ou React por exemplo. - É como a zueira no BR: Sem limites
  • 18. Mario Guedes – #ID: 36 AWS Cognito - Podemos utilizar o AWS Cognito para gerir as autenticações e permissões de usuários. - Associado ao AWS IAM podemos definir todas as regras de acesso. - É foda difícil entender no começo mas depois fica entra na veia
  • 19. Mario Guedes – #ID: 36 DEMOSTRAÇÃO
  • 20. Mario Guedes – #ID: 36 Outros serviços - A AWS, bem como os outros provedores, possuem diversos outros serviços que podem e devem ser explorados - Basicamente falamos de uma arquitetura orientada a eventos.
  • 21. Mario Guedes – #ID: 36 Case em desenvolvimento - Software house que desenvolve sistema para lojas de móveis - +20 anos de estrada - Sistema on premise ou seja – instalado na casa do cliente (servidor e tudo o mais) - Clientes querendo ir para a Internet, aplicativo – enfim ... - Concorrente babando ... - Solução: - Criação de um ambiente na AWS: Lambda + API Gateway + Dynamo + S3 - Criação de um aplicativo de força de vendas - Legado alimenta o Dynamo: produto x preço - Legado alimenta o S3: fotos dos produtos - Criação de um aplicativo Delphi que consome o ambiente AWS - Quando um aplicativo fecha uma venda, bate no Lambda que faz uma chamada ao DataSnap da loja
  • 22. Mario Guedes – #ID: 36 Crie aplicativos com serviços, não servidores - Talvez o serveless não resolva todo o seu problema mas talvez algum problema específico - Infelizmente não há suporte à nossa linguagem preferida, Delphi – mas encaro isso como escrever stored procedures no banco ou uma macro no Excel: é da vida - Sugiro Python como linguagem para o AWS Lambda pois é o que tem menor cold start, assim como o NodeJS. - Cuidado com a documentação e gestão da coisa toda! Quem faz o que, quem chama o que, onde armazena a informação tal, permissões e por aí vai - Codificar menos, gerenciar mais - Escolha bem a região: EUA = mais barato AND maior latência X BRASIL = mais caro AND menor latência - Monitore constantemente o que esta acontecendo no seu ambiente para não ter surpresas na sua fatura. - Não precisa ter medo, basta controlar.
  • 23. Mario Guedes – #ID: 36 Perguntas e considerações - Se você é de Porto Alegre e região lembre-se que teremos o TDC, com a Trilha Delphi presente! - Sexta feira, 29/11 – Estaremos lá - https://thedevelopersconference.com.br/tdc/2019/portoalegre/trilha-delphi #ID 36
  • 24. Mario Guedes – #ID: 36 Referências - https://medium.com/@dayvsonlima/você-sabe-o-que-é-arquitetura-serverless-1f6dd1184e5b - https://www.slideshare.net/AmazonWebServices/serverless-for-developers - https://medium.com/@oieduardorabelo/serverless-framework-as-10-melhores-práticas- recomendadas-e2ec59f92699 Referências consultadas em Outubro de 2019