SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Alto rendimiento y
                    escalabilidad
                en plataformas Rails
          Daniel Blanco                   Luis Bosque               Fernando Blat
daniel.blanco@the-cocktail.com   luis.bosque@the-cocktail.com   blat@lacoctelera.com
¿Pero esto podemos
 hacerlo con Rails?
YES, WE CAN!
           Foto: Peter Yang para Rolling Stone
¿Cómo?
• Logs
Monitorización!   • Gráficas
Logs
• Repositorio común de logs (Data mining)
   • syslog-ng
• Generación de Informes
   • production_log_analyzer
• SlowQueries
Análisis de gráficas


• Identificación de patrones de
  comportamiento
• Reconocer síntomas
Crisis? What Crisis?
Reconociendo Síntomas
  • Carga Elevada
Reconociendo Síntomas
  • Elevado número de conexiones
Reconociendo Síntomas
  • Slow Queries
Reconociendo Síntomas
  • IOstat
Reconociendo Síntomas
  • Uso intensivo de CPU
Reconociendo Síntomas
  • Swap
Capa Web
Capa Web
• Primero fue Lightp(httpd) con FastCGI
• Luego Apache + Mongrel
   •   El módulo mod_proxy_balancer de apache no hace
       balanceo inteligente: round-robin

• Aparece HAProxy
   •   Entre Apache y Mongrels

   •   Distribuye las requests en base a las encoladas por los
       mongrels
• fair_proxy_balancer
• Se mantiene en memoria el nivel de
  ocupación de los backends
• Balanceo inteligente
Capa Web
• Alta disponibilidad entre servidores web
• Failover
                  Virtual IP
Capa Web

• Para aprovechar la máquina:
   •   Varios Dominios

   •   Instancias Virtuales

• Importante: Configuración del servidor web
  para entrega de estáticos
Capa de
Aplicación
Compartiendo Estáticos
• Almacenamiento en red
    •   SAN / NAS


•                   S3
Caché, Caché, Caché!!!!!
Capa de Datos
Capa de Datos
• Máquinas dedicadas
• Esquemas Maestro/Esclavo
• Tablas InnoDB:
   •   Evitar Bloqueos

   •   Busquedas:

        •   Eliminar FULL TEXT KEYS

        •   Indexado con Sphinx

   •   Importante: Ajuste parámetros de configuración
Capa de Datos
• Replicación MySQL no es suficiente
   •   Failover manual

• Cluster MySQL
   •   Muy escalable, pero configuración compleja y procesos
       manuales

• MySQL Proxy
• Replicación DRBD + Replicación MySQL
   •   Configuración sencilla. Failover automático. Escalable (salvo
       aplicaciones con muchas consultas de escritura)
Capa de Datos
• Escalado
                         Virtual IP

  Sencillo       Texto



• Failover
  Automático    Activo                Pasivo


• Balanceo de
  Consultas


                         Esclavos
Entonces, podemos
tener alta redundancia
para la base de datos?
Web




Mongrel Cluster       Mongrel Cluster       Mongrel Cluster
                                                                       App
      +                     +                      +



                                    Virtual IP




                  Activo                                      Pasivo   Datos




                                        Esclavos
Infraestructura
• Memcached
• Virtualización
Memcached
• Sistema de almacenamiento de objetos en
  memoria de forma distribuida.
• Fundamental para escalar:
   • Sesiones
   • Fragmentos
   • Consultas lentas
   • NGINX + Memcached
Query Memcached
• almacenar resultado de una consulta a base de
  datos en Memcached
• cada tabla tiene un número de versión y dicha
  versión se añade a la query y se genera un MD5
  como clave de Memcached
• expirar ese número de versión al ejecutar
  cualquier query que no sea un SELECT
Virtualización
• Mayor aprovechamieno de los recursos de
  hardware.
• Fácil migración en caso de fallo de una
  instancia.
• Arranque bajo demanda
• Redundancia y tolerancia a fallos hardware si
  la instancia se almacena en red
Amazon S3

• Servidores Europa vs USA
• MD5 en nombre de fichero o ETAG para
  cachear sin tiempo de expiracion.
• http://lcp.s3.amazonaws.com/blat%2Ff
  %2F5e3d6c54c094b0cfe15d3021dc17fe1e
Amazon EC2

