SlideShare una empresa de Scribd logo
AdWords API Workshops – All rights reserved
Rate Limits
(Límites de frequencia)

y buenas praxis de la API

+GustavoMenezes, Google, Inc.

AdWords API Workshops – All rights reserved

API SERVER
Agenda
● Buenas praxis de la API
● ¿Qué son Rate Limits?
● ¿Cómo manejarlos?

AdWords API Workshops – All rights reserved
Buenas Praxis
Pequeños detalles para mejorar el rendimiento

AdWords API Workshops – All rights reserved
Agrupar Operaciones

AdWords API Workshops – All rights reserved

● Las Peticiones a la API tienen costos
● Transferencia de red, serialización, autenticación, etc.

● Agrupar de las operaciones en una única petición
● Los Métodos mutate aceptan más de una operación
● MutateJobService para agrupar

AdWords API Workshops – All rights reserved
Agrupar Operaciones por Tipo
● Múltiples operaciones en los mismos AdGroup /
Campaign son más rápidas
● Subsecuentes ediciones en los mismos AdGroup o
Campaign pueden generar errores de tipo
CONCURRENT_MODIFICATION
● Los servidores pueden tomar tiempo para hacer su trabajo
● Intenten hacer todas las operaciones en
AdGroups/Campaigns a la vez
AdWords API Workshops – All rights reserved
Actualizen Sólo lo Necesario
● ¿Actualizando un objeto?
● Sólo envíen los valores que cambian!
● Enviar los otros valores es un derroche
●

El sistema va a validar, guardar en la BD, etc.

AdWords API Workshops – All rights reserved
Más Ideas…
● Compriman sus peticiones /
respuestas con gzip
● Aseguren que User-Agent: use “gzip”
● Accept-Encoding: con listado gzip

● Usen la función de fallo parcial
● Fuerza que la API serielice las
operaciones exitosas
● Responde un listado con las operaciones
fallidas
AdWords API Workshops – All rights reserved
Definiendo Rate Limits

AdWords API Workshops – All rights reserved
Rate Limits
● No son fijos
● Varían de acuerdo con la carga
● Varían por funcionalidad
● Cambian con el tiempo
● Son diferentes por servicio

AdWords API Workshops – All rights reserved
Errores de Rate Limits
● RATE_EXCEEDED
○ esperen por retryAfterSeconds segundos

● CONCURRENT_MODIFICATIONS
○ Parada exponencial, intenten pocas veces

● UNEXPECTED_INTERNAL_API_ERROR
○ Parada exponencial, intenten pocas veces
○ Informen del problema al CSR o por fórum
AdWords API Workshops – All rights reserved
Cómo Manejar Los Rate Limits
Programe con cuidado...

AdWords API Workshops – All rights reserved
Ejemplo Básico
Java

ApiError[] errorArray = apiException.getErrors();
for (ApiError apiError : errorArray) {
if (apiError instanceof RateExceededError) {
int seconds = ((RateExceededError) apiError)
.getRetryAfterSeconds();
// esperen por la cantidad de segundos retornados
Thread.sleep(seconds * 1000);
}
}
AdWords API Workshops – All rights reserved
Ejemplo Básico - Explicación
● Cualquier petición puede generar un
RateExceededError

● Manejar los errores es muy importante
● Esperar y volver a intentar es la mejor
estrategia
● Aún más importante para múltiples
peticiones

AdWords API Workshops – All rights reserved
Puntos Importantes del Ejemplo Básico
● Una solución sincrónica para el problema
● Bloquea el thread hasta que tenga éxito o falle
completamente
● No hay control sobre la frecuencia de las peticiones
● Es muy difícil agrupar operaciones

AdWords API Workshops – All rights reserved
Una Solución un Poco Más Avanzada
● Message Queues
● La solución perfecta para distribuir carga y
hacer throttling
● Hay soluciones existentes muy buenas
●

ActiveMQ, RabbitMQ, … etc.

