devcommerce conference 2016 - workshop: velocidade e confiabilidade em e-commerce com apis

Post on 23-Jan-2018

192 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Topic Title

Velocidade e confiabilidade em e-commerce com APIs

+

Topic Title

Fábio Rosato

Head of Consulting @Sensediafabio.rosato@sensedia.com@frosato

CarlosSouza

Consultor @Sensediacarlos.souza@sensedia.com@12cesarCarlos

Topic Title

Fábio Rosato

CarlosSouza

Quick Facts

● Plataforma de API Management● Plataforma de Governança SOA● Design e estratégia de APIs

História

Fundada em 2007Gartner SOA MQ 2009API Suite 2012Forrester Report 2016

Bases

CampinasSão PauloRio de JaneiroUSA

Origens

APIs in BrazilWebinars, Articles, Videos,

Podcasts, Talks and Workshops

Thought LeadershipAPI Experience

2015 - 250 pessoas2016 - 550 pessoas

Todo negócio é digital

API habilita Digital

Sensedia suporta sua

estratégia de APIs

Ativando a transformação digital

WEBINARS:

5 Passos para uma API de Sucessohttp://bit.ly/Sensedia_APIdeSucesso

Webinar Design de APIs RESTfulhttp://bit.ly/Sensedia_APIsRest

Webinar Os Fundamentos da Segurança de APIshttp://bit.ly/Sensedia_SegurancaDeApis

Webinar Guia Prático de Gerenciamento APIshttp://bit.ly/Sensedia_GerenciamentoDeApis

Webinar: SOA no mundo das APIshttp://bit.ly/Sensedia_SOA

Webinar: Ecossistemas Digitaishttp://bit.ly/Sensedia_EcossistemasDigitais

Webinar: Microserviceshttp://bit.ly/Sensedia_microservices

Webinar: Repensando o ESBhttp://bit.ly/25Gw78L

APRESENTAÇÕES:http://www.slideshare.net/sensedia

/Sensedia /Sensedia /in/Sensedia

Conteúdo Adicional

Topic Title

Agenda

1. API-first 2. Design & Build 3. Run & Engage

Topic Title

Agenda

1. API-first 2. Design & Build 3. Run & Engage

Mobile-first

O que virá depois?

OmniCHANNEL

Onde houver uma tela, lá ele estará!

“Plataformização”

“Plataformização”

A ideia das APIs é Descomplicar, provendo um

mecanismo simples, seguro, escalável para

um desenvolvedor construir suas soluções

desacopladas no menor tempo possível.

Forte crescimento de calls de APIs - Exemplo

↑59%

↑158%

↑3.354%

Fonte: Sensedia

Tipos de APIs

Restricted

Restritas a parceiros autorizados

Open

Abertas para qualquer desenvolvedor

Private

Uso limitado a equipes internas da empresa

Front-End

Backend

HTTP/RESTAPI

Single Page App (SPA)

App-ClientPrivate

Mobile, Wearable

Backend

HTTP/RESTAPI

Mobile, Wearable Apps

App-BackendPrivate

App Backend

App Backend

HTTP/RESTAPI

Integration Architecture

App-AppPrivate

Microservice #1

HTTP/RESTAPI

Microservice #2

HTTP/RESTAPI

Microservice #n

HTTP/RESTAPI

Application - Backend

Webinar Microserviceshttp://bit.ly/Sensedia_microservices

MicroservicesPrivate

MarketplacesRestricted

APIs do Marketplace

Publicação de Produtos

Atualização de Preço/Estoque

Captura de Pedidos

Atualização de Tracking

Open InnovationOpen

Open InnovationOpen

Fonte: http://hackathon.ima.sp.gov.br/

Open InnovationOpen

Fonte: http://hackathon.ima.sp.gov.br/

http://goo.gl/PdKRPfFonte:GPlay: https://goo.gl/vPWMK7

Anti-pattern #1: Bottom-Up

“Sistemão”

Objetos e Funções

REST / JSON Virtudes:■ Rápido de ser criado■ Fácil de ser entendido pelos

