microserviços - universidade metodista - eeti 2016

48
Microserviços UMA NOVA ARQUITETURA PARA A IMPLEMENTAÇÃO DE SOFTWARES SEMANA EETI 2016

Upload: renato-groff

Post on 16-Apr-2017

266 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Microserviços - Universidade Metodista - EETI 2016

MicroserviçosUMA NOVA ARQUITETURA PARA A IMPLEMENTAÇÃO DE SOFTWARES

SEMANA EETI 2016

Page 2: Microserviços - Universidade Metodista - EETI 2016

Renato Groffe Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT

Mais de 15 anos de experiência na área de Tecnologia

Pós-graduação em Engenharia de Software – ênfase em SOA

MBA em Business Intelligence

Graduação em Sistemas de Informação

Articulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, TechNet Wiki,

.NET Coders, Baixada Tech)

Técnico em Processamento de Dados

Contatos◦ Facebook: https://www.facebook.com/renatogroff◦ Canal .NET: https://www.facebook.com/canaldotnet◦ LinkedIn: http://br.linkedin.com/in/renatogroffe

Page 3: Microserviços - Universidade Metodista - EETI 2016

Agenda

◦ Aplicações Monolíticas

◦ Serviços: uma visão geral

◦ Microserviços: uma nova alternativa para serviços

Page 4: Microserviços - Universidade Metodista - EETI 2016

Aplicações Monolíticas

Page 5: Microserviços - Universidade Metodista - EETI 2016

Aplicações Monolíticas Estruturalmente mais simples → as diversas partes do sistema formam um único bloco

Desenvolvimento, testes e implantação acontecem de forma mais fácil

Uma boa abordagem para aplicações relativamente pequenas

Page 6: Microserviços - Universidade Metodista - EETI 2016

Aplicações Monolíticas – Problemas

Não é uma abordagem recomendável para aplicações mais complexas

Page 7: Microserviços - Universidade Metodista - EETI 2016

Aplicações Monolíticas – Problemas◦ A adoção de práticas de continuous

deployment torna-se mais difícil → indisponibilidade de todo o sistema durante implantações

◦ Costuma-se ficar preso a uma tecnologia

◦ Difícil entendimento e manutenção, com o crescimento da aplicação

Page 8: Microserviços - Universidade Metodista - EETI 2016

Aplicações Monolíticas – Problemas◦ Problemas em coordenar as ações em equipe

◦ Queda na qualidade do código com o decorrer do tempo

◦ Consumo maior de recursos (IDE, servidores de aplicação)

◦ Escalabilidade comprometida

Page 9: Microserviços - Universidade Metodista - EETI 2016

Solução para os problemas das aplicações monolíticas?

Page 10: Microserviços - Universidade Metodista - EETI 2016

O velho “dividir para conquistar” → Serviços

Page 11: Microserviços - Universidade Metodista - EETI 2016

Modelos arquiteturais possíveis - Serviços SOA (Service Oriented Architecture)

REST (Representational State Transfer)

Microserviços

Page 12: Microserviços - Universidade Metodista - EETI 2016

SOA – Definição de serviço◦ Unidade básica para a implementação de

serviços em conformidade com esta arquitetura

◦ Um componente de software com capacidades, as quais são implementadas sob a forma de operações (métodos)

◦ As capacidades podem ser vistas como funcionalidades das quais um ou mais sistemas dependem

Page 13: Microserviços - Universidade Metodista - EETI 2016

SOA – Princípios (segundo Thomas Erl)◦ Reusabilidade

◦ Autonomia

◦ Contrato Padronizado

◦ Baixo Acoplamento

◦ Abstração

◦ Independência de Estado (Stateless)

◦ Visibilidade

◦ Capacidade de Composição

Page 14: Microserviços - Universidade Metodista - EETI 2016

SOA – Problemas comuns◦ Falta de consenso da indústria em como

implementar esta arquitetura (inúmeras especificações complementares para Web Services)

◦ Dificuldades em encontrar a melhor forma de dividir algo maior em partes menores

Page 15: Microserviços - Universidade Metodista - EETI 2016

REST – Visão Geral◦ Modelo arquitetural proposto por Roy Fielding em 2000, estando

baseado no conceito de recurso e no uso de requisições HTTP

◦ Recurso → elemento (conjunto de dados) do qual uma aplicação depende, normalmente representando um item de negócio

