04 - Felipe Oliveira - Think Decoupled! (SOA)

Preview:

DESCRIPTION

 

Citation preview

Think Decoupled Felipe Olivera - felipe.oliveira@soaexpert.com.br

Twitter: @soaexpertbr

Agenda Introdução { Princípios, Benefícios, Evolução e História, Encapsulamento, Mitos}

Desafios do mundo corporativo {Arquitetura Distribuída, Ótica de Negócios}

SOA Services { Providers, WebServices, Operações Síncronas, Operações Assíncronas, SOAP, WS(*) – Overview}

Stack Plataforma {Management, Composição, Governança, ESB, BAM }

Modelagem Granularidade {Task Services, Entity Services, DDD e sua relação com SOA}

RESTFul Style / WebHumana {Recursos, Interfaces, Comparativo com WS(*)}

O que é SOA ?

”Arquitetura Orientada a Serviços (SOA) é um framework organizacional e técnico que permite uma empresa distribuir suas funcionalidades de negócio, independente de plataforma tecnológica, como peças para construção de aplicações “ – Carl August Simon

E porque utilizar ?

Benefícios Chave

Oferecer uma melhor produtividade, agilidade tanto para área de negócios quanto TI

Permitir que a equipe de TI desenvolva serviços em alinhamento às expectativas do negócio

Excelente tempo de resposta, melhorando a experiência do usuário final do software (SOA ebay)

Encapsular a complexidade tecnológica de integrações entre as mais diferentes plataformas da empresa, segurança e gestão de SLA

Evolução História – Same Old Architecture

Década Unidade de Reúso Escopo

1960 Funções Programas

1980 Objetos Packages

1990 Componentes Aplicações

>2000 Serviços Empresas

Interface-Driven Design : CORBA – EJBs

Desafios do Mundo Corporativo

Desenvolvimento de aplicações e problemas de integração:

Falta de flexibilidade

Falta de padrões

Projetos com custos altos e de longa duração

Metodologias tradicionais:

Point-to-point

Ferramentas Integradoras (Tuxedo,MQSeries)/middleware/EAI

Business process-based integration

Visão Point-to-Point

Expandindo apenas um bit ….

Eletronic Data Interchange

Cenário comum de Integração

Primeira Geração de Integração - EAI

Do XML para WebServices

XML uma derivação do SGML – Standard Generalized Markup Language, anos 60.

XML ganha popularidade nos anos 90 , movimento e-business.

Schema Definition Language (XSD) e XSL-XSLT ( Transformation Language), são pontos chave da tecnologia XML.

SOA Services

-Contrato

-Interface

-Implementação

-Business Logic

-Data

WebServices breve histórico

Em 2000 o W3C recebeu uma submissão do SOAP – Simple Object Protocol.

Muitas companhias viram o potencial para avançar o estado da tecnologia de e-business, criando uma forma de se comunicar através da internet.

A peça central do conceito é a Interface Pública, que permite sua invocação através de assinatura e identificação – WSDL ( Web Service Description Language) – 2001.

WebServices breve histórico

Em 2000 o W3C recebeu uma submissão do SOAP – Simple Object Protocol.

Muitas companhias viram o potencial para avançar o estado da tecnologia de e-business, criando uma forma de se comunicar através da internet.

A peça central do conceito é a Interface Pública, que permite sua invocação através de assinatura e identificação – WSDL ( Web Service Description Language) – 2001.

WebServices breve histórico a Revanche !

Outros formatos como XML-RPC foram considerados, mas a indútria acabou adotando o SOAP como padrão.

Primeira geração trazia ainda a especificação UDDI , originalmente desenvolvida pela UDDI.org

Início das plataformas de produtos MOMS – Messaging Oriented Middleware.

WebServices começam de fato a facilitar a troca de informações em sistemas B2B e segue como alternativa ao EDI – Eletronic Data Interchange.

Papéis do WebService

Como os serviços são desenhados ?

Como os serviços encapsulam a lógica ?

WebService Funcionando

Operações Síncronas Exemplo

Operações Síncronas

Lembra bastante a forma de invocação RPC

Fortemente acoplada entre o cliente e a camada de negócios

São ideais para operações de negócios rápidas com retorno de resultados

São melhor usadas pelas aplicações da própria companhia.

Operações Assíncronas

Retorna uma resposta SOAP vazia, se a resposta for requerida.

Desacopla o cliente do processamento de negócio

Promove o desacoplamento e melhor uso dos recursos

É ideal para integração com parceiros externos à companhia

Padrões WebService

Simple Object Access Protocol (SOAP) descreve o formato de comunicação da mensagem entre as partes envolvidas num Web Service.