● Muchas herramientas / client libraries para
manejar esta franja de comunicación

AdWords API Workshops – All rights reserved
Message Queues (cont.)
● Mayor control de la velocidad y de los límites
● Mejor separación de los módulos
● A continuación estudiaremos tres ejemplos que
solucionan el problema...

AdWords API Workshops – All rights reserved
1. Cola Única
Producer

Productores crean tareas que son
ejecutadas en la API, y añadidas a
la cola

Producer

Consumers
Consumers
Consumers

X

Queue

Throttling

Producer

Logging

Error

Consumidores obtienen los mensajes/tareas
de la cola para ejecutarlas
AdWords API Workshops – All rights reserved

How to handle Rate Limits
Primera Solución - Pros & Contras
● Pros:
● Muy fácil de implementar
● Sólo hay un punto de control de velocidad de peticiones
● Fácil de manejar errores

● Contras:
●
●
●
●

Sólo hay un punto de control de velocidad de peticiones
Difícil de agrupar operaciones
Las Tareas pueden retrasar la cola
No todas MQs manejan mensajes prioritarios

AdWords API Workshops – All rights reserved
2. Cola Única con Selectores
Producers
Producers

Productores crean tareas específicas,
y las añaden a la cola con un
encabezado específico

Producers
Producers

Cada consumidor específico puede
agrupar las operaciones y
ejecutarlas a su ritmo
X
X
X
X

Producers
Producers

Queue

Throttling

Producers
Producers

Producers
Consumer

AdWords API Workshops – All rights reserved

Producers
Consumer
Producers
Consumer
Producers
Consumer

Error

How to handle Rate Limits
Segunda Solución - Pros & Contras
● Pros:
● Agrupación de operaciones por tipo
● Algún control de throttling por tipo
● Mayor eficiencia - mejor acceso paralelo a la API

● Contras:
●
●
●
●

Sólo una cola - difícil de administrar
No hay control principal de velocidad
Manejar todas las partes puede ser difícil
Logging de operaciones puede ser complicado

AdWords API Workshops – All rights reserved
3. Colas Múltiples Queues
Executors do the request

Producers
Consumer

Producers
Producers

Producers
Consumer

Throttling

Producers
Producers

Producers
Producers
Producers
Producers

Producers
Consumer
Producers
Executors
Executors
Executors

Producers
Consumer
Queues

Consumers just group the tasks
Error

Logging

X
X
X
X

Producers just spawn
a lot of tasks

Throttling

AdWords API Workshops – All rights reserved

How to handle Rate Limits
Tercera Solución - Pros & Contras
● Pros:
●
●
●
●
●
●

Total control de velocidad de acceso
Muy robusto - muy fácil de añadir nuevas partes
Visión total de lo que pasa en el sistema
Fácil de crecer basado en demanda
Si esta hecho correctamente, es fácil de mantener!
Muy eficiente - Agrupación paralela; Acceso paralelo a la API

● Contras:
● Difícil de implementar correctamente - se necesita práctica

AdWords API Workshops – All rights reserved
Message Queues - Resumen
● Complejidad de su sistema determina la mejor solución
● Se pueden combinar partes de las soluciones!
● Es un tema complejo, pero le ayudará en el futuro
● Inviertan mucho en monitorizar. ¡Mucho!
● No hay un comodín...

AdWords API Workshops – All rights reserved
Enlaces
API Best Practices - https://developers.google.
com/adwords/api/docs/guides/bestpractices
ActiveMQ - http://activemq.apache.org/
RabbitMQ - http://www.rabbitmq.com/
AdWords API Workshops – All rights reserved
¿Preguntas?
¡Muchas gracias!

AdWords API Workshops – All rights reserved
AdWords API Workshops – All rights reserved

Más contenido relacionado

Destacado

Opportunity Analysis with Kratu
Opportunity Analysis with KratuOpportunity Analysis with Kratu
Opportunity Analysis with Kratu
marcwan
 
