SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
MercadoLivre Developers Conference
Arquitetura de mensagens
assíncrona.
Gerente de Desenvolvimento
MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
AGENDA
➔ Diferença entre sites e plataformas
➔ Organização de recursos
➔ Arquitetura de mensagens
➔ Consistência eventual
➔ Lições aprendidas
➔ Perguntas
MercadoLivre Developers Conference
Lembramos a diferença de um site e uma plataforma
Arquitetura de mensagens assíncrona.
WebSite
Frontend
Platform API
Mobile Device
DB
Third-party
MercadoLivre Developers Conference
Os recursos da nossa API estão agrupados lógicamente em
departamentos
Cada departamento é independente dos outros, isto significa:
● Escolha livre de tecnologia
● Deploys independentes
● Minimizar dependência
Arquitetura de mensagens assíncrona.
Externamente a API é como uma coisa só, mas está toda dividida em
departamentos.
MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
Items
/items
/items/MLBX/descriptions
/items/MLBX/relist
Categories
/categories/MLXXX
Questions
/questions/
MercadoLivre API RestFul
Ok, mas como fazemos quando dois ou
mais departamentos dividem dados.
MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
MercadoLivre Developers Conference
Um departamento tem uma cópia original e propaga as mudanças aos
outros, por exemplo, o recurso de items realiza operações básicas
(CRUD) e propaga os eventos ao motor de busca para que indexe as
publicações.
Arquitetura de mensagens assíncrona.
/items (GET, PUT, POST, DELETE )
MercadoLivre - API ResFul
/sites/MLB/search?q=ipod
Web Servers
Cache
SQL Database
Search Engine
Web Servers
events
MercadoLivre Developers Conference
O serviço de fila permite propagar uma mensagem por meio de um
feed e a guarda até que alguém a consuma.
Arquitetura de mensagens assíncrona.
Queue Service
items
search
queue
moderation
queue
items-feed
moderation
search
MercadoLivre Developers Conference
Como chegam as mensagens?
Arquitetura de mensagens assíncrona.
Dado que as mensagens são assíncronas, elas podem chegar
desordenadas e como não se persiste em um único lugar, podem
chegar repetidas.
Então as mensagens:
● Podem chegar repetidas
● Podem chegar desordenadas
A solução é que a ação realizada depois de receber uma
mensagem seja idempotente.
MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
Qual o conteúdo das mensagens?
MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
MercadoLivre Developers Conference
Utilizamos 2 tipos de mensagens
Arquitetura de mensagens assíncrona.
Apenas o ID do
recurso modificado
Vantagem
- Mensagem pequena
Desvantagem
- GET para obter os dados
Toda a entidade com
id de versão
Vantagem
- Não necessita um GET
ao recurso
Desvantagem
- A mensagem é mais
pesada
MercadoLivre Developers Conference
Um poucos mais de teoria
Arquitetura de mensagens assíncrona.
Não forçar uma consistência nos ajuda a
obter
● Latência baixa
● Alta disponibilidade e tolerância a falhas
● Facilidade para escalar
Devido a nossa plataforma estar altamente distribuída e utilizar
mensagens assíncronas, existe uma consistência eventual.
MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
MercadoLivre Developers Conference
E para que podemos utilizar esta
arquitetura?
Arquitetura de mensagens assíncrona.
Diferenças entre o hábito de guardar dados em uma tabela e processar
depois X utilizar uma fila de mensagens.
MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
Jobs
Queue
Services
Workers
Workers
ID Status Work Date
1 Pending ..... 12/31
2 Pending ..... 12/31
3 Done .... 12/31
4 Done ..... 12/31
MercadoLivre Developers Conference
O que aprendemos no caminho
Arquitetura de mensagens assíncrona.
Trabalhe offline
● Minimizar o trabalho para responder cada request.
● Tudo o que pode ser feito offline, não faça online.
Guardar informações redundantes
● Se os dados têm múltiplas formas de apresentação, guarde todas elas.
● O espaço em disco e memória é mais barato que fazer o usuário esperar.
Cachear tudo
● Informação da base de dados.
● Guardar dados pré-carregados.
MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
Perguntas?
Pablo Moretti
@elsantob

Más contenido relacionado

