SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
Preparando sua arquitetura para
Micro-Serviços
Bruno Pereira
• Fundador e CEO da Rivendel Tecnologia
• Construiu sua 1a API REST em 2007 na Globo.com
• Cloud/DevOps desde 2009
• Atuando há muitos anos com times de Produto e
Operações que buscam arquiteturas escaláveis e
tolerantes a falhas
Sobre a Rivendel
• Fundada há 4 anos, especializada em Cloud/DevOps
• Parceiros AWS, Microsoft Azure e Google Cloud
• Também experientes em OpenStack/CloudStack
• Trabalha muito com Startups e também com Inovação/Digital em
enterprises.
• Suporta milhares de micro-serviços em Produção :)
• 150+ clientes atendidos em 4 anos. Mais de 60 DevOps.
Micro-Serviços
• Estilo de Arquitetura que usa componentes pequenos e com
baixo acoplamento
• Cada micro-serviço geralmente implementa uma pequena função
de negócio que compõe aplicações maiores
• Permitem o desacoplamento tecnológico com o desenvolvimento
usando múltiplas linguagens e frameworks harmonicamente na
arquitetura
Micro-Serviços
Micro-Serviços
Micro-Serviços
Então eu já devo começar minha
aplicação com micro-serviços?
Startups/Inovação
“Startups são organizações temporárias
projetadas para buscar um modelo de
negócios repetível e escalável”
Steve Blank
Premissa: se estamos inovando, ainda não conhecemos o
modelo de negócios que dará certo (e se dará)
Startups/Inovação
Enquanto você está validando seu produto com ciclos
rápidos, é muito mais fácil e barato usar monolitos
vs
Preparando sua aplicação
para Micro-Serviços
Objetivos Gerais
• Construir arquiteturas escaláveis horizontalmente
• Arquiteturas tolerantes a falhas em múltiplos componentes
• Gestão de Mudança e deploys sem dor
Desafios Comuns
• Controle do Estado em instâncias individuais
• Componentes que permitam aumentar linearmente a escrita
• Alta disponibilidade geográfica
• Processos de deploy mais leves e seguros
Controle de Estado em instâncias individuais
• Sessões Web/HTTP
• Uploads e gerenciamento de arquivos locais
• Caches locais
Como resolver?
Controle de Estado em instâncias individuais
• Sessões Web/HTTP
• Repositório de sessão compartilhado: Memcached, Redis,
DynamoDB, etc
• Uploads e gerenciamento de arquivos locais
• Sistema de arquivos distribuído e compartilhado: S3, Azure
Blob, OpenStack Swift, GlusterFS, etc
• Caches locais
• Sistemas de cache distribuídos: memcached, redis, Infinispan,
Elastic Search, etc
Componentes que aumentem linearmente a escrita
• Bancos de dados relacionais são os vilões comuns
• Capacidade de escrita limitada pela capacidade de 1 único nó
• Topologias multi-master são raras e normalmente caras
Como resolver?
Componentes que aumentem linearmente a escrita
• Usar outros tipos de bancos de dados em conjunto com o
relacional
• Muitos bancos NoSql suportam particionamento: CAP Theorem
• Implementar o máximo de processamento assíncrono, com
abordagens de retentativas e capacidade de controlar a vazão
Alta disponibilidade geográfica
• Falhas em datacenters individuais são comuns
• Falhas em componentes individuais são ainda mais comuns
• Cada vez mais precisaremos de arquiteturas distribuídas de alto
volume
Como resolver?
Alta disponibilidade geográfica
• Falhas em datacenters individuais são comuns
• Topologias multi-datacenter, com nuvens públicas ou híbridas
• Falhas em componentes individuais são ainda mais comuns
• Privilegiar componentes de software que permitam replicação
distribuída e preferencialmente sharding
• Cada vez mais precisaremos de arquiteturas distribuídas de alto
volume
• Avaliar o uso de componentes clusterizáveis e sem limitações
de armazenamento, escrita e leitura
Inspiração - 12 Factor App
I - Base de Código
• Base de código em repositórios independentes para cada micro-
serviço e com Pipelines independentes
II - Dependências
• Declare e isole as dependências
• Matriz de resiliência
III - Configurações
• Gerência de configuração fácil de automatizar e manter
IV - Serviços de Apoio
• Tratar os serviços de apoio também como micro-serviços e
dependências desacopladas
V - Build, Release, Run
• Pipelines com etapas distintas e bem granulares
VI - Processos
• Execute a aplicação como um ou mais processos que não
armazenam estado
• Infraestrutura imutável
VII - Vínculo de porta
• Exporte serviços fazendo bindings nas portas
• Usar sempre DNS para permitir indireção e a melhor resolução
VIII - Concorrência
• Dimensione por um modelo de processo
• Testes de carga validam capacidade do processo e o quanto a
arquitetura cresce linearmente aumentando as unidades
• Ninguém mais precisa de Appliance de Teste de carga :)
IX - Descartabilidade
• Maximizar a robustez com inicialização e desligamento rápido
• Ouvi falar em Containers??
X - Dev/Prod Semelhantes
• Mantenha os ambientes o mais próximos possível
• Infrastructure as Code :)
XI - Logs
• Trate Logs como fluxo de eventos
• Centralizadores de logs permitem escalabilidade horizontal e
melhor visibilidade
XII - Processos Admin
• Ferramentas de administração separadas em processos pontuais
Como chegar lá?
Visão Geral do processo
• Automação em Ops: provisionamento de ambientes
automatizado e versionado
• Continuous Integration/Deploy: controle fino processo de build,
integração e deploy de cada aplicação em cada ambiente
• Orquestração: tipicamente um orquestrador gerencia todo o
ciclo de vida de containers
Considerações Adicionais
• Autenticação/Autorização especialmente para micro-serviços
expostos na internet
• Web Application Firewalls são recomendados
• API Gateways também
• Service Discovery: normalmente resolvido pelo orquestrador
• Monitoramento através de health checks ricos e métricas de
negócio
Cloud + Private PaaS
contato@rivendel.com.br
Obrigado!

