microservices, soa e o melhor das filas

Post on 19-Jul-2015

111 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Microservices, SOA e o melhor das Filas

@diego_pachecoSoftware Architect | Agile Coach

www.ilegra.com

~35/40 pessoas

Projeto X: Mais de 120k horas de projeto

~400 epicos

~650h de treinamentos

SOA

120/40k horas ~140 serversAPI

Arquitetura de Software

A lei de Conway

SEM caixa mágica…

Soluções Open Source

SOA

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

Thomas Jefferson (don’t copy the tools)

In matters of style, swim with the current;

In matters of principle, stand like a rock.

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

Core Principles

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

Abstraction

Contratos de ServiçosConsumidor

Contrato

Implementaçãodo

Serviço

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…

Ponto de Entrada(Tradução)

Domain

Data Layer

DAO

Business

Anti-Corruption Layer (BIND)

Backward Compatibility Converters

BCConverters

Contract :TCD => :contract:Integration

(UT)

Interno

Frequencia

Cientifico

- +

Financeiro

Natureza do Job

Short

Long

Messageria

ActiveMQ: Arquitetura

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

Microservices

Monolitos

Microservices: DDD

Descentralização

ESB Microservices

Isolamento

Isolamento Fisico

Micro-Workers? DDD VS Data Driven

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

ContractImpl

Data Data Data

Main Architecture

Data Center EUA Data Center EU

Akamai DNS GeoIP

Main Architecture

InternalGateway

ActiveMQ

Worker

Service

ActiveMQ

External APIWeb UI

Worker

Service

InternalGateway

Middleware Architecture

Management

Worker

Service

IN OUT

Management

Worker

Service

IN GENERIC

Background Thread

Pooling

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

Governança

Stress Tests

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.

Backward Compatibility

Service

V1 - Contract

Consumidor X Consumidor Y

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

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.

Microservices, SOA e o melhor das Filas

@diego_pachecoSoftware Architect | Agile Coach

Obrigado!

top related