AwReporting Update
AwReporting UpdateAwReporting Update
AwReporting Update
marcwan
 
AdWords API & OAuth 2.0, Advanced
AdWords API & OAuth 2.0, Advanced AdWords API & OAuth 2.0, Advanced
AdWords API & OAuth 2.0, Advanced
marcwan
 
AdWords Scripts and MCC Scripting
AdWords Scripts and MCC ScriptingAdWords Scripts and MCC Scripting
AdWords Scripts and MCC Scripting
marcwan
 
Opportunity Analysis with Kratu (v2)
Opportunity Analysis with Kratu (v2)Opportunity Analysis with Kratu (v2)
Opportunity Analysis with Kratu (v2)
marcwan
 
Getting Started with AdWords API and Google Analytics
Getting Started with AdWords API and Google AnalyticsGetting Started with AdWords API and Google Analytics
Getting Started with AdWords API and Google Analytics
marcwan
 

Destacado (6)

Opportunity Analysis with Kratu
Opportunity Analysis with KratuOpportunity Analysis with Kratu
Opportunity Analysis with Kratu
 
AwReporting Update
AwReporting UpdateAwReporting Update
AwReporting Update
 
AdWords API & OAuth 2.0, Advanced
AdWords API & OAuth 2.0, Advanced AdWords API & OAuth 2.0, Advanced
AdWords API & OAuth 2.0, Advanced
 
AdWords Scripts and MCC Scripting
AdWords Scripts and MCC ScriptingAdWords Scripts and MCC Scripting
AdWords Scripts and MCC Scripting
 
Opportunity Analysis with Kratu (v2)
Opportunity Analysis with Kratu (v2)Opportunity Analysis with Kratu (v2)
Opportunity Analysis with Kratu (v2)
 
Getting Started with AdWords API and Google Analytics
Getting Started with AdWords API and Google AnalyticsGetting Started with AdWords API and Google Analytics
Getting Started with AdWords API and Google Analytics
 

Similar a Rate limits and performance (Spanish)

End to-end how to build a platform (Spanish)
End to-end how to build a platform (Spanish)End to-end how to build a platform (Spanish)
End to-end how to build a platform (Spanish)
marcwan
 
Api update rundown (Spanish)
Api update rundown (Spanish)Api update rundown (Spanish)
Api update rundown (Spanish)
marcwan
 
LeanSis Productividad - La eficiencia de las maquinas - OEE, SMED, TPM
LeanSis Productividad - La eficiencia de las maquinas - OEE, SMED, TPMLeanSis Productividad - La eficiencia de las maquinas - OEE, SMED, TPM
LeanSis Productividad - La eficiencia de las maquinas - OEE, SMED, TPM
LeanSis Productividad
 
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
Federico Toledo
 
AdWords Scripts (Spanish)
AdWords Scripts (Spanish)AdWords Scripts (Spanish)
AdWords Scripts (Spanish)
marcwan
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Federico Toledo
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Abstracta
 
Mobile landing pages (Spanish)
Mobile landing pages (Spanish)Mobile landing pages (Spanish)
Mobile landing pages (Spanish)
marcwan
 
Performance Tourism-Anticipación y prevención
Performance Tourism-Anticipación y prevenciónPerformance Tourism-Anticipación y prevención
Performance Tourism-Anticipación y prevención
Globe Testing
 
The wpo academy: Qué es y que mide la velocidad de carga de una web?
The wpo academy: Qué es y que mide la velocidad de carga de una web?The wpo academy: Qué es y que mide la velocidad de carga de una web?
The wpo academy: Qué es y que mide la velocidad de carga de una web?
Digital Growth
 
Presentacion co5 m reportes
Presentacion co5 m reportesPresentacion co5 m reportes
Dev ops mobile(webinar)
Dev ops mobile(webinar)Dev ops mobile(webinar)
Dev ops mobile(webinar)
Globe Testing
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta
 
Transformando el Desarrollo de Producto
Transformando el Desarrollo de ProductoTransformando el Desarrollo de Producto
Transformando el Desarrollo de Producto
Amazon Web Services LATAM
 
