Caelum 2010 - Rest Arquitetura Irreponsavel?
Upcoming SlideShare
Loading in...5
×
 

Caelum 2010 - Rest Arquitetura Irreponsavel?

on

  • 3,328 views

Apresentação sobre a arquitetura REST e seus principais aspectos

Apresentação sobre a arquitetura REST e seus principais aspectos

Statistics

Views

Total Views
3,328
Views on SlideShare
3,320
Embed Views
8

Actions

Likes
2
Downloads
61
Comments
0

1 Embed 8

http://www.slideshare.net 8

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • ANTIGAMENTE home banking era DIAL UP!!!
  • xml-rpc: dave winer <br /> soap: microsoft <br /> clientes automatizados fazer requisicoes http, como um ser humano estava fazendo
  • xml-rpc usa parte do http <br /> soap usa parte do http <br /> mas e a tal da hypermedia? <br /> e o resto do http?
  • o quanto voce usa da web no seu sistema?
  • evolue sem problemas
  • constraint: vc PRECISA nao se preocupar com a evolucao dele. se vc quiser, vc usa, se vc nao sabe, tudo bem... mas eh o padrao. <br /> media type: xml com link nao existe, tem que ser vendor specific: vnd/a+xml
  • constraint: vc PRECISA nao se preocupar com a evolucao dele. se vc quiser, vc usa, se vc nao sabe, tudo bem... mas eh o padrao. <br /> media type: xml com link nao existe, tem que ser vendor specific: vnd/a+xml
  • URI <br /> HTTP &#xE9; stateless
  • HTTP &#xE9; a nossa API <br /> http headers <br /> http &#xE9; stateless
  • URI <br /> HTTP &#xE9; stateless <br /> - http response codes <br /> - http headers <br /> - cache <br /> - load balancing
  • constraint: vc PRECISA nao se preocupar com a evolucao dele. se vc quiser, vc usa, se vc nao sabe, tudo bem... mas eh o padrao. <br /> media type: xml com link nao existe, tem que ser vendor specific: vnd/a+xml
  • constraint: vc PRECISA nao se preocupar com a evolucao dele. se vc quiser, vc usa, se vc nao sabe, tudo bem... mas eh o padrao. <br /> media type: xml com link nao existe, tem que ser vendor specific: vnd/a+xml
  • constraint: vc PRECISA nao se preocupar com a evolucao dele. se vc quiser, vc usa, se vc nao sabe, tudo bem... mas eh o padrao. <br /> media type: xml com link nao existe, tem que ser vendor specific: vnd/a+xml
  • verbos idempotentes
  • usa PUT n&#xE3;o readiciona
  • - https <br /> - oauth
  • o quanto voce usa da web no seu sistema?
  • verbos idempotentes
  • verbos idempotentes
  • verbos idempotentes
  • verbos idempotentes
  • verbos idempotentes
  • comportamento novo NAO deve quebrar o que ja existe
  • nao precisa ficar criando uma biblioteca para cada protocolo proprietario que inventamos (a API nossa)... afinal a API &#xC9; A WEB
  • constraint: vc PRECISA nao se preocupar com a evolucao dele. se vc quiser, vc usa, se vc nao sabe, tudo bem... mas eh o padrao. <br /> media type: xml com link nao existe, tem que ser vendor specific: vnd/a+xml
  • constraint: vc PRECISA nao se preocupar com a evolucao dele. se vc quiser, vc usa, se vc nao sabe, tudo bem... mas eh o padrao. <br /> media type: xml com link nao existe, tem que ser vendor specific: vnd/a+xml
  • constraint: vc PRECISA nao se preocupar com a evolucao dele. se vc quiser, vc usa, se vc nao sabe, tudo bem... mas eh o padrao. <br /> media type: xml com link nao existe, tem que ser vendor specific: vnd/a+xml

