TDC POA 2020
Acelerando o
caminho para nuvem
com serverless e
Java
Evandro Pires da Silva
● Evangelista Serverless
● Coordenador de pesquisa na Senior Sistemas
● “Javeiro” desde 2005
● Programador desde os 12 anos
● Filho de programador
● Fundador e host do Sem Servidor podcast
● Marido da Madi e pai do Teodoro e da Olivia
Cloud computing
Cloud computing
● Realidade para muitas empresas
● Sistemas legados
● Transformação digital
● Desafio especialmente àqueles que querem ir para cloud
Serverless
Serverless
● Não precisa se preocupar com servidores
● Foco maior no código
● Pagamento apenas pela utilização
Por que escolher serverless
é uma boa ideia?
Por que escolher serverless é uma boa
ideia?
● Melhor time to market
● Redução de custos
○ Custos de cloud
○ Tempo de desenvolvimento
○ Tempo de manutenção
● Foco no negócio
● Time enxuto
Mas minha empresa
trabalha só com Java, e
agora?
Java no mundo
Java no mundo
● Muitos sistemas legados em Java
● Muitos times tem predominância de know how em Java
● Muito conteúdo sobre Java / Comunidade grande
● Muitas bibliotecas em Java
Java está
morrendo?
Relação do Java com
serverless
Relação do Java com serverless -
Execução
https://medium.com/the-theam-journey/benchmarking-aws-lambda-runtimes-in-2019-part-i-b1ee459a293d
Relação do Java com serverless - Memória
https://medium.com/the-theam-journey/benchmarking-aws-lambda-runtimes-in-2019-part-i-b1ee459a293d
Java é “pior” que outras
linguagens, e agora?
Bora usar Java mesmo
assim!
Por que usar Java?
● O cold start nem sempre será um problema
○ Arquitetura baseada em eventos
○ Processos assíncronos
○ Funções utilizadas muito frequentemente
● Práticas para reduzir o cold start
● Alternativa para “turbinar” o Java
● O custo na maioria das vezes não é um impeditivo
Lambda com mais de 5MB
https://medium.com/the-theam-journey/benchmarking-aws-lambda-runtimes-in-2019-part-i-b1ee459a293d
Lambda com menos de 5MB
https://medium.com/the-theam-journey/benchmarking-aws-lambda-runtimes-in-2019-part-i-b1ee459a293d
The Storage First Pattern
https://www.jeremydaly.com/the-storage-first-pattern/
Batida de ponto
#serverless
https://github.com/epiresdasilva/batida-ponto-serverless
The Storage First Pattern - Testes
Como reduzir o cold start?
● Utilizar bibliotecas light weight
● Não faça inicialização estática de coisas que não são usadas
todas as vezes
● Não use reflection na inicialização (e outros lugares também :P)
○ Conheça a biblioteca que usa para saber se também faz uso disso
● Não faça classpath scanner
● Faça o fine tuning do uso da memória
Turbinando o Java
● Quarkus
○ 27k invocations
○ 180 ms em média (2500 ms máx)
● Quarkus + GraalVM
○ 27k invocations
○ 180 ms em média (1200 ms máx)
https://github.com/epiresdasilva/aws-lambda-quarkus
Por que vale a pena usar Java
● Uma curva de aprendizado a menos
● Time to market
○ Desenvolvimento mais rápido
○ Aproveitamento do time atual
● Reaproveitamento de código
PS: Serve para outras linguagens que sejam a que o time domina
Modelo para decisão de linguagem de
programação
Referências
● Artigo sobre patterns:
https://www.jeremydaly.com/serverless-microservice-patterns-
for-aws/
● Sem Servidor podcast: https://semservidor.com.br
● Serverless Chats: https://www.serverlesschats.com
○ Episódio #47
● Meu GitHub: https://github.com/epiresdasilva
● Mockytonk: https://mockytonk.com
Obrigado!