ESB y SOA, Plataforma de integracion.
ESB y SOA, Plataforma de integracion.ESB y SOA, Plataforma de integracion.
ESB y SOA, Plataforma de integracion.
Julio Cejas
 
The wpo academy_clinic_seo
The wpo academy_clinic_seoThe wpo academy_clinic_seo
The wpo academy_clinic_seo
Digital Growth
 
19 AEMES SFIC 2009
19 AEMES SFIC 200919 AEMES SFIC 2009
19 AEMES SFIC 2009
Pepe
 
Argentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting 2017_KeyNote_Federico Toledo - Keynote CierreArgentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting
 
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria
 
Best Practices from Pragma.pptx
Best Practices from Pragma.pptxBest Practices from Pragma.pptx
Best Practices from Pragma.pptx
Nicolas Ricardo Archila Gomez
 

Similar a Rate limits and performance (Spanish) (20)

End to-end how to build a platform (Spanish)
End to-end how to build a platform (Spanish)End to-end how to build a platform (Spanish)
End to-end how to build a platform (Spanish)
 
Api update rundown (Spanish)
Api update rundown (Spanish)Api update rundown (Spanish)
Api update rundown (Spanish)
 
LeanSis Productividad - La eficiencia de las maquinas - OEE, SMED, TPM
LeanSis Productividad - La eficiencia de las maquinas - OEE, SMED, TPMLeanSis Productividad - La eficiencia de las maquinas - OEE, SMED, TPM
LeanSis Productividad - La eficiencia de las maquinas - OEE, SMED, TPM
 
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
 
AdWords Scripts (Spanish)
AdWords Scripts (Spanish)AdWords Scripts (Spanish)
AdWords Scripts (Spanish)
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
 
Mobile landing pages (Spanish)
Mobile landing pages (Spanish)Mobile landing pages (Spanish)
Mobile landing pages (Spanish)
 
Performance Tourism-Anticipación y prevención
Performance Tourism-Anticipación y prevenciónPerformance Tourism-Anticipación y prevención
Performance Tourism-Anticipación y prevención
 
The wpo academy: Qué es y que mide la velocidad de carga de una web?
The wpo academy: Qué es y que mide la velocidad de carga de una web?The wpo academy: Qué es y que mide la velocidad de carga de una web?
The wpo academy: Qué es y que mide la velocidad de carga de una web?
 
Presentacion co5 m reportes
Presentacion co5 m reportesPresentacion co5 m reportes
Presentacion co5 m reportes
 
Dev ops mobile(webinar)
Dev ops mobile(webinar)Dev ops mobile(webinar)
Dev ops mobile(webinar)
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
 
Transformando el Desarrollo de Producto
Transformando el Desarrollo de ProductoTransformando el Desarrollo de Producto
Transformando el Desarrollo de Producto
 
ESB y SOA, Plataforma de integracion.
ESB y SOA, Plataforma de integracion.ESB y SOA, Plataforma de integracion.
ESB y SOA, Plataforma de integracion.
 
The wpo academy_clinic_seo
The wpo academy_clinic_seoThe wpo academy_clinic_seo
The wpo academy_clinic_seo
 
19 AEMES SFIC 2009
19 AEMES SFIC 200919 AEMES SFIC 2009
19 AEMES SFIC 2009
 
Argentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting 2017_KeyNote_Federico Toledo - Keynote CierreArgentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
 
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
 
Best Practices from Pragma.pptx
Best Practices from Pragma.pptxBest Practices from Pragma.pptx
Best Practices from Pragma.pptx
 

Más de marcwan

Mcc scripts deck (日本語)
Mcc scripts deck (日本語)Mcc scripts deck (日本語)
Mcc scripts deck (日本語)
marcwan
 
Getting started with Google Analytics and the AdWords API
Getting started with Google Analytics and the AdWords APIGetting started with Google Analytics and the AdWords API
Getting started with Google Analytics and the AdWords API
marcwan
 