Caelum 2010 - Rest Arquitetura Irreponsavel? Caelum 2010 - Rest Arquitetura Irreponsavel? Presentation Transcript

  • REST: Arquitetura Irresponsável? Guilherme Silveira @guilhermecaelum REST Arquitetura Irresponsável Www.caelum.com.br
  • Requisitos não funcionais
  • Requisitos não funcionais ✤ protocolo de transferência de dados amplamente utilizado
  • Requisitos não funcionais ✤ protocolo de transferência de dados amplamente utilizado ✤ escalabilidade
  • Requisitos não funcionais ✤ protocolo de transferência de dados amplamente utilizado ✤ escalabilidade ✤ performance alta
  • Requisitos não funcionais ✤ protocolo de transferência de dados amplamente utilizado ✤ escalabilidade ✤ performance alta ✤ alta disponibilidade
  • Requisitos não funcionais ✤ protocolo de transferência de dados amplamente utilizado ✤ escalabilidade ✤ performance alta ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema
  • Requisitos não funcionais ✤ protocolo de transferência de dados amplamente utilizado ✤ escalabilidade ✤ performance alta ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes
  • Requisitos não funcionais ✤ protocolo de transferência de dados amplamente utilizado ✤ escalabilidade ✤ performance alta ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  • Top hits? ✤ protocolo de transferência de dados amplamente utilizado ✤ escalabilidade ✤ performance alta ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  • Top hits? ✤ http ✤ escalabilidade ✤ performance alta ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  • Top hits? ✤ http ✤ web: caches ✤ performance alta ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  • Top hits? ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  • Top hits? ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ http: load balancers “comoditizados” ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  • Top hits? ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ http: load balancers “comoditizados” ✤ http: load balancers ✤ permitir evolução sem quebrar clientes ✤ segurança
  • Top hits? ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ http: load balancers “comoditizados” ✤ http: load balancers ✤ web: html e loosely coupling ✤ segurança
  • Top hits? ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ http: load balancers “comoditizados” ✤ http: load balancers ✤ web: html e loosely coupling ✤ tls: https
  • “O” sistema escalável: a web ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ http: load balancers “comoditizados” ✤ http: load balancers ✤ web: html e loosely coupling ✤ tls: https
  • Protocolos da Internet ftp: arquivos REST Arquitetura Irresponsável Www.caelum.com.br
  • Protocolos da Internet smtp: email ftp: arquivos REST Arquitetura Irresponsável Www.caelum.com.br
  • Protocolos da Internet smtp: email nntp: fórum de ftp: arquivos discussão REST Arquitetura Irresponsável Www.caelum.com.br
  • Protocolos da Internet smtp: email irc: chat nntp: fórum de discussão ftp: arquivos REST Arquitetura Irresponsável Www.caelum.com.br
  • Protocolos da Internet smtp: email irc: chat telnet: acesso remoto nntp: fórum de discussão ftp: arquivos REST Arquitetura Irresponsável Www.caelum.com.br
  • Protocolos da Internet smtp: email irc: chat telnet: acesso remoto gopher, www: hipertexto nntp: fórum de discussão ftp: arquivos REST Arquitetura Irresponsável Www.caelum.com.br
  • Protocolos da Internet smtp: email irc: chat veronica: busca em gopher wais: busca em banco de dados archie: busca em ftp telnet: acesso remoto gopher, www: hipertexto nntp: fórum de discussão ftp: arquivos prospero: directory services REST Arquitetura Irresponsável Www.caelum.com.br
  • E hoje? REST Arquitetura Irresponsável Www.caelum.com.br
  • E hoje? smtp: email bittorrent: arquivos irc, im: chat ssh: acesso remoto REST Arquitetura Irresponsável Www.caelum.com.br
  • E hoje? home banking: www compras: www calendário: www email: www chat: www documentos: www conteúdo restrito: www sexo: www REST Arquitetura Irresponsável Www.caelum.com.br
  • 2000 - Roy Fielding why the web? why? REST Arquitetura Irresponsável Www.caelum.com.br
  • protocolos usando http xml-rpc soap REST Arquitetura Irresponsável Www.caelum.com.br
  • http != www REST Arquitetura Irresponsável Www.caelum.com.br
  • Solução clássica guj.com.br 2 milhões de page views - jetty - Nginx
  • Solução moderna caelum.com.br cloud - google app engine - amazon - locaweb - engineyard
  • Solução contemporânea REST na web
  • características da web uri http hypermedia REST Arquitetura Irresponsável Www.caelum.com.br
  • Leonard Richardson’s maturity model 0 - nada 1 - uri 2 - http 3 - hypermedia REST Arquitetura Irresponsável Www.caelum.com.br
  • Loosely Coupled REST Arquitetura Irresponsável Www.caelum.com.br
  • class Order acts_as_restfulie do |t| t << :pay end end na prática: ruby REST Arquitetura Irresponsável Www.caelum.com.br
  • na prática: ruby <order> <client> <name>guilherme silveira</name> </client> <link rel=”pay” href=”.../order/3/pay” /> </order> REST Arquitetura Irresponsável Www.caelum.com.br
  • Addressability REST Arquitetura Irresponsável Www.caelum.com.br
  • Visibility REST Arquitetura Irresponsável Www.caelum.com.br
  • Scalability REST Arquitetura Irresponsável Www.caelum.com.br
  • na prática: ruby cache_info = {:etag => resource} cache_info[:last_modified] = resource.updated_at if stale? cache_info options[:controller] = self render :xml => resource.to_xml(options) end REST Arquitetura Irresponsável Www.caelum.com.br
  • na prática: ruby # cache-control news = Restfulie.at(uri).get news.self.self.self.self REST Arquitetura Irresponsável Www.caelum.com.br
  • na prática: ruby # etags order = Restfulie.at(uri).get order.self.self.self.self.self order.cancel REST Arquitetura Irresponsável Www.caelum.com.br
  • Fault tolerant REST Arquitetura Irresponsável Www.caelum.com.br
  • prática: fault tolerant order = Order.from_web “.../order/3” order.add(item) # usa PUT order.add(item) # usa PUT, não irá readicionar REST Arquitetura Irresponsável Www.caelum.com.br
  • Segurança REST Arquitetura Irresponsável Www.caelum.com.br
  • Search - indexing REST Arquitetura Irresponsável Www.caelum.com.br
  • $$$ e os custos? $$$ REST Arquitetura Irresponsável Www.caelum.com.br
  • huge vendor stack REST Arquitetura Irresponsável Www.caelum.com.br
  • middleware opensource REST Arquitetura Irresponsável Www.caelum.com.br
  • vendor lock-in REST Arquitetura Irresponsável Www.caelum.com.br
  • web REST Arquitetura Irresponsável Www.caelum.com.br
  • prática: loose coupling user = Flickr.from_web “.../users/guilhermesilveira” user.movies.add movie # comportamento novo user.photos.add photo # POST user.account.upgrade # POST REST Arquitetura Irresponsável Www.caelum.com.br
  • prática: one application protocol user = Flickr.from_web “.../users/guilhermesilveira” user.photos.add photo # POST user.account.upgrade # POST REST Arquitetura Irresponsável Www.caelum.com.br
  • na prática: github REST Arquitetura Irresponsável Www.caelum.com.br
  • na prática: github quero watchear um projeto? REST Arquitetura Irresponsável Www.caelum.com.br
  • na prática: github quero watchear um projeto? GET/POST /projeto/watch GET/POST /projeto/unwatch REST Arquitetura Irresponsável Www.caelum.com.br
  • na prática: github quero watchear um projeto? GET/POST /projeto/watch GET/POST /projeto/unwatch POST /projeto/watcher ==> created /projeto/watcher/545 DELETE /projeto/watcher/545 REST Arquitetura Irresponsável Www.caelum.com.br
  • restfulie - ruby - java - c# - php? - erlang? - outras linguagens? http://restfulie.caelum.com.br REST Arquitetura Irresponsável Www.caelum.com.br
  • REST Arquitetura Irresponsável? Guilherme Silveira @guilhermecaelum REST Arquitetura Irresponsável Www.caelum.com.br