Acelerando o caminho para nuvem com serverless e java

  • 1.
    TDC POA 2020 Acelerandoo caminho para nuvem com serverless e Java
  • 2.
    Evandro Pires daSilva ● Evangelista Serverless ● Coordenador de pesquisa na Senior Sistemas ● “Javeiro” desde 2005 ● Programador desde os 12 anos ● Filho de programador ● Fundador e host do Sem Servidor podcast ● Marido da Madi e pai do Teodoro e da Olivia
  • 3.
  • 4.
    Cloud computing ● Realidadepara muitas empresas ● Sistemas legados ● Transformação digital ● Desafio especialmente àqueles que querem ir para cloud
  • 5.
  • 6.
    Serverless ● Não precisase preocupar com servidores ● Foco maior no código ● Pagamento apenas pela utilização
  • 7.
    Por que escolherserverless é uma boa ideia?
  • 8.
    Por que escolherserverless é uma boa ideia? ● Melhor time to market ● Redução de custos ○ Custos de cloud ○ Tempo de desenvolvimento ○ Tempo de manutenção ● Foco no negócio ● Time enxuto
  • 9.
    Mas minha empresa trabalhasó com Java, e agora?
  • 10.
  • 11.
    Java no mundo ●Muitos sistemas legados em Java ● Muitos times tem predominância de know how em Java ● Muito conteúdo sobre Java / Comunidade grande ● Muitas bibliotecas em Java Java está morrendo?
  • 12.
    Relação do Javacom serverless
  • 13.
    Relação do Javacom serverless - Execução https://medium.com/the-theam-journey/benchmarking-aws-lambda-runtimes-in-2019-part-i-b1ee459a293d
  • 14.
    Relação do Javacom serverless - Memória https://medium.com/the-theam-journey/benchmarking-aws-lambda-runtimes-in-2019-part-i-b1ee459a293d
  • 15.
    Java é “pior”que outras linguagens, e agora?
  • 16.
    Bora usar Javamesmo assim!
  • 17.
    Por que usarJava? ● O cold start nem sempre será um problema ○ Arquitetura baseada em eventos ○ Processos assíncronos ○ Funções utilizadas muito frequentemente ● Práticas para reduzir o cold start ● Alternativa para “turbinar” o Java ● O custo na maioria das vezes não é um impeditivo
  • 18.
    Lambda com maisde 5MB https://medium.com/the-theam-journey/benchmarking-aws-lambda-runtimes-in-2019-part-i-b1ee459a293d
  • 19.
    Lambda com menosde 5MB https://medium.com/the-theam-journey/benchmarking-aws-lambda-runtimes-in-2019-part-i-b1ee459a293d
  • 20.
    The Storage FirstPattern https://www.jeremydaly.com/the-storage-first-pattern/
  • 21.
  • 22.
    The Storage FirstPattern - Testes
  • 23.
    Como reduzir ocold start? ● Utilizar bibliotecas light weight ● Não faça inicialização estática de coisas que não são usadas todas as vezes ● Não use reflection na inicialização (e outros lugares também :P) ○ Conheça a biblioteca que usa para saber se também faz uso disso ● Não faça classpath scanner ● Faça o fine tuning do uso da memória
  • 24.
    Turbinando o Java ●Quarkus ○ 27k invocations ○ 180 ms em média (2500 ms máx) ● Quarkus + GraalVM ○ 27k invocations ○ 180 ms em média (1200 ms máx) https://github.com/epiresdasilva/aws-lambda-quarkus
  • 25.
    Por que valea pena usar Java ● Uma curva de aprendizado a menos ● Time to market ○ Desenvolvimento mais rápido ○ Aproveitamento do time atual ● Reaproveitamento de código PS: Serve para outras linguagens que sejam a que o time domina
  • 26.
    Modelo para decisãode linguagem de programação
  • 27.
    Referências ● Artigo sobrepatterns: https://www.jeremydaly.com/serverless-microservice-patterns- for-aws/ ● Sem Servidor podcast: https://semservidor.com.br ● Serverless Chats: https://www.serverlesschats.com ○ Episódio #47 ● Meu GitHub: https://github.com/epiresdasilva ● Mockytonk: https://mockytonk.com
  • 28.