arquitetura de serviços - soa, rest, microservices e a plataforma .net

56
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET Renato Groffe - MTAC Novembro/2015

Upload: renato-groff

Post on 15-Apr-2017

523 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Arquitetura de Serviços -SOA, REST, Microservices e a

plataforma .NETRenato Groffe - MTAC

Novembro/2015

Page 2: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Apresentação – Renato Groffe

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

Técnico em Processamento de Dados

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

Page 3: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Contatos Página no Facebook

https://www.facebook.com/RenatoGroffeSW

Perfil no Facebookhttps://www.facebook.com/renatogroff

Canal .NEThttps://www.facebook.com/canaldotnet

LinkedInhttp://br.linkedin.com/in/renatogroffe

Page 4: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Integração entre sistemas – uma visão geral

Arquitetura Orientada a Serviços (SOA)

REST

Microservices

Serviços na plataforma .NET

Referências

Agenda

Page 5: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Integração entre sistemas

Comunicação por meio de arquivos

Web Services (Serviços)

Page 6: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Comunicaçao por meio de arquivos Uma das primeiras formas de integração

Ainda em uso atualmente, normalmente na transferência de grandes lotes de informações

Comum em aplicações criadas para mainframe e soluções de BI (Business Intelligence)

Texto ou outro formatos (principalmente .csv, .xls/.xlsx)

Page 7: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Web Services Comunicação em tempo real

Transações online (e-commerce, movimentações bancárias)

Protocolo HTTP/HTTPS

Uso do formato XML, através do procotolo SOAP

Page 8: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Web Services – Exemplo de mensagem SOAP

Fonte:http://www-01.ibm.com/support/knowledgecenter/SSKM8N_8.0.0/com.ibm.etools.mft.doc/ac55780_.htm

Page 9: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA (Service Oriented Architecture) Abordagem também conhecida como Arquitetura Orientada a Serviços

Pessoas Processos

Page 10: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA – Visão Geral Alinhamento das estratégicas de negócio

com a TI

Uso de Web Services na integração entre sistemas

Engloba diretrizes, padrões e boas práticas para a implementação de serviços

Page 11: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Definição de serviço segundo SOA

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

Notações para a representação de serviços (segundo Thomas Erl):

Page 12: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA - Benefícios Reusabilidade

Interoperabilidade (entre diferentes plataformas)

Uma maior organização dos processos de negócio (graças à ênfase na análise e modelagem dos mesmos)

Reduções no tempo e custo de implementação de novos projetos

Page 13: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA - Cuidados Necessidade de uma equipe capacitada e familiarizada com

conceitos de SOA

Mudanças drásticas em um serviço podem produzir efeitos colaterais em outra aplicações

Segurança na transmissão de informações

Análise criteriosa quanto à necessidade de implementação de um serviço (potencial de reuso, questões de infraestrutura)

Page 14: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA – Tipos de Serviço (Thomas Erl) Entity Services → utilizados em operações de CRUD (inclusão,

exclusão, alteração e / ou consulta a informações)

Utility Services → funcionalidades que não estejam diretamente relacionadas ao negócio (log, envio de e-mail, etc.)

Task Services → automação de processos de negócio, com o consumo de Entity e/ou Utility Services

Orchestrated Task Services → lógica de orquestração, controlando o fluxo em composições que envolvam Entity, Utility e Task Services

Page 15: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA – Princípios de Design de Serviços

Contrato padronizado

◦ Serviços SOAP:

Uso de XML

Web Services Description Language (WSDL) → descrição da interface de um serviço

XML Schema Definition Language (XSD) → definições detalhando a estrutura dos objetos manipulados por um serviço

Geração de proxies para consumir um serviço

Acoplamento

◦ Menor, graças à separação de funcionalidades em serviços

Abstração

◦ Ideia de “caixa-preta”

◦ Ocultação de detalhes técnicos (infraestrutura, banco de dados, controle de acesso, etc.)

Page 16: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA – Princípios de Design de Serviços Reusabilidade

