Este documento narra la historia de cómo un sistema experimentaba problemas de rendimiento debido a una alta carga. El autor implementó varias soluciones iterativas como agregar más contenedores, dividir el tráfico entre backends y optimizar consultas a bases de datos. Estas mejoras redujeron las latencias del API de varios segundos a solo unos milisegundos. El autor concluye que es importante medir el rendimiento, identificar cuellos de botella y hacer cambios graduales para resolver problemas de escalabilidad.
Presentación sobre Reactive Programming en la JVM para el meetup JVM_MX.
Se mostraron conceptos sobre Reactive Programming y Functional Reactive Programming con la biblioteca RxJava de Netflix.
Esta presentación se ofreció como parte de la materia de Sistemas Distribuidos de la Maestría en Ingeniería del Software de CIMAT - Unidad Zacatecas.
El Ing. Yannick Warnier, Presidente de la Asociación Chamilo, presentó una panorámica de escenarios de implementación de sistemas distribuidos, los cuales, pueden ser aplicados a Chamilo LMS.
Presentación sobre Reactive Programming en la JVM para el meetup JVM_MX.
Se mostraron conceptos sobre Reactive Programming y Functional Reactive Programming con la biblioteca RxJava de Netflix.
Esta presentación se ofreció como parte de la materia de Sistemas Distribuidos de la Maestría en Ingeniería del Software de CIMAT - Unidad Zacatecas.
El Ing. Yannick Warnier, Presidente de la Asociación Chamilo, presentó una panorámica de escenarios de implementación de sistemas distribuidos, los cuales, pueden ser aplicados a Chamilo LMS.
La próxima versión de Drupal delegará parte de su funcionamiento en los componentes de Symfony2.
Para conocer realmente cómo se está proyectando esta evolución, es importante conocer qué es Symfony2, cuáles son sus componentes y unas pinceladas relativas a su funcionamiento.
Para ello, se explican brevemente los componentes que ya están siendo incorporados al core de Drupal8.
Charla Evento TestingUY 2018 - 911: Automatización para emergenciasTestingUy
Expositor: Maximiliano Piñeyro
Resumen: Muchas veces en nuestro trabajo existen situaciones no esperadas que implican una traba en el sistema, como bugs en producción o cambios de flujos de negocio, afectando datos/procesos anteriores y creando conflictos en los mismos. En algunas ocasiones el problema genera una carga de trabajo manual importante, donde debemos notificar a un número determinado de clientes de forma manual, transferir datos a otras plataformas o ejecutar procesos manuales largos y tediosos.
Por lo general esto se da por falta de soluciones tecnológicas que no permiten que el sistema pueda resolverlos automáticamente, implicando que un grupo de personas deban solucionar estos problemas manualmente y la empresa asuma un alto costo en lo que se refiere a horas de trabajo.
Esta charla plantea un enfoque distinto en el uso diario que le damos a las herramientas de automatización, logrando resolver esta problemática de forma sencilla, y donde descubriremos que disponemos de un universo de posibilidades que va más allá del testing. Veremos cómo crear robots que lean de cualquier fuente de datos e interactúen con pantallas, servicios REST y bases de datos, hasta robots que sean activados desde una app y ejecuten procesos manuales de forma automática.
Mantenimiento y mejora continua de la performance de las aplicacionesAbstracta
¿Cómo se puede garantizar que la performance de los sistemas no empeore con el transcurso del tiempo? Si un sistema hoy responde rápidamente, ¿eso garantiza que seguirá siendo así en el futuro?
De la misma forma que los sistemas, sus funcionalidades, el hardware, drivers, y sistemas operativos que les dan soporte van cambiando, también lo hace la carga sobre el sistema. La carga, entendida como la cantidad de usuarios que accede al sistema, la forma en que los usuarios ejecutan las funcionalidades, y el volumen de datos que debe ser procesado por las solicitudes del negocio son todos ejemplos de elementos que van cambiando durante la vida de una aplicación informática.
A medida que el contexto va cambiando, el sistema debe adaptarse para mantener la calidad de la performance en las respuestas a sus usuarios.
Luego que un sistema es puesto en producción comienza la etapa de mantenimiento. Para que el mantenimiento sea menor, se pueden realizar pruebas funcionales y no funcionales, con el objetivo de anticiparse a situaciones que ocurrirán en producción. La etapa de mantenimiento se caracteriza por ser tan larga cómo la vida del sistema. En esta etapa es donde ocurren todas esas situaciones inesperadas y todos los cambios en el ambiente a los que debemos adaptarnos.
Es importante entonces mantener una permanente monitorización sobre los componentes del sistema con el objetivo de detectar problemas rápidamente y adaptar lo que sea necesario para solucionarlos.
Monitorización y revisión de los tiempos de respuesta en los access logs de los servidores web y servidores de aplicaciones. Uso de los recursos (CPU, memoria, acceso a disco). Crecimiento de las tablas en la base de datos. Estos son algunos pocos ejemplos de indicadores que pueden ser monitorizados para conocer el sistema e identificar problemas.
En esta charla veremos metodología, buenas prácticas, herramientas útiles y ejemplos para mantener y mejorar la performance durante la vida de los sistemas informáticos.
Esta charla fue expuesta por Simon de Uvarow en el marco del Encuentro Internacional GeneXus 2014, #GX24
Variables a tener en cuenta a la hora de elegir hosting para un proyecto WordPress, y ejemplos de implicaciones técnicas que dicha elección puede tener.
Migrando Rails Apps entre Cloud y Bare Metal ServersEdwin Cruz
Platica dada en MagmaRails 2012, aqui comparto mis experiencias de migrar aplicaciones rails de bare metal servers a custom cloud, de PaaS a bare metal servers y todas las combinaciones. Cualquier pregunta twitter: softr8
Charla para la Librecon 2014 sobre rendimiento y aceleración web en WordPress. Web Performance Optimization WPO. En estas diapos podemos encontrar cómo mejorar e incrementar la velocidad de nuestro sitio web desarrollado en WordPress
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
Llevas unos meses dándole vueltas a subir ese parche que has hecho de jquery para corregir ese bug que te tenía loco. O crear ese proyecto en github para subir esa super tarea gulp que tanto os ha ayudado en el proyecto. Sí, te gustaría hacerlo pero no tienes ni idea de por dónde empezar: travis, pull-request, hooks, CI, gerrit, rebases, squashing, semantic versioning... ¿qué es todo eso y para qué sirve?. En esta charla hablaremos de qué herramientas aporta git y github para facilitar esta tarea, cómo podemos organizar nuestros repositorios y flujos de trabajo y os daremos las pautas para que podáis empezar a sacarle el máximo partido a los repositorios de código distribuido.
Estas diapositivas corresponden a la charla que se dio en madrid el 26/10/2015 en un meetup conjunto entre los grupos de HTML5 Spain y Spanish git Meetup.
Argentesting 2017 - Performance testing 101 con jmeterArgentesting
Este taller será una introducción a los conceptos de Performance Testing y a la utilización de JMETER para armar planes de pruebas de performance.
Los requerimientos de las máquinas de los asistentes son:
Procesador Intel i3 o Superior con 2GB y 1 GB de espacio Libre.
SO: Linux, MacOs, Windows
JAVA 1.8 Instalado
Expositor: Sebastián Lallana
¿Cómo implementar la analítica empresarial en tiempo real?Denodo
Watch full webinar here: https://bit.ly/3oWOneG
Las técnicas de análisis en tiempo real prometen enriquecer los análisis tradicionales de datos en tiempo real. Esto es clave para muchos escenarios, como la gestión de la cadena de suministro o la atención al cliente. La virtualización de datos es bien conocida por ofrecer conectividad en tiempo real a diversas fuentes y capacidades de federación: los dos ingredientes básicos para la analítica en tiempo real. Sin embargo, construir una estrategia en torno a estos conceptos puede ser un reto. A menudo se menciona el impacto de las fuentes de datos delicadas, la seguridad y los problemas de rendimiento.
Asiste a este webinar para aprender más sobre:
- Cuáles son los escenarios en los que el valor de la analítica en tiempo real puede marcar la diferencia.
- Las capacidades básicas que las hacen posibles
- Las mejores prácticas clave para que tengan éxito
La próxima versión de Drupal delegará parte de su funcionamiento en los componentes de Symfony2.
Para conocer realmente cómo se está proyectando esta evolución, es importante conocer qué es Symfony2, cuáles son sus componentes y unas pinceladas relativas a su funcionamiento.
Para ello, se explican brevemente los componentes que ya están siendo incorporados al core de Drupal8.
Charla Evento TestingUY 2018 - 911: Automatización para emergenciasTestingUy
Expositor: Maximiliano Piñeyro
Resumen: Muchas veces en nuestro trabajo existen situaciones no esperadas que implican una traba en el sistema, como bugs en producción o cambios de flujos de negocio, afectando datos/procesos anteriores y creando conflictos en los mismos. En algunas ocasiones el problema genera una carga de trabajo manual importante, donde debemos notificar a un número determinado de clientes de forma manual, transferir datos a otras plataformas o ejecutar procesos manuales largos y tediosos.
Por lo general esto se da por falta de soluciones tecnológicas que no permiten que el sistema pueda resolverlos automáticamente, implicando que un grupo de personas deban solucionar estos problemas manualmente y la empresa asuma un alto costo en lo que se refiere a horas de trabajo.
Esta charla plantea un enfoque distinto en el uso diario que le damos a las herramientas de automatización, logrando resolver esta problemática de forma sencilla, y donde descubriremos que disponemos de un universo de posibilidades que va más allá del testing. Veremos cómo crear robots que lean de cualquier fuente de datos e interactúen con pantallas, servicios REST y bases de datos, hasta robots que sean activados desde una app y ejecuten procesos manuales de forma automática.
Mantenimiento y mejora continua de la performance de las aplicacionesAbstracta
¿Cómo se puede garantizar que la performance de los sistemas no empeore con el transcurso del tiempo? Si un sistema hoy responde rápidamente, ¿eso garantiza que seguirá siendo así en el futuro?
De la misma forma que los sistemas, sus funcionalidades, el hardware, drivers, y sistemas operativos que les dan soporte van cambiando, también lo hace la carga sobre el sistema. La carga, entendida como la cantidad de usuarios que accede al sistema, la forma en que los usuarios ejecutan las funcionalidades, y el volumen de datos que debe ser procesado por las solicitudes del negocio son todos ejemplos de elementos que van cambiando durante la vida de una aplicación informática.
A medida que el contexto va cambiando, el sistema debe adaptarse para mantener la calidad de la performance en las respuestas a sus usuarios.
Luego que un sistema es puesto en producción comienza la etapa de mantenimiento. Para que el mantenimiento sea menor, se pueden realizar pruebas funcionales y no funcionales, con el objetivo de anticiparse a situaciones que ocurrirán en producción. La etapa de mantenimiento se caracteriza por ser tan larga cómo la vida del sistema. En esta etapa es donde ocurren todas esas situaciones inesperadas y todos los cambios en el ambiente a los que debemos adaptarnos.
Es importante entonces mantener una permanente monitorización sobre los componentes del sistema con el objetivo de detectar problemas rápidamente y adaptar lo que sea necesario para solucionarlos.
Monitorización y revisión de los tiempos de respuesta en los access logs de los servidores web y servidores de aplicaciones. Uso de los recursos (CPU, memoria, acceso a disco). Crecimiento de las tablas en la base de datos. Estos son algunos pocos ejemplos de indicadores que pueden ser monitorizados para conocer el sistema e identificar problemas.
En esta charla veremos metodología, buenas prácticas, herramientas útiles y ejemplos para mantener y mejorar la performance durante la vida de los sistemas informáticos.
Esta charla fue expuesta por Simon de Uvarow en el marco del Encuentro Internacional GeneXus 2014, #GX24
Variables a tener en cuenta a la hora de elegir hosting para un proyecto WordPress, y ejemplos de implicaciones técnicas que dicha elección puede tener.
Migrando Rails Apps entre Cloud y Bare Metal ServersEdwin Cruz
Platica dada en MagmaRails 2012, aqui comparto mis experiencias de migrar aplicaciones rails de bare metal servers a custom cloud, de PaaS a bare metal servers y todas las combinaciones. Cualquier pregunta twitter: softr8
Charla para la Librecon 2014 sobre rendimiento y aceleración web en WordPress. Web Performance Optimization WPO. En estas diapos podemos encontrar cómo mejorar e incrementar la velocidad de nuestro sitio web desarrollado en WordPress
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
Llevas unos meses dándole vueltas a subir ese parche que has hecho de jquery para corregir ese bug que te tenía loco. O crear ese proyecto en github para subir esa super tarea gulp que tanto os ha ayudado en el proyecto. Sí, te gustaría hacerlo pero no tienes ni idea de por dónde empezar: travis, pull-request, hooks, CI, gerrit, rebases, squashing, semantic versioning... ¿qué es todo eso y para qué sirve?. En esta charla hablaremos de qué herramientas aporta git y github para facilitar esta tarea, cómo podemos organizar nuestros repositorios y flujos de trabajo y os daremos las pautas para que podáis empezar a sacarle el máximo partido a los repositorios de código distribuido.
Estas diapositivas corresponden a la charla que se dio en madrid el 26/10/2015 en un meetup conjunto entre los grupos de HTML5 Spain y Spanish git Meetup.
Argentesting 2017 - Performance testing 101 con jmeterArgentesting
Este taller será una introducción a los conceptos de Performance Testing y a la utilización de JMETER para armar planes de pruebas de performance.
Los requerimientos de las máquinas de los asistentes son:
Procesador Intel i3 o Superior con 2GB y 1 GB de espacio Libre.
SO: Linux, MacOs, Windows
JAVA 1.8 Instalado
Expositor: Sebastián Lallana
¿Cómo implementar la analítica empresarial en tiempo real?Denodo
Watch full webinar here: https://bit.ly/3oWOneG
Las técnicas de análisis en tiempo real prometen enriquecer los análisis tradicionales de datos en tiempo real. Esto es clave para muchos escenarios, como la gestión de la cadena de suministro o la atención al cliente. La virtualización de datos es bien conocida por ofrecer conectividad en tiempo real a diversas fuentes y capacidades de federación: los dos ingredientes básicos para la analítica en tiempo real. Sin embargo, construir una estrategia en torno a estos conceptos puede ser un reto. A menudo se menciona el impacto de las fuentes de datos delicadas, la seguridad y los problemas de rendimiento.
Asiste a este webinar para aprender más sobre:
- Cuáles son los escenarios en los que el valor de la analítica en tiempo real puede marcar la diferencia.
- Las capacidades básicas que las hacen posibles
- Las mejores prácticas clave para que tengan éxito
Similar a Mad scalability (perfomance debugging) (20)
Charla dada en el Codemotion España que se celebró en Madrid el 21 y 22 /11/2014
Como tiene gifs animado, es recomendable descargar la presentación
Trata sobre el uso de herramientas de sistemas para hacer debugging
Charla que di en la PyConES 2014 en Zaragoza. Hablo sobre como usar Python Fabric si pasas un poco del getting started. Como tiene gifs animados recomiendo que sea descargada
Charla que dí en la PgConfEU en el año 2014, la cual se celebró en Madrid, España.
(Recomiendo descargar el original de la presentación)
Hablo sobre como desplegué Postgres en AWS en 2008 y comento también sobre cosas que se podrían hacer mejor, siguiendo un enfoque de mejora iterativo
A lighting talk I gave at python Madrid user group on 2014/03/27 about using python fabric beyond the tutorial http://docs.fabfile.org/en/1.8/#tutorial and relates a journey of tips that I have use to improve my fabfiles. All is from the documentation.
Download the source file for best viewing (animated gifs ;-) )
About the references and images are from their respective owners
Charla hecha en el Codemotion celebrado en España los dias 18 y 19 de octubre para explicar de manera introductoria como administrar un entorno de mongodb en producción. Haciendo enfasis en hacer backups y sharding. Se recomienda descargar para su mejor visualización (Gifs animados ^_^)
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
Ventajas y desventajas de la desinfección con cloro
Mad scalability (perfomance debugging)
1. Mis primeros pasos usando las
escaleras
Alejandro BM -@ae_bm
Mad Scalability 2018/4/4
2. Trigger Warning
● Puedo herir sensibilidades. Se recomienda discreción
● No hablare de nada esotérico o exótico
– No cloud
– No scheduler de containers
– No SDNs
– Etc
● Si esto parece relleno ^_^ don’t blame me
● Esta presentación no ha sido revisada por Relaciones
Públicas
● La siguiente es una historia inspirada en hechos reales
3. En un comienzo
● En un hardware que tiene varios sistemas
ejecutándose (Gente a la que le gusta ahorrar)
● Hay quejas sobre la lentitud del sistema
● Los recursos están saturados
● El contenedor con el proceso web está a tope
de CPU
● Se cambia la máquina por una más potente
● Aún con más recursos el sistema funciona de
pena ¯_(ツ)_/¯
5. En un comienzo
● Comenté que un sólo contenedor con un proceso
python no iba a utilizar más cores por arte de
magia
● Se decide poner otro contenedor con un proceso
python para aprovechar mejor los recursos de la
máquina. Ahora NGINX además de proxy funciona
como load balancer
● El sistema se pensó para no usar cookies o un
almacén externo de sesiones, lo cual maravilla a
los usuarios cuando peticiones relacionadas son
procesadas por backends distintos
6.
7. En un comienzo
● Mientras tanto yo analizaba logs
● Vi que la mayoría de las peticiones venían de
la propia máquina originadas por un sistema
interno
● Así que configuré a NGINX para que las
peticiones del sistema interno usaran un
contenedor y el resto el otro contenedor
● Mi idea era que los usuarios externos no fueran
penalizados por el sistema interno
9. Unas semanas después
● Quejas porque el sistema está lento
● El backend para peticiones internas está casi
ocioso mientras su clon está comiéndose casi
toda la carga
● Esta vez pude revisar de nuevo los logs sin que
se tomaran decisiones apresuradas
● Omití todo el trafico originado desde localhost
10. Unas semanas después
● Existían 2 tipos de peticiones desde clientes
externos
– URLs con /html/
– URLs sin /html/
● Después de una comunicación OPS DEV
– Si la URL tiene /html/ se han hecho con un
navegador web – Posible humano
– Si no tienen /html/ son consultas al API – Posible
no humano
11. Unas semanas después
● Manteniendo la doctrina de no penalizar humanos*, se configura el
sistema para usar otro backend más
– 1 backend para peticiones desde localhost (siguen siendo un montón)
– 1 backend para peticiones sin /html/ (peticiones al API)
– 1 backend para peticiones con /html/ (peticiones de humanos)
● Cambio el formato de logs en NGINX para tener más datos
– Saber que backend procesó la petición $proxy_host
– Saber el tiempo que tardo la petición $request_time
* still a misanthrope ^_^
13. Hace unas pocas semanas
● El cliente comenta que el sistema esta lento
● La página web funciona con las latencias
esperadas
● El cliente especifica que el problema es con el
API – Ahora son específicos
● La ventaja es que ahora hay datos y no sólo
sensaciones
14.
15. Hace unas pocas semanas
● Aplicando estadísticas a los logs de un mes y
medio además de comparándolo con otro
cliente grande
16. Hace unas pocas semanas
● Peticiones procesadas por cada backend
● Respuestas HTTP retornadas por NGINX
local 0.98
html 0.01
api 0.0043
200 0.9989
404 0.0008
17. Hace unas pocas semanas
Histograma de la duración de las peticiones
18. Hace unas pocas semanas
Duración de las peticiones en base al tiempo
19. Hace unas pocas semanas
Histograma de las duraciones menores a 1 seg
20. Hace unas pocas semanas
● Estadísticas
● Nada llamativo
min 0.0 q1 0.003
max 63.287 q3 0.005
mean 0.04 IQR 0.002
median 0.004 p90 0.008
mad 0.07 p99 0.6
stdev 0.67
21. Hace unas pocas semanas
● Dos errores
– Revisar casi 2 meses de logs
– Revisar el agregado y no el API
● Viendo sólo los números parece que el sistema
no va tan mal (considerando que nadie ha
definido una latencia objetivo)
● El problema es la gran cantidad de peticiones
que hace el sistema local. Por lo que el resto
de peticiones son outliers
22.
23. Hace unas pocas semanas
API - Histograma de la duración de las peticiones
24. Hace unas pocas semanas
API - Duración de las peticiones en base al tiempo
25. Hace unas pocas semanas
● Estadísticas - API
● FUUUUUUU…..
min 0.0 q1 4.76975
max 36.394 q3 7.9235
mean 5.97 IQR 3.15375
median 5.212 p90 11.4481
mad 3.41 p99 25.12393
stdev 4.98
26.
27. Hace unas pocas semanas
● El backend que atiende las peticiones del API
sucks hard
● Me intrigaba que un proceso web usara
constantemente 100% una CPU
● No es una aplicación que mina criptomonedas
● Confirmo que es una aplicación asíncrona
28. Hace unas pocas semanas
● Decido formular una hipótesis:
– Estamos aceptando peticiones que no avanzan
porque están esperando por otras partes del
sistema. Es el proceso de aceptar peticiones de
forma continua lo que hace que se use el CPU al
100%
● Toca ver si existen recursos críticos
30. Hace unas pocas semanas
● Para validar la hipótesis decido usar sysdig
para ver cuales son las llamadas al sistema
que más tardan en responder
● Todo está lleno de epolls, así que descarto los
epolls – normal en un sistema asíncrono
● Cuando ignoro los epolls:
– La mayoría de las esperas son por MySQL
(ToySQL)
– Hay mucha comunicación de red con REDIS
31. Hace unas pocas semanas
La parte del sistema que nos interesa ahora
32. Hace unas pocas semanas
● Con MySQL ocurrían dos problemas:
– Una query que hacia un order by con limit en un
campo que no tenia índice – facepalm
– Una query de union que tenia índices pero el filtrado
se hacia en el having por lo que no usaba índices –
sin comentarios
● Soluciones:
– Crear un índice para la primera consulta
– Reescribir la query para que el filtrado se haga en los
where y no esperar hasta el final (el having) – Ahora
me llaman DBA por esto. FML
33. Hace unas pocas semanas
● Ahora las queries a la BD iban algo mejor -
mucho
● Pero persistía el alto uso de CPU
● Con sysdig veo que peticiones del tipo /algo?
user=id
– Se conectan a REDIS y piden una colección de
miles de elementos
– Reviso el código fuente y el filtrado lo está
haciendo python - LLORO
34.
35. Hace unas pocas semanas
● Soluciones:
– Usar otra BD – No hay tiempo
– Se utiliza otra estructura en REDIS para soportar
este tipo de consultas
● Se dejo unos días para ver si había mejora y ...
36. Hace unas pocas semanas
API - Histograma de la duración de las peticiones
37. Hace unas pocas semanas
API - Duración de las peticiones en base al tiempo
38. Hace unas pocas semanas
● Estadísticas – API
● Parece que hemos mejorado un poco el
sistema
min 0.002 q1 0.004
max 3.037 q3 0.006
mean 0.03 IQR 0.002
median 0.005 p90 0.01
mad 0.04 p99 0.70078
stdev 0.13
39.
40. Como conclusión
● Definir la latencia aceptable
● Medir / instrumentar
● Entender lo que se esta midiendo
● Hacer experimentos
● Hacer pruebas de carga de verdad
41. Como conclusión
● Ir de forma iterativa corrigiendo los bottlenecks
● Vale la pena diferenciar los tipos de carga de
trabajo
● Usar loadsheding, quotas o fallar es mejor a
crear un fallo en cascada
https://landing.google.com/sre/book/chapters/addressing-cascading-failures.html
42. Como conclusión
● Antes de escalar en máquinas o cambiar el HW
entender lo que esta limitando la escalabilidad
● Revisar los queries con explain y usar el f***
index
● Si la BD te puede dar el trabajo ya hecho es
mucho mejor hacerlo en la aplicación:
– Menos tráfico de red
– No malgastas CPU
43. ¿Preguntas?
se supone que es una lighting talk
Things That Are Not Questions (by @QuinnyPig)
• Calling Bullshit
• Telling a pointless story
• A spoken word version of your resume