11. 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
12. Thomas Jefferson (don’t copy the tools)
In matters of
style, swim with
the current;
In matters of
principle, stand
like a rock.
15. Core Principles
Separation of Concerns (SOC)
Loose Coupling
Flexibility
Scalability
Performance
Single Integrated Platform
Focus on Serialization and
cache rather than database.
18. Partes de um Contrato
Nome do Serviço
Operações Públicas
Comportamento do serviço *
Input
Output
Versão
Formato dos dados: Xml, Json, binário
Layout 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/ou
negócio da empresa…
19. Ponto de Entrada(Tradução)
Domain
Data Layer
DAO
Business
Anti-Corruption Layer (BIND)
Backward Compatibility Converters
BC
Converters
Contract :TCD =>
:contract
:Integration
(UT)
Interno
24. 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
31. Micro-Workers? DDD VS Data Driven
http://diego-pacheco.blogspot.com.br/2015/04/micro-workers-flavor-or-microservices.html
Contract
Impl
Data Data Data
35. 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
38. 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.
40. 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
41. 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.
42. Microservices, SOA
e o melhor das Filas
@diego_pacheco
Software Architect | Agile Coach
Obrigado!