Mais conteúdo relacionado

Mais procurados

DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...iMasters
 
Protegendo informações críticas na nuvem: PCI DSS
Protegendo informações críticas na nuvem: PCI DSSProtegendo informações críticas na nuvem: PCI DSS
Protegendo informações críticas na nuvem: PCI DSSAmazon Web Services LATAM
 
Conteineres no Microsoft Azure
Conteineres no Microsoft AzureConteineres no Microsoft Azure
Conteineres no Microsoft AzureFabio Hara
 
Movimentação de VMs para Microsoft Azure
Movimentação de VMs para Microsoft AzureMovimentação de VMs para Microsoft Azure
Movimentação de VMs para Microsoft AzureVinícius Apolinário
 
Windows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMSWindows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMSFabio Hara
 
Azure DevTest Labs
Azure DevTest LabsAzure DevTest Labs
Azure DevTest LabsFabio Hara
 
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poa
Reduza seu trabalho de gerenciamento do kubernetes   tdc 2018 poaReduza seu trabalho de gerenciamento do kubernetes   tdc 2018 poa
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poaFabio Hara
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...Tiago Marchetti Dolphine
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Renato Groff
 
Windows Server 2016 | Hyperconvergência
Windows Server 2016 | HyperconvergênciaWindows Server 2016 | Hyperconvergência
Windows Server 2016 | HyperconvergênciaFabio Hara
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureGiovanni Bassi
 
Gerenciamento de custos na cloud
Gerenciamento de custos na cloudGerenciamento de custos na cloud
Gerenciamento de custos na cloudMarcelo Anton
 
Serverless Framework - Creating serverless applications
Serverless Framework - Creating serverless applicationsServerless Framework - Creating serverless applications
Serverless Framework - Creating serverless applicationsWallison Marra
 
windows server 2012 e windows 8 = melhores juntos
windows server 2012 e windows 8 = melhores juntoswindows server 2012 e windows 8 = melhores juntos
windows server 2012 e windows 8 = melhores juntosFabio Hara
 
Migrando Aplicações Legadas para Nuvem
Migrando Aplicações Legadas para NuvemMigrando Aplicações Legadas para Nuvem
Migrando Aplicações Legadas para NuvemRafael Dos Santos
 
Desenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperDesenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperCesar Romero
 
Windows server 2012 e suas distribuições -SENAI Jandira
Windows server 2012 e suas distribuições  -SENAI JandiraWindows server 2012 e suas distribuições  -SENAI Jandira
Windows server 2012 e suas distribuições -SENAI JandiraJésus Lima
 

Mais procurados (20)

DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
 
Protegendo informações críticas na nuvem: PCI DSS
Protegendo informações críticas na nuvem: PCI DSSProtegendo informações críticas na nuvem: PCI DSS
Protegendo informações críticas na nuvem: PCI DSS
 
Conteineres no Microsoft Azure
Conteineres no Microsoft AzureConteineres no Microsoft Azure
Conteineres no Microsoft Azure
 
Movimentação de VMs para Microsoft Azure
Movimentação de VMs para Microsoft AzureMovimentação de VMs para Microsoft Azure
Movimentação de VMs para Microsoft Azure
 