• Máquinas bajo demanda
• Gestión remota con Elastic Cloud y gema
  Amazon EC2
EC2: evitando regenerar
       imágenes
• Todo está en modo RO, excepto /usr/local,
  que es un repositorio de GIT
• enlaces simbólicos donde haga falta
• al arrancar la máquina hace un git pull y se
  ejecuta un script
• una rama por feature, y merges de ramas
  para combinar features
Merb

• Comunicación por HTTP y claves para
  asegurar la autenticidad de los datos.
• No cargamos ningún modelo de
  ActiveRecord para evitar inconsistencias
  (DRY!!) y el monothreading
Rompiendo
convenciones
Sistemas de colas
• Evitar ralentizar la respuesta al usuario:
  Importante: cuidado con observers,
  sweepers, envíos de email, notificaciones
  remotas...
• Flickr Engineers Do It Offline
• Algunos sistemas:
 • Delayed Jobs
 • Starling
 • ActiveMQ + Ruby Stomp
Datos en memoria

• Carga anticipada de datos
• Base de datos + buffer de datos (Memcached):
 • inserción de datos en memoria
 • datos más frecuentes en memoria
Renderizado en segundo
         plano
• el renderizado es una de las tareas más pesadas,
  superado el cuello de la base de datos
• Erubis: implementación en C puro de ERB con
  algunas características interesantes: caché,
  preprocesado, fácil de extender, sintaxis 100%
  compatible, rápido
• Renderizar en segundo plano y guardar en caché
• Combinar este renderizado con la carga de datos
  anticipada
Paginación

• Sólo interesan los primeros resultados
• Evitamos mostrar el total exacto de páginas
• Precargamos la página actual y las N
  siguientes
• Cuando estamos en la N - 1 cargamos la N
  + 1 y las siguientes
Recursos, referencias y
    bla, bla ,bla...
• Erubis: http://www.kuwata-lab.com/erubis/
• Flickr Engineers Do It Offline: http://
  code.flickr.com/blog/2008/09/26/flickr-
  engineers-do-it-offline/

• Query Memcached: http://github.com/
  ferblape/query_memcached/tree/master

• ActiveMQ: http://activemq.apache.org/
• Stomp: http://github.com/grempe/stomp/
  tree/master
• New Relic: http://www.newrelic.com/
• Query Reviewer: http://code.google.com/p/
  query-reviewer/

• Mongrel Proctitle: http://purefiction.net/
  mongrel_proctitle/

• Production log analyzer: http://rails-
  analyzer.rubyforge.org/

• syslog-ng: http://www.balabit.com/network-
  security/syslog-ng/opensource-logging-
  system/
• Nginx and Memcached, a 400% boost!: http://
  www.igvita.com/2008/02/11/nginx-and-
  memcached-a-400-boost/

• MySQL Proxy: http://forge.mysql.com/wiki/
  MySQL_Proxy
¡Gracias!
no, en serio..
¡¡Muchas gracias!!
¿Quieres trabajar en
    The Cocktail?

Envíanos tu C.V. a info@the-cocktail.com

       http://www.the-cocktail.com

Más contenido relacionado

Similar a Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluciones y trucos.

Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónLoja Valle de Tecnología
 
Cloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la NubeCloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la NubeDavid J. Brenes
 
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITECArquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITECAlejandro Corpeño
 
Rails Against The Machine
Rails Against The MachineRails Against The Machine
Rails Against The Machineguestae6a05
 
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006Álvaro Ortiz
 
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)Domingo Suarez Torres
 
Sql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverEnrique Catala Bañuls
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
 
Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Oriol Jiménez
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeQuito Lambda
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataJosé Carlos García Serrano
 
PHP Conference Argentina 2014
PHP Conference Argentina 2014PHP Conference Argentina 2014
PHP Conference Argentina 2014aciliainternet
 
Arquitectura y escalabilidad básica para entornos cloud
Arquitectura y escalabilidad básica para entornos cloudArquitectura y escalabilidad básica para entornos cloud
Arquitectura y escalabilidad básica para entornos cloudXavier Ruiz Royo
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?Socialmetrix
 
