Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs...

47
© 2005, Summa Technologies, Inc. 1 Summa Technologies www.summa.com.br Microserviços: flexibilidade e agilidade a que preço? Einar Saukas Fabio Velloso @fabiovelloso

Transcript of Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs...

Page 1: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

© 2005, Summa Technologies, Inc. 1

Summa Technologies www.summa.com.br

Microserviços: flexibilidadee agilidade a que preço?

Einar Saukas Fabio Velloso @fabiovelloso

Page 2: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Einar Saukas

Principal Consultant - Summa Technologies (1998)

Co-Fundador e 1o Presidente - SouJava (1999-2003)

Engenheiro Eletrônico POLI/USP Prêmio Itautec (1992)

Mestre em Ciência da Computação IME/USP Prêmio Sociedade Brasileira de Computação (1999)

Projeto Sistema Único de Saúde/Datasus Prêmio Duke's Choice Award JavaOne San Francisco (2003)

Projeto Sistema Integrado de Agendamento de Pacientes de São Paulo Prêmio Duke's Choice Award JavaOne San Francisco (2005)

Projeto Central de Cessão de Crédito – Câmara Interbancária de Pagamentos Prêmio Duke's Choice Award JavaOne Latin America (2012)

Page 3: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Fabio Velloso

Co-Fundador e Diretor SouJava

Consultor da Summa Technologies

Bacharel em Ciência da Computação - UFSCar

Professor de Arquitetura Orientada a Serviços - UFSCar

Palestrante em JavaOne, Abaporu, TDC, JustJava, Dia de Java, Café Brasil, Campus Party

Projetos com Java desde 1996

Atualmente trabalhando em projetos de Integração, Big Data e Cloud Computing

Ü

!

Y

Page 4: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Tópicos

Motivação → POR QUÊ?

Características → O QUÊ?

Pontos de Atenção → QUANDO?!

Frameworks e tecnologias → COMO?

Exemplos → QUEM?!

!

!

!

Page 5: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Componentização em serviços independentes

Especialização

Liberdade tecnológica

EscalabilidadeFlexibilidade!

Testes

Isolamento de falhas

Agilidade!

! !

!

!

!

!

Motivação POR QUÊ?

Page 6: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Componentização e modularização

Gerenciamento descentralizado

Serviços autônomos e desacoplados

Escopo e responsabilidade limitada

Monolítico

Micro-serviços

Deploy e execução isolada

Características O QUÊ?

Page 7: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Equipes multifuncionais por funcionalidadeK

Administração de Dados e

DBAS

Especialistas Em Front END

Especialistas Em JAVA EE,

Middleware e Integração

Equipes Especializadas

HTML CSS JAVAScript MVC

JAVA EJBs Serviços

Acesso a Dados

Monolítico

Funcionalidade de negócio

Equipes Multifuncionais

Funcionalidade de negócio

Funcionalidade de negócio

Micro-serviços

Baseado em http://www.slideshare.net/mstine/microservices-cf-summit

Características O QUÊ?

Page 8: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Características

Conceitos de negócio

Bounded Context

Domain Driven Design

Contexto A Contexto b

O QUÊ?

Page 9: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Produtos e não projetos

Contato com usuários

Desenvolvedor:

Software em produção

Ciclo de vida completo

g

Características O QUÊ?

Page 10: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Bases de dados descentralizadas!

Microserviços

Micro-serviço Micro-serviço Micro-serviço Micro-serviço

Monolíticos

Monolítico Monolítico Monolítico

Características O QUÊ?

Page 11: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Comunicação remota via rede

APIs

AMQP

REST e HTTP

"

Smart Endpoints e Dumb Pipes

Características O QUÊ?

Page 12: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Interdependência de serviços

Características

Cultura de automação

Design para falhas

Design evolutivo

Composição

!

O QUÊ?

Page 13: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Segurança

Testes

Controle transacional!

Monitoração

Dificuldades

Roteamento"

Legado

Resiliência

Service discovery

QUANDO?

"

Performance

Page 14: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Fallacies of distributed computing

The network is reliable

Latency is zero

Bandwidth is infinite

!

The network is secure

"

Topology doesn't change

There is one administrator

Transport cost is zero

!

The network is homogeneous

K

Fonte: http://en.wikipedia.org/wiki/Fallacies_of_distributed_computing

Page 15: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Check-list

Transação isolada?

Impacto em performance?

Atualizações independentes?

Impacto cultural?

Melhorias frequentes?

Interface bem definida?

Alta complexidade?

QUANDO?

Page 16: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

DevOps

Computação em nuvem: Infra virou código!

Fonte: http://www.rightscale.com/blog/cloud-industry-insights/cloud-computing-trends-2015-state-cloud-survey

Integração Contínua

Equipes mistas

Entrega Contínua

K

Page 17: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

DevOps

Responsabilidade

Feedback

Cenários reais"Agilidade

Proatividade

Instrumentação

Parceria

Page 18: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Docker

Sem overhead de VMs!

Container!

Isolamento de recursos!

Gerenciamento como processo de SO!

COMO?

Page 19: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Microframeworks

Web e REST!

Core mínimo e simples!

JVM ou Servidor leve!

Deploy em containers!

Não padronizado!

COMO?

Page 20: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Dropwizard

JAX-RS (Jersey)!

Jetty!

Jackson!

Metrics!

COMO?

Page 21: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Dropwizard COMO?

Page 22: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

VERT.x

Inspirado em Erlang/OTP e Node.js!

Executa na direto na JVM!

Event bus!

Java, JavaScript, CoffeeScript, Ruby, Python ou Groovy!

Plugins!

COMO?