◦ Pesar questões como reuso imediato ou futuro

Autonomia

◦ Independência de influências externas

◦ Tende a diminuir com a composição de serviços

Independência de Estado

◦ Serviços stateless

◦ Evitar ao máximo o armazenamento de informações em memória

Page 17: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA – Princípios de Design de Serviços Visibilidade

◦ Capacidade se descobrir e interpretar a estrutura exposta por um serviço

◦ Serviços SOAP empregam padrões como: UDDI (Universal Description, Discovery and Integration)

WS-MetadataExchange → especificação para a geração de documentos XML com a estrutura de um serviço

Page 18: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA – Princípios de Design de Serviços Capacidade de Composição

◦ Princípio diretamente relacionado à questão do reuso

◦ Composição primitiva

Page 19: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA – Princípios de Design de Serviços Capacidade de Composição

◦ Composição complexa

◦ Composição complexa

Page 20: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA – Princípios de Design de Serviços Granularidade

◦ Escopo abrangido pelas capacidades de um serviço

◦ A granularidade é determinada com base na quantidade de funcionalidades encapsuladas por um serviço

Page 21: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

SOA – Princípios de Design de Serviços

Granularidade

◦ Granularidade fina (fine-grained) Maior potencial de reusabilidade Entity e Utility Services são bons

exemplos

◦ Granularidade grossa (coarse-grained)

Menores chances de reaproveitamento

Algum acoplamento com outras construções

Não significa, contudo, um mau design

Task e Orchestrated Task Services costumam ser exemplos típicos

Page 22: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

REST (Representational State Transfer)

Page 23: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

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 dependente, normalmente representando um item de negócio

RESTful Web Services → serviços seguindo esta arquitetura

Page 24: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

REST – Representação Esquemática

Page 25: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

REST – Arquitetura Uso de métodos HTTP de forma explícita

◦ POST → criação de um novo recurso

◦ GET → consulta para obtenção de um ou mais recursos

◦ PUT → alteração do conteúdo ou estado de um recurso

◦ DELETE → remoção/exclusão de um recurso

Page 26: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

REST – Arquitetura Exposição de recursos por meio de URIs

◦ URI → Uniform Resource Identifier

◦ URL → Uniform Resource Locator, tipo de endereço de acesso baseado no conceito de URI

Page 27: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

REST – Arquitetura A representação de recursos empregando formatos como

XML e JSON → menor volume de informações trafegadas

Page 28: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

REST – Arquitetura Independência de estado

◦ Performance e escalabilidade (capacidade de se adequar a demandas crescentes) são grandes preocupações em projetos críticos

◦ Importantíssimo que os serviços sejam “stateless”, minimizando assim o uso de memória

Page 29: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Microservices

Page 30: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Microservices – Visão Geral 2 abordagens de implementação

◦ Aplicações Monolíticas

◦ Microservices

Page 31: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Aplicações Monolíticas - Características Estruturalmente mais simples

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

Uma boa abordagem para aplicações relativamente pequenas

Page 32: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Aplicações Monolíticas - Problemas Não é uma abordagem recomendável para aplicações mais complexas

◦ 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

◦ 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 33: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Arquitetura de Microservices Baseada em componentização, através

do uso de serviços

Serviços “pequenos”→ Princípio de Responsabilidade, coesão

Foco em produtos, não projetos

Organização em torno de capacidades de negócios → Cross-functional teams

Desenvolvimento e implantação de cada serviço de forma independente

Comunicação baseada no modelo REST (requisições HTTP + JSON)

Dados descentralizados

Page 34: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Microservices - Benefícios Adoção de novas tecnologias com maior facilidade

Alta disponibilidade

Escalabilidade

Facilidades no Deployment

Melhor organização do trabalho

Page 35: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Microservices - Infraestrutura 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

Page 36: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Microservices – Cases de Sucesso

Page 37: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET

Page 38: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET 2 tecnologias principais atualmente:

◦ WCF (Windows Communication Foundation)