desenvolvedores internos■ Ferramentas podem agilizar o processo

Vícios:■ Carrega detalhes desnecessários■ Confuso para desenvolvedores de Apps■ Inflexível■ Design ruim com vícios do “sistemão”

Bottom

Up

Anti-pattern #2: Comitê de Padronização

“Sistemão”

Objetos

REST / JSON UnificadosVirtudes:■ Senso de unificação■ Compreensível pelos

desenvolvedores internos

Vícios:■ Normalmente lento■ Problemas de aderência

ou múltiplos significados■ Ainda confuso para os

desenvolvedores de Apps

“Tabelonas”

Schemas

Anti-pattern #3: Copycat do Concorrente

“Sistemão #1”

Objetos

REST / JSON == Concorrente

“Sistemão #2”

Objetos

Virtudes:■ Rápido de ser criado■ Familiaridade dos

desenvolvedores de Apps

Vícios:■ Sem diferenciação■ Integração interna na marretada

API-first, a história da API ideal

API-first, a história da API ideal

> Simplicidade> Reusabilidade> Extensibilidade> Consistência> Manutenabilidade

Plataforma Comercial apps

Databases

Custom appsSaaS apps

SOAP RSSRemote

ProtocolsREST

like RPC

System Layer

Services Layer

RESTful

Arquiteturas Complexas

Bac

ken

dA

PI F

ron

t

API Facade

Mediate

RESTAPI

RESTAPI

RESTAPI

RESTAPI

Plataforma Comercial apps

Databases

Custom appsSaaS apps

SOAP RSSRemote

ProtocolsREST

like RPC

System Layer

Services Layer

Webinar Design de APIs RESTfulhttp://bit.ly/Sensedia_APIsRest

App

Microservice #1 Microservice #n

RESTful ESB

Design Ideal

API-First

Topic Title

Agenda

1. API-first 2. Design & Build 3. Run & Engage

REST/JSON

Versionamento

Caching

Resources

Erros

Operações

Callbacks

Segurança

Hypermedia

RESTful API Design

RESTful API Design - Flexibilidade & Otimização

Filtros e paginação Callbacks

RESTful API Design - Flexibilidade & Otimização

Filtros

GET /vendas/v2/pedidos?status=concluido

GET /pedidos/123AF15J?_fields=numero,data,valor

Busca com escopo (subconjuntos):

Respostas parciais:

GET /search?q=macbook+air

Busca Global:

RESTful API Design - Flexibilidade & Otimização

Paginação

GET /pedidos?_offset=50&_limit=25

Recomendação:

Outras opções:Linkedin:

Instagram:

?start=50&count=25

?min_id=3091&max_id=3245&count=25

Já chegamos?Já chegamos?

Já chegamos?Já chegamos?

Já chegamos?

Stop Pooling Me

RESTful API Design - Flexibilidade & Otimização

Callbacks

Marketplace API❖ Consulta estoque❖ Cálculo de frete❖ Novo pedido recebido

https://api.mywebstore.com/v1/estoque

https://api.mywebstore.com/v1/frete

https://api.mywebstore.com/v1/pedido

Chamadas Reversas:

Common Description Language?

Common Description Language?

Anatomia Swagger

Informações geraisVersão (da documentação)Path

Onde os recursos são definidos

Onde as entidades são definidas

Anatomia Swagger

Operações (GET, POST…)TagsParâmetrosRespostas

Tools: Swagger Editor

Client Accelerators

INTEGRATION INTEGRATION

SDK / Code Snippets

Virtudes:■ Acelera o consumo das APIs■ Menos erros de implementação

Vícios:■ Você precisa versionar e

dar manutenção■ Erros serão compartilhados

Swagger CodeGen

■ SDK gerada pelo Swagger Codegen

■ Geração de código simples e consistente

■ Menos erros na implementação da SDK

■ Ferramenta Open Source e pode ser customizada

Server Accelerators

INTEGRATION INTEGRATION

Bac

ken

dA

PI F

ron

t

