Microserviços: flexibilidade e agilidade a que preço?...Processo único em memória Estrutura...

Preview:

Citation preview

© 2005, Summa Technologies, Inc. 1

Summa Technologies www.summa.com.br

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

Einar Saukas Fabio Velloso @fabiovelloso

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)

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

Tópicos

Motivação → POR QUÊ?

Características → O QUÊ?

Pontos de Atenção → QUANDO?!

Frameworks e tecnologias → COMO?

Exemplos → QUEM?!

!

!

!

Componentização em serviços independentes

Especialização

Liberdade tecnológica

EscalabilidadeFlexibilidade!

Testes

Isolamento de falhas

Agilidade!

! !

!

!

!

!

Motivação POR QUÊ?

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Ê?

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Ê?

Características

Conceitos de negócio

Bounded Context

Domain Driven Design

Contexto A Contexto b

O QUÊ?

Produtos e não projetos

Contato com usuários

Desenvolvedor:

Software em produção

Ciclo de vida completo

g

Características O QUÊ?

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Ê?

Comunicação remota via rede

APIs

AMQP

REST e HTTP

"

Smart Endpoints e Dumb Pipes

Características O QUÊ?

Interdependência de serviços

Características

Cultura de automação

Design para falhas

Design evolutivo

Composição

!

O QUÊ?

Segurança

Testes

Controle transacional!

Monitoração

Dificuldades

Roteamento"

Legado

Resiliência

Service discovery

QUANDO?

"

Performance

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

Check-list

Transação isolada?

Impacto em performance?

Atualizações independentes?

Impacto cultural?

Melhorias frequentes?

Interface bem definida?

Alta complexidade?

QUANDO?

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

DevOps

Responsabilidade

Feedback

Cenários reais"Agilidade

Proatividade

Instrumentação

Parceria

Docker

Sem overhead de VMs!

Container!

Isolamento de recursos!

Gerenciamento como processo de SO!

COMO?

Microframeworks

Web e REST!

Core mínimo e simples!

JVM ou Servidor leve!

Deploy em containers!

Não padronizado!

COMO?

Dropwizard

JAX-RS (Jersey)!

Jetty!

Jackson!

Metrics!

COMO?

Dropwizard COMO?

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?

VERT.x COMO?

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?

spring boot COMO?

Spark Java

Jetty !

Inspirado no Sinatra!

Maven!

Dependências no POM!

Java 8 na versão 2!

COMO?

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?

“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

!

!

!

!

!

!

!

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

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?

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?

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?

Java EE

JPA!

JAX-RS!

CDI!

! Jetty / Tomcat

! Web profile

COMO?

Java EE COMO?

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?

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?

semelhanças com SOA

Alta coesão!

Componentes e encapsulamento !

Funcionalidades de negócio!

! Independentes de linguagem

! Comunicação HTTP

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!

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?

Netflix

Simulação em produção !

Falhas parciais!

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

!

! Conformity

! Chaos

Security!

Latency!

Monkeys

Janitor!

QUEM?

Netflix

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

QUEM?

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

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

Amazon

Serviços/estruturas independentes

DevOps

Simulações de erros

Equipes descentralizadas

Q&A descentralizado

QUEM?

CONCLUSÃO

Integração/Entrega Contínua!

Testes de Falhas!

Arquitetura!

! Prós x Cons

DevOps!

Impacto Cultural!

Estratégia de Migração!

Perguntas ??

Obrigado !!

Einar Saukas Fabio Velloso @fabiovelloso

Recommended