SlideShare uma empresa Scribd logo
Azure Functions e Java:
Do Desenvolvimento a Produção
Prof. Thomás da Costa
http://thomasdacosta.com.br
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Thomás da Costa
• +22 anos de experiência na área
• +17 anos de experiência com Java
• 4 anos de docência no Ensino Superior
• Arquitetura e desenvolvimento de aplicações em
Cloud com Microsoft Azure
• Desenvolvimento de aplicações com Big Data
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
O que são Azure Functions
• Executar pequenos trechos de código
• Conhecido como Function As Service
• Efetuar Trigger de vários recursos da Azure como:
• Blob
• Queue
• Tables
http://thomasdacosta.com.brProf. Thomás da Costa
Explicar como foi solucionado
Azure com Java?
http://thomasdacosta.com.brProf. Thomás da Costa
Explicar como foi solucionado
Azure com Java?
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Objetivo
• Sair do básico. (HTTP Trigger)
• Problemas reais em produção
• Volume de dados relativamente grande
• Balancear performance e custo
• Ambiente de desenvolvimento local
• Tudo com Java
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Objetivo
On Premisse
CSV
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
•Data processing: Azure Functions can be used
for processing incoming data in batches. They can
help in processing data in multiple formats, such as
XML, CSV, JSON, and TXT. They can also run
conversion, enrichment, cleaning, and filtering
algorithms. In fact, multiple functions can be used,
each doing either conversion or enrichment,
cleaning or filtering. Azure Functions can also be
used to incorporate advanced cognitive services,
such as optical character recognition (OCR),
computer vision, and image manipulation and
conversion.
https://azure.microsoft.com/en-ca/resources/azure-for-architects/
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Vamos detalhar alguns cenários para importação
do arquivo
Arquitetura
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Baby Steps
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Desenvolvimento
• Azure Storage Emulator
• Azure Function Java Library
• Maven Archetype
• Debug
• Não precisa ter conta na Azure
https://medium.com/@thomsdacosta/azure-e-java-montando-um-ambiente-de-
desenvolvimento-local-825f833f0594
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Maven Assembly
• Gera um arquivo ZIP com o JAR do seu projeto
• Facilita o processo de deploy na stack de Devops
• Zip Deploy através do Kudu para ambiente de testes
• API Rest do Kudu ou via CLI da Azure
• Integração simples com Jenkins
• Utilização de slots para deploy
• Utilizar sempre variáveis de ambiente para facilitar o deploy
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-
plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>zip</id>
<baseDirectory>/</baseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>target/azure-functions/sample-function</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Application Insights
• Integração nativa com Azure Functions
• Logs são exibidos sem necessidade de configuração
• Facilidade para as equipes de monitoria
• Live Metrics Stream
• Padronização nos Logs das aplicações
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Application Insights
public void run(
@BlobTrigger(name = "content",
path = "container/{name}",
dataType = "string") String content,
@BindingName("name") String fileName,
final ExecutionContext context) {
context.getLogger().info("Hello World");
}
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Problema 1
OutOfMemoryError
• Arquivos de 100.000 de registros
• Aprox. 100 arquivos
• Aprox. 10.000.000 de registros
• Plano Isolado
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Problema 2
• Plano de Consumo:
OutOfMemoryError
FunctionTimeoutException
e/ou
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Diferenças dos Planos
• Plano de Consumo:
• 1 Core, 1.75 GB e no máximo 10 minutos de
execução
• Plano de Serviço:
• Requisitos de acordo com o plano e no máximo
30 minutos de execução
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Soluções
• Analise o código fonte sempre!!!
• Evite frameworks que utilizem muito Java Reflection
• Valide POJO’s com ‘if’ ao invés de frameworks como
Bean Validation
• Trabalhe com arquivos pequenos para paralelizar
• Verifique a performance da fonte de dados destino
• Nunca ultrapasse o tempo da Azure Function
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Recursos do Java
• Usar ao máximo as bibliotecas nativas do Java
• Streams possui uma alta performance para leitura de
grandes lista com pouca utilização de memória
• Trechos simples de código faz a diferença em uma Azure
Function
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
try (ByteArrayInputStream byteArrayInputStream =
new ByteArrayInputStream(content);
InputStreamReader inputStreamReader =
new InputStreamReader(byteArrayInputStream);
BufferedReader bufferedReader =
new BufferedReader(inputStreamReader)) {
this.scores = bufferedReader.lines().map(m -> {
Object x = new Object();
// Sua lógica no arquivo
return x;
}).collect(Collectors.toList());
} catch (Exception ex) {
throw new CustomException(ex.getMessage(), ex);
}
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Bibliotecas Performáticas
• Escolher sempre a biblioteca com a melhor performance:
• Apache Commons CSV
• FastCSV
• OpenCSV
• FlatPack CSV
• Univocity CSV Em determinadas situações o parser
de grandes arquivos estava abaixo de
1 segundo ou em poucos segundos.
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Maven Archetype
• Evita repetição de código
• Código básico para as operações comuns
• Implementar somente o que é especifico
• Repositório de Azure Functions corporativo
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Limitar o batchSize da Function
Parâmetro batchSize do host.json
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Dividir para conquistar 1
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Dividir para conquistar 2
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Homework
Logic App com Azure Functions Stream Analitycs Poison Queues
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Vantagens da Azure Function
• Utilize agora no seu projeto!!!
• Facilidade para trabalhar com eventos da Azure
• Muito fácil de desenvolver até mesmo com Java
• Integração entre serviços
• Fluxo de trabalho e de streaming de forma
simples
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Desvantagens da Azure Function
• Dificuldade para utilização de frameworks como
Spring
• Não substituir sua aplicações Web ou API
• Integração com outros recursos fora do escopo
das Azure Functions implica em maior
complexidade de desenvolvimento
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Perguntas
http://thomasdacosta.com.brProf. Thomás da Costa
Azure Functions e Java: Do Desenvolvimento a Produção
Obrigado
https://www.linkedin.com/in/thomasdacosta
https://medium.com/@thomsdacosta
https://thomasdacosta.com.br

