21

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

@wandi [email protected]

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

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.

13 MILHÕES

DE TELEFONES COMERCIAS SÃO ENCONTRADOS NO APONTADOR.

1 em cada 5 brasileiros acessam Apontador

procurando por locais ou serviços.

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

•  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)

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

•  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?

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

•  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

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

Apontador API-V2

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

OAUTH2

•  Evolução$do$protocolo$OAUTH$1$(2007)$•  Simplicidade:$Novos$Fluxos$

•  Adeus$compa)bilidade,$novo$protocolo$

•  Tudo$HTTPS$•  Homens$Trabalhando:$DraY$31$

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

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$

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

OAUTH2

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

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=PJHh01pWG1sbcq43vsOgAiXtA2C~&redirect_uri=hip://

seuhost/&grant_type=authoriza)on_code"$

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

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$

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

APIGEE console

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

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$

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

Arquitetura e Frameworks

Linguagens$ Storage$ Frameworks$ Outros$

Java$ Oracle$ Spring$ Nginx$

Redis$ Tomcat$

Ac)veMQ$

Solr$

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

Spring

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

Aspectos: Perf4J + Splunk

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

Spring

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

REDIS

•  Cache$Chave=Valor$•  Escrita$/$Leitura$separados$•  Resiliência$e$Performance$

•  Ranking$•  Armazenamento$temporário$

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

Monitoração

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

Monitoração

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

@wandi [email protected]

Q&A$