O documento discute diferentes modelos de arquitetura de software, começando por sistemas monolíticos e seus problemas, então abordando serviços SOA e REST. Finalmente, foca nos micro serviços, definindo-os como serviços autônomos que trabalham em conjunto e discutindo seus benefícios como escalabilidade e facilidade de adoção de novas tecnologias.
3. SISTEMAS
MONOLÍTICOS
De maneira geral sistemas
feitos até recentemente eram
concebidos sob arquitetura
monolítca, ou seja, ainda que
divididos em camadas, tudo é
distribuído em um único
pacote, boa abordagem para
sistemas simples mas para
aplicações complexas, essa
abordagem não é adequada.
4. PROBLEMAS
SISTEMAS
MONOLÍTICOS
-> Dificuldade para implantar
"Continuos Deploy", em geral,
indisponibilidade total do sistema
durante implementações
-> Aprisionamento tecnológico
-> Manutenção e compreensão da
aplicação torna-se cada vez mais
dificil a medida que a aplicação
cresce.
5. PROBLEMAS
SISTEMAS
MONOLÍTICOS
-> Dificuldade para coordenar
ações da equipe;
-> Queda de qualidade do código
com passar do tempo
->Uso desgovernado de recursos
(Servidores de aplicação)
-> Escalabilidade comprometida
7. DEFINIÇÃO
DE SERVIÇO
Componente de software
com capacidades
implementadas sob a forma
de operações (metódos). E
essas capacidades podem ser
vistas como funcionalidades
das quais um ou mais
sistemas dependem.
9. PROBLEMAS
COMUNS
SOA
-> Dificuldades em encontrar a
melhor forma de dividir algo
maior em partes menores.
-> Falta de consenso em como
implementar essa arquitetura
(inúmeras especificações
complementares para Web
Services).
10. REST
- Baseado no conceito de recurso e no
uso de requisições HTTP
- Recurso é o conjunto de dados do qual
uma aplicação depende
- RESTful web services baseados na
arquitetura REST
12. MICRO SERVIÇOS
Serviços pequenos e autônomos trabalhando de forma
conjunta, a fim de atender ao escopo de uma
requisição/demanda especifica.
13. MICRO
SERVIÇOS
- Deve contribuir para o baixo
acoplamento
- Deploy como um componente
isolado
- Alterações devem acontecer
sem afetar os demais
componentes, sem parar toda
aplicação
14. MICRO
SERVIÇOS
BENEFÍCIOS
- Adoção de novas tecnologias
com maior facilidade
- Alta disponibilidade
- Escalabilidade
- Torna mais fácil adoção de
Continuous deployment
- Foco em produtos, não projetos
15. MICRO SERVIÇOS
DESCENTRALIZAÇÃO
- Times multifuncionais cuidando de um produto
- Evitar uso de soluçõs Enterprise Service Bus (ESB) ou de
orquestração
- Bases de dados descentralizadas, normalmente uma para
cada serviço.
16. ABORDAGENS DE
DEPLOYMENT INDEPENDENTE
- UMA ÚNICA INSTÂNCIA DE UM SERVIÇO POR HOST
- MÚLTIPLAS INSTÂNCIAS DE UM SERVIÇO POR HOST
- UMA ÚNICA INSTÂNCIA DE UM SERVIÇO POR MÁQUINA VIRTUAL
- UMA INSTÂNCIA DE SERVIÇO POR CONTAINER -> DOCKER