O documento discute as arquiteturas de micro serviços e monolítica, comparando seus prós e contras. A arquitetura de micro serviços divide a aplicação em vários serviços independentes que se comunicam através de APIs, permitindo maior escalabilidade e falhas isoladas. Porém requer mais esforço de gerenciamento dos serviços. Não há modelo certo, dependendo do tamanho e necessidades da aplicação.
2. 2
Sobre
Entusiasta em novas tecnologias e metodologias;
Possuo mais de 15 anos atuando com desenvolvimento
e arquitetura de sistemas JAVA e .NET;
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
3. 3
Agenda
Apresentação
Modelo tradicional
Contextualização
Exemplo do modelo
Prós
Contras
Modelo evolutivo
Contextualização
Exemplo do modelo
Descrição das tecnologias utilizadas
Prós
Contras
Qual melhor modelo a ser utilizado
Bibliografia complementar
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
4. Contextualização do modelo
“tradicional”
Com a evolução dos “modelos de desenvolvimento”, um
modelo bastante adotado é o MVC, onde a aplicação é
dividida em 3 partes interconectadas, onde:
MODEL
“Armazena dados e notifica suas visões e controladores
associados quando há uma mudança em seu estado. Estas
notificações permitem que as visões produzam saídas
atualizadas e que os controladores alterem o conjunto de
comandos disponíveis”
CONTROLLER
“Envia comandos para o modelo para atualizar o seu estado”
VIEW
“Gera uma representação (Visão) dos dados presentes no
modelo solicitado”
6. 6
Prós
O frontend e o backend podem ser hospedados em
servidores distintos;
Melhor visualização das responsabilidades;
Encapsulamento;
Desenvolvimento em paralelo;
Facilidade no controle e versionamento das entregas;
Deploy unificado;
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
7. Contras
Ponto único de falha;
Base do código fonte gerado muito extensa;
A cada entrega é necessário desativar todo o sistema para
entregar as novas funcionalidades/correções;
Facilidade em “burlar” as barreiras arquiteturais em tempo
de desenvolvimento;
Dependendo do tamanho da aplicação, é possível que uma
entrega demora mais de um Sprint;
Pouca escalabilidade;
Maior esforço para medir o consumo da aplicação para
mensurar a infraestrutura;
8. Contextualização modelo
arquitetura de micro serviços
“O termo ‘Arquitetura de Micro serviços’ surgiu nos
últimos anos para descrever um modo particular de
projetar aplicativos de software como conjuntos de
serviços de implementação independente. Embora não
exista uma definição precisa desse estilo de
arquitetura, há certas características comuns em torno
da organização em torno da capacidade comercial, da
implantação automatizada, da inteligência nos
terminais e do controle descentralizado de idiomas e
dados.”
Tradução do trecho “Microservices a definition of this new architeture term
https://martinfowler.com/articles/microservices.html
10. Tecnologias utilizadas
Aplicação Cliente
Interface acessada pelo usuário, pode ser tanto uma
aplicação mobile, desktop, quanto um serviço exposto.
Ex.: serviço de consulta dos correios
Netflix Zuul – Gateway API
É uma espécie de “porteiro”, é o responsável por
direcionar as chamadas recebidas para os respectivos
serviços;
Netfilx Discovery
Todos os serviços disponibilizados, são identificados pelo
Discovery, e ficam disponíveis para serem utilizados;
11. Tecnologias utilizadas
Spring Cloud
Faz parte do pacote do Spring, e auxilia na disponibilização das
configurações dos serviços. Todos os serviços que precisam de
arquivos de configuração, serão muito bem servidos com este
pacote.
Logstash
Pipeline de processamento de dados do lado do servidor, que insere
dados de várias fontes simultaneamente, transforma e envia para o
Elasticsearch
Elasticsearch
Mecanismo distribuído de pesquisa e análise RESTful, que armazena
os dados centralmente e é de grande ajuda na busca em dados
“não organizados”.
Kibana
Permite a visualização dos dados do Elasticsearch em forma de
gráficos;
12. 12
Prós
Independência entre os serviços;
Possiblidade de trabalhar com diversas tecnologias ao
mesmo tempo;
Aplicações distribuídas;
Mais fácil de escalar;
Diminuição do ponto único de falha;
Sistemas com base de códigos menores;
Facilidade na analise de desempenho;
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
13. Contras
Quantidade de serviços instalados;
Gerenciamento de vários ambientes;
Versionamento dos serviços;
Gerenciamento entre infra/negócios;
Serviços consumindo outros serviços;
Dificuldade em encontrar mão obra especializada;
Duplicação de código;
14. 14
Qual o melhor modelo a
ser utilizado?
“No Silver Bullet”;
Depende do tamanho da aplicação;
Infraestrutura onde será armazenada;
15. Referencias web
15
Leitura complementar
Blog Caelum, texto comparativo sobre a utilização do dois
modelos
http://blog.caelum.com.br/arquitetura-de-microservicos-ou-
monolitica/
Site oficial do Marting Fowler
https://martinfowler.com/articles/microservices.html
Artigo explicativo sobre como montar um ambiente CI
https://blog.codecentric.de/en/2015/10/continuous-
integration-platform-using-docker-container-jenkins-
sonarqube-nexus-gitlab/
Artigo onde o autor explica sua experiência com o uso do
Docker
https://thehftguy.com/2016/11/01/docker-in-production-an-
history-of-failure/
Notas do Editor
When you’re looking at memory cache’s you will hear a lot of different terms.