microservices: mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

28
Microservices Emmanuel Neri Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Upload: emmanuel-neri

Post on 15-Apr-2017

152 views

Category:

Software


8 download

TRANSCRIPT

Page 1: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Microservices

Emmanuel Neri

Mais que uma arquitetura de software, uma filosofia de

desenvolvimento de software

Page 2: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Agenda

● O que é microservices

● Comunicação entre serviços

● Um exemplo de aplicação

● Boas práticas

● Mudanças

● Conclusões

Page 3: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Microservices

“Microservices are small, autonomous services that work together”

Sam Newman

“A small application that can be deployed independently, scaled independently, and

tested independently and that has a single responsibility.”

Johannes Thones

Page 4: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Linha do tempo

Page 5: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Lei de Conway

“Any organization that designs a system (defined more broadly here than just information

systems) will inevitably produce a design whose structure is a copy of the organization’s

communication structure. “

Melvin Conway’s

Page 6: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Características

FOWLER; LEWIS (2014)

● Composto por um conjunto de serviços “pequenos”● Serviços autônomos● Permite ser escalado horizontal e vertical● Possui liberdade de tecnologia● Flexibilidade de deploy● Facilidade para integrações● Maior tolerância a falhas

Page 7: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Escalabilidade

● Eixo X - Duplicação horizontal

● Eixo Y - Decomposição vertical

● Eixo Z - Separação dos dados

Page 8: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Microservices é igual SOA?

“SOA é algo maior, utilizando para

integração de monolitos”

FOLWER; LEWIS (2014)

● Serviços reutilizáveis

● Serviços compartilham um contrato formal

● Serviços possuem baixo acoplamento

● Serviços autônomos

● Etc...

Princípios de SOA:

Page 9: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Como organizar os serviços?

Page 10: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Comunicação entre os serviços

● “HTTP é o padrão de comunicação no microservices”

○ Martin Fowler

● “O serviços devem ser assíncronos”

○ Jonar Bonér (Reactive Microservices Architecture)

■ Terceira onda de bigdata: “data in motion”

Page 11: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Características das comunicações ● Síncrona

○ Espera resposta

○ Comunicação em “tempo real”

○ Balanceador de carga a nível de infraestrutura

○ Tratamento de erros pode ser pelo status do http

● Assíncrona

○ Não espera resposta

○ Comunicação entre os dados pode ser “delay” entre as estruturas

○ Balanceador de carga pode ser uma fila

○ Possibilidade de Service Discovery / Message broker

○ Tratamento de erros pode ficar no gerenciador da fila

○ Em caso de erros o gerenciador de mensagens pode tratar o reenvio

Page 12: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Implementações de comunicação ● Síncrona

○ Rest, SOAP, CDI

● Assíncrona

○ Mensagens, Eventos, Replicação de base

Page 13: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Exemplo

Page 14: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Síncrona Assíncrona

Page 15: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Síncrona Assíncrona

Page 16: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Síncrona Assíncrona

Page 17: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Síncrona Assíncrona

Page 18: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Síncrona Assíncrona

Comparativo de tempo execução do relatório que utiliza dados das aplicações de pedidos e cadastros.

Testes Tempo

Execução 1 175

Execução 2 31

Execução 3 31

Execução 4 30

Execução 5 29

Média: 59,2 milissegundos

Testes Tempo

Execução 1 15

Execução 2 9

Execução 3 10

Execução 4 10

Execução 5 9

Média: 10,6 milissegundos

Page 19: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Conclusões do exemplo

Síncrona AssíncronaVantagens Desvantagens

Dados em tempo real Maior tempo entre as comunicações (maior

preocupação com performance)

Dados Centralizados Baixa integridade entre os relacionamentos

Maior reaproveitamento dos serviços

Serviços impactante em outras funcionalidades

Vantagens Desvantagens

Sincronizações transparentes para o usuário

Possibilidade de indisponibilidade dos dados

Serviços totalmente independentes

Replicação dos dados / Replicação de código

Maior complexidade com sincronizações

Page 20: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Frameworks● Dropwizard

● KumuluzEE

○ Duke's Choice Award Winner 2015

● Micro Profile

○ Wildfly Swarm

● Spring Boot

Page 21: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Boas práticas● Baixo acoplamento ● Bounded Context (DDD)

Page 22: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Boas práticas● Single Responsibility Principle ● Single Point of Failure

Page 23: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Mudanças no desenvolvimento● Desenvolvimentos voltados a APIs

● Desafios de Sistemas distribuídos

○ Base de dados distribuídas, Transações distribuídas, Latência de rede

● Complexidade nos testes automatizados

○ Testes distribuídos

● Segurança

Page 24: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Mudanças na cultura● DevOps

● Maior número de aplicações / instâncias

● Integrações constantes

● Governança dos serviços (APIs)

● Desenvolvimento multiprojetos

Page 25: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Por onde começar?

● Migração por camadas

○ Aplicação? Banco de dados?

● Começar de uma aplicação existente

Page 26: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Padrões de migração de monolitos

● Strangler Application ● Depedency Inversion Principles

Page 27: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Conclusão

● Vários trade-offs

○ Como fazer comunicação entre os serviço?

○ Como separar os serviços?

● Mudanças de cultura

● Mudança na forma de desenvolvimento

Page 28: Microservices: Mais que uma arquitetura de software, uma filosofia de desenvolvimento de software

Referências● Building Microservices: Designing Fine-Grained Systems - Sam Newman

● The Art of Scalability - Martin L, Abbott, Michael T. Fisher ● Domain-Driven Design - Eric Evans● DevOps: A Software Architect's Perspective - Len Bass, Ingo Weber, Liming Zhu● Reactive Microservices Architecture - Jonas Bonér● http://martinfowler.com/articles/microservices.html● http://pt.slideshare.net/adriancockcroft/dockercon-state-of-the-art-in-microservices● http://pt.slideshare.net/gutomcosta/como-ddd-e-strategic-design-esto-nos-ajudando-a-m

odernizar-um-legado● http://pt.slideshare.net/ewolff/rest-vs-messaging-for-microservices● https://www.infoq.com/br/presentations/microservicos-uma-jornada-inesperada● http://pt.slideshare.net/tdc-globalcode/tdc2016sp-trilha-microservices-64181673