La actualidad más candente

WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017Edgar Silva
 
TDC2017 | São Paulo - Trilha DevTest How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha DevTest How we figured out we had a SRE team at ...TDC2017 | São Paulo - Trilha DevTest How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha DevTest How we figured out we had a SRE team at ...tdc-globalcode
 
Desenvolvendo aplicativos multi-tenant com Xamarin.Forms
Desenvolvendo aplicativos multi-tenant com Xamarin.FormsDesenvolvendo aplicativos multi-tenant com Xamarin.Forms
Desenvolvendo aplicativos multi-tenant com Xamarin.FormsOberdan Bitencourt Ferreira
 
Desenvolvendo aplicativos multi-tenant com Xamarin.Forms
Desenvolvendo aplicativos multi-tenant com Xamarin.FormsDesenvolvendo aplicativos multi-tenant com Xamarin.Forms
Desenvolvendo aplicativos multi-tenant com Xamarin.FormsOberdan Bitencourt Ferreira
 
Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2Edgar Silva
 
WSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da TransformaçãoWSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da TransformaçãoEdgar Silva
 
Desenvolvendo APPs Com Angular.JS + Cordova
Desenvolvendo APPs Com Angular.JS �+ CordovaDesenvolvendo APPs Com Angular.JS �+ Cordova
Desenvolvendo APPs Com Angular.JS + CordovaGustavo Costa
 
ASP.NET Single Page Application
ASP.NET Single Page ApplicationASP.NET Single Page Application
ASP.NET Single Page ApplicationAlberto Monteiro
 
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
 
Introdução ao Microsoft Silverlight
Introdução ao Microsoft SilverlightIntrodução ao Microsoft Silverlight
Introdução ao Microsoft SilverlightAndré Werlang
 
O que é angular?
O que é angular?O que é angular?
O que é angular?Caio Rolla
 
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
 
PhoneGap - Criando aplicações Android e iOS com HTML5
PhoneGap - Criando aplicações Android e iOS com HTML5PhoneGap - Criando aplicações Android e iOS com HTML5
PhoneGap - Criando aplicações Android e iOS com HTML5Rodrigo Cascarrolho
 
Hybrid app phonegap angular ionic
Hybrid app   phonegap angular ionicHybrid app   phonegap angular ionic
Hybrid app phonegap angular ionicJoelmir Ribacki
 
Talk7 - Da concepção ao desenvolvimento de um aplicativo de mensagens
Talk7 - Da concepção ao desenvolvimento de um aplicativo de mensagensTalk7 - Da concepção ao desenvolvimento de um aplicativo de mensagens
Talk7 - Da concepção ao desenvolvimento de um aplicativo de mensagensElo7
 

La actualidad más candente (20)

WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017
 
TDC2017 | São Paulo - Trilha DevTest How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha DevTest How we figured out we had a SRE team at ...TDC2017 | São Paulo - Trilha DevTest How we figured out we had a SRE team at ...
TDC2017 | São Paulo - Trilha DevTest How we figured out we had a SRE team at ...
 
Desenvolvendo aplicativos multi-tenant com Xamarin.Forms
Desenvolvendo aplicativos multi-tenant com Xamarin.FormsDesenvolvendo aplicativos multi-tenant com Xamarin.Forms
Desenvolvendo aplicativos multi-tenant com Xamarin.Forms
 
Desenvolvendo aplicativos multi-tenant com Xamarin.Forms
Desenvolvendo aplicativos multi-tenant com Xamarin.FormsDesenvolvendo aplicativos multi-tenant com Xamarin.Forms
Desenvolvendo aplicativos multi-tenant com Xamarin.Forms
 
Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2
 
Ria
RiaRia
Ria
 
WSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da TransformaçãoWSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
 
Visão Geral sobre Angular JS
Visão Geral sobre Angular JSVisão Geral sobre Angular JS
Visão Geral sobre Angular JS
 
ASP.NET Identity
ASP.NET IdentityASP.NET Identity
ASP.NET Identity
 
Desenvolvendo APPs Com Angular.JS + Cordova
Desenvolvendo APPs Com Angular.JS �+ CordovaDesenvolvendo APPs Com Angular.JS �+ Cordova
Desenvolvendo APPs Com Angular.JS + Cordova
 
