SlideShare ist ein Scribd-Unternehmen logo
1 von 101
Como um grande
sistema REST
funciona
Arquitetura e Desempenho
FISL 2013
David Robert
davidrobert@gmail.com
twitter: @while42
github: davidrobert
AMBIENTE
Criar um
Gerenciador e
Publicador de
conteúdo digital para o
Grupo Abril
Criar um Gerenciador e Publicador de
conteúdo digital ...
Criar um Gerenciador e Publicador de
conteúdo digital ...
Qual?
Criar um Gerenciador e Publicador de
conteúdo digital ...
Matérias
Chamadas
Estabelecimentos
Imagens
Atrações
Famosos
Carros
Receitas
Jogos
Infográficos
etc etc ...
Qual?
Criar um Gerenciador e Publicador de
conteúdo digital ...
Publicar Onde?
Criar um Gerenciador e Publicador de
conteúdo digital ...
Web
Mobile
- Tablets
- CELULARES
SMART TV
API's
Publicar Onde?
gráfica
distribuidora
educação
Playboy Veja
Quatro Rodas
Super Interessante
Placar
“organizações que projetam sistemas
são restritas a produzir projetos que
são cópias das estruturas de
comunicação dessas organizações”
Lei de
Conway
http://www.melconway.com/Home/Conways_Law.html
CMS’s existem desde os anos 90.
Por que reiventamos a roda?
Porque
temos alta
diversidade
de
requisitos
negócios
pessoas
orçamentos
prioridades
culturas
{
Como construir uma
boa arquitetura?
Integração
o velho problema
Banco de Dados
Solução Prática #1
Solução Prática #2
Transferência de Arquivos
Solução Prática #3
Web Services
Como são os Web Services hoje?
Como são os Web Services hoje?
● WSDL
● SOAP
● XML
● RPC (Remote Procedure Call)
etc
1) Precisamos disso
tudo mesmo?
2) Alguém já não
resolveu isso?
3) Como avaliar se é
uma boa
arquitetura?
boa
arquitetura
necessidades
atendidas
custo
aceitável
= + * ß
ß
quão bem o seu cliente
sabe pedir o que quer
MTRH
MTRH
mean time to
recovery
happiness
ALEXANDRIA
diretoria
digital
Playbo
y
Vej
a
Quatro
Rodas
RAIO X
16 sites em produção
+/- 60 desenvolvedores
13 arquitetos de software
6 Gerentes de Projeto
4 Gerentes de Produto
1 Advocate da Plataforma
● MongoDB
● MySQL
● Hbase
● HDFS
● PostgreSQL
● memcached
● redis
● Ruby
● Java
● Javascript
● rails
● sinatra
● goliath
● node.js
● play
● jetty
● tokamak
● cachebag
● restfulie
Linguagens Storages Frameworks outros
● Solr
● Hadoop
● RabbitMQ
● Varnish
● New Relic
● Tracelytics
https://github.com/abril
Infraestrutura Alexandria + sites
● 91 VMs para ambientes dev, qa, stage
● AMC (Abril Mídia Cloud): private cloud (Xen/Open Stack)
● ou VMWare
● ~100 VMs + 20 físicas para produção
● Data center próprio, AWS, Heroku
● Total aproximado: 220 máquinas
+15 milhões de pageviews
(de jan até fev de 2013)
HTTP
domínio
● acesso e manipulação de recursos
● implementa regras de negócio
● servidor HTTP + base de dados
● infra “isolada”
● ~ 8 domínios
● ex: editorial (matérias, galerias, etc), anotações
(comentários), estabelecimentos, mídia, pessoas
serviço
● consumo e manipulação de recursos
● servidor HTTP + (opcional base de dados)
● infra “isolada”
● ~ 12 serviços
● ex: console, socialcore, search, Abril ID, abr.io, etc
data-entry
● entrada da Redação
● aplicação web
● ~ 1 para cada domínio
● “API explorer”
sitetools● admin do site
● manipulação das áreas e templates
● agiliza criação de produtos
● a fronteira com o usuário
● opcional
HTTP
domínio
serviço
data-entry sitetools
system of systems
Como integrar?
REST
Por que escolhemos REST?
Por que escolhemos REST?
● Protocolo de transferência bastante utilizado
● Escalabilidade
● Performance alta
● Alta disponibilidade
● Permitir evolução sem parar o sistema
● Permitir evolução sem quebrar os clientes
● Segurança
Por que escolhemos REST?
● HTTP
● Escalabilidade
● Performance alta
● Alta disponibilidade
● Permitir evolução sem parar o sistema
● Permitir evolução sem quebrar os clientes
● Segurança
Por que escolhemos REST?
● HTTP
● Web Cache
● Performance alta
● Alta disponibilidade
● Permitir evolução sem parar o sistema
● Permitir evolução sem quebrar os clientes
● Segurança
Por que escolhemos REST?
● HTTP
● Web Cache
● Web Proxy (localização geografica)
● Alta disponibilidade
● Permitir evolução sem parar o sistema
● Permitir evolução sem quebrar os clientes
● Segurança
Por que escolhemos REST?
● HTTP
● Web Cache
● Web Proxy (localização geografica)
● Load Balancers "comoditizados"
● Permitir evolução sem parar o sistema
● Permitir evolução sem quebrar os clientes
● Segurança
Por que escolhemos REST?
● HTTP
● Web Cache
● Web Proxy (localização geografica)
● Load Balancers "comoditizados"
● Load Balancers
● Permitir evolução sem quebrar os clientes
● Segurança
Por que escolhemos REST?
● HTTP
● Web Cache
● Web Proxy (localização geografica)
● Load Balancers "comoditizados"
● Load Balancers
● HTML, JSON, XML
● Segurança
Por que escolhemos REST?
● HTTP
● Web Cache
● Web Proxy (localização geografica)
● Load Balancers "comoditizados"
● Load Balancers
● HTML, JSON, XML
● HTTPS / TLS
Como integrar e ter baixo
acoplamento?
Como integrar e ter baixo
acoplamento?
Interface Uniforme
resouce identification
http://editorial.api.abril.com.br/materia/dicas
http://editorial.api.abril.com.br/materia/ac23657fg
http://bebe.abril.com.br/materia/ac23657fg
resources
resources
{
"tipo_recurso" : "materia",
"link" : [
{
"href" : "http://editorial.api.abril.com.br/materia/4f0dea5a1e13694",
"rel" : "self",
"type" : "application/json"
},
{
"href" : "http://editorial.api.abril.com.br/materias",
"rel" : "materias",
"type" : "application/json"
}
],
"id" : "http://editorial.api.abril.com.br/materia/4f0dea5a1e13694",
"slug" : "o-quintal-da-realeza",
"marca" : "viajeaqui",
"status" : "disponivel",
"descricao_conteudo" : "O quintal da realeza",
"fonte" : "viajeaqui",
(continua)
representations
JSON
e um tiquinho assim de XML
ou melhor,
de application/opensearchdescription+xml
representations
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:grafo="http:
//socialcore.api.abril.com.br/grafo/busca">
<ShortName>Buscar relacionamentos</ShortName>
<Description>Busca de relacionamentos no grafo</Description>
<Url type="application/json"
template="http://socialcore.api.abril.com.br/grafo/busca?usuario={grafo:usuario?}
&amp;tipo={grafo:tipo}"/>
<Query role="example"
title="Exemplo de valores dos parâmetros"
grafo:usuario="id do usuario"
grafo:tipo="segue |seguido_por " />
</OpenSearchDescription>
representations
hypermedia
Exemplo: criar uma atividade
de um usuário no site.
Sabendo somente o entrypoint:
http://socialcore.api.abril.com.br
POST http://socialcore.api.abril.com.br/
Accept: application/json
hypermedia
POST???
hypermedia
HTTP/1.1 405 Method Not Allowed
Allow: GET
hypermedia
GET http://socialcore.api.abril.com.br/
Accept: application/json
hypermedia
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"titulo": "socialcore",
"link": [
{
"href": "http://socialcore.api.abril.com.br/",
"rel": "self",
"type": "application/json"
},
{
"href": "http://socialcore.api.abril.com.br/atividade",
"rel": "atividade",
"type": "application/json"
},
{
"href": "http://socialcore.api.abril.com.br/grafo",
"rel": "grafo",
"type": "application/json"
}
]
}
hypermedia
GET http://socialcore.api.abril.com.br/atividade
Accept: application/json
hypermedia
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"titulo": "Entry Point de Atividades",
"link": [
{
"href": "http://socialcore.api.abril.com.br/atividade/template",
"rel": "template",
"type": "application/json"
},
{
"href": "http://socialcore.api.abril.com.br/atividade/busca/descritor",
"rel": "search",
"type": "application/opensearchdescription+xml"
},
{
"href": "http://socialcore.api.abril.com.br/atividade/stat/descritor",
"rel": "stat",
"type": "application/opensearchdescription+xml"
}
]
}
hypermedia
GET http://socialcore.api.abril.com.br/atividade/template
Accept: application/json
hypermedia
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"atividade": {
"app": "",
"created_at": "",
"usuario": "",
"tipo": "",
"objeto": {
"tipo": ""
},
"resultado": {
"tipo": ""
}
},
(continua)
hypermedia
"link": [
{
"href": "http://socialcore.api.abril.com.br/atividade",
"rel": "atividade",
"type": "application/json"
},
{
"href": "http://socialcore.api.abril.com.br/atividade/busca/descritor",
"rel": "search",
"type": "application/opensearchdescription+xml"
},
{
"href": "http://socialcore.api.abril.com.br/atividade/stat/descritor",
"rel": "stat",
"type": "application/opensearchdescription+xml"
}
]
}
hypermedia
POST http://socialcore.api.abril.com.br/atividade
Accept: application/json
Content-Type: application/json; charset=utf-8
Authentication: Basic 37rnx9w87rjdw87gri
{
"atividade": {
"app": "http://aapg.api.abril.com.br/produtos/1",
"created_at": 1325086429,
"tipo": "comentar",
"objeto": {
"descricao": "Titulo da materia",
"id": "http://veja.abril.com.br/noticia/economia/confianca-da",
"tipo": "materia"
},
"resultado": {
"corpo": "otima materia",
"id": "http://veja.abril.com.br/noticia/economia/confianca-da/comments/1",
"tipo": "comentario"
}
}
}
hypermedia
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json; charset=utf-8
{
"tipo_recurso":"erro",
"atividade":{
"usuario":"",
},
"erros":[
{"atributo":"usuario","mensagem":["é obrigatório"]}
]
}
hypermedia
POST http://socialcore.api.abril.com.br/atividade
Accept: application/json
Content-Type: application/json; charset=utf-8
Authentication: Basic 37rnx9w87rjdw87gri
{
"atividade": {
"app": "http://aapg.api.abril.com.br/produtos/1",
"created_at": 1325086429,
"usuario": "http://aapg.api.abril.com.br/usuarios/2",
"tipo": "comentar",
"objeto": {
"descricao": "Titulo da materia",
"id": "http://veja.abril.com.br/noticia/economia/confianca-da",
"tipo": "materia"
},
"resultado": {
"corpo": "otima materia",
"id": "http://veja.abril.com.br/noticia/economia/confianca-da/comments/1",
"tipo": "comentario"
}
}
}
hypermedia
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Location: http://socialcore.api.abril.com.
br/atividade/0922307
o/
hypermedia
application
protocol
HTTPstatus codes
representation metadata
resource metadata
control data
e a performance
disso tudo ai?
a requisição mais rapida
que o servidor executa é
aquela que ele não executa
estratégia de cache HTTP é
imprescindível
Palestra: Abusando nas requisições HTTP sem medo
http://goo.gl/k29NU
Lições aprendidas
pontos importantes em performance
client
origin server
● performance dos connectors
● non-blocking HTTP clients
● cache local
● middleware architecture
● libs padronizadas
● short stacks
● evented servers
● libs padronizadas
● good TTL strategy
● middleware architecture
● caches
● HTTP plumbing
● Lei de Postel
"Seja conservador no que faz, seja liberal no que você
aceita dos outros"
●
● Lei de Postel
"Seja conservador no que faz, seja liberal no que você
aceita dos outros"
● REST é uma arquitetura de longo prazo
●
● Lei de Postel
"Seja conservador no que faz, seja liberal no que você
aceita dos outros"
● REST é uma arquitetura de longo prazo
● Defenda com todas as suas forças:
● seus metadados (recursos)
● sua interface
●
● Lei de Postel
"Seja conservador no que faz, seja liberal no que você
aceita dos outros"
● REST é uma arquitetura de longo prazo
● Defenda com todas as suas forças:
● seus metadados (recursos)
● sua interface
● Documentação é essencial
●
● Lei de Postel
"Seja conservador no que faz, seja liberal no que você
aceita dos outros"
● REST é uma arquitetura de longo prazo
● Defenda com todas as suas forças:
● seus metadados (recursos)
● sua interface
● Documentação é essencial
● Independência de desenvolvimento dos nós tem suas
desvantagens
●
● Lei de Postel
"Seja conservador no que faz, seja liberal no que você
aceita dos outros"
● REST é uma arquitetura de longo prazo
● Defenda com todas as suas forças:
● seus metadados (recursos)
● sua interface
● Documentação é essencial
● Independência de desenvolvimento dos nós tem suas
desvantagens
● Medir/monitorar o desempenho é importantíssimo
Assumimos que nossa
arquitetura está válida
necessidades
atendidas
custo
aceitável
+ * ß
MTRH
mas...
e quando REST
não for suficiente?
não use REST
Os responsáveis
PERGUNTAS ?
engineering.abril.com.br
digital.abril.com.br
Obrigado!
David Robert

