SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
1.
APIs bem desenhadas como
base para integrações
2.
José Vahl
Gerente de Tecnologia
Ciclista, fotógrafo,
cervejeiro, gerente de
tecnologia e APIs addicted
jose.vahl@sensedia.com
@josevahl
Petterson Andrade
Arquiteto de Software
Palestrante, nerd,
arquiteto de software,
cruzeirense e confia na
tecnologia
petterson.andrade@sensedia.com
@pett4j
3.
Applications Services
Enabling Digital Transformation
Quick Facts
Founded
in 2007
Campinas,
São Paulo,
Rio de Janeiro
and
US Incorporated
Strong SOA Background
(Gartner MQ SOA Gov, 2009)
+
● Services & API Strategy
● Architectural Solution
● API Platform
4.
Agenda
Integração e evolução
Cenários de APIs
API First
Design de APIs
Mão na massa!
+
5.
O Estado
Corrente das
Coisas
SOAP/XML
WS-*
Arquitetura de Serviços!
Legado ++
Integração!
Foco Total
Ênfase no
ESB
14.
Microservice #1 Microservice #2 Microservice #3 Microservice #4
Banco Relacional Banco Orientado
a Documentos
Key/Store Data
Base
Graph Database
HTTP HTTP HTTP HTTP
Microservice
15.
Microservice
Microservice #1 Microservice #2 Microservice #3 Microservice #4
Banco Relacional Banco Orientado
a Documentos
Key/Store Data
Base
Graph Database
HTTP HTTP HTTP HTTP
API Gateway
HTTP HTTP HTTP HTTP
Service aggregation
Rate Limiting
Monitoring & Alerts
Authentication
Models
Policy Enforcement
Exception handling
Analytics on API
Consumption
16.
Connector-
less
Adapter Adapter
Human Capital Supply Chain
HTTP HTTP HTTP HTTP
ERP CRM
Adapter
HTTP
Enterprise Resource
planning
HTTP
Enterprise
Performance
17.
Connector-
less
Adapter
Human Capital Supply Chain
HTTP HTTP HTTP HTTP
API Gateway
Service aggregation
Rate Limiting
Monitoring & Alerts
Authentication
Models
Policy Enforcement
Exception handling
Analytics on API
Consumption
ERP CRM
Adapter
HTTP
Enterprise Resource
planning
HTTP
Enterprise
Performance
HTTP
Adapter
18.
Uma avalanche de APIs
Arquitetura de Serviços!
Legado ++
Ênfase no
ESB
+
Formas de integração
19.
Backend
APIs
The Digital Glue
Integrações com
Aplicações SaaS
Aplicações
Móveis
Internet
of Things
Inovação
Ecossistema
de Parceiros
Digitais
20.
+
SSOCIAL
MMOBILE
AANALYTICS
CCLOUD
IoTINTERNET
OF THINGS
Transformações Digitais
21.
Experiências digitais transformadas
Arquitetura de Serviços!
Legado ++
+
Cenários de uso das APIs
Inovação abertaPlataformas e
Ecossistemas
Clientes e Parceiros Múltiplos dispositivos
22.
+
Plataformas e Ecossistemas
Planejamento de viagens”“
23.
+
Clientes e Parceiros
Aproximação de
vendedores e compradores
“ ”
24.
+
Clientes e Parceiros
Aproximação de
vendedores e compradores
“ ”
25.
+
Múltiplos Dispositivos
Missão: Dar às pessoas
acesso a todas as músicas
que elas quiserem o tempo
todo, de forma simples e
legal.
“
”
26.
+
Inovação Aberta
Aceleradora de Startups
focada em Apps para os
28M de usuários Nike
“
”
27.
+
Multi-sided
Business Models
Platform
Power
Conceitos em comum
28.
+
The Magnet:
- Design of Incentives
- Pricing Models
- Reputation Systems
The Matchmaker:
- Rich Data Collection
- Data-oriented Match
- Curation (the best and the
rest)
Gravity
Flow
Connection
The Toolbox:
- Simple
- Open
- Agile
31.
+
Compromisso com APIs
“Anyone who doesn’t do this will be fired. Thank you; have a nice day!”
- Jeff Bezos
32.
+
Foco na informação ou na integração?
● Serviços projetados para
uso interno
● Código Legado
● SOAP Services
● Tabelas de Banco
API
(design problemático)
Foco na
informação
Foco na
integração
info:
version: 0.0.1
title: My API História para
contar
33.
+
Design despriorizado +
Visão de curto prazo
Com “APIs”
34.
+
Design de
APIs info:
version: 0.0.1
title: My API
35.
1966
Clint Eastwood
Lee Van Cleef
Eli Wallach
Sergio Leone
(Por um punhado de dólares e Por uns dólares a mais)
36.
RESTSOAP vs.
JSONXML vs.
Valor RESTful Documentação Status
Codes
Otimização Hypermedia Segurança Instrum/zação
As primeiras decisões…
48.
Resource POST
(create)
GET
(read)
PUT
(update, create)
DELETE
(delete)
/pedidos Cria novo
pedido
Lista pedidos -- Apaga todos
os pedidos
/pedidos/3747 -- Mostra pedido
3747
Atualiza pedido
3747, se não
existir, cria
Apaga pedido
3747
RESTful
49.
Método de Consulta
(Cachable, Safe, Idempotente)
GET /vendas/pedidos
GET /checklist/item/4
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
50.
Método para “Criação”
(Unsafe, Não-Idempotente)
POST /clientes/98W33GJ201/enderecos
{
"endereco": "Av. Brigadeiro Faria Lima",
"numero": "3800",
"complemento": "18o. Andar",
"bairro": "Itaim Bibi",
"cidade": "São Paulo",
"estado": "SP",
"cep": "04538-132"
}
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
51.
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
Método para “Atualização”
(Unsafe, Idempotente)
PUT /clientes/98W33GJ201/enderecos/1
{
"endereco": "Av. Brigadeiro Faria Lima",
"numero": "3800",
"complemento": "18o. Andar",
"bairro": "Itaim Bibi",
"cidade": "São Paulo",
"estado": "SP",
"cep": "04538-132"
}
52.
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
Método para Remoção
(Unsafe, Idempotente)
DELETE /pedidos/98W33GJ201
DELETE /users/98S7726QV1/photos
53.
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
Método para Atualização parcial
(Unsafe, Não-Idempotente)
PATCH /users/98W33GJ201
{
"email": "joao.silva@empresa.com"
}
PATCH /pedidos/39D0091B86
{
"status": "Cancelado"
}
54.
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
OPTIONS
Quais métodos são permitidos?
OPTIONS /clientes
Allow: HEAD,GET,POST,OPTIONS
HEAD
Quero ver apenas o Header
HEAD /clientes
Date: …
Content-Type: application/json
Content-Length: 12345
57.
Documentação
Versão
URI: https://api.mycompany.com/name-of-api/v2/resource
HTTP ou
HTTPS
Seu domínio Nome da API
(opcional)
Recursos e
Parâmetros
Outras alternativas:
• Twilio: /2010-04-01/Accounts/
• Salesforce.com: /services/data/v20.0/limits
Versionamento
Nunca quebre o cliente!!
59.
API Portal
Developers
https://developers.[you].com
Powered by
❖ Introdução, tutoriais e
exemplos de códigos
❖ Self-service Signup
❖ Documentação interativa
(API Browsing)
❖ Forum, Blog & Dev support
❖ Testes facilitados (Sandbox)
❖ Dev. Dashboard
API Developers Portal
Documentação
66.
Status Codes
200
400
500
Resultado OK
Erro no Cliente
Erro no Servidor
201 Criado
202 Aceito
401 Não Autorizado
405 Operação não permitida
413 Request muito grande
429 Muitas requisições
503 Servidor não disponível
204 Sem Conteúdo
68.
200
400
500
Status &
Error Codes
200 OK
GET /candidatos?estado=SP&partido=PP
200 OK
[
{
"id": "1532962",
"apelido": "PAULO MALUF",
"nome": "PAULO SALIM MALUF",
"numero": "1111",
"cargo": "Deputado Federal",
"estado": "SP",
"partido": "PP",
"reeleicao": true
}
]
69.
200
400
500
Status &
Error Codes
201 Created
POST /items/1234/bids
{
"amount" : 602.99
}
201 Created
Location: /items/1234/bids/100001
{
"amount" : 602.99,
"current_bid" : 510,
"winning" : true
}
70.
200
400
500
Status &
Error Codes
400 Bad Request
GET /candidatos
400 Bad Request
{
"status" : 400,
"code" : 40377,
"message" : "Parâmetro 'estado' não
pode ser nulo ou vazio"
"more" : https://dev.empresa.com/errors/40377
}
71.
200
400
500
Status &
Error Codes
Outros Comuns
401
403
404
413
429
Unauthorized
Forbidden
Not Found
Request is too Large
Too Many Requests
72.
200
400
500
Status &
Error Codes
500 Internal Server Error
PUT /vendas/v1/pedidos/9940382
{
”status" : canceled
}
500 Internal Server Error
{
"status" : 500,
"message": ”Oops. Algo saiu errado”
}
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
73.
Otimização
Filtros e
paginação
Callbacks
Caching
74.
FiltrosGET /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:
75.
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
76.
Caching
Evite tráfego desnecessário
Latência de rede
Sobrecarga nos servidores
Atenção
❖ Tempo de invalidação do cache
❖ Sincronização em clusters
77.
Já chegamos?
Já chegamos?
Já chegamos?
Já chegamos?
Já chegamos?
Stop Pooling Me
78.
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:
79.
Hypermedia
*POX = Plain Old XML, Richardson Maturity Model
HATEOAS = Hypermedia as the
Engine of Application State
http://martinfowler.com/articles/richardsonMaturityModel.html
80.
GET /items?q=macbook+air+new
{
"results" : [
{
"id" : 123,
"name" : "Macbook Air 2010 LIKE NEW",
"price" : "499"
}
]
}
SEM
Hypermedia
81.
COM
Hypermedia
GET /items?q=macbook+air+new
{
"results" : [
{
"_links" : [
{"rel": "self","uri": "/items/123" },
{"rel": "bids","uri": "/items/123/bids" },
{"rel": "win","uri": "/items/123/bids?q=win" }
],
"name" : "Macbook Air 2010 LIKE NEW",
"price" : "499"
}
]
}
82.
Segurança
❖ Acesso não autorizado
❖ Ataques
❖ Sobrecarga
❖ Confidencialidade
❖ Implementações
desastradas em clients
83.
Acesso não autorizado Segurança baseada na obscuridade
A prova de hackers Canal inseguro (hijacking)
85.
Básico
Intermediário
Crítico
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As APIs alteram dados
importantes?
86.
Básico
Intermediário
Crítico
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As APIs alteram dados
importantes?
API totalmente pública,
potencialmente centenas de
Apps externos
Alguns Apps externos de
parceiros bem conhecidos
Somente Apps desenvolvidos
pela própria empresa
87.
Básico
Intermediário
Crítico
Registros médicos, transações
financeiras ou dados vitais ao
negócio
Informações sociais,
Internet das coisas
Informações acessórias não
relacionadas a usuários
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As APIs alteram dados
importantes?
88.
Básico
Intermediário
Crítico
Todas as operações (inclusive
DELETEs) em elementos e
coleções de recursos
GETs e alguns POSTs e PUTs em
recursos não vitais
Somente GETs
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As APIs alteram dados
importantes?
90.
Segurança
❖ Agrupamento de elementos com
responsabilidades semelhantes
❖ Simplificação de regras de negócio
Separation of
CONCERNS
Autenticação
Autorização
Privacidade
Disponibilidade
Auditoria
Integridade
91.
APIs
Web API
FAÇADEUsers Apps
Partners/
Developers
Your Backend
92.
Users Apps
APIs
Autenticação
Autorização
Disponibilidade
Privacidade
Auditoria
Integridade
API Gateway
Partners/
Developers
Your Backend
Web API
FAÇADE
102.
+
Silex
- Está entre os mais rápidos micro
frameworks de REST PHP
- Baseado nos componentes
Symphony
- Boa documentação e bom suporte
da comunidade.
103.
+
Slim
- Está entre os mais rápidos micro
frameworks de REST PHP
- Boa documentação
- Integrado com implementações de
terceiros
104.
+
Lumen
- Baseado no Laravel
- Boa documentação
- Não tão rápido quanto o Slim ou
Silex
105.
+
Phalcon
- O mais rápido dos frameworks
REST PHP
- Extremamente otimizado e modular
- Não tão rápido quanto o Slim ou
Silex
- Boa documentação
107.
Backend
APIs
The Digital Glue
Integrações com
Aplicações SaaS
Aplicações
Móveis
Internet
of Things
Aplicações
Web
Ecossistema
de Parceiros
Digitais
109.
+
Visão de negócio
- Hub mudanças
- Juntar as duas pontas:
- Clientes
- Transportadoras
- Compartilhar mudanças / cargas
110.
- Economia compartilhada
- Legislação
- Mercado estabelecido
- Barreira de entrada: Base de usuários
+
Oportunidades e Desafios
111.
- API como estratégia fundamental
- Api com foco no cliente: Clientes
acessando apps
- Api com foco no parceiro: Transportadoras
e donos de caminhões
- Múltiplos dispositivos
+
Estratégia de API First
120.
+
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