Topic Title
Velocidade e confiabilidade em
e-commerce com APIs
+
Topic Title
Fábio
Rosato
Head of Consulting @Sensedia
fabio.rosato@sensedia.com
@frosato
Carlos
Souza
Consultor @Sensedia
carlos.souza@sensedia.com
@12cesarCarlos
Topic Title
Fábio
Rosato
Carlos
Souza
Quick Facts
● Plataforma de API Management
● Plataforma de Governança SOA
● Design e estratégia de APIs
História
Fundada em 2007
Gartner SOA MQ 2009
API Suite 2012
Forrester Report 2016
Bases
Campinas
São Paulo
Rio de Janeiro
USA
Origens
APIs in Brazil
Webinars, Articles, Videos,
Podcasts, Talks and Workshops
Thought LeadershipAPI Experience
2015 - 250 pessoas
2016 - 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 Sucesso
http://bit.ly/Sensedia_APIdeSucesso
Webinar Design de APIs RESTful
http://bit.ly/Sensedia_APIsRest
Webinar Os Fundamentos da Segurança de APIs
http://bit.ly/Sensedia_SegurancaDeApis
Webinar Guia Prático de Gerenciamento APIs
http://bit.ly/Sensedia_GerenciamentoDeApis
Webinar: SOA no mundo das APIs
http://bit.ly/Sensedia_SOA
Webinar: Ecossistemas Digitais
http://bit.ly/Sensedia_EcossistemasDigitais
Webinar: Microservices
http://bit.ly/Sensedia_microservices
Webinar: Repensando o ESB
http://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?
Omni
CHANNEL
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-Client
Private
Mobile,
Wearable
Backend
HTTP/RESTAPI
Mobile, Wearable Apps
App-Backend
Private
App
Backend
App
Backend
HTTP/RESTAPI
Integration Architecture
App-App
Private
Microservice #1
HTTP/RESTAPI
Microservice #2
HTTP/RESTAPI
Microservice #n
HTTP/RESTAPI
Application - Backend
Webinar Microservices
http://bit.ly/Sensedia_microservices
Microservices
Private
Marketplaces
Restricted
APIs do Marketplace
Publicação de
Produtos
Atualização de
Preço/Estoque
Captura de Pedidos
Atualização de
Tracking
Open Innovation
Open
Open Innovation
Open
Fonte: http://hackathon.ima.sp.gov.br/
Open Innovation
Open
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 Unificados
Virtudes:
■ 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 RSS
Remote
Protocols
REST
like RPC
System Layer
Services Layer
RESTful
Arquiteturas Complexas
BackendAPIFront
API Facade
Mediate
REST
API
REST
API
REST
API
REST
API
Plataforma Comercial apps
Databases
Custom appsSaaS apps
SOAP RSS
Remote
Protocols
REST
like RPC
System Layer
Services Layer
Webinar Design de APIs RESTful
http://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 gerais
Versão (da documentação)
Path
Onde os recursos são
definidos
Onde as entidades são
definidas
Anatomia Swagger
Operações (GET, POST…)
Tags
Parâmetros
Respostas
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
BackendAPIFront
API Facade
Mediate
REST
API
REST
API
REST
API
REST
API
Plataforma Comercial apps
Databases
Custom appsSaaS apps
SOAP RSS
Remote
Protocols
REST
like RPC
System Layer
Services Layer
Webinar Design de APIs RESTful
http://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
DoS
Cross-Site Scripting (XSS)
SQL Injections
XML Treat
JSON Treat
Ameaç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-Front
HTTP/REST
Backend
* Garantir todas as responsabilidades do API-Front pode ser custoso
API Front - Cenário 1
API-Front
HTTP/REST
Backend
ESB
* Observe os GAPs que o ESB tem sozinho para essa responsabilidade
API Front - Cenário 2
API-Front
HTTP/REST
Backend
API Gateway
API Front - Cenário 3
API-Front
HTTP/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ça
Portal APIs IMA
http://hackathon.ima.sp.gov.br/
API Front - Cenário 3
BackendAPIFront
API Facade
Mediate
REST
API
REST
API
REST
API
REST
API
Arquitetura
Futura
Mainframe Comercial apps
Databases
Custom appsSaaS apps
SOAP RSS
Remote
Protocols
REST
like RPC
System Layer
Services Layer
Webinar Design de APIs RESTful
http://bit.ly/Sensedia_APIsRest
App
Microservice #1 Microservice #n
RESTful ESB
BackendAPIFront
API Facade
Mediate
REST
API
REST
API
REST
API
REST
API
Mainframe Comercial apps
Databases
Custom appsSaaS apps
SOAP RSS
Remote
Protocols
REST
like RPC
System Layer
Services Layer
Webinar Design de APIs RESTful
http://bit.ly/Sensedia_APIsRest
App
Microservice #1 Microservice #n
RESTful
API Gateway
ESB
Arquitetura
Futura
“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 own
Dog Food
Estratégias de Arquiteturas de Aplicações
Escolhendo o estilo arquitetural
para expor APIs
Microservices está
no Hype
Hype
Cloud
Domain-driven
design
Service-
oriented
architecture
Continuous
delivery
Elementos chaves para
a ascensão dos
microservices…
WEB
UI
EMAIL
Adapter
URA
Adapter
Pagamentos
Adapter
Clientes
Pacotes
Reservas
Avaliações
Recomendações
PagamentosNotificações
DB
Adapter
REST
API
Monolítica
Arquitetura
http://alistair.cockburn.us/Hexagonal+architecture
Plataforma de
Viagem
Clientes
Pacotes
Reservas
Avaliações
Recomendações
Pagamentos
Notificações
Microservices
Arquitetura
Pagamentos
Adapter
URA
Adapter
EMAIL
Adapter
API
Gateway
REST
API
REST
API
REST
API
REST
API
REST
API
REST/AMPQ
API
REST/AMQP
API
WEB
UI
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
Microservices
3
Microservice #n
Database
HTTP/REST
Governança
4 ❖ 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 #c
Camada 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 #3REST
API
REST
API
REST
API
Microservice #4
REST
API
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
M
onitore!
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-
ção
Integrado
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 Insights
API Product
Owner
- Identifica as APIs
- Desenha as interfaces
- Garante o DX
- Data-mapping
API Architect
- Constrói o API-Front
- Conexões e composições
API Developer
- Apoia o API Architect na
análise bottom-up
Backend
Architect
- 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-Front
Implementation
API-Front
Design
Publish
Developer
Feedback
Design & Build
Try Out
Backend
Analysis
Mockup
Omni
CHANNEL
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 @Sensedia
fabio.rosato@sensedia.com
@frosato
Carlos Souza
Consultor @Sensedia
petterson.andrade@sensedia.com
@12cesarCarlos
Velocidade e confiabilidade em e-
commerce com APIs

DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-commerce com APIs