Este documento fornece informações sobre APIs e arquitetura de microsserviços. Resume os principais pontos sobre design de APIs RESTful, ferramentas para documentação e teste de APIs, e estratégias de arquitetura de aplicações como microsserviços.
2. Topic Title
Fábio
Rosato
Head of Consulting @Sensedia
fabio.rosato@sensedia.com
@frosato
Carlos
Souza
Consultor @Sensedia
carlos.souza@sensedia.com
@12cesarCarlos
4. 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
5. Todo negócio é
digital
API habilita
Digital
Sensedia
suporta sua
estratégia de
APIs
Ativando a transformação digital
6. 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
14. 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.
16. Tipos de APIs
Restricted
Restritas a parceiros autorizados
Open
Abertas para qualquer
desenvolvedor
Private
Uso limitado a equipes internas da
empresa
25. 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
26. 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
27. 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
34. RESTful API Design - Flexibilidade & Otimização
Filtros e
paginação Callbacks
35. 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:
36. 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
45. 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
46. 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
49. ❖ 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
53. 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
56. “Mockando” e correndo em paralelo
Mock somente em sandbox,
nunca em produção!
* API Management Suite é uma ferramenta da Sensedia
57. 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
58. ■ Postman
■ SOAP UI
■ Plugins REST para
o seu browser
Ferramentas para teste da sua API
72. 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!
74. 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
75. 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
76. 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
79. 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”
81. 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
83. 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
85. 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
87. 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
89. 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
92. 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
95. 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
96. ■ Portal de Desenvolvedores
■ Gerenciamento de chamados
○ Zendesk
■ Fórum
■ FAQ
■ SLA
■ TTFHW (Time to first hello world)
■ SDK’s
Developer Engagement - Tools and Management
101. 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
104. +
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
105. 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