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

PDF
Entropy: Implementación de un servicio de onboarding por medio de máquinas de...
PDF
Desarrollo de aplicaciones serverless
PDF
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
KEY
No todo es scrum en agilidad: kanban
PDF
AwReporting tool introduction (Spanish)
PDF
Reporting Tips and Tricks (Spanish)
PDF
07. feeds update
PDF
Opportunity Analysis with Kratu
Entropy: Implementación de un servicio de onboarding por medio de máquinas de...
Desarrollo de aplicaciones serverless
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
No todo es scrum en agilidad: kanban
AwReporting tool introduction (Spanish)
Reporting Tips and Tricks (Spanish)
07. feeds update
Opportunity Analysis with Kratu

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

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

Más de marcwan (20)

PDF
Mcc scripts deck (日本語)
PDF
Getting started with Google Analytics and the AdWords API
PDF
Bid Estimation with the AdWords API (v2)
PDF
Opportunity Analysis with Kratu (v2)
PDF
AdWords API & OAuth 2.0, Advanced
PDF
AdWords Scripts and MCC Scripting
PDF
AwReporting Update
PDF
Getting Started with AdWords API and Google Analytics
PDF
Shopping Campaigns and AdWords API
PDF
API Updates for v201402
PDF
AdWords API Targeting Options
PDF
OAuth 2.0 (Spanish)
PDF
Rate limits and performance
PDF
OAuth 2.0 refresher
PDF
Mobile landing pages
PDF
End to-end how to build a platform
PDF
AwReporting Tool
PDF
Api update rundown
PDF
AdWords Scripts
PDF
Reporting tips & tricks
Mcc scripts deck (日本語)
Getting started with Google Analytics and the AdWords API
Bid Estimation with the AdWords API (v2)
Opportunity Analysis with Kratu (v2)
AdWords API & OAuth 2.0, Advanced
AdWords Scripts and MCC Scripting
AwReporting Update
Getting Started with AdWords API and Google Analytics
Shopping Campaigns and AdWords API
API Updates for v201402
AdWords API Targeting Options
OAuth 2.0 (Spanish)
Rate limits and performance
OAuth 2.0 refresher
Mobile landing pages
End to-end how to build a platform
AwReporting Tool
Api update rundown
AdWords Scripts
Reporting tips & tricks
Publicidad

Último (20)

PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
Presentación de Redes de Datos modelo osi
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
Diapositiva proyecto de vida, materia catedra
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
taller de informática - LEY DE OHM
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
Maste clas de estructura metálica y arquitectura
PPT
Que son las redes de computadores y sus partes
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Sesion 1 de microsoft power point - Clase 1
Propuesta BKP servidores con Acronis1.pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Presentación de Redes de Datos modelo osi
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Diapositiva proyecto de vida, materia catedra
SAP Transportation Management para LSP, TM140 Col18
historia_web de la creacion de un navegador_presentacion.pptx
Estrategia de apoyo tecnología miguel angel solis
taller de informática - LEY DE OHM
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Calidad desde el Docente y la mejora continua .pdf
Maste clas de estructura metálica y arquitectura
Que son las redes de computadores y sus partes
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Estrategia de apoyo tecnología grado 9-3
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Zarate Quispe Alex aldayir aplicaciones de internet .docx

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