SlideShare uma empresa Scribd logo
1 de 26
Micronaut
Construído para microserviços
2
David Pedroza
https://github.com/dpedroza
Agenda
3
- O problema
- A solução
- Mão no código
- Micronaut hoje
Problemas encontrados em frameworks JVM-Based
4
● API de anotação limitada
● Limpeza de tipos
● Reflection é lenta
● Cache de dados de reflections
● Escaneamento de classes
● Carregamento lento de classes dinâmicas
Porque reflection é um problema?
5
● TODOS os dados
inicializados no primeiro
acesso são mantidos em
memória (sim, todo
campo, método e etc)
● Garbage Collector não vai
atuar a menos que a
aplicação esteja com
pouca memória
Evite reflection!
6
● Reflection aumenta o consumo
de memória
● O uso de reflection é
relativamente lento
● Difícil de entender e debugar
● A maioria dos frameworks
server-side modernos são
construídos em cima de
reflection
A consequência
7
Vantagens JVM
8
● Ecosistema robusto e maduro
● Boas IDE's
● Encontra-se desenvolvedores no mercado
● Maturidade do Build System
● Diversidade (IoT, Mobile, Server Side)
● Linguagens (Kotlin, Java, Groovy, Scala)
A realidade dos micro serviços
9
● Frameworks baseados em reflection e annotations ficam enormes
● Ainda assim os desenvolvedores gostam da produtividade do modelo
● Dá pra ser mais eficiente?
Existem opções
10
PERGUNTA
Qual sistema operacional e seus frameworks também evita a
utilização de reflection para não pagar o custo de memória e
performance?
12
● Dica 1: Utiliza compilação AOT (Ahead Of Time) fortemente
● Dica 2: Usa frameworks reflection free como Dagger 2 e Koin para
injeção de dependência
● Dica 3: Tem um mascote verde com anteninhas
13
Vocês acertaram!
MAS, E NO BACKEND?
15
Breve história
16
● Iniciado há dois anos (2017)
● Feito pelos criadores do Grails (Graeme Rocher e sua turma)
● +10 anos de experiência em construção de frameworks JVM
● Aberto para comunidade em Maio de 2018 :)
Micronaut tem
17
● Injeção de dependência (DI)
● Programação Orientada a Aspecto (AOP)
● Gerenciamento de Configuração (Build Types)
● Sem reflections!
Soluções
18
Problema Solução
API de anotação limitada Metadados de anotações pré computadas
Limpeza de tipos Interface de Argumento pré computadas
Reflection lenta Sem reflections!
Cache de dados de reflexão Zero caches de dados
Escaneamento de classes Não utiliza
Carregamento lento de classes dinâmicas Não utiliza
Quem usa?
19
E mais
20
● Diversas opções para segurança
(OAuth 2.0, Basic Auth, JWT, OpenID e mais)
● Suporta SQL
● Suporta Docker
● Suporta RxJava
● Suporta GRPC
● Suporta GraalVM (uma VM que gera nativo)
● Entre outros e mais por vir 🚀
Pode ser usado para:
21
● Micro serviços
● Computação sem servidor (Serverless Applications)
● Aplicações orientadas a mensagem (Kafka/Rabbit)
● Aplicações CLI
● Até aplicativos Android :)
● Tudo começa com fun main(args: Array<String>)
MÃO NO CÓDIGO
Micronaut hoje
23
● versão 1.2.6 já disponível
● 3 mil estrelas no github
● atualizado há 3 horas
● usado em produção e
economizando na conta da AWS
para as empresas
24
● https://micronaut.io/documentation.html
● https://github.com/micronaut-projects/micronaut-core
● GOTO 2019 • Introduction to Micronaut • Graeme Rocher - YouTube
● https://guides.micronaut.io/creating-your-first-micronaut-app/guide/index.html
● https://netty.io/
● https://spring.io/
● Source code :)
Fontes
25
https://github.com/micronaut-guides/creating-your-first-micronaut-app-kotlin
Partiu?
Perguntas?
github.com/dpedroza
VALEU!

Mais conteúdo relacionado

Mais procurados

Como iniciar o desenvolvimento Android
Como iniciar o desenvolvimento AndroidComo iniciar o desenvolvimento Android
Como iniciar o desenvolvimento AndroidJose Naves Moura Neto
 
Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Bryan Ollivie
 
Introdução ao CakePHP
Introdução ao CakePHPIntrodução ao CakePHP
Introdução ao CakePHPRafael Cichini
 
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Renato Groff
 
JavaScript: uma visão geral da linguagem e seu ecossistema
JavaScript: uma visão geral da linguagem e seu ecossistemaJavaScript: uma visão geral da linguagem e seu ecossistema
JavaScript: uma visão geral da linguagem e seu ecossistemaFabio Agostinho Boris
 
