APLICAÇÕES MONOLÍTICAS
- Fornece Macro-funcionalidades;
- Toda a capacidade do negocio/domínio esta em uma mesma funcionalidade ou serviço;
- Aplicação dividida em camadas;
- Arquitetura dependente;
- Deploy simples;
- Hospedado em um servidor especifico;
- Desenvolvimento altamente dependente da plataforma;
- Escalabilidade vertical;
- Evolução comprometida;
- Banco de dados integrado:
- Deploy centralizado:
APLICAÇÕES EM MICRO-SERVIÇOS
- Fornece Micro-funcionalidade;
- Isola responsabilidades;
- Solução granular;
- Divisão de responsabilidades entre projetos/serviços;
- Alta disponibilidade e escalabilidade;
- Escalabilidade na capacidade de negocio;
- Altamente desacoplada;
- Solução segmentada e distribuída;
- A aplicação não é desenvolvida em termos de projetos e sim em serviços/produtos;
- Monitoramento especifico por serviço;
- Pode ser desenvolvimento em varias plataformas ao mesmo tempo;
- Dados decentralizados;
- Banco de dados segmentados;
- Serviços específicos podem compartilhar bancos de dados distintos;
- A integração entre serviços pode ser feita através de messageria (RabbitMQ);
- Deploy descentralizado:
- Componentização via serviços;
Referência:
http://martinfowler.com/articles/microservices.html
http://martinfowler.com/microservices
http://microservices.io/