Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Projeto de APIs
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Celso Crivelaro
October 08, 2017
Technology
0
160
Projeto de APIs
O que pensar para APIs públicas,
[micros]serviços e SPAS
Celso Crivelaro
October 08, 2017
Tweet
Share
More Decks by Celso Crivelaro
See All by Celso Crivelaro
Sistemas de Recomendação
celsocrivelaro
2
230
Big Data para Gerentes de Projetos
celsocrivelaro
0
66
FileSystems em Ruby com FUSE
celsocrivelaro
2
72
Padrões e Boas Práticas de Teste de Tela
celsocrivelaro
0
430
Testing Network Conditions with ToxiProxy
celsocrivelaro
1
390
Testing Network Conditions with ToxiProxy
celsocrivelaro
0
83
Actor Model in Ruby
celsocrivelaro
0
260
Separando as regras de negócios do Rails
celsocrivelaro
0
180
InfluxDB + Grafana
celsocrivelaro
0
260
Other Decks in Technology
See All in Technology
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
160
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.5k
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
600
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.5k
Webhook best practices for rock solid and resilient deployments
glaforge
1
290
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
290
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
230
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
940
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
300
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
310
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
250
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
120
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
96
Information Architects: The Missing Link in Design Systems
soysaucechin
0
780
Deep Space Network (abreviated)
tonyrice
0
49
The untapped power of vector embeddings
frankvandijk
1
1.6k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
75
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
The browser strikes back
jonoalderson
0
380
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
62
Transcript
Projetos de APIs O que pensar para APIs públicas, [micros]serviços
e SPAS Celso Crivelaro @celsocrivelaro http://crivelaro.me
$whoami
Tech Lead @ Professor @
Motivação
None
None
None
Um caso curioso ...
Portal Usuário O que achávamos que deveria ser: Sistema Portal
Administrativo API HTTP Serviria aos Portais Serviria como API Externa
Portal Usuário O que achávamos que deveria ser: Sistema Portal
Administrativo API HTTP Serviria aos Portais Serviria como API Externa Inseguro Dificulta Mudanças
POST: Inserção em lote com Payloads Grandes API Externa API
com foco em sistema Schemas em formatos diferentes: JSON e XML
Muitas mudanças nas telas API Single Page Application API com
foco em usuário
Segundo caso curioso ...
Recebimento Core Processamento Transformação API HTTP Envio aos Provedores Recebimento
Processamento Transformação Envio aos Provedores
~ 8 milhões de consultas ao dia API Serviço Consulta
de informações para saldo e transformações Performance era um problema
Lições Aprendida
None
Tenha APIs diferentes para propósitos diferentes
Decisões arquiteturais têm impacto no negócio
Documente primeiro
Conheça seu público
Financeiro e Sistemas Tradicionais Público Geral Devs Iniciantes Equipe Interna
Equipe Terceira
Tipos de Integração Comuns
Muito fácil de fazer -> Script, Não tem o overhead
web Integração por Arquivo Integração por FTP, Upload de Arquivo e S3 Arquivo Posicional ou CSV
Bom para API Externa / Microsserviços Integração via WebService REST
ou SOAP Schema: XML, JSON, Binários
None
None
Desacopla a transmissão da mensagem Integração via Broker Regras de
Envio e distribuição Schema: XML, JSON, Binários
None
Segurança
Só se expor se necessário
Portal Usuário Sistema 1 Portal Administrativo Sistema 2 Sistema 3
WebService
Portal Usuário Sistema 1 Portal Administrativo Sistema 2 Sistema 3
Interfaces abertas para ataque Camada na Internet WebService
Portal Usuário Sistema 1 Portal Administrativo Sistema 2 Sistema 3
Serviço API Usuário Camada na Internet Rede Fechada WebService
Sempre por HTTPS
Autenticação
Foco em usuário SPA OAuth, Usuário/Senha Sessão Tokens (grandes) Serviços
/ API Externa Gestão de invalidação Login baseado no Protocolo Broken
Sempre use autenticação, mesmo para serviço interno
Tarifação Operacional Problema: Pirata Operacional
Tarifação Operacional Problema: Pirata Operacional Rede Interna
Volume
Consulta -> Cache
Disponibilidade Tolerância ao Particionamento Consistência Efeito Colateral do Cache
Inserção
Bom para itens pequenos e baixo volume WebService - Integração
Externa / [Micros]serviços Problemático quando o payload é grande Imediatamente ponha em um processamento assíncrono
Validação de Schema Validação de Dados Problema: Payload Grande Inserção
Sistema 2 Sistema 1 Sistema 3 Sistema 4 Problema: Broadcast
Fácil para inserção Broker - Microsserviços Desacopla mensagem do transmissão
Problema: Manter mais uma infraestrutura
Sistema 1 Sistema 2 Problema: Lote
Pode-se enviar MBs ou GBs de um único arquivo Arquivos
- Microsserviços Usar AWS S3 ou mesmo SFTP Quando não há pressa
Versionamento
Breaking Changes
Remover um endpoint / fila / diretório Breaking Changes Adicionar
novo campo obrigatório Remover ou Alterar campo ou tipo
Como versionar
Nome do Recurso. Ex: HTTP POST#/v1/usuarios Versionamento Meta Informação: Ex:
HTTP Header X-Api-Version: 1 Não usar no payload
Como avisar a todos que API tem nova mudança Gestão
de Mudança Manter as 2 versões por um tempo Plano de desligamento da versão anterior
Schema
Enviar dados conhecidos pela App originadora [Micros]Serviços / WebService Metadados
Endereço de Callback
Documentação
1o Passo: Permite fazer o design Documentação Permite que 2
ou mais equipes trabalhem apenas com a documentação Mock servers
None
None
Como testar
None
Regras de Negócio ponta a ponta: Cadastro, verificar na listagem
Aceitação - Regras de Negócio Cadastro API - Listagem API Cadastro API - Listagem Tela Cadastro Tela - Listagem API Exemplos de Combinações
Validando Schema
http://json-schema.org/
$ pip install jsonschema
None
"Document" Driven Development
Referências
None
None
Obrigado! Celso Crivelaro @celsocrivelaro Slides em: http://crivelaro.me