Rails nas Nuvens
Rails nas NuvensRails nas Nuvens
Rails nas Nuvens
 
Windows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMSWindows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMS
 
Azure DevTest Labs
Azure DevTest LabsAzure DevTest Labs
Azure DevTest Labs
 
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poa
Reduza seu trabalho de gerenciamento do kubernetes   tdc 2018 poaReduza seu trabalho de gerenciamento do kubernetes   tdc 2018 poa
Reduza seu trabalho de gerenciamento do kubernetes tdc 2018 poa
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
 
O que é e como funciona um Servidor VPS
O que é e como funciona um Servidor VPSO que é e como funciona um Servidor VPS
O que é e como funciona um Servidor VPS
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
 
Windows Server 2016 | Hyperconvergência
Windows Server 2016 | HyperconvergênciaWindows Server 2016 | Hyperconvergência
Windows Server 2016 | Hyperconvergência
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows Azure
 
Gerenciamento de custos na cloud
Gerenciamento de custos na cloudGerenciamento de custos na cloud
Gerenciamento de custos na cloud
 
Serverless Framework - Creating serverless applications
Serverless Framework - Creating serverless applicationsServerless Framework - Creating serverless applications
Serverless Framework - Creating serverless applications
 
Microservices
MicroservicesMicroservices
Microservices
 
windows server 2012 e windows 8 = melhores juntos
windows server 2012 e windows 8 = melhores juntoswindows server 2012 e windows 8 = melhores juntos
windows server 2012 e windows 8 = melhores juntos
 
Migrando Aplicações Legadas para Nuvem
Migrando Aplicações Legadas para NuvemMigrando Aplicações Legadas para Nuvem
Migrando Aplicações Legadas para Nuvem
 
Desenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperDesenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack Developer
 
Windows server 2012 e suas distribuições -SENAI Jandira
Windows server 2012 e suas distribuições  -SENAI JandiraWindows server 2012 e suas distribuições  -SENAI Jandira
Windows server 2012 e suas distribuições -SENAI Jandira
 

Semelhante a Preparando sua arquitetura para microservicos

Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017Tchelinux
 
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Renato Groff
 
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...Bruno Luiz Pereira da Silva
 
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Renato Groff
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Renato Groffe
 
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +finalEscalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +finalAmazon Web Services LATAM
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Renato Groffe
 
Servidores Web
Servidores Web Servidores Web
Servidores Web bastosluis
 
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çosThiago Pereira
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingDaniel Checchia
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheDell Technologies
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
 
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Renato Groff
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Renato Groff
 

Semelhante a Preparando sua arquitetura para microservicos (20)

Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
Microserviços - Cristiano dos Santos Diedrich - Tchelinux Bento Gonçalves 2017
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
Construindo aplicações escaláveis com ASP.NET Core, Docker e o Microsoft Azur...
 
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
QCon 2015 - DevOps, Chef, Puppet e Ansible e como vender milhões na Black Fri...
 
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
Construindo APIs REST escaláveis na nuvem com Docker e Kubernetes - DEVPIRA F...
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
 
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +finalEscalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
 
Servidores Web
Servidores Web Servidores Web
Servidores Web
 
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
 
Docker.io:
Docker.io: Docker.io:
Docker.io:
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud Computing
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 