Page 23: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

VERT.x COMO?

Page 24: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

spring boot

Sem XML e starter POMs!

Simplificar o desenvolvimento Spring!

Tomcat embutido!

Declarar dependências!

Spring Boot

Spring Data, Batch, Integration, Web, JDBC, Security

JAX-RS!

COMO?

Page 25: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

spring boot COMO?

Page 26: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Spark Java

Jetty !

Inspirado no Sinatra!

Maven!

Dependências no POM!

Java 8 na versão 2!

COMO?

Page 27: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Monitoração e Log

!

! Jolokia

! JMX

Metrics!

Graphite!

Monitoração

Janitor!

!

! Graylog2

ELK stack!

Log

! Mecanismos de segurança: circuit breaker e timeout

! Log4j

COMO?

Page 28: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

“PRoblemas com Application servers”

Uma Aplicação impacta na outra

Processo único em memória

Estrutura Complexa

Dificulta Continuous Delivery

! Conflitos de ClassLoaders

!

JVM isoladas

Upgrades isolados

Libs, Heap e ClassLoader por aplicação

Monitoração por aplicação

! Uma aplicação por domain

Modularização e isolamento

!

!

!

!

!

!

!

Page 29: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

WebLogic server 12.2.1

Partition ou “tenant”!

Cloud!

Aplicações inalteradas!

Isolamento !

Multitenancy!

COMO?

Fonte: Oracle Weblogic Server Strategy and Roadmap bit.ly/oow14cafsessions

Page 30: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Fonte: Oracle Weblogic Server Strategy and Roadmap bit.ly/oow14cafsessions

WebLogic server 12.2.1

Árvore JNDI

por “partition”

Memória e CPU isoladas

WorkManager

Gerenciamento

Security realm

Virtual host

!

!

COMO?

Page 31: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Wildfly swarm (Red hat)

Core mínimo !

WildFly 9 modular!

Jar com App Server, dependências e aplicação!

! Dependências explícitas

! Cada micro-serviço em um pacote

COMO?

Page 32: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

PAyara

Modular!

Baseado no Glassfish 4.1!

Full Java EE, Web Profile e versão Micro !

! JAX-RS, Web Sockets, CDI, JPA, EJB…

! java -jar payara-micro.jar --deploy teste.war

COMO?

Page 33: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Java EE

JPA!

JAX-RS!

CDI!

! Jetty / Tomcat

! Web profile

COMO?

Page 34: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Java EE COMO?

Page 35: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Exemplos de Arquitetura

Microserviço #1

DropWizardJetty

Microserviço #2

Spring BootTomcat

Microserviço #4

CXF

Jetty

Open JPA

KarafMicroserviço #5

JVM

AMQP

AMQP

HTTP HTTPHTTP

Glassfish

HTTP

HTTP HTTP HTTPHTTP

JPA

JAX-RS

Microserviço #3

COMO?

Page 36: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Docker

Docker

Docker

Exemplos de Arquitetura

HTTP HTTP HTTPHTTP

DropWizard

Jetty

Spring Boot

Tomcat

Docker

JVM

AMQP

AMQP

HTTPHTTP

Glassfish

HTTP

JPA

JAX-RS Domain #2

JPA

JAX-RS

Domain #1

JPA

JAX-RS

HTTP

COMO?

Page 37: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

semelhanças com SOA

Alta coesão!

Componentes e encapsulamento !

Funcionalidades de negócio!

! Independentes de linguagem

! Comunicação HTTP

Page 38: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

diferenças com SOA

Orquestração (BPEL e BPM)!

Hub Central X Smart Endpoints e Dumb Pipes!

SOAP X REST!

DevOps, cultura e organização!

Page 39: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Netflix

Fonte: http://www.slideshare.net/stonse/pros-and-cons-of-a-microservices-architecture-talk-at-aws-reinvent

2 bilhões requisições/dia!

30 equipes!

800 devices!

! 50 milhões de assinantes

500 microserviços!

Múltiplas versões!

QUEM?

Page 40: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Netflix

Simulação em produção !

Falhas parciais!

Fonte: http://www.slideshare.net/betclicTech/betclic-mini-trainingnetflixsimianarmy

!

! Conformity

! Chaos

Security!

Latency!

Monkeys

Janitor!

QUEM?

Page 41: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Netflix

Fonte: http://techblog.netflix.com/2012/07/embracing-differences-inside-netflix.html

QUEM?

Page 42: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Arquitetura

Banco Relacional

Banco Orientado a Documentos

Micro Service #1

Micro Service #2

Micro Service #3

Micro Service #4

Key/Store Data Base

Graph Data Base

Page 43: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

API Gateway

Banco Relacional

Banco Orientado a Documentos

Key/Store Data Base

Micro Service #1

Micro Service #2

Micro Service #3

Micro Service #4Graph Data Base

HTTP

HTTP

HTTP

HTTP

AMQP AMQP

HTTP

HTTP

HTTP

Page 44: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Amazon

Serviços/estruturas independentes

DevOps

Simulações de erros

Equipes descentralizadas

Q&A descentralizado

QUEM?

Page 45: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

CONCLUSÃO

Integração/Entrega Contínua!

Testes de Falhas!

Arquitetura!

! Prós x Cons

DevOps!

Impacto Cultural!

Estratégia de Migração!

Page 46: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Perguntas ??

Page 47: Microserviços: flexibilidade e agilidade a que preço?...HTML CSS JAVAScript MVC JAVA EJBs Serviços Acesso a Dados Monolítico ade Equipes de negócio Multifuncionais ade de negócio

Obrigado !!

Einar Saukas Fabio Velloso @fabiovelloso