devcommerce conference 2016 - workshop: velocidade e confiabilidade em e-commerce com apis
TRANSCRIPT
Topic Title
Velocidade e confiabilidade em e-commerce com APIs
+
Topic Title
Fábio Rosato
Head of Consulting @[email protected]@frosato
CarlosSouza
Consultor @[email protected]@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 @[email protected]@frosato
Carlos Souza
Consultor @[email protected]@12cesarCarlos
Velocidade e confiabilidade em e-commerce com APIs