SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
DXC Proprietary and Confidential
March 5, 2018
Arquitetura de
Microserviços
Norberto Enomoto
Integration | SOA | IoT Architect
norberto.enomoto@dxc.com
March 5, 2018 2DXC Proprietary and Confidential
Agenda
1. Introdução
2. Histórico dos Microserviços
3. Pré Requisitos de Arquitetura
March 5, 2018 3DXC Proprietary and Confidential
Introdução
March 5, 2018 4DXC Proprietary and Confidential
Arquitetura de Microserviço
É um Estilo de Arquitetura que enfatiza a decomposição de aplicativos
em microserviços de baixo acoplamento gerido por equipes
multifuncionais, para a entrega e manutenção de sistemas de software
complexos com a velocidade e qualidade exigida pelos negócios
digitais de hoje.
March 5, 2018 5DXC Proprietary and Confidential
Arquitetura de Microserviços
Monolítico Microserviço
March 5, 2018 6DXC Proprietary and Confidential
Arquitetura de Microserviços
March 5, 2018 7DXC Proprietary and Confidential
Arquitetura de Microserviços
•As aplicações são composições de processos pequenos e independentes
•Esses processos se comunicam através de um API em Restfull (HTTP /
JSON)
•Normalmente a aplicação front-end (Angular, React e etc) irá utilizar a
resposta JSON para construir a página HTML
•Uma APP desenvolvida em IOS ou Android irá construir suas “views”
usando a resposta JSON
March 5, 2018 8DXC Proprietary and Confidential
Arquiteturas Existentes tem suas Limitações
Devagar
Equipes divididas por função – UI,
Aplicação, Middleware, Banco de
Dados, etc. Leva uma eternidade
para fazer qualquer coisa devido ao
“cross-ticketing”
Frágil
Uma falha (bug) poderá rapidamente
“derrubar” toda a aplicação. Pouco
Resiliente
Testes Ineficientes
Toda vez que você alterar sua aplicação,
você terá que retestar tudo. Difícil
suportar a Entrega Contínua
Sem Dono
Quando não existe um dono, você
tem negligência
Complexa
Aplicações tendem a ficar tão grandes e
complexas para o Desenvolvedor entender ao
longo do tempo. Camadas compartilhadas
(ORM, Mensageria, etc) precisam gerenciar
100% dos casos de usos.
Sem
Dono
Devagar
Sem
Especialização
Complexa
Teste
Ineficientes
Frágil
Sem Especialização
Diferentes partes da aplicação
possuem diferentes necessidades –
mais CPU, mais memória, rede, etc
March 5, 2018 9DXC Proprietary and Confidential
Caraterística de uma Aplicação de N Camadas
Hardware
Sistema Operacional
Hypervisor
Sistema Operacional
Servidor de Aplicação
Aplicação Monolítica Grande
Um arquivo grande, incluindo a
camada de apresentação (UI) e
o código da aplicação
VM
• 3 camadas
• Somente uma linguagem
de programação
• Tudo centralizado -
mensageria,
armazenamento, banco de
dados e etc
Rico em recursos – suporta
grandes e complexas
aplicações, vários casos de
uso
Provê 100% de isolamento
Configuração manual
March 5, 2018 10DXC Proprietary and Confidential
O que são Microserviços
Arquitetura N Camadas Microserviços
Aplicação Monolítica
Precisa implantar (deploy) de toda a aplicação
Um banco de dados para a aplicação inteira
Chamada “In-process”, SOAP externamente
Organizado em torno das camadas de Tecnologia
Desenvolvedores não fazem suporte a “operação”
Uma Tecnologia para toda a aplicação
Vários, pequenos Microserviços com função mínima
Pode implantar (deploy) cada Microserviço de forma independente
Cada Microserviço possui seu próprio banco de dados
Chamadas REST sobre HTTP, Mensageria
Organizado em torno das “Business Capabilities”
Desenvolvedores também suportam a “operação”
Escolha de uma Tecnologia para cada Microserviço
March 5, 2018 11DXC Proprietary and Confidential
Microserviços são Desenvolvidos / Implantados
Independentemente
Interface do usuário
Aplicação
Banco de Dados
Infraestrutura
Aplicação N Camadas
Aplicação Monolítica
Microserviços
Vários pequenos Microserviços
API
Aplicação
Banco de Dados
Infraestrutra
Microserviço
Estoque
API
Aplicação
Banco de Dados
Infraestrutura
Microserviço
Pagamento
API
Applicação
Banco de Dados
Infraestrura
Microseriço
Perfil
API
Applicação
Banco de Dados
Infraestrura
Microserviço
Catálogo de Produtos
March 5, 2018 12DXC Proprietary and Confidential
Fundamentalmente, Microserviços é uma troca
Implantação mais fácil Desenv. Mais fácil
Você quer...
Desenv. Tradicional de aplicação Microserviços
• Um grande bloco de código,
às vezes, divididas em
módulos
• Complexidade gerenciada
dentro do grande bloco de
código
• Cada bloco de código é difícil
de desenvolver, mas fácil
para implantar.
• Vários pequenos blocos de
códigos, cada um
desenvolvido e implantados
de forma independente
• Complexidade encapsulada
dentro de cada Microserviço
• Cada Microserviço é facil de
desenvolver, mas difícil de
implantar
March 5, 2018 13DXC Proprietary and Confidential
Casos de Usos para adoção de Microserviços
Eu quero extender minha
aplicação monolítica existente
adicionando Microserviços na sua
periferia
Eu quero decomporuma
aplicação monolítica existente em uma
aplicação baseada na Arquitetura de
Microserviços
Eu quero construir uma nova
aplicação baseada na Arquitetura de Microserviços
a partir do zero
March 5, 2018 14DXC Proprietary and Confidential
As vezes Aplicações Monolíticas ainda são uma boa
Abordagem
• Para aplicações menos complexas, monólitos são
sempre melhores, tanto no curto quanto a longo
prazo
• Para aplicações moderadamente complexas,
monólitos ainda são provavelmente melhor, tanto
no curto quanto a longo prazo
• Para aplicações complexas, Microserviços
podem-se pagar ao longo do tempo, mas levam-
se muito tempo para compensar o maior
investimento inicial necessário para implementá-lo
Microserviços adiciona complexidade
Tempo
Complexidade
Complex. ao Longo do Tempo
March 5, 2018 15DXC Proprietary and Confidential
História dos Microserviços
March 5, 2018 16DXC Proprietary and Confidential
Os Princípios de Microserviços tem estado conosco
por Décadas
Os Princípios por trás dos Microserviços
muitas vezes são apenas bons Princípios
de Arquitetura
Baixo
Acoplamento
Foco na
“Business
Capabilities” e
não nas
Camadas de
Tecnologias
Reduz a
Complexidade
através da
Modularização
Fazer algo e fazê-lo
bem feito
March 5, 2018 17DXC Proprietary and Confidential
MicroserviçosMódulo
Modularidade sempre foi um Objetivo da Arquitetura
Mas Microserviços reforça a modularidade através da implantação de cada
Microserviços separadamente
 In process
 Chamadas Locais
 Não é independentemente Implantável
 A fronteira é fortemente reforçada
 Mesma Linguagem
 Fortemente acoplado
 Out-of-process
 Chamadas Remotas
 Independentemente Implantável
 A fronteira não é fortemente reforçada
 Diferente Linguagens
 Baixo Acomplamento