Weitere ähnliche Inhalte

Was ist angesagt?

APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPRenan Gonçalves
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHPAdler Medrado
 
Android webservice
Android webserviceAndroid webservice
Android webserviceAlan Echer
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web ServicesFabio Leal
 
Desenvolvimento Web : HTML5, CSS3 & JavaScript
Desenvolvimento Web : HTML5, CSS3 & JavaScriptDesenvolvimento Web : HTML5, CSS3 & JavaScript
Desenvolvimento Web : HTML5, CSS3 & JavaScriptFábio Flatschart
 
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Bruno Rocha
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPSérgio Vilar
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 

Was ist angesagt? (20)

Construindo um sistema distribuido usando rest
Construindo um sistema distribuido usando restConstruindo um sistema distribuido usando rest
Construindo um sistema distribuido usando rest
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Rest Teoria E Pratica
Rest Teoria E PraticaRest Teoria E Pratica
Rest Teoria E Pratica
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHP
 
Webservices
WebservicesWebservices
Webservices
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHP
 
Android webservice
Android webserviceAndroid webservice
Android webservice
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Boas práticas de API Design
Boas práticas de API DesignBoas práticas de API Design
Boas práticas de API Design
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web Services
 
Desenvolvimento Web : HTML5, CSS3 & JavaScript
Desenvolvimento Web : HTML5, CSS3 & JavaScriptDesenvolvimento Web : HTML5, CSS3 & JavaScript
Desenvolvimento Web : HTML5, CSS3 & JavaScript
 
