Desempenho utilizando
arquitetura de micro serviços
José Júnior Santana
jose.santana@yaman.com.br
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
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.
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”
5
CONTROLLERVIEW MODEL
Modelo tradicional
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.
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;
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
9
GATEWAY
API
DISCOVERY
Modelo evolutivo
Spring Cloud Logstash Elasticsearch Kibana
Docker
Authentication
Service
Micro serviços
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;
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
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.
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
Qual o melhor modelo a
ser utilizado?
 “No Silver Bullet”;
 Depende do tamanho da aplicação;
 Infraestrutura onde será armazenada;
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/

Architecture performance using micro services

  • 1.
    Desempenho utilizando arquitetura demicro serviços José Júnior Santana jose.santana@yaman.com.br
  • 2.
    2 Sobre  Entusiasta emnovas 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  Modelotradicional  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”
  • 5.
  • 6.
    6 Prós  O frontende 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 únicode 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 demicro 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
  • 9.
    9 GATEWAY API DISCOVERY Modelo evolutivo Spring CloudLogstash Elasticsearch Kibana Docker Authentication Service Micro serviços
  • 10.
    Tecnologias utilizadas  AplicaçãoCliente  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  SpringCloud  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 entreos 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 deserviç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 melhormodelo 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

  • #6 When you’re looking at memory cache’s you will hear a lot of different terms.