Mais conteúdo relacionado

Mais procurados

Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Jose Augusto Carvalho
 
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do InteriorZabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do InteriorZabbix BR
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming LibraryMario Guedes
 
Douglasesteves meetupzabbix
Douglasesteves meetupzabbixDouglasesteves meetupzabbix
Douglasesteves meetupzabbixDouglas Esteves
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Jose Silva
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...Marcelo Barros de Almeida
 
Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLJose Augusto Carvalho
 
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosPerformance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosAlex Hübner
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadMario Guedes
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIMario Guedes
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Gustavo Pereira
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend frameworkMarcos Oliveira
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioFernando Palma
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceTiago Peczenyj
 

Mais procurados (20)

Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do InteriorZabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
Zabbix Proxy com Raspberry Pi - 3º Zabbix Meetup do Interior
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
Sistemas Operacionais de Tempo Real
Sistemas Operacionais de Tempo RealSistemas Operacionais de Tempo Real
Sistemas Operacionais de Tempo Real
 
Douglasesteves meetupzabbix
Douglasesteves meetupzabbixDouglasesteves meetupzabbix
Douglasesteves meetupzabbix
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
 
Infraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISLInfraestrutura ágil com Puppet - CISL
Infraestrutura ágil com Puppet - CISL
 
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosPerformance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
 
Postgres Tuning
Postgres TuningPostgres Tuning
Postgres Tuning
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
 
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!Sim, existe vida além do FTP!
Sim, existe vida além do FTP!
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend framework
 
Alta Concorrência com Postgres
Alta Concorrência com PostgresAlta Concorrência com Postgres
Alta Concorrência com Postgres
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open source
 

Semelhante a Azure Functions e Java: Do Desenvolvimento a Produção

Por que Cloud Services é o melhor dos mundos?
Por que Cloud Services é o melhor dos mundos? Por que Cloud Services é o melhor dos mundos?
Por que Cloud Services é o melhor dos mundos? Fabrício Lopes Sanchez
 
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Filipe Barretto
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Rodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemRodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemAmazon Web Services LATAM
 
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com BeanstalkAWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com BeanstalkAmazon Web Services LATAM
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA CareerMarcus Vinicius Miguel Pedro
 