ASP.NET Single Page Application
ASP.NET Single Page ApplicationASP.NET Single Page Application
ASP.NET Single Page Application
 
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
 
Introdução ao Microsoft Silverlight
Introdução ao Microsoft SilverlightIntrodução ao Microsoft Silverlight
Introdução ao Microsoft Silverlight
 
O que é angular?
O que é angular?O que é angular?
O que é angular?
 
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
 
Angular js
Angular jsAngular js
Angular js
 
PhoneGap - Criando aplicações Android e iOS com HTML5
PhoneGap - Criando aplicações Android e iOS com HTML5PhoneGap - Criando aplicações Android e iOS com HTML5
PhoneGap - Criando aplicações Android e iOS com HTML5
 
Hybrid app phonegap angular ionic
Hybrid app   phonegap angular ionicHybrid app   phonegap angular ionic
Hybrid app phonegap angular ionic
 
Talk7 - Da concepção ao desenvolvimento de um aplicativo de mensagens
Talk7 - Da concepção ao desenvolvimento de um aplicativo de mensagensTalk7 - Da concepção ao desenvolvimento de um aplicativo de mensagens
Talk7 - Da concepção ao desenvolvimento de um aplicativo de mensagens
 
Firefox OS
Firefox OSFirefox OS
Firefox OS
 

Destacado

Audit¢rio 06 categoria fashion - oportunidades e como se integrar - rafael ...
Audit¢rio 06   categoria fashion - oportunidades e como se integrar - rafael ...Audit¢rio 06   categoria fashion - oportunidades e como se integrar - rafael ...
Audit¢rio 06 categoria fashion - oportunidades e como se integrar - rafael ...fsolari
 
Sala 2 01 api conceitos gerais - danilo santos
Sala 2 01   api conceitos gerais - danilo santosSala 2 01   api conceitos gerais - danilo santos
Sala 2 01 api conceitos gerais - danilo santosfsolari
 
Byram healthcare dramatically speeds processes and reduces downtime using the...
Byram healthcare dramatically speeds processes and reduces downtime using the...Byram healthcare dramatically speeds processes and reduces downtime using the...
Byram healthcare dramatically speeds processes and reduces downtime using the...BizTalk360
 
Introducción - MeliDevConf BsAs.
Introducción - MeliDevConf BsAs.Introducción - MeliDevConf BsAs.
Introducción - MeliDevConf BsAs.melidevelopers
 
Mobile Apps
Mobile AppsMobile Apps
Mobile Appsfsolari
 
Nubimetrics
NubimetricsNubimetrics
Nubimetricsfsolari
 
API's overview - MeliDevConf 2013 - SP
API's overview - MeliDevConf 2013 - SPAPI's overview - MeliDevConf 2013 - SP
API's overview - MeliDevConf 2013 - SPmelidevelopers
 
Novidades das APIs wesley nascimento
Novidades das APIs   wesley nascimentoNovidades das APIs   wesley nascimento
Novidades das APIs wesley nascimentofsolari
 
Vendedores 04 encerramento - leandro soares
Vendedores 04   encerramento - leandro soaresVendedores 04   encerramento - leandro soares
Vendedores 04 encerramento - leandro soaresfsolari
 
Experiencias de integração
Experiencias de integraçãoExperiencias de integração
Experiencias de integraçãofsolari
 
Business opportunities - MeliDevConf BsAs.
Business opportunities - MeliDevConf BsAs.Business opportunities - MeliDevConf BsAs.
Business opportunities - MeliDevConf BsAs.melidevelopers
 
Sala 2 06 desenvolvimento de integração ao vivo -gabriel e carlos
Sala 2 06   desenvolvimento de integração ao vivo -gabriel e carlosSala 2 06   desenvolvimento de integração ao vivo -gabriel e carlos
Sala 2 06 desenvolvimento de integração ao vivo -gabriel e carlosfsolari
 
DevConf AR2014
DevConf AR2014DevConf AR2014
DevConf AR2014fsolari
 
API Interaction
API InteractionAPI Interaction
API Interactionfsolari
 