March 5, 2018 18DXC Proprietary and Confidential
SOA vs. Microserviços
SOA é uma idéia geral, onde Microserviços são uma maneira muito específica
de implementá-los
 Favorece a Orquestração Centralizada
 SOAP + HTTP
SOA
Microserviços
 Favorece a Coreografia Distribuída
 REST + HTTP/S = simples
Diferenças de Implementação
Todos os Princípios de SOA também se
aplicam à Microserviços
March 5, 2018 19DXC Proprietary and Confidential
SOA vs. Microserviços - Equívocos
“Microserviços eliminam a
necessidade de Enterprise
Service Bus”
Não confuda Produto com o Padrão
“Microserviços resolvem os
problemas de SOA”
Não confuda implementações mal
sucessidas de SOA com problemas de SOA
“Empresas como Netflix e
Linkedin usam Microserviços,
então nós devemos usar
também”
Netflix e LinkedIn são uma plataforma de
negócios. Qual é o seu negócio?
“Devemos escolher
Microserviços ou SOA”
Utilize ambos
March 5, 2018 20DXC Proprietary and Confidential
Pré Requisitos de Arquitetura
March 5, 2018 21DXC Proprietary and Confidential
Microserviços Força Mudança para Computação Distribuída
Introduz enorme complexidade – monólitos não sofre disto
API
Aplicação
Banco de Dados
Infraestrutura
API
Aplicação
Banco de Dados
Infraestrutura
API
Aplicação
Banco de Dados
Infraestrutura
API
Aplicação
Banco de Dados
Infraestrutura
Microserviço A Microserviço B Microserviço C Microserviço D
•A Computação Distribuída é uma consequência natural dos
Microserviços, visto que cada Microserviços tem seu próprio banco
de dados
•Compartilhamento de banco de dados através de Microserviços
introduz acoplamento - muito ruim!
•Haverá sempre Latência entre Microserviços
• Toda a troca de dados entre
Microserviços deve ser
através da camada da API –
não ao acesso aos banco de
dados entre Microserviços
• Deve-se implementar
mensagens de alta
velocidade entre
Microserviços utilizando
REST + HTTP. Provalmente
isso não será suficiente.
• Talvez existirá dados
duplicados entre os banco
de dados. Exemplo: dados
do cliente.
March 5, 2018 22DXC Proprietary and Confidential
Orquestração
•Usado em aplicações
centralizadas, monolíticas
•Frágil – centralizado por
natureza
•Cada “ação” interage com o
sistema centralizado – ponto
único de falha que não é muito
flexível
Coreografia
•Usado em aplicações de
Microserviços distribuídos
•Resiliente – distribuído por natureza
•Cada Microserviço
assincronamente lança uma
messagem que outro Microserviço
pode consumir
Microserviços Força Coreografia ao invés de
Orquestração
March 5, 2018 23DXC Proprietary and Confidential
Orquestração x Coreografia
• Orquestração: é a composição de serviços para criar um novo serviço ou para
resolver uma tarefa de um processo de negócio. Neste caso, sempre há a
figura de um ponto central. Um serviço ou uma atividade de negócio que
coordena a chamada de outros serviços para compor uma função de maior
granularidade. A orquestração de serviços é análoga a um método da
orientação a objetos que faz chamadas de outros métodos.
• Coreografia: a coreografia já é pré-determinada antes da sua execução. Por
exemplo, quando um serviço é acionado e envia uma mensagem, outros
serviços podem estar programados de ante-mão para receber ou não essa
mensagem e dispararem outras ações. Chamamos este processo de evento.
Serviços são acionados conforme a classe de eventos que ocorrem.
Característica básica da Arquitetura Orientada a Eventos. Em um Middleware é
possível atribuir esta característica através da criação de
fluxos Publish/Subscribe
March 5, 2018 24DXC Proprietary and Confidential
Orquestração x Coreografia
Orquestração Coreografia
Livro: Building Microservices – Sam Newman
March 5, 2018 25DXC Proprietary and Confidential
REST: Representational State Transfer
Fortemente associado com Microserviços, mas não é um requisite técnico
HTTP
REST
XML ou JSON
HTTP
Response
Codes
•Alternativa muito mais simples que o SOAP
•Utiliza GET, POST, PUT, DELETE, etc –
Assim como os navegadores WEB
•Versões de APIs - /v1.2/cliente
•Pode utilizar XML or JSON
•XML é muitas vezes melhor - suporte XPath,
seletores de CSS
•Não pode gerar “stubs” fortemente tipados
REST =
March 5, 2018 26DXC Proprietary and Confidential
Arquitetura de Microserviços
DXC Proprietary and Confidential
Obrigado.

