Rate limits and performance (Spanish)

442 views

Published on

AdWords API Workshops São Paulo

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
442
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Rate limits and performance (Spanish)

  1. 1. AdWords API Workshops – All rights reserved
  2. 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. 3. Agenda ● Buenas praxis de la API ● ¿Qué son Rate Limits? ● ¿Cómo manejarlos? AdWords API Workshops – All rights reserved
  4. 4. Buenas Praxis Pequeños detalles para mejorar el rendimiento AdWords API Workshops – All rights reserved
  5. 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. 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. 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. 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. 9. Definiendo Rate Limits AdWords API Workshops – All rights reserved
  10. 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. 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. 12. Cómo Manejar Los Rate Limits Programe con cuidado... AdWords API Workshops – All rights reserved
  13. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 26. ¿Preguntas? ¡Muchas gracias! AdWords API Workshops – All rights reserved
  27. 27. AdWords API Workshops – All rights reserved

×