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

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 

Último (20)

Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 

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