Mais conteúdo relacionado

Mais procurados

Arquitetura de dispositivos móveis
Arquitetura de dispositivos móveis Arquitetura de dispositivos móveis
Arquitetura de dispositivos móveis
Italo Andrade
 
Sistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
Sistemas Operacionais - Gnu/Linux Gerenciamento de ArquivosSistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
Sistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
Luiz Arthur
 
Aula 11 - Controle de sessão em PHP - Programação Web
Aula 11  - Controle de sessão em PHP - Programação WebAula 11  - Controle de sessão em PHP - Programação Web
Aula 11 - Controle de sessão em PHP - Programação Web
Dalton Martins
 
AMD presentation
AMD presentation AMD presentation
AMD presentation
nayyer1122
 
ASO 1- Aula2 (1ª Unidade)
ASO 1- Aula2 (1ª Unidade)ASO 1- Aula2 (1ª Unidade)
ASO 1- Aula2 (1ª Unidade)
Cleiton Cunha
 

Mais procurados (20)

Construir microservices em python nunca foi tão simples como com o Nameko!
Construir microservices em python nunca foi tão simples como com o Nameko!Construir microservices em python nunca foi tão simples como com o Nameko!
Construir microservices em python nunca foi tão simples como com o Nameko!
 
Python Programming with Google Colab
Python Programming with Google ColabPython Programming with Google Colab
Python Programming with Google Colab
 