Web Services Description Language (WSDL) define um mecanismo para descrever as operações de um Web Service de uma forma neutra às plataformas.

Universal Description, Discovery and Integration (UDDI), facilita o registro e busca dos Web Services transformando as descrições em hierarquia, facilitando assim a busca.

SOAP - Simple Access Protocol

Solução testada, há 10 anos no mercado garantindo interoperabilidade entre as diferentes plataformas e sistemas.

Protocolo lógico, que navega em cima de outros protocolos, desacoplado das camadas de transporte !

SOAP – Body exemplo

SOAP Carregando JSON !! <s:Body>[{“FirstName":"Foo","LastName":"Bar"}]</s:Body>

WebServices sozinhos não implicam em SOA !

SOA Platform

SOA Conceitos

Web Services

Request-Driven Event-Driven

REST RSS,

Atom

WOA Messaging

Queuing PubSub

Enterprise Service Bus

ESB Características 2a geração

- Suporte às tecnologias heterogêneas - Suporte aos diferentes paradigmas de comunicação (Assíncrono, Síncrono) - Transparência de localização - Mediação - Transformação de mensagens - Roteamento de mensagens - Enriquecimento de mensagens - Agregação de Serviços -Balanceamento de carga (Load Balance)

- Administração da demanda de processamento (Throttling) - Reforço de Segurança - Monitoria de Qualidade do Serviço (SLA e QoS) - REST / Representational State Transfer e JSON em cima do ESB

BPEL - Composição de Serviços

Os webservices podem ser combinados de duas maneiras:

Orquestração

Coreografia

O BPEL se preocupa com: Manter estado da transação por longo período, paralelizar o processo e compensação em casos de falha

Business Analysis Monitoring - BAM

Domain-Driven Design & SOA

Representational State Transfer

REST é uma um estilo arquitetural Request-driven, baseado na Web – http

Criado por um dos principais autores do HTTP – Roy Fielding

É uma maneira de encarar seu ativo de software como “Recursos”

Distribui o estado desses recursos através de hypermedia

Recursos

Podem ser praticamente qualquer coisa:

Uma transação

Um post num blog

Um cliente

• Recurso é acessado através de Representações !

• Cada recurso implementa uma interface padrão (uniform interface)

• Recursos possuem nomes e endereços (URIs)

Recursos exemplos:

http://soaexpert.com.br/cursos | Todos os cursos

http://soaexpert.com.br/cursos/1 | SOA Foundation

http://soaexpert.com.br/cursos/2 | Integration Specialist

Representações

Tornado seu sistema mais amigável para integrações:

- A idéia é substituir a exposição de “Recursos” por “endpoints”

- Cada Recurso, pode ter uma ou mais representação como: XML ou JSON

Interface Uniforme

http://soaexpert.com.br /cursos/1

GET() - obtém os detalhes de um curso específico

PUT () - atualiza um curso

POST() - adiciona um item no curso

DELETE() – apaga um curso

Princípios Chave do REST

Dê a todas as coisas um Identificador (ID)

Vincule as “coisas”

Utiize métodos padronizados (Uniform Interface)

Recursos com múltiplas representações (XML, JSON..)

Comunique sem estado (Stateless)

Dê a todas as coisas um ID

Trabalhando com conjuntos individuais http://soaexpert.com.br/pedidos/2007/11 http://soaexpert.com.br/produtos?cor=verde

Alguns exemplos de URIs que poderíamos ter: http://soaexpert.com.br/clientes/1234 http://soaexpert.com.br/pedidos/2007/10/776654 http://soaexpert.com.br/produtos/4554 http://soaexpert.com.br/processos/aumento-salario-234

Vincule as coisas - HATEOAS

Significa: “Hipermídia como motor do estado do aplicativo”.

<pedido self="http://soaexpert.com.br/clientes/1234">

<valor>23</valor>

<produto ref="http://soaexpert.com.br/produtos/4554"></produto>

<cliente ref="http://soaexpert.com.br/clientes/1234"></cliente>

</pedido>

Utilize os métodos padrão

Utilize os métodos padrão a Revanche !!

Utilize os métodos padrão Ultimate !!

Recursos com múltiplas Representações

Modelo de Maturidade REST

Modelo de Maturidade REST

RESTful Stack

WS-(*) vs RESTful

Gerenciando estado

Descrição dos serviços

Serviços Assíncronos

Não contavam com minha Astúcia

Para onde estamos indo ?

E porque o design orientado a Web ?

Obrigado !! “Quer conhecer mais de SOA e Cloud ? Visitem –

www.soacloud.com.br“

Recommended