Node.js e a web do futuro
Node.js e a web do futuroNode.js e a web do futuro
Node.js e a web do futuroAlberto Souza
 
PrograConceitos básicos
PrograConceitos básicosPrograConceitos básicos
PrograConceitos básicosElvis Araújo
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservicesClaudenir Freitas
 
Curso De flask Criando Website - Introdução
Curso De flask Criando Website - IntroduçãoCurso De flask Criando Website - Introdução
Curso De flask Criando Website - IntroduçãoMarcus Pereira
 
Iniciando no desenvolvimento android 2016
Iniciando no desenvolvimento android 2016Iniciando no desenvolvimento android 2016
Iniciando no desenvolvimento android 2016Jose Naves Moura Neto
 
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilApresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilMarcio Garcia
 
Primeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSPrimeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSWemerson Januario
 
Java script vs vb script
Java script vs vb scriptJava script vs vb script
Java script vs vb scriptNielson Santana
 

Mais procurados (19)

Jclouds jug vale
Jclouds jug valeJclouds jug vale
Jclouds jug vale
 
JavaScript Moderno
JavaScript ModernoJavaScript Moderno
JavaScript Moderno
 
Como iniciar o desenvolvimento Android
Como iniciar o desenvolvimento AndroidComo iniciar o desenvolvimento Android
Como iniciar o desenvolvimento Android
 
Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.
 
Introdução ao CakePHP
Introdução ao CakePHPIntrodução ao CakePHP
Introdução ao CakePHP
 
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
 
JavaScript: uma visão geral da linguagem e seu ecossistema
JavaScript: uma visão geral da linguagem e seu ecossistemaJavaScript: uma visão geral da linguagem e seu ecossistema
JavaScript: uma visão geral da linguagem e seu ecossistema
 
MVC & Zend Framework
MVC & Zend FrameworkMVC & Zend Framework
MVC & Zend Framework
 
Node.js e a web do futuro
Node.js e a web do futuroNode.js e a web do futuro
Node.js e a web do futuro
 
Javafx
JavafxJavafx
Javafx
 
PrograConceitos básicos
PrograConceitos básicosPrograConceitos básicos
PrograConceitos básicos
 
Vraptor 3
Vraptor 3Vraptor 3
Vraptor 3
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservices
 
Curso De flask Criando Website - Introdução
Curso De flask Criando Website - IntroduçãoCurso De flask Criando Website - Introdução
Curso De flask Criando Website - Introdução
 
Iniciando no desenvolvimento android 2016
Iniciando no desenvolvimento android 2016Iniciando no desenvolvimento android 2016
Iniciando no desenvolvimento android 2016
 
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilApresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
 
Primeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSPrimeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JS
 
Java script vs vb script
Java script vs vb scriptJava script vs vb script
Java script vs vb script
 

Semelhante a Micronaut: construído para microserviços

Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoFlávio Lisboa
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
Mapa de aprendizado Front End
Mapa de aprendizado Front EndMapa de aprendizado Front End
Mapa de aprendizado Front EndCaio Vaccaro
 
Micro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuMicro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuWagner Souza
 
Desenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkDesenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkKeuller Magalhães
 
GWT - de iniciante a especialista
GWT - de iniciante a especialistaGWT - de iniciante a especialista
GWT - de iniciante a especialistaDanilo Reinert
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactFernando Henriques
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de MicroservicosNorberto Enomoto
 
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreConhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreRodrigo Kono
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3André Luiz Forchesatto
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04Ale Uehara
 
It skills para rh aprender e contratar
It skills para rh  aprender e contratarIt skills para rh  aprender e contratar
It skills para rh aprender e contratarAle Uehara
 

Semelhante a Micronaut: construído para microserviços (20)

Zend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutençãoZend Framework: Reuso e extensão de componentes para fácil manutenção
Zend Framework: Reuso e extensão de componentes para fácil manutenção
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Mapa de aprendizado Front End
Mapa de aprendizado Front EndMapa de aprendizado Front End
Mapa de aprendizado Front End
 
Micro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuMicro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viu
 
Desenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! FrameworkDesenvolvimento Ágil com Play! Framework
Desenvolvimento Ágil com Play! Framework
 
GWT - de iniciante a especialista
GWT - de iniciante a especialistaGWT - de iniciante a especialista
GWT - de iniciante a especialista
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
O front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: ReactO front-end moderno e sua lib mais popular: React
O front-end moderno e sua lib mais popular: React
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 
Desenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVCDesenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVC
 
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreConhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04
 
Mc1 JAVA
Mc1 JAVAMc1 JAVA
Mc1 JAVA
 
MicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applicationsMicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applications
 
It skills para rh aprender e contratar
It skills para rh  aprender e contratarIt skills para rh  aprender e contratar
It skills para rh aprender e contratar
 

Micronaut: construído para microserviços