◦ Utilização de JSON ou XML para representar os dados associados a um recurso

◦ RESTful Web Services → serviços seguindo esta arquitetura

Page 16: Microserviços - Universidade Metodista - EETI 2016

REST – Representação Esquemática

Page 17: Microserviços - Universidade Metodista - EETI 2016

Microserviços, uma nova alternativa para serviços

Page 18: Microserviços - Universidade Metodista - EETI 2016

Microserviços – O que são?

Serviços pequenos e autônomos trabalhando de forma conjunta, a fim de atender a uma demanda específica

Page 19: Microserviços - Universidade Metodista - EETI 2016

Qual o tamanho considerado idealpara um microservice?◦ Não existe um padrão exato para definir o

tamanho de um microserviço

◦ Um caso de uso específico pode ser a origem de um pequeno serviço

◦ Alguns conceitos propostos por Robert C. Martin (“Uncle Bob”) servem de diretrizes:

◦ Coesão◦ Princípio da Responsabilidade Única

Page 20: Microserviços - Universidade Metodista - EETI 2016

Autonomia em um microservice?◦ Indica o grau de independência de um serviço em

relação a influências externas

◦ Um microserviço deve contribuir para um baixo acoplamento

◦ Deploy como um componente isolado

◦ Alterações devem acontecer sem afetar os consumidores de um serviço (sempre que possível)

Page 21: Microserviços - Universidade Metodista - EETI 2016

Microserviços - Benefícios◦ Adoção de novas tecnologias com maior facilidade

◦ Alta disponibilidade

◦ Escalabilidade

◦ Facilidades no Deployment

◦ Melhor organização do trabalho

Page 22: Microserviços - Universidade Metodista - EETI 2016

Microserviços - BenefíciosAdoção de novas tecnologias com maior facilidade

◦ Escolha da alternativa mais adequada para cada contexto

◦ Facilidade em acompanhar as tecnologias em alta num determinado momento

◦ Impacto mínimo em aplicações que dependam de um microserviço

◦ Evolução de partes de um projeto sem grandes impactos

Page 23: Microserviços - Universidade Metodista - EETI 2016

Microserviços - BenefíciosAlta disponibilidade

◦ Problemas costumam ser isolados

◦ Falhas em partes específicas ainda permitiriam o funcionamento de outros módulos de um sistema

Page 24: Microserviços - Universidade Metodista - EETI 2016

Microserviços - BenefíciosEscalabilidade

◦ Torna-se mais fácil expandir a capacidade de processamento para partes específicas de um sistema

◦ A opção por soluções de cloud computing (como Azure e Amazon Web Services) tem um papel importante neste aspecto

Page 25: Microserviços - Universidade Metodista - EETI 2016

Microserviços - BenefíciosFacilidades no Deployment

◦ Torna-se mais simples a adoção de um processo de continuous deployment

◦ Um microserviço pode ser atualizado sem que todo o sistema deixe de operar

◦ Mudanças (que sempre existirão) costumam causar um menor impacto

Page 26: Microserviços - Universidade Metodista - EETI 2016

Microserviços - BenefíciosMelhor organização do trabalho

◦ Foco em produtos, não projetos

◦ Times pequenos e organizados em torno de capacidades de negócios → Cross-functional teams

◦ Código mais simples e melhor estruturado

Page 27: Microserviços - Universidade Metodista - EETI 2016

Microserviços - BenefíciosReusabilidade

◦ Componentização de funcionalidades de negócio

◦ Diferentes tipos de aplicações (Web, desktop, mobile) podem consumir as funcionalidades de um microserviço

Page 28: Microserviços - Universidade Metodista - EETI 2016

Como implementar uma arquitetura de Microserviços?

◦ Seguindo alguns princípios propostos por especialistas da área de software

◦ Adotando serviços oferecidos por uma solução de cloud computing, como o Microsoft Azure

Page 29: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Princípios de Desenvolvimento (segundo Sam Newman)◦ Modelagem com base em conceitos do negócio

◦ Adotar uma cultura de automação

◦ Ocultar detalhes internos de implementação

◦ Descentralização

◦ Deployment independente

◦ Isolamento de Falhas

◦ Monitoramento

Page 30: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Modelagem◦ Adoção de práticas de Domain-Driven Design

◦ Um maior alinhamento com a área de negócios

◦ Facilidade em acompanhar as mudanças do negócio