Clean Code na Prática
Clean Code na PráticaClean Code na Prática
Clean Code na Prática
 
Processos de desenvolvimento de software técnicas de 4ª geração
Processos de desenvolvimento de software   técnicas de 4ª geraçãoProcessos de desenvolvimento de software   técnicas de 4ª geração
Processos de desenvolvimento de software técnicas de 4ª geração
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 
Arquitetura de dispositivos móveis
Arquitetura de dispositivos móveis Arquitetura de dispositivos móveis
Arquitetura de dispositivos móveis
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Hyper-Vセキュリティでやってはいけないことトップ10
Hyper-Vセキュリティでやってはいけないことトップ10Hyper-Vセキュリティでやってはいけないことトップ10
Hyper-Vセキュリティでやってはいけないことトップ10
 
Smalltalk Presentation
Smalltalk PresentationSmalltalk Presentation
Smalltalk Presentation
 
Sistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
Sistemas Operacionais - Gnu/Linux Gerenciamento de ArquivosSistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
Sistemas Operacionais - Gnu/Linux Gerenciamento de Arquivos
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
 
Servidores Web
Servidores Web Servidores Web
Servidores Web
 
Aula 11 - Controle de sessão em PHP - Programação Web
Aula 11  - Controle de sessão em PHP - Programação WebAula 11  - Controle de sessão em PHP - Programação Web
Aula 11 - Controle de sessão em PHP - Programação Web
 
Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To Python
 
Blockchain Technology in Insurance Vertical
Blockchain Technology in Insurance Vertical Blockchain Technology in Insurance Vertical
Blockchain Technology in Insurance Vertical
 
Sistema Operacional
Sistema OperacionalSistema Operacional
Sistema Operacional
 
Postgres on OpenStack
Postgres on OpenStackPostgres on OpenStack
Postgres on OpenStack
 
Tipos de Sistema operacional
Tipos de Sistema operacionalTipos de Sistema operacional
Tipos de Sistema operacional
 
AMD presentation
AMD presentation AMD presentation
AMD presentation
 
ASO 1- Aula2 (1ª Unidade)
ASO 1- Aula2 (1ª Unidade)ASO 1- Aula2 (1ª Unidade)
ASO 1- Aula2 (1ª Unidade)
 

Semelhante a Arquitetura de Microserviços

Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
Ryan Padilha
 

Semelhante a Arquitetura de Microserviços (20)

Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 
Integrating Microservices
Integrating MicroservicesIntegrating Microservices
Integrating Microservices
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
 
Microservices
MicroservicesMicroservices
Microservices
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Microservices
MicroservicesMicroservices
Microservices
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev Weekend
 
Micro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viuMicro frontend de um jeito que você nunca viu
Micro frontend de um jeito que você nunca viu
 
Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 

Mais de Norberto Enomoto

Overview Governança SOA - HP Brazil
Overview Governança SOA - HP BrazilOverview Governança SOA - HP Brazil
Overview Governança SOA - HP Brazil
Norberto Enomoto
 

Mais de Norberto Enomoto (12)

Resilience4j
Resilience4jResilience4j
Resilience4j
 
Azure Pipeline
Azure PipelineAzure Pipeline
Azure Pipeline
 
AWS ECS vs EKS
AWS ECS vs EKSAWS ECS vs EKS
AWS ECS vs EKS
 
Workshop Azure DevOps | Docker | Azure Kubernetes Services
Workshop Azure DevOps | Docker | Azure Kubernetes ServicesWorkshop Azure DevOps | Docker | Azure Kubernetes Services
Workshop Azure DevOps | Docker | Azure Kubernetes Services
 
Workshop Azure DevOps Repos
Workshop Azure DevOps ReposWorkshop Azure DevOps Repos
Workshop Azure DevOps Repos
 