Azure Training Day Guatemala - Migración de Aplicaciones Web a Azure
Azure Training Day Guatemala - Migración de Aplicaciones Web a AzureAzure Training Day Guatemala - Migración de Aplicaciones Web a Azure
Azure Training Day Guatemala - Migración de Aplicaciones Web a AzureGuillermo Zepeda Selman
 

Similar a Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluciones y trucos. (20)

Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-Distribución
 
Cloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la NubeCloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la Nube
 
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITECArquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
Arquitecturas Escalables para Aplicaciones Web - Egdares Futch, UNITEC
 
Rails Against The Machine
Rails Against The MachineRails Against The Machine
Rails Against The Machine
 
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
 
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
SG 09 Patrones de Integración Empresarial Apache Camel (Draft)
 
Arquitectura Lambda
Arquitectura LambdaArquitectura Lambda
Arquitectura Lambda
 
Sql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql server
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nube
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big data
 
PHP Conference Argentina 2014
PHP Conference Argentina 2014PHP Conference Argentina 2014
PHP Conference Argentina 2014
 
Ruby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos RealesRuby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos Reales
 
Avance1
Avance1Avance1
Avance1
 
Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
Arquitectura y escalabilidad básica para entornos cloud
Arquitectura y escalabilidad básica para entornos cloudArquitectura y escalabilidad básica para entornos cloud
Arquitectura y escalabilidad básica para entornos cloud
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
Devops Madrid Marzo - Caso de uso en AWS
Devops Madrid Marzo - Caso de uso en AWSDevops Madrid Marzo - Caso de uso en AWS
Devops Madrid Marzo - Caso de uso en AWS
 
Azure Training Day Guatemala - Migración de Aplicaciones Web a Azure
Azure Training Day Guatemala - Migración de Aplicaciones Web a AzureAzure Training Day Guatemala - Migración de Aplicaciones Web a Azure
Azure Training Day Guatemala - Migración de Aplicaciones Web a Azure
 

Último

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 