Introdução APIs RESTful
Introdução APIs RESTfulIntrodução APIs RESTful
Introdução APIs RESTful
 
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 

Andere mochten auch

TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory DatabaseAndre Danelon
 
Baixo Acoplamento e Alta Coesão
Baixo Acoplamento e Alta CoesãoBaixo Acoplamento e Alta Coesão
Baixo Acoplamento e Alta Coesãocelodemelo
 
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaREST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaCarl Edwin Antonio Nascimento
 
Gestão de Projetos - Exemplo de Documentação de Projeto
Gestão de Projetos - Exemplo de Documentação de ProjetoGestão de Projetos - Exemplo de Documentação de Projeto
Gestão de Projetos - Exemplo de Documentação de ProjetoCarl Edwin Antonio Nascimento
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCLuiz Ricardo Silva
 

Andere mochten auch (6)

TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory Database
 
Baixo Acoplamento e Alta Coesão
Baixo Acoplamento e Alta CoesãoBaixo Acoplamento e Alta Coesão
Baixo Acoplamento e Alta Coesão
 
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaREST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
 
Gestão de Projetos - Exemplo de Documentação de Projeto
Gestão de Projetos - Exemplo de Documentação de ProjetoGestão de Projetos - Exemplo de Documentação de Projeto
Gestão de Projetos - Exemplo de Documentação de Projeto
 
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
CONEXÃO BANCO DE DADOS MYSQL  COM JAVACONEXÃO BANCO DE DADOS MYSQL  COM JAVA
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
 