Criação de uma API RESTful Multitenat em Spring Boot e Oracle database utiliz...
Criação de uma API RESTful Multitenat em Spring Boot e Oracle database utiliz...Criação de uma API RESTful Multitenat em Spring Boot e Oracle database utiliz...
Criação de uma API RESTful Multitenat em Spring Boot e Oracle database utiliz...
 
Protocolo MQTT: Message Queuing Telemetry Transport
Protocolo MQTT: Message Queuing Telemetry TransportProtocolo MQTT: Message Queuing Telemetry Transport
Protocolo MQTT: Message Queuing Telemetry Transport
 
HP Communications and Media | Solutions IoT Platform
HP Communications and Media | Solutions IoT Platform HP Communications and Media | Solutions IoT Platform
HP Communications and Media | Solutions IoT Platform
 
Web Services
Web ServicesWeb Services
Web Services
 
MQTT: Message Queuing Telemetry Transport (IoT)
MQTT: Message Queuing Telemetry Transport (IoT)MQTT: Message Queuing Telemetry Transport (IoT)
MQTT: Message Queuing Telemetry Transport (IoT)
 
Overview Governança SOA - HP Brazil
Overview Governança SOA - HP BrazilOverview Governança SOA - HP Brazil
Overview Governança SOA - HP Brazil
 
Oracle Service Bus - HP Brazil
Oracle Service Bus - HP BrazilOracle Service Bus - HP Brazil
Oracle Service Bus - HP Brazil
 

Último