Bid Estimation with the AdWords API (v2)
Bid Estimation with the AdWords API (v2)Bid Estimation with the AdWords API (v2)
Bid Estimation with the AdWords API (v2)
marcwan
 
Shopping Campaigns and AdWords API
Shopping Campaigns and AdWords APIShopping Campaigns and AdWords API
Shopping Campaigns and AdWords API
marcwan
 
API Updates for v201402
API Updates for v201402API Updates for v201402
API Updates for v201402
marcwan
 
AdWords API Targeting Options
AdWords API Targeting OptionsAdWords API Targeting Options
AdWords API Targeting Options
marcwan
 
OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)
marcwan
 
Rate limits and performance
Rate limits and performanceRate limits and performance
Rate limits and performance
marcwan
 
OAuth 2.0 refresher
OAuth 2.0 refresherOAuth 2.0 refresher
OAuth 2.0 refresher
marcwan
 
Mobile landing pages
Mobile landing pagesMobile landing pages
Mobile landing pages
marcwan
 
End to-end how to build a platform
End to-end how to build a platformEnd to-end how to build a platform
End to-end how to build a platform
marcwan
 
AwReporting Tool
AwReporting ToolAwReporting Tool
AwReporting Tool
marcwan
 
Api update rundown
Api update rundownApi update rundown
Api update rundown
marcwan
 
AdWords Scripts
AdWords ScriptsAdWords Scripts
AdWords Scripts
marcwan
 
Reporting tips & tricks
Reporting tips & tricksReporting tips & tricks
Reporting tips & tricks
marcwan
 
Reporting tips & tricks (russian)
Reporting tips & tricks (russian)Reporting tips & tricks (russian)
Reporting tips & tricks (russian)marcwan
 
Rate limits and performance (russian)
Rate limits and performance (russian)Rate limits and performance (russian)
Rate limits and performance (russian)marcwan
 

Más de marcwan (17)

Mcc scripts deck (日本語)
Mcc scripts deck (日本語)Mcc scripts deck (日本語)
Mcc scripts deck (日本語)
 
Getting started with Google Analytics and the AdWords API
Getting started with Google Analytics and the AdWords APIGetting started with Google Analytics and the AdWords API
Getting started with Google Analytics and the AdWords API
 
Bid Estimation with the AdWords API (v2)
Bid Estimation with the AdWords API (v2)Bid Estimation with the AdWords API (v2)
Bid Estimation with the AdWords API (v2)
 
Shopping Campaigns and AdWords API
Shopping Campaigns and AdWords APIShopping Campaigns and AdWords API
Shopping Campaigns and AdWords API
 
API Updates for v201402
API Updates for v201402API Updates for v201402
API Updates for v201402
 
AdWords API Targeting Options
AdWords API Targeting OptionsAdWords API Targeting Options
AdWords API Targeting Options
 
OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)
 
Rate limits and performance
Rate limits and performanceRate limits and performance
Rate limits and performance
 
OAuth 2.0 refresher
OAuth 2.0 refresherOAuth 2.0 refresher
OAuth 2.0 refresher
 
Mobile landing pages
Mobile landing pagesMobile landing pages
Mobile landing pages
 
End to-end how to build a platform
End to-end how to build a platformEnd to-end how to build a platform
End to-end how to build a platform
 
AwReporting Tool
AwReporting ToolAwReporting Tool
AwReporting Tool
 
Api update rundown
Api update rundownApi update rundown
Api update rundown
 
AdWords Scripts
AdWords ScriptsAdWords Scripts
AdWords Scripts
 
Reporting tips & tricks
Reporting tips & tricksReporting tips & tricks
Reporting tips & tricks
 
Reporting tips & tricks (russian)
Reporting tips & tricks (russian)Reporting tips & tricks (russian)
Reporting tips & tricks (russian)
 