Gerenciando ventas - MeliDevConf BsAs.
Gerenciando ventas - MeliDevConf BsAs.Gerenciando ventas - MeliDevConf BsAs.
Gerenciando ventas - MeliDevConf BsAs.melidevelopers
 
Darío Simonassi - API OVERVIEW 2014
Darío Simonassi - API OVERVIEW 2014Darío Simonassi - API OVERVIEW 2014
Darío Simonassi - API OVERVIEW 2014fsolari
 
Real Trends
Real TrendsReal Trends
Real Trendsfsolari
 
Audit¢rio 09 mercado envios - novas funcionalidades - bruno elia
Audit¢rio 09   mercado envios - novas funcionalidades - bruno eliaAudit¢rio 09   mercado envios - novas funcionalidades - bruno elia
Audit¢rio 09 mercado envios - novas funcionalidades - bruno eliafsolari
 
Mercadopago - MeliDevConf BsAs.
Mercadopago - MeliDevConf BsAs.Mercadopago - MeliDevConf BsAs.
Mercadopago - MeliDevConf BsAs.melidevelopers
 
MercadoPago
MercadoPagoMercadoPago
MercadoPagofsolari
 

Destacado (20)

Audit¢rio 06 categoria fashion - oportunidades e como se integrar - rafael ...
Audit¢rio 06   categoria fashion - oportunidades e como se integrar - rafael ...Audit¢rio 06   categoria fashion - oportunidades e como se integrar - rafael ...
Audit¢rio 06 categoria fashion - oportunidades e como se integrar - rafael ...
 
Sala 2 01 api conceitos gerais - danilo santos
Sala 2 01   api conceitos gerais - danilo santosSala 2 01   api conceitos gerais - danilo santos
Sala 2 01 api conceitos gerais - danilo santos
 
Byram healthcare dramatically speeds processes and reduces downtime using the...
Byram healthcare dramatically speeds processes and reduces downtime using the...Byram healthcare dramatically speeds processes and reduces downtime using the...
Byram healthcare dramatically speeds processes and reduces downtime using the...
 
Introducción - MeliDevConf BsAs.
Introducción - MeliDevConf BsAs.Introducción - MeliDevConf BsAs.
Introducción - MeliDevConf BsAs.
 
Mobile Apps
Mobile AppsMobile Apps
Mobile Apps
 
Nubimetrics
NubimetricsNubimetrics
Nubimetrics
 
API's overview - MeliDevConf 2013 - SP
API's overview - MeliDevConf 2013 - SPAPI's overview - MeliDevConf 2013 - SP
API's overview - MeliDevConf 2013 - SP
 
Novidades das APIs wesley nascimento
Novidades das APIs   wesley nascimentoNovidades das APIs   wesley nascimento
Novidades das APIs wesley nascimento
 
Vendedores 04 encerramento - leandro soares
Vendedores 04   encerramento - leandro soaresVendedores 04   encerramento - leandro soares
Vendedores 04 encerramento - leandro soares
 
Experiencias de integração
Experiencias de integraçãoExperiencias de integração
Experiencias de integração
 
Business opportunities - MeliDevConf BsAs.
Business opportunities - MeliDevConf BsAs.Business opportunities - MeliDevConf BsAs.
Business opportunities - MeliDevConf BsAs.
 
Sala 2 06 desenvolvimento de integração ao vivo -gabriel e carlos
Sala 2 06   desenvolvimento de integração ao vivo -gabriel e carlosSala 2 06   desenvolvimento de integração ao vivo -gabriel e carlos
Sala 2 06 desenvolvimento de integração ao vivo -gabriel e carlos
 
DevConf AR2014
DevConf AR2014DevConf AR2014
DevConf AR2014
 
API Interaction
API InteractionAPI Interaction
API Interaction
 
Gerenciando ventas - MeliDevConf BsAs.
Gerenciando ventas - MeliDevConf BsAs.Gerenciando ventas - MeliDevConf BsAs.
Gerenciando ventas - MeliDevConf BsAs.
 
Darío Simonassi - API OVERVIEW 2014
Darío Simonassi - API OVERVIEW 2014Darío Simonassi - API OVERVIEW 2014
Darío Simonassi - API OVERVIEW 2014
 
Real Trends
Real TrendsReal Trends
Real Trends
 
