@wandi wandi.darko@gmail.com
296 É O NÚMERO DE VISITAS AOS
LOCAIS CADASTRADOS NO
MILHÕES
Sobre APONTADOR
NOS ÚLTIMOS 12 MESES
APONTADOR.COM.BR
DE LOCAI...
•  Uma$auten)cação$que$funcione$
– E$que$funcione$também$no$celular$
•  Flexibilidade$para$o$)me$de$negócios$
•  Velocidad...
•  Rever$o$Modelo&de&Domínio&
•  Modelo$Flexível:$Novos&Endpoints&
•  Segurança:$OAuth2&
•  Uso$de$Frameworks&
•  Performa...
•  Defina$o$modelo&de&domínio&
– Não$dá$para$começar$sem$isso$
– Conheça$sua$empresa$(e$as$outras…)$
– Oportunidades$para$m...
Apontador API-V2
OAUTH2
•  Evolução$do$protocolo$OAUTH$1$(2007)$
•  Simplicidade:$Novos$Fluxos$
•  Adeus$compa)bilidade,$novo$protocolo$
• ...
OAUTH2: Como vendi a idéia
•  MicrosoY,$Google,$Facebook,$Foursquare$
•  Um$fluxo$para$celulares$
•  Login$em$aplicações$na...
OAUTH2
OAUTH2
hips://api.apontador.com.br/v2/oauth/authorize?
client_id=QConSP2013&redirect_uri=hip://seuhost/
&scope=read&respon...
Apontador REST API-V2
URI$Design$ $$
Plural$para$coleções$ /places$
Iden)ficação$ /places/M25GJ288$
Associações$ /places/M2...
APIGEE console
Apontador API-V2
STATUS$ $$
200$OK$
201$Created$
202$Accepted$
204$No$Content$
301$Moved$Permanently$
400$Bad$Request$
401...
Arquitetura e Frameworks
Linguagens$ Storage$ Frameworks$ Outros$
Java$ Oracle$ Spring$ Nginx$
Redis$ Tomcat$
Ac)veMQ$
Sol...
Spring
Aspectos: Perf4J + Splunk
Spring
REDIS
•  Cache$Chave=Valor$
•  Escrita$/$Leitura$separados$
•  Resiliência$e$Performance$
•  Ranking$
•  Armazenamento$tem...
Monitoração
Monitoração
@wandi wandi.darko@gmail.com
Q&A$
Próximos SlideShares
Carregando em…5
×

Apontador.com: A experiência da migração para uma plataforma REST

1.431 visualizações

Publicada em

Conheça a experiência do time do Apontador no desenvolvimento de uma nova API REST usando Java e Spring. Veja desafios encontrados, problemas/soluções e o resultado da experiência de um ano de desenvolvimento de uma nova plataforma de busca de locais. Principais tópicos:
- Contexto e melhores práticas do REST
- Autenticação e permissionamento com OAUTH2
- Negociação de conteúdo (XML, JSON)
- Console de desenvolvimento/testes
- Monitoração o estado da API
- Documentação e testes de integração

