microservices, soa e o melhor das filas

42
Microservices, SOA e o melhor das Filas @diego_pacheco Software Architect | Agile Coach

Upload: diego-pacheco

Post on 19-Jul-2015

109 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Microservices, soa e o melhor das filas

Microservices, SOA e o melhor das Filas

@diego_pachecoSoftware Architect | Agile Coach

Page 2: Microservices, soa e o melhor das filas
Page 3: Microservices, soa e o melhor das filas

www.ilegra.com

Page 4: Microservices, soa e o melhor das filas

~35/40 pessoas

Projeto X: Mais de 120k horas de projeto

~400 epicos

~650h de treinamentos

SOA

120/40k horas ~140 serversAPI

Page 5: Microservices, soa e o melhor das filas

Arquitetura de Software

Page 6: Microservices, soa e o melhor das filas

A lei de Conway

Page 7: Microservices, soa e o melhor das filas

SEM caixa mágica…

Page 8: Microservices, soa e o melhor das filas

Soluções Open Source

Page 9: Microservices, soa e o melhor das filas
Page 10: Microservices, soa e o melhor das filas

SOA

Page 11: Microservices, soa e o melhor das filas

Contexto de Business

Quase nehuma “escrita” Escrita em outros processos Muito mais lietura do que escrita Muitas aquisicoes Necessidade acesso de dados Necessidade de Escalabilidade +Cache +Serialicação do que TX

Page 12: Microservices, soa e o melhor das filas

Thomas Jefferson (don’t copy the tools)

In matters of style, swim with the current;

In matters of principle, stand like a rock.

Page 13: Microservices, soa e o melhor das filas

SOA: Arquitetura e Orientação a Serviços

Page 14: Microservices, soa e o melhor das filas
Page 15: Microservices, soa e o melhor das filas

Core Principles

Separation of Concerns (SOC) Loose Coupling Flexibility Scalability Performance Single Integrated Platform Focus on Serialization and cache rather than database.

Page 16: Microservices, soa e o melhor das filas

Abstraction

Page 17: Microservices, soa e o melhor das filas

Contratos de ServiçosConsumidor

Contrato

Implementaçãodo

Serviço

Page 18: Microservices, soa e o melhor das filas

Partes de um Contrato

Nome do ServiçoOperações Públicas Comportamento do serviço *InputOutputVersãoFormato dos dados: Xml, Json, binárioLayout dos dados: dd/mm/yyyy, dddd-yy-mm, dd Protocolo de acesso frontend: SOAP, REST, EJB, IPC, Atores,

Stream, etc…

Outras dimenssoes que façam sentido a arquitetura e/ounegócio da empresa…

Page 19: Microservices, soa e o melhor das filas

Ponto de Entrada(Tradução)

Domain

Data Layer

DAO

Business

Anti-Corruption Layer (BIND)

Backward Compatibility Converters

BCConverters

Contract :TCD => :contract:Integration

(UT)

Interno

Page 20: Microservices, soa e o melhor das filas

Frequencia

Cientifico

- +

Financeiro

Page 21: Microservices, soa e o melhor das filas

Natureza do Job

Short

Long

Page 22: Microservices, soa e o melhor das filas

Messageria

Page 23: Microservices, soa e o melhor das filas

ActiveMQ: Arquitetura

Page 24: Microservices, soa e o melhor das filas

Workload não previsivel – Buffer / Spooling

Informações sobre o que esta acontecendo

Auto-Escalabilidade com + workers

Re-Processamento

Durabilidade

Bom para Long Running Jobs

Queues: O melhor das filas

Page 25: Microservices, soa e o melhor das filas

Microservices

Page 26: Microservices, soa e o melhor das filas

Monolitos

Page 27: Microservices, soa e o melhor das filas

Microservices: DDD

Page 28: Microservices, soa e o melhor das filas

Descentralização

ESB Microservices

Page 29: Microservices, soa e o melhor das filas

Isolamento

Page 30: Microservices, soa e o melhor das filas

Isolamento Fisico

Page 31: Microservices, soa e o melhor das filas

Micro-Workers? DDD VS Data Driven

http://diego-pacheco.blogspot.com.br/2015/04/micro-workers-flavor-or-microservices.html

ContractImpl

Data Data Data

Page 32: Microservices, soa e o melhor das filas

Main Architecture

Data Center EUA Data Center EU

Akamai DNS GeoIP

Page 33: Microservices, soa e o melhor das filas

Main Architecture

InternalGateway

ActiveMQ

Worker

Service

ActiveMQ

External APIWeb UI

Worker

Service

InternalGateway

Page 34: Microservices, soa e o melhor das filas

Middleware Architecture

Management

Worker

Service

IN OUT

Management

Worker

Service

IN GENERIC

Background Thread

Pooling

Page 35: Microservices, soa e o melhor das filas

Services Architecture / Composição

Localizar Procurar

Exportar

Alertar

Exportar Pesquisa Integração

+15 SOA Services

+API as Services

Single Purpose Services

N workers per ServiceAPI Business 1 API Business 2 API Business 3 API Business 4

Page 36: Microservices, soa e o melhor das filas

Governança

Page 37: Microservices, soa e o melhor das filas

Stress Tests

Page 38: Microservices, soa e o melhor das filas

Regras de Testes

Serviços sempre roda na ultima versão

Os testes são todos visionados

Testes Por Versão

Testes Separados Por pacotes

Não se toca nos testes uma vez que tenha nova versão, se mexe no serviço.

Devem testar todas operações e todo tipo de comportamento cabível de se testar.

Page 39: Microservices, soa e o melhor das filas

Backward Compatibility

Service

V1 - Contract

Consumidor X Consumidor Y

Page 40: Microservices, soa e o melhor das filas

Breaking Change VS Non-Breaking Change

• Adicionar Serviço novo• Adicionar Operação nova• Adicionar Atribuito em

request(input) opicional

• Remover Serviços• Renomear Serviços• Renomear Operações• Remover Operações• Adicionar atributos(input)

obrigatórios.• Mudar formato dos dados• Mudar Layout de Dados

Page 41: Microservices, soa e o melhor das filas

Lições Aprendidas

Wins VS Aprendizados Focando SOA com principios Isolamento Fisico Abstracoes

Refactoring Upgrades Tech Performance

Queues Long Run Composição por Código para cenários simples Versionamento por coding e não por

branches. Isolamento de servers, threads pools, cache e

máquinas. Soluções OSS muito maduras

Automação não estava 1000% Issues com Automação de BD Queues sendo pesadas para Light sync ActiveMQ e messageria no geral é muito

associado ao hardware e dados, em um cenário de mudanças precisa estar sempre tunando.

Timeouts escondem issues Messageria com DLQ é ruim, melhor usar

solução de log centralizado como ELK. Cache Local é bom, mas pode explodir

serviço, logo é melhor ter um data grid distribuido como Coherence.

Page 42: Microservices, soa e o melhor das filas

Microservices, SOA e o melhor das Filas

@diego_pachecoSoftware Architect | Agile Coach

Obrigado!