Ähnlich wie Como um grande sistema REST funciona - arquitetura e desempenho

Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Luis Cipriani
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAnitaibezerra
 
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesPHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesiMasters
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosBruno Ghisi
 
WSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesWSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesEdgar Silva
 
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...Amazon Web Services LATAM
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringFelipe Klerk Signorini
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
Site estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfSite estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfDanilo Pinotti
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...tdc-globalcode
 
Azure e suas vantagens (Palestra 1)
Azure e suas vantagens (Palestra 1) Azure e suas vantagens (Palestra 1)
Azure e suas vantagens (Palestra 1) Marcus Garcia
 
SharePoint Framework - Uma plataforma aberta e conectada
SharePoint Framework - Uma plataforma aberta e conectadaSharePoint Framework - Uma plataforma aberta e conectada
SharePoint Framework - Uma plataforma aberta e conectadaLambda3
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
Desenvolvimento web com software livre
Desenvolvimento web com software livreDesenvolvimento web com software livre
Desenvolvimento web com software livreRuan Carvalho
 
Desenvolvimento web com Software Livre
Desenvolvimento web com Software LivreDesenvolvimento web com Software Livre
Desenvolvimento web com Software LivreRuan Carvalho
 
Tudo que Você Precisa Saber para Hackear o Google
Tudo que Você Precisa Saber para Hackear o GoogleTudo que Você Precisa Saber para Hackear o Google
Tudo que Você Precisa Saber para Hackear o GoogleFelipe Bazon
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012Carlos Casalicchio
 