API Facade

Mediate

RESTAPI

RESTAPI

RESTAPI

RESTAPI

Plataforma Comercial apps

Databases

Custom appsSaaS apps

SOAP RSSRemote

ProtocolsREST

like RPC

System Layer

Services Layer

Webinar Design de APIs RESTfulhttp://bit.ly/Sensedia_APIsRest

App

Microservice #1 Microservice #n

RESTful ESB

API Front

API-First

❖ Proteção contra ataques❖ Alertas❖ Autenticação e Autorização ❖ Transformação de Protocolos❖ Composição de chamadas❖ Conexões com legados❖ Gerenciamento de versões

DoSCross-Site Scripting (XSS)SQL InjectionsXML TreatJSON TreatAmeaças de Identidade

Também:

❖ Controle de Quotas❖ Spike Arest❖ Anomalias de Tráfego❖ Desempenho da API❖ Caching❖ Rastreabilidade❖ Calls Tracer❖ Desempenho do Backend❖ Smart Design (API-First)❖ Enriquecimento de Mensagens

API Ideal + Mediação, Transformação e Conexão

Responsabilidades do API Front

API-FrontHTTP/REST

Backend

* Garantir todas as responsabilidades do API-Front pode ser custoso

API Front - Cenário 1

API-FrontHTTP/REST

Backend

ESB

* Observe os GAPs que o ESB tem sozinho para essa responsabilidade

API Front - Cenário 2

API-FrontHTTP/REST

Backend

API Gateway

API Front - Cenário 3

API-FrontHTTP/REST

Backend

API Gateway● Considere utilizar um API Developers

Portal mesmo para os desenvolvedores internos

● Facilitar self-service para onboarding e consumo das APIs

● Simplifica a governançaPortal APIs IMAhttp://hackathon.ima.sp.gov.br/

API Front - Cenário 3

Bac

ken

dA

PI F

ron

t

API Facade

Mediate

RESTAPI

RESTAPI

RESTAPI

RESTAPI

ArquiteturaFutura

Mainframe Comercial apps

Databases

Custom appsSaaS apps

SOAP RSSRemote

ProtocolsREST

like RPC

System Layer

Services Layer

Webinar Design de APIs RESTfulhttp://bit.ly/Sensedia_APIsRest

App

Microservice #1 Microservice #n

RESTful ESB

Bac

ken

dA

PI F

ron

t

API Facade

Mediate

RESTAPI

RESTAPI

RESTAPI

RESTAPI

Mainframe Comercial apps

Databases

Custom appsSaaS apps

SOAP RSSRemote

ProtocolsREST

like RPC

System Layer

Services Layer

Webinar Design de APIs RESTfulhttp://bit.ly/Sensedia_APIsRest

App

Microservice #1 Microservice #n

RESTful

API Gateway

ESB

ArquiteturaFutura

“Mockando” e correndo em paralelo

Mock somente em sandbox, nunca em produção!

* API Management Suite é uma ferramenta da Sensedia

Swagger CodeGen (server)

■ Esqueleto do backend gerado pelo swagger codegen

■ Geração de código incompleto mas bastante útil.

■ Acelera a criação de API Façade para comunicação com um Backend

■ Postman

■ SOAP UI

■ Plugins REST para o seu browser

Ferramentas para teste da sua API

Seja usuário da sua própria API

Eat your ownDog Food

Estratégias de Arquiteturas de Aplicações

Escolhendo o estilo arquitetural para expor APIs

Microservices está no Hype

Hype

CloudDomain-driven design

Service-oriented

architecture

Continuous delivery

Elementos chaves para a ascensão dos microservices…

WEBUI

EMAILAdapter

URAAdapter

PagamentosAdapter

Clientes

Pacotes

Reservas

Avaliações

Recomendações

PagamentosNotificações

DBAdapter

RESTAPI

Monolítica

Arquitetura

http://alistair.cockburn.us/Hexagonal+architecture

Plataforma de Viagem

Clientes

Pacotes

Reservas

Avaliações

Recomendações