Último (19)

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 

Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluciones y trucos.

  • 1. Alto rendimiento y escalabilidad en plataformas Rails Daniel Blanco Luis Bosque Fernando Blat daniel.blanco@the-cocktail.com luis.bosque@the-cocktail.com blat@lacoctelera.com
  • 2. ¿Pero esto podemos hacerlo con Rails?
  • 3. YES, WE CAN! Foto: Peter Yang para Rolling Stone
  • 5. • Logs Monitorización! • Gráficas
  • 6. Logs • Repositorio común de logs (Data mining) • syslog-ng • Generación de Informes • production_log_analyzer • SlowQueries
  • 7. Análisis de gráficas • Identificación de patrones de comportamiento • Reconocer síntomas
  • 9. Reconociendo Síntomas • Carga Elevada
  • 10. Reconociendo Síntomas • Elevado número de conexiones
  • 11. Reconociendo Síntomas • Slow Queries
  • 13. Reconociendo Síntomas • Uso intensivo de CPU
  • 16. Capa Web • Primero fue Lightp(httpd) con FastCGI • Luego Apache + Mongrel • El módulo mod_proxy_balancer de apache no hace balanceo inteligente: round-robin • Aparece HAProxy • Entre Apache y Mongrels • Distribuye las requests en base a las encoladas por los mongrels
  • 17. • fair_proxy_balancer • Se mantiene en memoria el nivel de ocupación de los backends • Balanceo inteligente
  • 18. Capa Web • Alta disponibilidad entre servidores web • Failover Virtual IP
  • 19. Capa Web • Para aprovechar la máquina: • Varios Dominios • Instancias Virtuales • Importante: Configuración del servidor web para entrega de estáticos
  • 21. Compartiendo Estáticos • Almacenamiento en red • SAN / NAS • S3
  • 24. Capa de Datos • Máquinas dedicadas • Esquemas Maestro/Esclavo • Tablas InnoDB: • Evitar Bloqueos • Busquedas: • Eliminar FULL TEXT KEYS • Indexado con Sphinx • Importante: Ajuste parámetros de configuración
  • 25. Capa de Datos • Replicación MySQL no es suficiente • Failover manual • Cluster MySQL • Muy escalable, pero configuración compleja y procesos manuales • MySQL Proxy • Replicación DRBD + Replicación MySQL • Configuración sencilla. Failover automático. Escalable (salvo aplicaciones con muchas consultas de escritura)
  • 26. Capa de Datos • Escalado Virtual IP Sencillo Texto • Failover Automático Activo Pasivo • Balanceo de Consultas Esclavos
  • 27. Entonces, podemos tener alta redundancia para la base de datos?
  • 28. Web Mongrel Cluster Mongrel Cluster Mongrel Cluster App + + + Virtual IP Activo Pasivo Datos Esclavos
  • 31. Memcached • Sistema de almacenamiento de objetos en memoria de forma distribuida. • Fundamental para escalar: • Sesiones • Fragmentos • Consultas lentas • NGINX + Memcached
  • 32. Query Memcached • almacenar resultado de una consulta a base de datos en Memcached • cada tabla tiene un número de versión y dicha versión se añade a la query y se genera un MD5 como clave de Memcached • expirar ese número de versión al ejecutar cualquier query que no sea un SELECT
  • 33. Virtualización • Mayor aprovechamieno de los recursos de hardware. • Fácil migración en caso de fallo de una instancia. • Arranque bajo demanda • Redundancia y tolerancia a fallos hardware si la instancia se almacena en red
  • 34. Amazon S3 • Servidores Europa vs USA • MD5 en nombre de fichero o ETAG para cachear sin tiempo de expiracion. • http://lcp.s3.amazonaws.com/blat%2Ff %2F5e3d6c54c094b0cfe15d3021dc17fe1e
  • 35. Amazon EC2 • Máquinas bajo demanda • Gestión remota con Elastic Cloud y gema Amazon EC2
  • 36. EC2: evitando regenerar imágenes • Todo está en modo RO, excepto /usr/local, que es un repositorio de GIT • enlaces simbólicos donde haga falta • al arrancar la máquina hace un git pull y se ejecuta un script • una rama por feature, y merges de ramas para combinar features
  • 37. Merb • Comunicación por HTTP y claves para asegurar la autenticidad de los datos. • No cargamos ningún modelo de ActiveRecord para evitar inconsistencias (DRY!!) y el monothreading
  • 39. Sistemas de colas • Evitar ralentizar la respuesta al usuario: Importante: cuidado con observers, sweepers, envíos de email, notificaciones remotas... • Flickr Engineers Do It Offline • Algunos sistemas: • Delayed Jobs • Starling • ActiveMQ + Ruby Stomp
  • 40. Datos en memoria • Carga anticipada de datos • Base de datos + buffer de datos (Memcached): • inserción de datos en memoria • datos más frecuentes en memoria
  • 41. Renderizado en segundo plano • el renderizado es una de las tareas más pesadas, superado el cuello de la base de datos • Erubis: implementación en C puro de ERB con algunas características interesantes: caché, preprocesado, fácil de extender, sintaxis 100% compatible, rápido • Renderizar en segundo plano y guardar en caché • Combinar este renderizado con la carga de datos anticipada
  • 42. Paginación • Sólo interesan los primeros resultados • Evitamos mostrar el total exacto de páginas • Precargamos la página actual y las N siguientes • Cuando estamos en la N - 1 cargamos la N + 1 y las siguientes
  • 43. Recursos, referencias y bla, bla ,bla...
  • 44. • Erubis: http://www.kuwata-lab.com/erubis/ • Flickr Engineers Do It Offline: http:// code.flickr.com/blog/2008/09/26/flickr- engineers-do-it-offline/ • Query Memcached: http://github.com/ ferblape/query_memcached/tree/master • ActiveMQ: http://activemq.apache.org/ • Stomp: http://github.com/grempe/stomp/ tree/master
  • 45. • New Relic: http://www.newrelic.com/ • Query Reviewer: http://code.google.com/p/ query-reviewer/ • Mongrel Proctitle: http://purefiction.net/ mongrel_proctitle/ • Production log analyzer: http://rails- analyzer.rubyforge.org/ • syslog-ng: http://www.balabit.com/network- security/syslog-ng/opensource-logging- system/
  • 46. • Nginx and Memcached, a 400% boost!: http:// www.igvita.com/2008/02/11/nginx-and- memcached-a-400-boost/ • MySQL Proxy: http://forge.mysql.com/wiki/ MySQL_Proxy
  • 49. ¿Quieres trabajar en The Cocktail? Envíanos tu C.V. a info@the-cocktail.com http://www.the-cocktail.com