Audit¢rio 09 mercado envios - novas funcionalidades - bruno elia
Audit¢rio 09   mercado envios - novas funcionalidades - bruno eliaAudit¢rio 09   mercado envios - novas funcionalidades - bruno elia
Audit¢rio 09 mercado envios - novas funcionalidades - bruno elia
 
Mercadopago - MeliDevConf BsAs.
Mercadopago - MeliDevConf BsAs.Mercadopago - MeliDevConf BsAs.
Mercadopago - MeliDevConf BsAs.
 
MercadoPago
MercadoPagoMercadoPago
MercadoPago
 

Similar a Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP

Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Flávio Lisboa
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesFábio Rosato
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Integração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoIntegração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoJoao Johanes
 
Migrations com Entity Framework Core
Migrations com Entity Framework CoreMigrations com Entity Framework Core
Migrations com Entity Framework CoreCaio Lorensetti
 
Desenvolvimento em Nuvem
Desenvolvimento em NuvemDesenvolvimento em Nuvem
Desenvolvimento em NuvemVitor Savicki
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...tdc-globalcode
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...Marcelo Palladino
 
ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)Flávio Lisboa
 
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...Amazon Web Services
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 

Similar a Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP (20)

Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
Architecture performance using micro services
Architecture performance using micro servicesArchitecture performance using micro services
Architecture performance using micro services
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Integração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integraçãoIntegração de sistemas da informação - Abordagens de integração
Integração de sistemas da informação - Abordagens de integração
 
Migrations com Entity Framework Core
Migrations com Entity Framework CoreMigrations com Entity Framework Core
Migrations com Entity Framework Core
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Desenvolvimento em Nuvem
Desenvolvimento em NuvemDesenvolvimento em Nuvem
Desenvolvimento em Nuvem
 
Goldark - Microservices
Goldark - MicroservicesGoldark - Microservices
Goldark - Microservices
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
 
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...TDC2016SP  Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
TDC2016SP Trilha Arquitetura.NET - Revitalizando aplicações desktop usando C...
 
DotNet vs. Java
DotNet vs. JavaDotNet vs. Java
DotNet vs. Java
 
ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)
 
Java Web, o Tutorial
Java Web, o TutorialJava Web, o Tutorial
Java Web, o Tutorial
 
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 

Más de melidevelopers (20)

Mercado Envíos Ful
Mercado Envíos FulMercado Envíos Ful
Mercado Envíos Ful
 
Fernando Adrian Scasserra
Fernando Adrian ScasserraFernando Adrian Scasserra
Fernando Adrian Scasserra
 
Lucía Brizuela
Lucía BrizuelaLucía Brizuela
Lucía Brizuela
 
Victor Piñal
Victor PiñalVictor Piñal
Victor Piñal
 
Leandro Bertalot y Jair Vázquez
Leandro Bertalot y Jair VázquezLeandro Bertalot y Jair Vázquez
Leandro Bertalot y Jair Vázquez
 
Omar Galicia
Omar GaliciaOmar Galicia
Omar Galicia
 
Daniel Gándara
Daniel GándaraDaniel Gándara
Daniel Gándara
 
Mercado Pago para seller del on
Mercado Pago para seller del onMercado Pago para seller del on
Mercado Pago para seller del on
 
Mandaê
MandaêMandaê
Mandaê
 
Eu entrego
Eu entregoEu entrego
Eu entrego
 
Be Commerce
Be CommerceBe Commerce
Be Commerce
 
Bling!
Bling!Bling!
Bling!
 
Any Market
Any MarketAny Market
Any Market
 
Aprendendo sobre o seu mercado
Aprendendo sobre o seu mercadoAprendendo sobre o seu mercado
Aprendendo sobre o seu mercado
 
AWS
AWS AWS
AWS
 
Mercado Pago - SDK mobile
Mercado Pago - SDK mobile Mercado Pago - SDK mobile
Mercado Pago - SDK mobile
 
sensedia - Design Sprint
sensedia - Design Sprint sensedia - Design Sprint
sensedia - Design Sprint
 
VTEX
VTEX VTEX
VTEX
 
Mercado pago - além do e-commerce
Mercado pago - além do e-commerceMercado pago - além do e-commerce
Mercado pago - além do e-commerce
 