Pagamentos

Notificações

Microservices

Arquitetura

PagamentosAdapter

URAAdapter

EMAILAdapter

API

Gateway

RESTAPI

RESTAPI

RESTAPI

RESTAPI

RESTAPI

REST/AMPQAPI

REST/AMQPAPI

WEBUI

Plataforma de Viagem

Evolução

Manter e evoluir!

http://www.martinfowler.com/bliki/StranglerApplication.html

Strangler Application

Application #1 Strangler Application

1

http://www.martinfowler.com/bliki/StranglerApplication.html

Application #1 Strangler Application

Strangler Application1

Strangle Application

Domínios e sub-domínios2

❖ Conceitos de negócio

❖ Bounded Context

❖ Domain Driven Design

Contexto A Contexto B

Strangle Application

Microservices3Microservice #n

Database

HTTP/REST

Governança4 ❖ Definições de padrões mínimos principalmente na fronteira externa da aplicação (contexto de conexão)

❖ Informações para tomadas de decisões em tempo de design e runtime

❖ Importante na medida certa!

Cultura Devops5

Alguns Fatores

● Acertar a integração é o aspecto mais importante da tecnologia

associada a microservices.

● Mantenha sua tecnologia de APIs agnóstica (REST HTTP / AMQP)

● Faça seus serviços simples para os consumidores

○ De nada adianta ter um microservice bacana se ele é difícil de

ser utilizado

● Esconda os detalhes de implementação internos

Composição - Coreografia

Microservice #1 Microservice #2 Microservice #n

Banco Relacional Documentos Key/Store Data Base

API API API

Microservice #cCamada de coreografia

Camada de dados

Architectural Safety

• Proteja-se dos serviços laranjas podres: aqueles que

estragam todos os outros

• Os butterflies são potencialmente mais danosos. Monitore!

Microservice #1 Microservice #2 Microservice #3RESTAPI

RESTAPI

RESTAPI

Microservice #4RESTAPI butterfly

Vantagens e desvantagens

benefícios e consequências

Módulos com Fronteiras Fortes

Fortes Fronteiras de módulos

• Microservices– A dissociação modular de

microservices funcionam melhor porque os limites dos módulos são uma barreira para referências entre os módulos

– Você até pode ter um grande acoplamento com microservices, mas o esforço certamente será maior

– O desafio é definir o domínios e sub-domínios

– Funciona bem para equipes isoladas (esquadrões)

• Monolítica– É perfeitamente possível ter limites

firmes de módulos em sistemas monolíticos, mas requer disciplina e acompanhamento

– É mais fácil bular as fronteiras, e esse atalho feito amplamente minam a estrutura modular do sistema e o tornam um “lixo”

Distribuição

Distribuição

• Grande desvantagem:– Ser muito distribuído– Desempenho

• Latência de rede• Custo de serialização e

deserialização• Falácias da computação

distribuída*

• Dicas (Mitigações):– Aumentar a granularidade das

chamadas– Usar chamadas assíncronas

• melhoria de desempenho• Porém é:

– Difícil de acertar– Difícil de depurar

– Confiabilidade• Programa-se para o fracasso e

suas consequências

* Falácias da computação distribuída: http://en.wikipedia.org/wiki/Fallacies_of_distributed_computing

Implantação Independente

Implantação Independente

• Simplicidade– A unidade microservice é mais

simples, em tese é mais fácil de implantar

– Problemas no microservice, se ele for bem desenhado, tendem a propagar menos impacto no ambiente todo

• Scripts de automatização– Quase um pré-requisito: é difícil

ser ágil fazendo implantações manuais

• Entrega contínua– Redução do tempo de ciclo entre

uma ideia e o software em execução

– Respostas mais rápida as mudanças do mercado

– Vantagem competitiva• Feedbacks mais rápidos

– E ciclo de correções mais rápidos

Consistência Eventual

#sqn

Consistência Eventual

• Causa: descentralização de dados da abordagem

• É um efeito colateral para garantir a disponibilidade– Tradeoff entre disponibilidade