Rate limits and performance (russian)
Rate limits and performance (russian)Rate limits and performance (russian)
Rate limits and performance (russian)
 

Último

mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
ranierglez
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
jgvanessa23
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
yuberpalma
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
codesiret
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
Manuel Diaz
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
MiguelAtencio10
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
renzocruz180310
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 

Último (20)

mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 

Rate limits and performance (Spanish)

  • 1. AdWords API Workshops – All rights reserved
  • 2. Rate Limits (Límites de frequencia) y buenas praxis de la API +GustavoMenezes, Google, Inc. AdWords API Workshops – All rights reserved API SERVER
  • 3. Agenda ● Buenas praxis de la API ● ¿Qué son Rate Limits? ● ¿Cómo manejarlos? AdWords API Workshops – All rights reserved
  • 4. Buenas Praxis Pequeños detalles para mejorar el rendimiento AdWords API Workshops – All rights reserved
  • 5. Agrupar Operaciones AdWords API Workshops – All rights reserved ● Las Peticiones a la API tienen costos ● Transferencia de red, serialización, autenticación, etc. ● Agrupar de las operaciones en una única petición ● Los Métodos mutate aceptan más de una operación ● MutateJobService para agrupar AdWords API Workshops – All rights reserved
  • 6. Agrupar Operaciones por Tipo ● Múltiples operaciones en los mismos AdGroup / Campaign son más rápidas ● Subsecuentes ediciones en los mismos AdGroup o Campaign pueden generar errores de tipo CONCURRENT_MODIFICATION ● Los servidores pueden tomar tiempo para hacer su trabajo ● Intenten hacer todas las operaciones en AdGroups/Campaigns a la vez AdWords API Workshops – All rights reserved
  • 7. Actualizen Sólo lo Necesario ● ¿Actualizando un objeto? ● Sólo envíen los valores que cambian! ● Enviar los otros valores es un derroche ● El sistema va a validar, guardar en la BD, etc. AdWords API Workshops – All rights reserved
  • 8. Más Ideas… ● Compriman sus peticiones / respuestas con gzip ● Aseguren que User-Agent: use “gzip” ● Accept-Encoding: con listado gzip ● Usen la función de fallo parcial ● Fuerza que la API serielice las operaciones exitosas ● Responde un listado con las operaciones fallidas AdWords API Workshops – All rights reserved
  • 9. Definiendo Rate Limits AdWords API Workshops – All rights reserved
  • 10. Rate Limits ● No son fijos ● Varían de acuerdo con la carga ● Varían por funcionalidad ● Cambian con el tiempo ● Son diferentes por servicio AdWords API Workshops – All rights reserved
  • 11. Errores de Rate Limits ● RATE_EXCEEDED ○ esperen por retryAfterSeconds segundos ● CONCURRENT_MODIFICATIONS ○ Parada exponencial, intenten pocas veces ● UNEXPECTED_INTERNAL_API_ERROR ○ Parada exponencial, intenten pocas veces ○ Informen del problema al CSR o por fórum AdWords API Workshops – All rights reserved
  • 12. Cómo Manejar Los Rate Limits Programe con cuidado... AdWords API Workshops – All rights reserved
  • 13. Ejemplo Básico Java ApiError[] errorArray = apiException.getErrors(); for (ApiError apiError : errorArray) { if (apiError instanceof RateExceededError) { int seconds = ((RateExceededError) apiError) .getRetryAfterSeconds(); // esperen por la cantidad de segundos retornados Thread.sleep(seconds * 1000); } } AdWords API Workshops – All rights reserved
  • 14. Ejemplo Básico - Explicación ● Cualquier petición puede generar un RateExceededError ● Manejar los errores es muy importante ● Esperar y volver a intentar es la mejor estrategia ● Aún más importante para múltiples peticiones AdWords API Workshops – All rights reserved
  • 15. Puntos Importantes del Ejemplo Básico ● Una solución sincrónica para el problema ● Bloquea el thread hasta que tenga éxito o falle completamente ● No hay control sobre la frecuencia de las peticiones ● Es muy difícil agrupar operaciones AdWords API Workshops – All rights reserved
  • 16. Una Solución un Poco Más Avanzada ● Message Queues ● La solución perfecta para distribuir carga y hacer throttling ● Hay soluciones existentes muy buenas ● ActiveMQ, RabbitMQ, … etc. ● Muchas herramientas / client libraries para manejar esta franja de comunicación AdWords API Workshops – All rights reserved
  • 17. Message Queues (cont.) ● Mayor control de la velocidad y de los límites ● Mejor separación de los módulos ● A continuación estudiaremos tres ejemplos que solucionan el problema... AdWords API Workshops – All rights reserved
  • 18. 1. Cola Única Producer Productores crean tareas que son ejecutadas en la API, y añadidas a la cola Producer Consumers Consumers Consumers X Queue Throttling Producer Logging Error Consumidores obtienen los mensajes/tareas de la cola para ejecutarlas AdWords API Workshops – All rights reserved How to handle Rate Limits
  • 19. Primera Solución - Pros & Contras ● Pros: ● Muy fácil de implementar ● Sólo hay un punto de control de velocidad de peticiones ● Fácil de manejar errores ● Contras: ● ● ● ● Sólo hay un punto de control de velocidad de peticiones Difícil de agrupar operaciones Las Tareas pueden retrasar la cola No todas MQs manejan mensajes prioritarios AdWords API Workshops – All rights reserved
  • 20. 2. Cola Única con Selectores Producers Producers Productores crean tareas específicas, y las añaden a la cola con un encabezado específico Producers Producers Cada consumidor específico puede agrupar las operaciones y ejecutarlas a su ritmo X X X X Producers Producers Queue Throttling Producers Producers Producers Consumer AdWords API Workshops – All rights reserved Producers Consumer Producers Consumer Producers Consumer Error How to handle Rate Limits
  • 21. Segunda Solución - Pros & Contras ● Pros: ● Agrupación de operaciones por tipo ● Algún control de throttling por tipo ● Mayor eficiencia - mejor acceso paralelo a la API ● Contras: ● ● ● ● Sólo una cola - difícil de administrar No hay control principal de velocidad Manejar todas las partes puede ser difícil Logging de operaciones puede ser complicado AdWords API Workshops – All rights reserved
  • 22. 3. Colas Múltiples Queues Executors do the request Producers Consumer Producers Producers Producers Consumer Throttling Producers Producers Producers Producers Producers Producers Producers Consumer Producers Executors Executors Executors Producers Consumer Queues Consumers just group the tasks Error Logging X X X X Producers just spawn a lot of tasks Throttling AdWords API Workshops – All rights reserved How to handle Rate Limits
  • 23. Tercera Solución - Pros & Contras ● Pros: ● ● ● ● ● ● Total control de velocidad de acceso Muy robusto - muy fácil de añadir nuevas partes Visión total de lo que pasa en el sistema Fácil de crecer basado en demanda Si esta hecho correctamente, es fácil de mantener! Muy eficiente - Agrupación paralela; Acceso paralelo a la API ● Contras: ● Difícil de implementar correctamente - se necesita práctica AdWords API Workshops – All rights reserved
  • 24. Message Queues - Resumen ● Complejidad de su sistema determina la mejor solución ● Se pueden combinar partes de las soluciones! ● Es un tema complejo, pero le ayudará en el futuro ● Inviertan mucho en monitorizar. ¡Mucho! ● No hay un comodín... AdWords API Workshops – All rights reserved
  • 25. Enlaces API Best Practices - https://developers.google. com/adwords/api/docs/guides/bestpractices ActiveMQ - http://activemq.apache.org/ RabbitMQ - http://www.rabbitmq.com/ AdWords API Workshops – All rights reserved
  • 26. ¿Preguntas? ¡Muchas gracias! AdWords API Workshops – All rights reserved
  • 27. AdWords API Workshops – All rights reserved