Preparando sua arquitetura para microservicos

  • 1. Preparando sua arquitetura para Micro-Serviços
  • 2. Bruno Pereira • Fundador e CEO da Rivendel Tecnologia • Construiu sua 1a API REST em 2007 na Globo.com • Cloud/DevOps desde 2009 • Atuando há muitos anos com times de Produto e Operações que buscam arquiteturas escaláveis e tolerantes a falhas
  • 3. Sobre a Rivendel • Fundada há 4 anos, especializada em Cloud/DevOps • Parceiros AWS, Microsoft Azure e Google Cloud • Também experientes em OpenStack/CloudStack • Trabalha muito com Startups e também com Inovação/Digital em enterprises. • Suporta milhares de micro-serviços em Produção :) • 150+ clientes atendidos em 4 anos. Mais de 60 DevOps.
  • 4. Micro-Serviços • Estilo de Arquitetura que usa componentes pequenos e com baixo acoplamento • Cada micro-serviço geralmente implementa uma pequena função de negócio que compõe aplicações maiores • Permitem o desacoplamento tecnológico com o desenvolvimento usando múltiplas linguagens e frameworks harmonicamente na arquitetura
  • 8. Então eu já devo começar minha aplicação com micro-serviços?
  • 9. Startups/Inovação “Startups são organizações temporárias projetadas para buscar um modelo de negócios repetível e escalável” Steve Blank Premissa: se estamos inovando, ainda não conhecemos o modelo de negócios que dará certo (e se dará)
  • 10. Startups/Inovação Enquanto você está validando seu produto com ciclos rápidos, é muito mais fácil e barato usar monolitos vs
  • 12. Objetivos Gerais • Construir arquiteturas escaláveis horizontalmente • Arquiteturas tolerantes a falhas em múltiplos componentes • Gestão de Mudança e deploys sem dor
  • 13. Desafios Comuns • Controle do Estado em instâncias individuais • Componentes que permitam aumentar linearmente a escrita • Alta disponibilidade geográfica • Processos de deploy mais leves e seguros
  • 14. Controle de Estado em instâncias individuais • Sessões Web/HTTP • Uploads e gerenciamento de arquivos locais • Caches locais
  • 16. Controle de Estado em instâncias individuais • Sessões Web/HTTP • Repositório de sessão compartilhado: Memcached, Redis, DynamoDB, etc • Uploads e gerenciamento de arquivos locais • Sistema de arquivos distribuído e compartilhado: S3, Azure Blob, OpenStack Swift, GlusterFS, etc • Caches locais • Sistemas de cache distribuídos: memcached, redis, Infinispan, Elastic Search, etc
  • 17. Componentes que aumentem linearmente a escrita • Bancos de dados relacionais são os vilões comuns • Capacidade de escrita limitada pela capacidade de 1 único nó • Topologias multi-master são raras e normalmente caras
  • 19. Componentes que aumentem linearmente a escrita • Usar outros tipos de bancos de dados em conjunto com o relacional • Muitos bancos NoSql suportam particionamento: CAP Theorem • Implementar o máximo de processamento assíncrono, com abordagens de retentativas e capacidade de controlar a vazão
  • 20. Alta disponibilidade geográfica • Falhas em datacenters individuais são comuns • Falhas em componentes individuais são ainda mais comuns • Cada vez mais precisaremos de arquiteturas distribuídas de alto volume
  • 22. Alta disponibilidade geográfica • Falhas em datacenters individuais são comuns • Topologias multi-datacenter, com nuvens públicas ou híbridas • Falhas em componentes individuais são ainda mais comuns • Privilegiar componentes de software que permitam replicação distribuída e preferencialmente sharding • Cada vez mais precisaremos de arquiteturas distribuídas de alto volume • Avaliar o uso de componentes clusterizáveis e sem limitações de armazenamento, escrita e leitura
  • 23. Inspiração - 12 Factor App
  • 24. I - Base de Código • Base de código em repositórios independentes para cada micro- serviço e com Pipelines independentes
  • 25. II - Dependências • Declare e isole as dependências • Matriz de resiliência
  • 26. III - Configurações • Gerência de configuração fácil de automatizar e manter
  • 27. IV - Serviços de Apoio • Tratar os serviços de apoio também como micro-serviços e dependências desacopladas
  • 28. V - Build, Release, Run • Pipelines com etapas distintas e bem granulares
  • 29. VI - Processos • Execute a aplicação como um ou mais processos que não armazenam estado • Infraestrutura imutável
  • 30. VII - Vínculo de porta • Exporte serviços fazendo bindings nas portas • Usar sempre DNS para permitir indireção e a melhor resolução
  • 31. VIII - Concorrência • Dimensione por um modelo de processo • Testes de carga validam capacidade do processo e o quanto a arquitetura cresce linearmente aumentando as unidades • Ninguém mais precisa de Appliance de Teste de carga :)
  • 32. IX - Descartabilidade • Maximizar a robustez com inicialização e desligamento rápido • Ouvi falar em Containers??
  • 33. X - Dev/Prod Semelhantes • Mantenha os ambientes o mais próximos possível • Infrastructure as Code :)
  • 34. XI - Logs • Trate Logs como fluxo de eventos • Centralizadores de logs permitem escalabilidade horizontal e melhor visibilidade
  • 35. XII - Processos Admin • Ferramentas de administração separadas em processos pontuais
  • 37. Visão Geral do processo • Automação em Ops: provisionamento de ambientes automatizado e versionado • Continuous Integration/Deploy: controle fino processo de build, integração e deploy de cada aplicação em cada ambiente • Orquestração: tipicamente um orquestrador gerencia todo o ciclo de vida de containers
  • 38. Considerações Adicionais • Autenticação/Autorização especialmente para micro-serviços expostos na internet • Web Application Firewalls são recomendados • API Gateways também • Service Discovery: normalmente resolvido pelo orquestrador • Monitoramento através de health checks ricos e métricas de negócio