e consistência dos dados• Cache é importante!

– Invalidação de cache é difícil– Dica: Utilize eventos para

invalidar cache

• Tolerância a inconsistência (teorema de CAP)– Consistency– Availability – Tolerance to network partitions

http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf

Diversidade Tecnológica

Diversidade Tecnológica

• Liberdade– Fortalece a as escolhas

independentes de tecnologia– Algumas linguagens e tipos de

armazenamento de dados são mais adequados para determinados tipos de problemas

– O objetivo é resolver o problema através das escolhas mais inteligentes

– Experimentações de novas tecnologias

• Padronização– As questões de interface

(HTTP/REST, AMQP), ferramentas de ambiente e monitoração

• Bibliotecas– Mais controle no versionamento de

bibliotecas

Complexidade Operacional

Complexidade Operacional

• Produtividade– Para algumas equipes pode ser um

fardo que mina a produtividade• Tensão

– Pequenos módulos independentes e implantações rápidas traz uma pressão adicional para operação

• Agilidade– É praticamente impossível garantir

um ambiente operacional de dezenas de serviços sem automação

• Responsabilidade– A uma tendência da complexidade

subir para a camada de interconexões dos serviços

• Skills e Ferramentas– Requer algumas competências,

habilidades e ferramental• Colaboração

– Introduzir uma cultura DevOps: uma maior colaboração entre os desenvolvedores, operações e pessoal de infraestrutura

Complexidade Operacional Monitore!

Topic Title

Agenda

1. API-first 2. Design & Build 3. Run & Engage

API Management

■ Gerenciamento centralizado dos consumidores da API

■ Monitoração do tráfego■ Insights sobre a forma

de uso das APIs■ “APIs como LOBs (Line of Business)”

* API Management Suite é uma ferramenta da Sensedia

Self-service Dev Portal

Dev Pipeline

Dev Cadastrado

Não possui App

Possui App, mas nunca

utilizou

Em integração

Em homologa-

çãoIntegrado

Running

Developer Engagement

Maior Varejista online da América Latina

Maior Marketplace da América Latina

Maior varejista esportivo online do mundo

+2000 Lojas Integradas

+300MM calls/mês

■ Portal de Desenvolvedores■ Gerenciamento de chamados

○ Zendesk■ Fórum■ FAQ■ SLA■ TTFHW (Time to first hello world)■ SDK’s

Developer Engagement - Tools and Management

Developer Engagement - Satisfaction

Developer Engagement - Satisfaction

■ Relatórios de valor ao negócio■ Classificação dos integradores:

○ Vip○ Premium○ Master○ Gold○ Platinum

■ Acompanhamentos diversos

Developer Engagement - Analytics

Demo

Equipe de APIs

- Planos- Roadmap de APIs- Modelo de negócio- Business InsightsAPI Product

Owner

- Identifica as APIs- Desenha as interfaces- Garante o DX- Data-mappingAPI Architect

- Constrói o API-Front- Conexões e composições

API Developer

- Apoia o API Architect na análise bottom-up

BackendArchitect

- Publica as APIs- Monitora o uso- Políticas & alertas

API Operator

- Onboarding dos App Dev- Suporte para os App Dev- Melhoria do API portal- Feedbacks para API PODeveloper

Engagement

Move fast

API Design

API-FrontImplementation

API-FrontDesign

Publish

Developer Feedback

Design & Build

Try Out Backend AnalysisMockup

OmniCHANNEL

API First = Future Proof ■ Design & Build

■ Run & Engage

+Take Away

A integração do seu sistema deve ser pensada a partir do dia zero!

APIs estão nas agendas e no dia a dia

Quanto mais você investir no desenho das

APIs, mais atalhos poderá pegar no futuro

Topic Title

+Fábio Rosato

Head of Consulting @Sensediafabio.rosato@sensedia.com@frosato

Carlos Souza

Consultor @Sensediapetterson.andrade@sensedia.com@12cesarCarlos

Velocidade e confiabilidade em e-commerce com APIs

top related