Facebook - Marketing
Facebook - MarketingFacebook - Marketing
Facebook - Marketing
 

Arquitetura de Mensagens Assíncronas - MeliDevConf 2013 - SP

  • 3. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona. AGENDA ➔ Diferença entre sites e plataformas ➔ Organização de recursos ➔ Arquitetura de mensagens ➔ Consistência eventual ➔ Lições aprendidas ➔ Perguntas
  • 4. MercadoLivre Developers Conference Lembramos a diferença de um site e uma plataforma Arquitetura de mensagens assíncrona. WebSite Frontend Platform API Mobile Device DB Third-party
  • 5. MercadoLivre Developers Conference Os recursos da nossa API estão agrupados lógicamente em departamentos Cada departamento é independente dos outros, isto significa: ● Escolha livre de tecnologia ● Deploys independentes ● Minimizar dependência Arquitetura de mensagens assíncrona.
  • 6. Externamente a API é como uma coisa só, mas está toda dividida em departamentos. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona. Items /items /items/MLBX/descriptions /items/MLBX/relist Categories /categories/MLXXX Questions /questions/ MercadoLivre API RestFul
  • 7. Ok, mas como fazemos quando dois ou mais departamentos dividem dados. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 8. MercadoLivre Developers Conference Um departamento tem uma cópia original e propaga as mudanças aos outros, por exemplo, o recurso de items realiza operações básicas (CRUD) e propaga os eventos ao motor de busca para que indexe as publicações. Arquitetura de mensagens assíncrona. /items (GET, PUT, POST, DELETE ) MercadoLivre - API ResFul /sites/MLB/search?q=ipod Web Servers Cache SQL Database Search Engine Web Servers events
  • 9. MercadoLivre Developers Conference O serviço de fila permite propagar uma mensagem por meio de um feed e a guarda até que alguém a consuma. Arquitetura de mensagens assíncrona. Queue Service items search queue moderation queue items-feed moderation search
  • 10. MercadoLivre Developers Conference Como chegam as mensagens? Arquitetura de mensagens assíncrona.
  • 11. Dado que as mensagens são assíncronas, elas podem chegar desordenadas e como não se persiste em um único lugar, podem chegar repetidas. Então as mensagens: ● Podem chegar repetidas ● Podem chegar desordenadas A solução é que a ação realizada depois de receber uma mensagem seja idempotente. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 12. Qual o conteúdo das mensagens? MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 13. MercadoLivre Developers Conference Utilizamos 2 tipos de mensagens Arquitetura de mensagens assíncrona. Apenas o ID do recurso modificado Vantagem - Mensagem pequena Desvantagem - GET para obter os dados Toda a entidade com id de versão Vantagem - Não necessita um GET ao recurso Desvantagem - A mensagem é mais pesada
  • 14. MercadoLivre Developers Conference Um poucos mais de teoria Arquitetura de mensagens assíncrona.
  • 15. Não forçar uma consistência nos ajuda a obter ● Latência baixa ● Alta disponibilidade e tolerância a falhas ● Facilidade para escalar Devido a nossa plataforma estar altamente distribuída e utilizar mensagens assíncronas, existe uma consistência eventual. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.
  • 16. MercadoLivre Developers Conference E para que podemos utilizar esta arquitetura? Arquitetura de mensagens assíncrona.
  • 17. Diferenças entre o hábito de guardar dados em uma tabela e processar depois X utilizar uma fila de mensagens. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona. Jobs Queue Services Workers Workers ID Status Work Date 1 Pending ..... 12/31 2 Pending ..... 12/31 3 Done .... 12/31 4 Done ..... 12/31
  • 18. MercadoLivre Developers Conference O que aprendemos no caminho Arquitetura de mensagens assíncrona.
  • 19. Trabalhe offline ● Minimizar o trabalho para responder cada request. ● Tudo o que pode ser feito offline, não faça online. Guardar informações redundantes ● Se os dados têm múltiplas formas de apresentação, guarde todas elas. ● O espaço em disco e memória é mais barato que fazer o usuário esperar. Cachear tudo ● Informação da base de dados. ● Guardar dados pré-carregados. MercadoLivre Developers Conference Arquitetura de mensagens assíncrona.