◦ ASP.NET Web API (ou simplesmente “Web API”)

◦ Estudo comparativo com referências:http://netcoders.com.br/blog/wcf-web-api-estudo-comparativo/

Page 39: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Visão geral da Arquitetura

◦ WCF → A implementação de um serviço envolve a especificação de um endereço, de um binding (configurações) e de um contrato (interface descrevendo as operações suportadas).

◦ Web API → Serviços são implementados como Controllers, nos quais as funcionalidades disponíveis correspondem às Actions. Importante destacar que com o ASP.NET 5, os frameworks MVC e Web API foram unificados em um único modelo chamado MVC 6.

Page 40: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Configuração

◦ WCF → No arquivo .config de uma aplicação ou ainda, a partir de classes que compõem o próprio framework WCF.

◦ Web API → Via código-fonte, através de instruções definindo o comportamento de um serviço.

Page 41: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Protocolos suportados

◦ WCF → HTTP/HTTPS, TCP, P2P, MSMQ (Microsoft Message Queuing), dentre outros. Uma mesma solução WCF pode ser projetada para suportar mais de um protocolo (HTTP/HTTPS e TCP, por exemplo).

◦ Web API → Somente HTTP/HTTPS.

Page 42: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Formatos suportados

◦ WCF → SOAP, XML, JSON, binário, MTOM.

◦ Web API → XML, JSON.

Page 43: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Manipulação de dados

◦ WCF → Criação de classes convencionais (com a exposição de propriedades públicas) ou Data Contracts (propriedades expostas através do serviço são marcadas como Data Members).

◦ Web API → Classes convencionais (as propriedades públicas serão automaticamente expostas aos consumidores de um serviço), além de tipos anônimos ou dinâmicos.

Page 44: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Padrões para troca de mensagens

◦ WCF → Request-Reply, One Way, Duplex.

◦ Web API → HTTP request/response, com capacidades adicionais através do uso de WebSockets ou SignalR.

Page 45: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Documentação/descrição de um serviço

◦ WCF → Serviços baseados em SOAP têm sua estrutura detalhada automaticamente, através do uso do padrão WSDL (Web Services Description Language).

◦ Web API → Geração automática de documentação a partir do site da aplicação ou ainda, através de soluções como Swagger.

Page 46: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Hospedagem

◦ WCF → Conta com classes para self-host, além da possibilidade de hospedagem em servidores IIS.

◦ Web API → Hospedagem em servidores IIS. Há a possibilidade ainda de self-host, através do mecanismo conhecido como OWIN (Open Web Interface for .NET).

Page 47: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Serviços RESTful

◦ WCF → Implementados através de ajustes de configuração, com a opção de uso de JSON e/ou XML.

◦ Web API → Por default um serviço Web API é RESTful (suportando tanto JSON, quanto XML).

Page 48: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Integração com JavaScript/jQuery

◦ WCF → Possível através da criação de serviços RESTful.

◦ Web API → Suportada por default.

Page 49: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Integração com outras plataformas /

linguagens

◦ WCF → Possível através da implementação de serviços SOAP ou RESTful.

◦ Web API → Possível, já que todo serviço Web API é RESTful.

Page 50: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Segurança

◦ WCF → Baseada no uso de SSL, além de certificados digitais, NTLM, Kerberos e tokens.

◦ Web API → SSL e autenticação baseada em tokens são possibilidades.

Page 51: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Serviços na plataforma .NET Open Source

◦ Tanto WCF, como o ASP.NET Web API, são hoje tecnologias abertas.

Page 52: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Referências – Arquitetura de Serviços Alguns livros – Thomas Erl:

Page 53: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Referências – Arquitetura de Serviços Microservices – Sam Newman:

Page 54: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Referências – Arquitetura de Serviços Microservice architecture - Chris Richardson

http://microservices.io/index.html

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

Thomas Erl – Sitehttp://www.thomaserl.com/

Page 55: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Dúvidas, sugestões???

Page 56: Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET

Obrigado!!!