Publicada em: Tecnologia
2 comentários
10 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
1.431
No SlideShare
0
A partir de incorporações
0
Número de incorporações
12
Ações
Compartilhamentos
0
Downloads
21
Comentários
2
Gostaram
10
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apontador.com: A experiência da migração para uma plataforma REST

  1. 1. @wandi wandi.darko@gmail.com
  2. 2. 296 É O NÚMERO DE VISITAS AOS LOCAIS CADASTRADOS NO MILHÕES Sobre APONTADOR NOS ÚLTIMOS 12 MESES APONTADOR.COM.BR DE LOCAIS CADASTRADOS.MILHÕES 7.5 presença em todas as 5.565 cidades do Brasil. 17 MILHÕES DE USUÁRIOS VISITAM APONTADOR.COM.BR TODO MÊS. 3MILHÕES DE OPINIÕES SOBRE LOCAIS SÃO COMPARTILHADAS ENTRE OS USUÁRIOS. 13MILHÕES DE TELEFONES COMERCIAS SÃO ENCONTRADOS NO APONTADOR. 1 em cada 5 brasileiros acessam Apontador procurando por locais ou serviços.
  3. 3. •  Uma$auten)cação$que$funcione$ – E$que$funcione$também$no$celular$ •  Flexibilidade$para$o$)me$de$negócios$ •  Velocidade$na$entrega$de$novas$ funcionalidades$ •  Velocidade$no$tempo$de$resposta$ •  Maior$compa)bilidade$com$REST$ •  Design$for$Opera)ons$ •  Ahhh$e$que$seja$fácil$de$usar$ A missão da nova API (V2)
  4. 4. •  Rever$o$Modelo&de&Domínio& •  Modelo$Flexível:$Novos&Endpoints& •  Segurança:$OAuth2& •  Uso$de$Frameworks& •  Performance:$Escrita$Assíncrona$e$Caching$ •  Melhores&prá@cas&REST$ •  Design$for$Opera)ons:$Self&Tests& •  Console$de$desenvolvimento:$API&Playground& //COMOFAZ?
  5. 5. •  Defina$o$modelo&de&domínio& – Não$dá$para$começar$sem$isso$ – Conheça$sua$empresa$(e$as$outras…)$ – Oportunidades$para$melhorar$ •  Hipermídia& – Como$os$objetos$de$domínio$se$relacionam?$ •  Definir$endpoints$ – Cuidado$com$verbos$(REST$como$RPC)$ – Os$endpoints$são$o$limite&do&@me&de&negócio& Começando com REST
  6. 6. Apontador API-V2
  7. 7. OAUTH2 •  Evolução$do$protocolo$OAUTH$1$(2007)$ •  Simplicidade:$Novos$Fluxos$ •  Adeus$compa)bilidade,$novo$protocolo$ •  Tudo$HTTPS$ •  Homens$Trabalhando:$DraY$31$
  8. 8. OAUTH2: Como vendi a idéia •  MicrosoY,$Google,$Facebook,$Foursquare$ •  Um$fluxo$para$celulares$ •  Login$em$aplicações$na)vas$ •  //FIXME$correção$da$implementação$anterior$ •  SIMPLICIDADE$ curl$cX$POST$cd$ "client_id=QConSP2013&client_secret=PJHh01pWG1sbcq43vsOgAiXtA2C~&grant_ type=client_creden)als"$hips://api.apontador.com.br/v2/oauth/token$ curl$cX$GET$cH$"Accept:$applica)on/json"$cH$"Authoriza)on:$Bearer$ 2ab795caX71bcX45bbX8e48X40aa335a816d"$hips://api.apontador.com.br/v2/ places?q=pizzaria$
  9. 9. OAUTH2
  10. 10. OAUTH2 hips://api.apontador.com.br/v2/oauth/authorize? client_id=QConSP2013&redirect_uri=hip://seuhost/ &scope=read&response_type=code$ hip://seuhost/?code=ufXpQ8$ curl$hips://api.apontador.com.br/v2/oauth/token$cd$ "code=ufXpQ8&client_id=QConSP2013&client_secret=P JHh01pWG1sbcq43vsOgAiXtA2C~&redirect_uri=hip:// seuhost/&grant_type=authoriza)on_code"$
  11. 11. Apontador REST API-V2 URI$Design$ $$ Plural$para$coleções$ /places$ Iden)ficação$ /places/M25GJ288$ Associações$ /places/M25GJ288/reviews$ HTTP$ GET$PUT$POST$DELETE$ Conteúdo$ JSON$/$XML$ Paginação$ ?start=10&rows=10$ Busca$livre$ /places?q=pizzaria$ Conteúdo$parcial$ /places?q=pizzaria&fl=name,phones$ Verbos?$ /users/6715779712/resetPassword$ camelCase$ createdAt$ Versionamento$ hips://api.apontador.com.br/v2/places$
  12. 12. APIGEE console
  13. 13. Apontador API-V2 STATUS$ $$ 200$OK$ 201$Created$ 202$Accepted$ 204$No$Content$ 301$Moved$Permanently$ 400$Bad$Request$ 401$Unauthorized$ 402$Payment$Required$ 403$Forbidden$ 404$Not$Found$ 405$Method$Not$Allowed$ 409$Conflict$ 410$Gone$ 413$Request$En)ty$Too$Large$ 420$Enhance$your$calm$ 429$Too$Many$Requests$ 500$Internal$Server$Error$ 503$Service$Unavailable$
  14. 14. Arquitetura e Frameworks Linguagens$ Storage$ Frameworks$ Outros$ Java$ Oracle$ Spring$ Nginx$ Redis$ Tomcat$ Ac)veMQ$ Solr$
  15. 15. Spring
  16. 16. Aspectos: Perf4J + Splunk
  17. 17. Spring
  18. 18. REDIS •  Cache$Chave=Valor$ •  Escrita$/$Leitura$separados$ •  Resiliência$e$Performance$ •  Ranking$ •  Armazenamento$temporário$
  19. 19. Monitoração
  20. 20. Monitoração
  21. 21. @wandi wandi.darko@gmail.com Q&A$

×