Testes em uma arquitetura com messageria/streaming (Kafka)
Deck QCON SP 2018
1. Design de APIs na vida real:
Aquilo que você não vê nos livros
Rafael Rocha
rafael.rocha@sensedia.com
+55 19 3705-5775
+55 19 9 9649-1506
Mario Mancuso
mario.mancuso@sensedia.com
+55 19 3705-5775
+55 19 9 8123-0516
2. Mario Mancuso
● Consultor Sr. Sensedia
● Especialista de APIs
● Arquiteto de integração
Rafael Rocha
● Consultor Sr. Sensedia
● Especialista de APIs
● Arquiteto de Soluções
4. Estudo de Caso - Banco Digital Sensedia
Conta
Extrato
Paga-
mentos
Transfe-
rencias
Saldo
BANK
DIGITAL
Inovação aberta
& plataformas
Ecossistema de
parceiros digitais
Experiências digitais:
Mobile & IoT
5. Cenários
Existe um
backend
acessivél
apenas por
interfaces web
que necessitam
de um browser.
Luz no fim do
tunel…
O backend
existe e possui
interfaces
amistosas.
Nada Existe.
Tudo será
NOVO. uhuuuuu
Integrado por XMLVisto por uma TelaPerfeito1 2 3
E agora? O
backend está
construído em
tecnologias
antigas com
interfaces pouco
amigáveis para
os tempos
atuais
Tecnologia Ancestral4
7. Premissas - APIs
Backend
APIs
The Digital Glue
Integrações
com Aplicações
SaaS
Aplicações
Móveis
Internet
of Things
Inovação
Ecossistema
de Parceiros
Digitais
8. Premissas - Princípios Básicos de Design de APIs
REST/JSON
Versionamento
Caching
Resources
Erros
Callbacks
Operações
Filtros e Paginação
Hypermedia
9. Adicional - Consumo de APIs
Simplicidade
APIs que sejam fáceis de
entender e consumir
“Se você tiver que explicar
uma API, então você não tem
uma API.”
Rapidez
APIs que tenham bons
tempos de resposta
Confiabilidade
APIs que sejam sempre
disponíveis e confiáveis
As três principais características valorizadas pelos consumidores de APIs
Fonte: State of API Report 2016, SmartBear
11. Cenário 1 - Perfeito
➔ Simplicidade
➔ Reusabilidade
➔ Extensibilidade
➔ Consistência
➔ Manutenabilidade
API First Pattern{API}
Top
Down
12. Cenário 1 - Perfeito | Design RESTful
Status Code 2xx
Status Code 4xx
Status Code 5xx
400
401
403
404
422
Bad Request
Unauthorized
Forbidden
Not Found
Unprocessable Entity
500 Internal Server Error
200
201
204
OK
Created
No Content
16. Cenário 2 - Visto por uma Tela
Backend
Web Browser
17. Cenário 2 - Visto por uma Tela | Modelos
UI Generator
Business
Services, Data...
User Interface
Web Browser
HTTP
Requests
HTML +
CSS
Web Server
Business
Services, Data...
User Interface
Web Browser
HTTP
Requests
UI fragments Raw
XML/Json data
Ajax Engine
Business
Services, Data...
User Interface
Web Browser
HTTP
Requests
Raw Json data
MVC Engine
Model 1: classic web application Model 2: AJAX web application Model 3: client-side MVC web application
1990 2006 2012Application Server Application Server Application Server
18. Cenário 2 - Visto por uma Tela | Solução Técnica
API Gateway
RESTful API
Interaction Channel
API Management
Backend
App Web Format
(XML, HTML,
JSON)
App Web Format
(XML, HTML,
JSON)
Parse: Json to
App Web
Format (req)
and App Web
Format to Json
(resp)
19. Cenário 2 - Visto por uma Tela | Design RESTful
Legacy
Expose Objects
JSON
Down
Top
Legacy
Expose Objects
JSON
Bottom
Up
Ou
20. Cenário 2 - Visto por uma Tela | Desvantagens
Pontos de Atenção
Tela pode mudar o layout/navegação e “quebrar” o contrato.
Sessão do Navegador.
1
Aplicação não pode estar preparada para escalar.2
3
Melhor cenário de uso é em MVPs.4
22. Cenário 3 - Integrado por XML
Backend
Web ServicesWeb Browser
<soap>
<header/>
<body>
<getAccount>
<agency>2331</agency>
<number>346677</number>
</getAccount>
</body>
</soap>
23. Cenário 3 - Integrado por XML | Solução Técnica
API Gateway
RESTful API
Interaction Channel
API Management
Backend
HTTP POST - XML
Format
200 Ok or 500 Error
- XML Format
Parse: Json to
XML (req) and
XML to Json
(resp)
24. Cenário 3 - Integrado por XML | Design RESTful?
API Gateway
Backend
[GET] https://api.sensedia.com/bank/v1/getAccount
[GET] https://api.sensedia.com/bank/v1/getBalance
[POST] https://api.sensedia.com/bank/v1/createAccount
[POST] https://api.sensedia.com/bank/v1/createDebit
[POST] https://api.sensedia.com/bank/v1/createCredit
25. Cenário 3 - Integrado por XML | Design RESTful
26. Cenário 3 - Integrado por XML | Desvantagens
Pontos de Atenção
Levar a "verbalização" das operações do WS para os recursos da API.
Simplificar a estrutura de dados do WS - cuidado com o aninhamento.
1
Tratar erros da maneira adequada para o formato de API pode se tornar
uma tarefa "pesada" .
2
3
Versionamento do WS4
29. Cenário 4 - Tecnologia Ancestral | Solução Técnica
API Gateway
RESTful API
Interaction Channel
API Management
Backend
Positional String
Format
Positional String
Format
Parse: Json to
String (req) and
String to Json
(resp)
30. Cenário 4 - Tecnologia Ancestral | Solução Técnica
API Gateway
RESTful API
Interaction Channel
API Management
Backend
Positional String
Format
Positional String
Format
Parse: Json to
String (req) and
String to Json
(resp)
31. Cenário 4 - Tecnologia Ancestral | Solução Técnica
API Gateway
RESTful API
Interaction Channel
API Management
Backend
API Facade
Mediate
API Front
Parse: Json to
String (req) and
String to Json
(resp)
32. Cenário 4 - Tecnologia Ancestral | Solução Técnica
API Gateway
RESTful API
Interaction Channel
API Management
Backend
Micro API Front
Legacy
Micro-Front
Gateway
33. Cenário 4 - Tecnologia Ancestral | Desvantagens
Pontos de Atenção
Mais uma camada para gerenciar: latência e problemas.
Não reinventar a roda! Usar padrões, linguagens e frameworks
consolidados.
1
Infraestrutura para o Front?2
3
Deve ter baixa complexidade de fácil entendimento, opte pelo simples!4
37. Cenário 5 - BFF com GraphQL
Account
Enterprise
API
(REST)
Front-End
Applications
Legacy
Systems
Enterprise Services
Backend for
FrontEnd APIs
GraphQL
Engine
FrontEnd
APIs
(GraphQL)
Balance
Enterprise
API
(REST) Legacy
Systems
Customer
Enterprise
API
(REST) Legacy
Systems
query
BalancesForCustomer {
customer(id: 1) {
name
accounts {
type
balances {
totalAmount
}
}
}
}
38. Cenário 5 - Desvantagens
Pontos de Atenção
Mais uma camada para gerenciar: latência e problemas.
Mais uma tecnologia para aprender e prover
infraestrutura.
1
APIs praticamente não reutilizáveis.2
3