Último (8)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Arquitetura de Microserviços

  • 1. DXC Proprietary and Confidential March 5, 2018 Arquitetura de Microserviços Norberto Enomoto Integration | SOA | IoT Architect norberto.enomoto@dxc.com
  • 2. March 5, 2018 2DXC Proprietary and Confidential Agenda 1. Introdução 2. Histórico dos Microserviços 3. Pré Requisitos de Arquitetura
  • 3. March 5, 2018 3DXC Proprietary and Confidential Introdução
  • 4. March 5, 2018 4DXC Proprietary and Confidential Arquitetura de Microserviço É um Estilo de Arquitetura que enfatiza a decomposição de aplicativos em microserviços de baixo acoplamento gerido por equipes multifuncionais, para a entrega e manutenção de sistemas de software complexos com a velocidade e qualidade exigida pelos negócios digitais de hoje.
  • 5. March 5, 2018 5DXC Proprietary and Confidential Arquitetura de Microserviços Monolítico Microserviço
  • 6. March 5, 2018 6DXC Proprietary and Confidential Arquitetura de Microserviços
  • 7. March 5, 2018 7DXC Proprietary and Confidential Arquitetura de Microserviços •As aplicações são composições de processos pequenos e independentes •Esses processos se comunicam através de um API em Restfull (HTTP / JSON) •Normalmente a aplicação front-end (Angular, React e etc) irá utilizar a resposta JSON para construir a página HTML •Uma APP desenvolvida em IOS ou Android irá construir suas “views” usando a resposta JSON
  • 8. March 5, 2018 8DXC Proprietary and Confidential Arquiteturas Existentes tem suas Limitações Devagar Equipes divididas por função – UI, Aplicação, Middleware, Banco de Dados, etc. Leva uma eternidade para fazer qualquer coisa devido ao “cross-ticketing” Frágil Uma falha (bug) poderá rapidamente “derrubar” toda a aplicação. Pouco Resiliente Testes Ineficientes Toda vez que você alterar sua aplicação, você terá que retestar tudo. Difícil suportar a Entrega Contínua Sem Dono Quando não existe um dono, você tem negligência Complexa Aplicações tendem a ficar tão grandes e complexas para o Desenvolvedor entender ao longo do tempo. Camadas compartilhadas (ORM, Mensageria, etc) precisam gerenciar 100% dos casos de usos. Sem Dono Devagar Sem Especialização Complexa Teste Ineficientes Frágil Sem Especialização Diferentes partes da aplicação possuem diferentes necessidades – mais CPU, mais memória, rede, etc
  • 9. March 5, 2018 9DXC Proprietary and Confidential Caraterística de uma Aplicação de N Camadas Hardware Sistema Operacional Hypervisor Sistema Operacional Servidor de Aplicação Aplicação Monolítica Grande Um arquivo grande, incluindo a camada de apresentação (UI) e o código da aplicação VM • 3 camadas • Somente uma linguagem de programação • Tudo centralizado - mensageria, armazenamento, banco de dados e etc Rico em recursos – suporta grandes e complexas aplicações, vários casos de uso Provê 100% de isolamento Configuração manual
  • 10. March 5, 2018 10DXC Proprietary and Confidential O que são Microserviços Arquitetura N Camadas Microserviços Aplicação Monolítica Precisa implantar (deploy) de toda a aplicação Um banco de dados para a aplicação inteira Chamada “In-process”, SOAP externamente Organizado em torno das camadas de Tecnologia Desenvolvedores não fazem suporte a “operação” Uma Tecnologia para toda a aplicação Vários, pequenos Microserviços com função mínima Pode implantar (deploy) cada Microserviço de forma independente Cada Microserviço possui seu próprio banco de dados Chamadas REST sobre HTTP, Mensageria Organizado em torno das “Business Capabilities” Desenvolvedores também suportam a “operação” Escolha de uma Tecnologia para cada Microserviço
  • 11. March 5, 2018 11DXC Proprietary and Confidential Microserviços são Desenvolvidos / Implantados Independentemente Interface do usuário Aplicação Banco de Dados Infraestrutura Aplicação N Camadas Aplicação Monolítica Microserviços Vários pequenos Microserviços API Aplicação Banco de Dados Infraestrutra Microserviço Estoque API Aplicação Banco de Dados Infraestrutura Microserviço Pagamento API Applicação Banco de Dados Infraestrura Microseriço Perfil API Applicação Banco de Dados Infraestrura Microserviço Catálogo de Produtos
  • 12. March 5, 2018 12DXC Proprietary and Confidential Fundamentalmente, Microserviços é uma troca Implantação mais fácil Desenv. Mais fácil Você quer... Desenv. Tradicional de aplicação Microserviços • Um grande bloco de código, às vezes, divididas em módulos • Complexidade gerenciada dentro do grande bloco de código • Cada bloco de código é difícil de desenvolver, mas fácil para implantar. • Vários pequenos blocos de códigos, cada um desenvolvido e implantados de forma independente • Complexidade encapsulada dentro de cada Microserviço • Cada Microserviço é facil de desenvolver, mas difícil de implantar
  • 13. March 5, 2018 13DXC Proprietary and Confidential Casos de Usos para adoção de Microserviços Eu quero extender minha aplicação monolítica existente adicionando Microserviços na sua periferia Eu quero decomporuma aplicação monolítica existente em uma aplicação baseada na Arquitetura de Microserviços Eu quero construir uma nova aplicação baseada na Arquitetura de Microserviços a partir do zero
  • 14. March 5, 2018 14DXC Proprietary and Confidential As vezes Aplicações Monolíticas ainda são uma boa Abordagem • Para aplicações menos complexas, monólitos são sempre melhores, tanto no curto quanto a longo prazo • Para aplicações moderadamente complexas, monólitos ainda são provavelmente melhor, tanto no curto quanto a longo prazo • Para aplicações complexas, Microserviços podem-se pagar ao longo do tempo, mas levam- se muito tempo para compensar o maior investimento inicial necessário para implementá-lo Microserviços adiciona complexidade Tempo Complexidade Complex. ao Longo do Tempo
  • 15. March 5, 2018 15DXC Proprietary and Confidential História dos Microserviços
  • 16. March 5, 2018 16DXC Proprietary and Confidential Os Princípios de Microserviços tem estado conosco por Décadas Os Princípios por trás dos Microserviços muitas vezes são apenas bons Princípios de Arquitetura Baixo Acoplamento Foco na “Business Capabilities” e não nas Camadas de Tecnologias Reduz a Complexidade através da Modularização Fazer algo e fazê-lo bem feito
  • 17. March 5, 2018 17DXC Proprietary and Confidential MicroserviçosMódulo Modularidade sempre foi um Objetivo da Arquitetura Mas Microserviços reforça a modularidade através da implantação de cada Microserviços separadamente  In process  Chamadas Locais  Não é independentemente Implantável  A fronteira é fortemente reforçada  Mesma Linguagem  Fortemente acoplado  Out-of-process  Chamadas Remotas  Independentemente Implantável  A fronteira não é fortemente reforçada  Diferente Linguagens  Baixo Acomplamento
  • 18. March 5, 2018 18DXC Proprietary and Confidential SOA vs. Microserviços SOA é uma idéia geral, onde Microserviços são uma maneira muito específica de implementá-los  Favorece a Orquestração Centralizada  SOAP + HTTP SOA Microserviços  Favorece a Coreografia Distribuída  REST + HTTP/S = simples Diferenças de Implementação Todos os Princípios de SOA também se aplicam à Microserviços
  • 19. March 5, 2018 19DXC Proprietary and Confidential SOA vs. Microserviços - Equívocos “Microserviços eliminam a necessidade de Enterprise Service Bus” Não confuda Produto com o Padrão “Microserviços resolvem os problemas de SOA” Não confuda implementações mal sucessidas de SOA com problemas de SOA “Empresas como Netflix e Linkedin usam Microserviços, então nós devemos usar também” Netflix e LinkedIn são uma plataforma de negócios. Qual é o seu negócio? “Devemos escolher Microserviços ou SOA” Utilize ambos
  • 20. March 5, 2018 20DXC Proprietary and Confidential Pré Requisitos de Arquitetura
  • 21. March 5, 2018 21DXC Proprietary and Confidential Microserviços Força Mudança para Computação Distribuída Introduz enorme complexidade – monólitos não sofre disto API Aplicação Banco de Dados Infraestrutura API Aplicação Banco de Dados Infraestrutura API Aplicação Banco de Dados Infraestrutura API Aplicação Banco de Dados Infraestrutura Microserviço A Microserviço B Microserviço C Microserviço D •A Computação Distribuída é uma consequência natural dos Microserviços, visto que cada Microserviços tem seu próprio banco de dados •Compartilhamento de banco de dados através de Microserviços introduz acoplamento - muito ruim! •Haverá sempre Latência entre Microserviços • Toda a troca de dados entre Microserviços deve ser através da camada da API – não ao acesso aos banco de dados entre Microserviços • Deve-se implementar mensagens de alta velocidade entre Microserviços utilizando REST + HTTP. Provalmente isso não será suficiente. • Talvez existirá dados duplicados entre os banco de dados. Exemplo: dados do cliente.
  • 22. March 5, 2018 22DXC Proprietary and Confidential Orquestração •Usado em aplicações centralizadas, monolíticas •Frágil – centralizado por natureza •Cada “ação” interage com o sistema centralizado – ponto único de falha que não é muito flexível Coreografia •Usado em aplicações de Microserviços distribuídos •Resiliente – distribuído por natureza •Cada Microserviço assincronamente lança uma messagem que outro Microserviço pode consumir Microserviços Força Coreografia ao invés de Orquestração
  • 23. March 5, 2018 23DXC Proprietary and Confidential Orquestração x Coreografia • Orquestração: é a composição de serviços para criar um novo serviço ou para resolver uma tarefa de um processo de negócio. Neste caso, sempre há a figura de um ponto central. Um serviço ou uma atividade de negócio que coordena a chamada de outros serviços para compor uma função de maior granularidade. A orquestração de serviços é análoga a um método da orientação a objetos que faz chamadas de outros métodos. • Coreografia: a coreografia já é pré-determinada antes da sua execução. Por exemplo, quando um serviço é acionado e envia uma mensagem, outros serviços podem estar programados de ante-mão para receber ou não essa mensagem e dispararem outras ações. Chamamos este processo de evento. Serviços são acionados conforme a classe de eventos que ocorrem. Característica básica da Arquitetura Orientada a Eventos. Em um Middleware é possível atribuir esta característica através da criação de fluxos Publish/Subscribe
  • 24. March 5, 2018 24DXC Proprietary and Confidential Orquestração x Coreografia Orquestração Coreografia Livro: Building Microservices – Sam Newman
  • 25. March 5, 2018 25DXC Proprietary and Confidential REST: Representational State Transfer Fortemente associado com Microserviços, mas não é um requisite técnico HTTP REST XML ou JSON HTTP Response Codes •Alternativa muito mais simples que o SOAP •Utiliza GET, POST, PUT, DELETE, etc – Assim como os navegadores WEB •Versões de APIs - /v1.2/cliente •Pode utilizar XML or JSON •XML é muitas vezes melhor - suporte XPath, seletores de CSS •Não pode gerar “stubs” fortemente tipados REST =
  • 26. March 5, 2018 26DXC Proprietary and Confidential Arquitetura de Microserviços
  • 27. DXC Proprietary and Confidential Obrigado.