Copa do mundo no brasil interagindo com os torcedores em tempo real
Copa do mundo no brasil   interagindo com os torcedores em tempo realCopa do mundo no brasil   interagindo com os torcedores em tempo real
Copa do mundo no brasil interagindo com os torcedores em tempo realAmazon Web Services LATAM
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaRenato Groff
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Renato Groff
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
Conhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSConhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSAmazon Web Services LATAM
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Renato Groff
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Renato Groff
 
Banco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possívelBanco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possívelMarcos Freccia
 
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeStefan Teixeira
 

Semelhante a Azure Functions e Java: Do Desenvolvimento a Produção (20)

Por que Cloud Services é o melhor dos mundos?
Por que Cloud Services é o melhor dos mundos? Por que Cloud Services é o melhor dos mundos?
Por que Cloud Services é o melhor dos mundos?
 
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Escalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com BeanstalkEscalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com Beanstalk
 
Escalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com BeanstalkEscalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com Beanstalk
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Rodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvemRodando a BlackFriday do seu eCommerce na nuvem
Rodando a BlackFriday do seu eCommerce na nuvem
 
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com BeanstalkAWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
 
Copa do mundo no brasil interagindo com os torcedores em tempo real
Copa do mundo no brasil   interagindo com os torcedores em tempo realCopa do mundo no brasil   interagindo com os torcedores em tempo real
Copa do mundo no brasil interagindo com os torcedores em tempo real
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Conhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSConhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWS
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
 
Banco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possívelBanco de dados na nuvem e isso é possível
Banco de dados na nuvem e isso é possível
 
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
 

Mais de thomasdacosta

Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01thomasdacosta
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02thomasdacosta
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03thomasdacosta
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06thomasdacosta
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05thomasdacosta
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07thomasdacosta
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06thomasdacosta
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04thomasdacosta
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05thomasdacosta
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03thomasdacosta
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03thomasdacosta
 

Mais de thomasdacosta (20)

Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03
 