◦ Evita-se uma modelagem falha e baseada puramente em aspectos técnicos

Page 31: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Cultura de AutomaçãoAdoção de práticas de DevOps:

◦ Testes automatizados

◦ Deployment contínuo

◦ Uso de soluções de ALM como o Team Foundation Server da Microsoft

Page 32: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Ocultar ImplementaçãoSer agnóstico do ponto de vista da tecnologia (ideia de “caixa-preta”):

◦ Comunicação baseada no modelo REST (requisições HTTP + JSON) → Padrão de mercado atualmente

◦ Capacidade de um serviço evoluir sem efeitos colaterais

◦ Consumidores não precisam conhecer detalhes internos de um microserviço

Page 33: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Descentralização◦ Times multifuncionais cuidando de um produto

(ao invés de diferentes equipes para cada fase do desenvolvimento)

◦ Evitar o uso de soluções de Enterprise Service Bus (ESB) ou de orquestração

◦ Bases de dados descentralizadas (normalmente, uma para cada serviço)

Page 34: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Deployment independente

Habilidade de implantar um serviço independentemente de outros

Page 35: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Deployment independenteDiversas abordagens para implantação:

◦ Uma única instância de um serviço por host

◦ Múltiplas instâncias de um serviço por host

◦ Uma instância de um serviço por máquina virtual

◦ Uma instância de serviço por Container → Docker

* A plataforma Azure oferece suporte a todos estes cenários

Page 36: Microserviços - Universidade Metodista - EETI 2016

Um pouco mais sobre ContainersO que são?

◦ Unidade de deployment

◦ Ambiente isolado

◦ Coleção isolada de recursos

Page 37: Microserviços - Universidade Metodista - EETI 2016

Um pouco mais sobre Containers

Physical Server

Hypervisor

Guest OS Guest OS

AppFramework

AppFramework

AppA

AppA

Guest OS

AppFramework

AppB

VM

Host OS

Page 38: Microserviços - Universidade Metodista - EETI 2016

Um pouco mais sobre Containers

Physical Server

Host OS

Container Manager

AppFramework

AppA

AppFramework

AppB

AppB

AppB

Container

Page 39: Microserviços - Universidade Metodista - EETI 2016

Um pouco mais sobre ContainersQuais os benefícios?

◦ Implantação rápida

◦ Processo conduzido de forma repetível e confiável

Page 40: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Um pouco mais sobre ContainersCenários

◦ Desenvolvimento/Testes

◦ Excelentes para microserviços

◦ Docker é atualmente a principal solução, baseando-se para isto no uso de Linux

◦ Windows Server 2016 terá suporte nativo

Page 41: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Isolamento de FalhasGarantir a operação de um sistema mesmo diante de problemas requer:

◦ Um planejamento adequado prevendo falhas e o tratamento das mesmas

◦ Algum tipo de sacrifício em termos de disponibilidade ou consistência

Page 42: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Monitoramento◦ Estipular métricas a serem analisadas

◦ Definir como e onde tais métricas serão coletadas

◦ Elaborar uma estratégia de log comum a todos os microserviços de um projeto

◦ Cuidados em não sobrecarregar o processamento dos serviços com ações de instrumentação

Page 43: Microserviços - Universidade Metodista - EETI 2016

Microserviços – MonitoramentoNo caso do Microsoft Azure, uma alternativa seria o uso do Application Insights:

◦ Este mecanismo suporta além de .NET outras plataformas, como Java, Node.js, PHP e Python

◦ Conta com meios para a coleta de dados em modo server-side, client-side ou mobile

◦ Disponibiliza dashboards para a análise dos dados coletados

Page 44: Microserviços - Universidade Metodista - EETI 2016

Microserviços – MonitoramentoExemplo de dashboard gerado pelo Application Insights:

Page 45: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Casos de Sucesso

Page 46: Microserviços - Universidade Metodista - EETI 2016

Microserviços – Outras Referências◦ Microservice architecture - Chris Richardson

http://microservices.io/index.html

◦ Microservices - Martin Fowlerhttp://martinfowler.com/articles/microservices.html

Page 47: Microserviços - Universidade Metodista - EETI 2016

Perguntas?SLIDESHARE:

http://bit.ly/microservices-metodista-eeti-2016

Page 48: Microserviços - Universidade Metodista - EETI 2016

Obrigado!

SEMANA EETI 2016