Ähnlich wie Como um grande sistema REST funciona - arquitetura e desempenho (20)

Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
 
Como um grande sistema REST funciona
Como um grande sistema REST funcionaComo um grande sistema REST funciona
Como um grande sistema REST funciona
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
 
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesPHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviços
 
WSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesWSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e Suportes
 
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
AWS Data Immersion Webinar Week - Planeje e entenda como criar um repositório...
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Site estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfSite estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdf
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
 
Azure e suas vantagens (Palestra 1)
Azure e suas vantagens (Palestra 1) Azure e suas vantagens (Palestra 1)
Azure e suas vantagens (Palestra 1)
 
SharePoint Framework - Uma plataforma aberta e conectada
SharePoint Framework - Uma plataforma aberta e conectadaSharePoint Framework - Uma plataforma aberta e conectada
SharePoint Framework - Uma plataforma aberta e conectada
 
IBM WebSphere Portal
IBM WebSphere PortalIBM WebSphere Portal
IBM WebSphere Portal
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
Desenvolvimento web com software livre
Desenvolvimento web com software livreDesenvolvimento web com software livre
Desenvolvimento web com software livre
 
Desenvolvimento web com Software Livre
Desenvolvimento web com Software LivreDesenvolvimento web com Software Livre
Desenvolvimento web com Software Livre
 
Tudo que Você Precisa Saber para Hackear o Google
Tudo que Você Precisa Saber para Hackear o GoogleTudo que Você Precisa Saber para Hackear o Google
Tudo que Você Precisa Saber para Hackear o Google
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012
 

Mehr von David Robert Camargo de Campos

Evolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto DesempenhoEvolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto DesempenhoDavid Robert Camargo de Campos
 
Evolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoEvolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoDavid Robert Camargo de Campos
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e KotlinO uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e KotlinDavid Robert Camargo de Campos
 
Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7David Robert Camargo de Campos
 
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014David Robert Camargo de Campos
 
Robustez de Software - Como ouvir menos reclamações dos seus chefes
Robustez de Software - Como ouvir menos reclamações dos seus chefesRobustez de Software - Como ouvir menos reclamações dos seus chefes
Robustez de Software - Como ouvir menos reclamações dos seus chefesDavid Robert Camargo de Campos
 

Mehr von David Robert Camargo de Campos (15)

Evolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto DesempenhoEvolução cultural - Criando Times de Alto Desempenho
Evolução cultural - Criando Times de Alto Desempenho
 
Evolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoEvolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenho
 
Introdução ao kotlin
Introdução ao kotlinIntrodução ao kotlin
Introdução ao kotlin
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e KotlinO uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
 
Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7
 
Cultura na engenharia & Impacto no recrutamento
Cultura na engenharia & Impacto no recrutamentoCultura na engenharia & Impacto no recrutamento
Cultura na engenharia & Impacto no recrutamento
 
Os desafios de um chat integrado ao checkout
Os desafios de um chat integrado ao checkoutOs desafios de um chat integrado ao checkout
Os desafios de um chat integrado ao checkout
 
Times de Alta Performance
Times de Alta PerformanceTimes de Alta Performance
Times de Alta Performance
 
Programando em Go
Programando em GoProgramando em Go
Programando em Go
 
An introduction to programming in Go
An introduction to programming in GoAn introduction to programming in Go
An introduction to programming in Go
 
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
Lidando com Java obsoleto: do Struts 1.0 ao CDI - QConSP 2014
 
Implementação, design ou arquitetura?
Implementação, design ou arquitetura?Implementação, design ou arquitetura?
Implementação, design ou arquitetura?
 
Dojo abril
Dojo abrilDojo abril
Dojo abril
 
Dicas para deixar seu código mais Robusto
Dicas para deixar seu código mais RobustoDicas para deixar seu código mais Robusto
Dicas para deixar seu código mais Robusto
 
Robustez de Software - Como ouvir menos reclamações dos seus chefes
Robustez de Software - Como ouvir menos reclamações dos seus chefesRobustez de Software - Como ouvir menos reclamações dos seus chefes
Robustez de Software - Como ouvir menos reclamações dos seus chefes
 

Como um grande sistema REST funciona - arquitetura e desempenho