Azure Functions e Java: Do Desenvolvimento a Produção

  • 1. Azure Functions e Java: Do Desenvolvimento a Produção Prof. Thomás da Costa http://thomasdacosta.com.br
  • 2. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Thomás da Costa • +22 anos de experiência na área • +17 anos de experiência com Java • 4 anos de docência no Ensino Superior • Arquitetura e desenvolvimento de aplicações em Cloud com Microsoft Azure • Desenvolvimento de aplicações com Big Data
  • 3. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção O que são Azure Functions • Executar pequenos trechos de código • Conhecido como Function As Service • Efetuar Trigger de vários recursos da Azure como: • Blob • Queue • Tables
  • 4. http://thomasdacosta.com.brProf. Thomás da Costa Explicar como foi solucionado Azure com Java?
  • 5. http://thomasdacosta.com.brProf. Thomás da Costa Explicar como foi solucionado Azure com Java?
  • 6. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Objetivo • Sair do básico. (HTTP Trigger) • Problemas reais em produção • Volume de dados relativamente grande • Balancear performance e custo • Ambiente de desenvolvimento local • Tudo com Java
  • 7. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Objetivo On Premisse CSV
  • 8. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção •Data processing: Azure Functions can be used for processing incoming data in batches. They can help in processing data in multiple formats, such as XML, CSV, JSON, and TXT. They can also run conversion, enrichment, cleaning, and filtering algorithms. In fact, multiple functions can be used, each doing either conversion or enrichment, cleaning or filtering. Azure Functions can also be used to incorporate advanced cognitive services, such as optical character recognition (OCR), computer vision, and image manipulation and conversion. https://azure.microsoft.com/en-ca/resources/azure-for-architects/
  • 9. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Vamos detalhar alguns cenários para importação do arquivo Arquitetura
  • 10. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Baby Steps
  • 11. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Desenvolvimento • Azure Storage Emulator • Azure Function Java Library • Maven Archetype • Debug • Não precisa ter conta na Azure https://medium.com/@thomsdacosta/azure-e-java-montando-um-ambiente-de- desenvolvimento-local-825f833f0594
  • 12. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Maven Assembly • Gera um arquivo ZIP com o JAR do seu projeto • Facilita o processo de deploy na stack de Devops • Zip Deploy através do Kudu para ambiente de testes • API Rest do Kudu ou via CLI da Azure • Integração simples com Jenkins • Utilização de slots para deploy • Utilizar sempre variáveis de ambiente para facilitar o deploy
  • 13. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly- plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> <id>zip</id> <baseDirectory>/</baseDirectory> <formats> <format>zip</format> </formats> <fileSets> <fileSet> <directory>target/azure-functions/sample-function</directory> <outputDirectory>/</outputDirectory> </fileSet> </fileSets> </assembly>
  • 14. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Application Insights • Integração nativa com Azure Functions • Logs são exibidos sem necessidade de configuração • Facilidade para as equipes de monitoria • Live Metrics Stream • Padronização nos Logs das aplicações
  • 15. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Application Insights public void run( @BlobTrigger(name = "content", path = "container/{name}", dataType = "string") String content, @BindingName("name") String fileName, final ExecutionContext context) { context.getLogger().info("Hello World"); }
  • 16. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção
  • 17. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Problema 1 OutOfMemoryError • Arquivos de 100.000 de registros • Aprox. 100 arquivos • Aprox. 10.000.000 de registros • Plano Isolado
  • 18. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Problema 2 • Plano de Consumo: OutOfMemoryError FunctionTimeoutException e/ou
  • 19. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Diferenças dos Planos • Plano de Consumo: • 1 Core, 1.75 GB e no máximo 10 minutos de execução • Plano de Serviço: • Requisitos de acordo com o plano e no máximo 30 minutos de execução
  • 20. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Soluções • Analise o código fonte sempre!!! • Evite frameworks que utilizem muito Java Reflection • Valide POJO’s com ‘if’ ao invés de frameworks como Bean Validation • Trabalhe com arquivos pequenos para paralelizar • Verifique a performance da fonte de dados destino • Nunca ultrapasse o tempo da Azure Function
  • 21. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Recursos do Java • Usar ao máximo as bibliotecas nativas do Java • Streams possui uma alta performance para leitura de grandes lista com pouca utilização de memória • Trechos simples de código faz a diferença em uma Azure Function
  • 22. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content); InputStreamReader inputStreamReader = new InputStreamReader(byteArrayInputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) { this.scores = bufferedReader.lines().map(m -> { Object x = new Object(); // Sua lógica no arquivo return x; }).collect(Collectors.toList()); } catch (Exception ex) { throw new CustomException(ex.getMessage(), ex); }
  • 23. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Bibliotecas Performáticas • Escolher sempre a biblioteca com a melhor performance: • Apache Commons CSV • FastCSV • OpenCSV • FlatPack CSV • Univocity CSV Em determinadas situações o parser de grandes arquivos estava abaixo de 1 segundo ou em poucos segundos.
  • 24. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Maven Archetype • Evita repetição de código • Código básico para as operações comuns • Implementar somente o que é especifico • Repositório de Azure Functions corporativo
  • 25. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Limitar o batchSize da Function Parâmetro batchSize do host.json
  • 26. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Dividir para conquistar 1
  • 27. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Dividir para conquistar 2
  • 28. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Homework Logic App com Azure Functions Stream Analitycs Poison Queues
  • 29. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Vantagens da Azure Function • Utilize agora no seu projeto!!! • Facilidade para trabalhar com eventos da Azure • Muito fácil de desenvolver até mesmo com Java • Integração entre serviços • Fluxo de trabalho e de streaming de forma simples
  • 30. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Desvantagens da Azure Function • Dificuldade para utilização de frameworks como Spring • Não substituir sua aplicações Web ou API • Integração com outros recursos fora do escopo das Azure Functions implica em maior complexidade de desenvolvimento
  • 31. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Perguntas
  • 32. http://thomasdacosta.com.brProf. Thomás da Costa Azure Functions e Java: Do Desenvolvimento a Produção Obrigado https://www.linkedin.com/in/thomasdacosta https://medium.com/@thomsdacosta https://thomasdacosta.com.br