Your SlideShare is downloading. ×
0
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Drupal 7 para sitios de alto rendimiento y alta disponibilidad
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Drupal 7 para sitios de alto rendimiento y alta disponibilidad

2,615

Published on

Presentación sobre métodos y herramientas para optimizar el rendimiento de un sitio basado en Drupal 7

Presentación sobre métodos y herramientas para optimizar el rendimiento de un sitio basado en Drupal 7

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

No Downloads
Views
Total Views
2,615
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Drupal 7 para sitios de alto rendimiento y disponibilidad IIG. Iván G. Campaña N.
  • 2. ¿Qué implica alto rendimiento? • Un sitio que recibe desde miles a millones de visitas por segundo. • Va asociado a sitios con un flujo alto de información (medios de comunicación, páginas de entidades de gobierno, sitios de famosos, etc...). • Los visitantes esperan poder acceder al contenido en cualquier momento y sin interrupciones. • El tiempo fuera de línea puede implicar pérdidas monetarias o daño de imagen para la empresa. D7 para alto rendimiento
  • 3. ¿Drupal está listo? Sitios desarrollados en Drupal con alto número de visitas: • The White House / La Casa Blanca (whitehouse.gov) • The Economist (economist.com) • Fox News (nation.foxnews.com) • El Universo (eluniverso.com) • Ecuavisa (ecuavisa.com) Requieren no sólo de infraestructura, sino también de una estrategia de optimización diseñada de acuerdo a las necesidades del proyecto. D7 para alto rendimiento
  • 4. CMS vs Código puro Código puro ● ● ● ● ● Proceso de desarrollo más largo Menor consumo de recursos Desarrollo de funcionalidades a la medida Características ajustadas específicamente a la necesidad Mayor dificultad para realizar cambios drásticos. CMS ● Agregan una capa grande de “sobrecarga” (overhead). ● Contienen múltiples módulos los cuales requieren de aseguramiento de calidad. ● La mayoría están basados en lenguajes de scripting (Ruby, PHP, Python, etc...) Implica que no hay compilación de código, incrementando consumo de CPU. ● Simplifican el desarrollo, pero mantenimiento es crítico (bugs, parches de seguridad). ● Mayor flexibilidad y facilidad de cambio (generalidad). l D7 para alto rendimiento
  • 5. ¿Cómo funciona con Drupal? ● Por defecto no está optimizado para alto rendimiento ● Almacena toda la configuración en la BD. Las bases de datos son “lentas” ● Atrapa todas las solicitudes al utilizar URLs amigables (inclusive los archivos estáticos). ● Es una herramienta genérica, por lo cual agrega validaciones y verificaciones que ralentizan la ejecución y aumentan el consumo de recursos. ● Inclusive con las configuraciones por defecto de mejora de rendimiento no puede soportar un número alto de accesos concurrentes. ● D7 para alto rendimiento
  • 6. ¿Qué se necesita para optimizarlo? ● Conocimientos :) ● Recursos :( D7 para alto rendimiento
  • 7. ¿Alternativas? ● Configuración en un ambiente propio: ● Instalación de servidores, componentes y configuraciones. ● Servicios de terceros: ● ● Pantheon (http://getpantheon.com/) Acquia Cloud (http://www.acquia.com/products-services/acquia-cloud) ● Optimizaciones al sitio web (obligatorio). D7 para alto rendimiento
  • 8. ¿La solución? ●No existe una fórmula mágica. ●Se necesita planificación y adaptar el sitio para poder responder a la demanda. ●Nos podemos basar en cálculos y recomendaciones, pero pesa mucho la experiencia. ●Hay que pensar en software y hardware. ●Integración de servicios de distribución y balanceo de carga ●Mejorar acceso a recursos lentos (Sistema de archivos, BD, Red, E/S en general) ●Redundancia. ●Utilizar servicios en la nube (cloud SAS). D7 para alto rendimiento
  • 9. Estructura genérica con Drupal 7 D7 para alto rendimiento
  • 10. Establecer métricas y objetivos ● ● ● ● Más infraestructura sin optimización = Desperdicio de dinero. Establecer un mínimo y un máximo de visitantes esperados. ¿Qué puedo lograr con mis recursos? Identificar qué características del sitio requieren atención especial: – Ej: Contenido altamente dinámico, llamadas AJAX, número de usuarios logueados concurrentemente. D7 para alto rendimiento
  • 11. Pruebas de rendimiento ● ● ● Se deben realizar en ambiente de QA o Staging. Apache Benchmark ● Pruebas básicas ● Simulación de usuarios concurrentes ● Se puede enviar cookies y parámetros para simular sesiones de usuario. ● Se maneja a nivel de scripting o en consola ● Manual: ● http://httpd.apache.org/docs/2.2/programs/ab.html New Relic ● Permite identificar cuellos de botella en el rendimiento del sitio o la infraestructura. ● Integración directa con drupal (servicio pro) ● Monitoreo constante durante las pruebas de rendimiento D7 para alto rendimiento
  • 12. Pruebas de rendimiento ● Jmeter / Blazemeter ● Pruebas con los tipos de usuarios que se van a manejar ● Páginas estáticas ● Páginas con bloques de contenido dinámico. ● Páginas que varían dependiendo de parámetros: ● Por Rol ● Por Usuario ● Por variables ● Módulo de integración: ● https://drupal.org/project/blazemeter ● Scripts de ejemplo: ● https://github.com/Ymbra/drupal7-jmeter ● https://github.com/erikwebb/drupal-jmeter-tricks http://www.metaltoad.com/blog/jmeter-test-plan-drupal D7 para alto rendimiento
  • 13. ¿Luego de las pruebas? ● ¿Qué he logrado? ● ● ● Ya conozco los problemas. Tengo establecidos los objetivos a alcanzar. Conozco mis límites en cuanto a recursos. ¿Cómo avanzo? D7 para alto rendimiento
  • 14. Optimizaciones por niveles Nivel básico: ● Caché en el navegador ● Configurar recursos estáticos (js/css/imágenes). ● Habilitar caché para usuarios anónimos ● Utilizar un cache de OPCode para el código ● Reducir el número de módulos incluidos D7 para alto rendimiento
  • 15. Optimizaciones por niveles Nivel intermedio: ● Reemplazar caché de BD de Drupal ● Reemplazar servidor web ● Optimizar motor de BD ● Integrar caché de usuarios logueados ● Optimizar rendimiento de módulos D7 para alto rendimiento
  • 16. Optimizaciones por niveles Nivel avanzado: ● Integrar sistema de caché con reglas ● Integrar búsquedas a través de Apache Solr ● Utilizar herramientas de balanceo de carga, proxy inverso, CDN ● Emplear herramientas de terceros para reducir carga (opcionales): ● Cloudflare ● Apache Mahout D7 para alto rendimiento
  • 17. Nivel básico de optimización • Caché en los navegadores o Configurar e-tags en el servidor web o Establecer fecha de expiración de archivos o Usar dominios sin cookies para contenido estático o Usar una red CDN  (Se puede crear un CDN falso con un servidor secundario) o Activar agregación CSS/JS en Drupal • Habilitar caché para usuarios anónimos o Se almacenan las páginas, bloques y vistas generadas en la BD. o Establece un tiempo mínimo de permanencia en caché. o Puede integrarse con el módulo expires para hacer la limpieza del contenido. D7 para alto rendimiento
  • 18. Nivel básico de optimización • Listar los módulos integrados y desactivar o desinstalar los que no se utilicen. • Seleccionar módulos que puedan ser reutilizables. • Mantener las funcionalidades personalizadas modulares, pero compactas. “No matar moscas con balas de cañón” D7 para alto rendimiento
  • 19. Nivel básico de optimización Utilizar caché OPCode o Crea código intermedio (precompilado). o Se puede mantener en memoria evitando que pase a leer archivos en disco (mejora E/S). Evita hacer “hits” al disco por cada archivo. o Se actualiza cuando detecta que hay cambios en los archivos de código. o Basta con integrar un módulo de PHP y establecer los parámetros básicos. o Funciona con cualquier aplicación PHP. o Una instalación de Drupal incluyendo los módulos contribuidos puede tener más de 2,000 archivos de código. • Módulos más populares: o APC o XCache o Zend Optimizer D7 para alto rendimiento
  • 20. Nivel básico de optimización D7 para alto rendimiento
  • 21. Herramientas de evaluación • Estas herramientas incluyen recomendaciones básicas para mejorar la interacción y tiempo de respuesta del sitio: • Yahoo YSlow ● http://developer.yahoo.com/yslow/  • Google Page Speed https://developers.google.com/speed/pagespeed/  D7 para alto rendimiento
  • 22. Nivel intermedio de optimización ● Reemplazar caché de BD de Drupal ● Resuelve problemas básicos de rendimiento. ● Escribir en la BD siempre es costoso. ● Se vuelve un problema con múltiples usuarios concurrentes. ● La herramienta utilizada por defecto es Memcached. ● Requiere soporte de módulo de PHP ● Se pueden definir múltiples instancias para los diferentes componentes del sitio. ● Se mantiene el resultado en memoria RAM. ● Permite reemplazar caché estándar, así como caché de sesiones y de bloqueo (lock) ● Sistema alternativo basado en archivos: Boost. ● Sigue siendo más “económico” que escribir en la BD, aunque no sea tan rápido como almacenar en memoria. D7 para alto rendimiento
  • 23. Herramientas de caché Métodos simples (con recursos limitados): DatabaseCache Boost / https://drupal.org/project/boost Con aumento de infraestructura: Memcached / https://drupal.org/project/memcache Redis / https://drupal.org/project/redis Varnish / https://drupal.org/project/varnish Integrando caché de usuarios: AuthCache / https://drupal.org/project/authcache EntityCache / https://drupal.org/project/entitycache D7 para alto rendimiento
  • 24. Nivel intermedio de optimización ● Reemplazar servidor Web. ● Servidore compatibles con Drupal: ● Apache.- Opción por defecto, estable aunque con mayor consumo de recursos. ● ● Nginx.- Mejor rendimiento con archivos estáticos y opción de habilitar microcaché. ● Microcaché permite almacenar temporalmente la página renderizada. Lighttpd.- Funciona en modo fast-cgi consumo de recursos bajo (hay que configurar el número de listeners de acuerdo a las características del equipo físico). D7 para alto rendimiento
  • 25. Nivel intermedio de optimización ● Optimizar motor de BD ● Problemas de bloqueos / Acceso concurrente ● Bloqueo a nivel de fila ● Bloqueo de tablas ● Índices lentos ● Búsquedas secuenciales ● Fragmentación ● Limitación de rendimiento en vistas complejas o con migración de información de sistemas legados. ● Casos específicos: ● MySQL .- problemas en consultas que necesitan índices inversos (soporte experimental) ● PostgreSQL.- Soporte limitado dependiendo de los proveedores de hosting. D7 para alto rendimiento
  • 26. Motores de base de datos Estándar: o Mysql o PostgreSQL Versiones modificadas: o MariaDB o Percona SQL Otras opciones: o MongoDB (NoSQL) D7 para alto rendimiento
  • 27. Nivel intermedio de optimización ● Optimizar rendimiento de módulos ● Se aplica para módulos propios o contribuidos ● Estadísticas de New Relic sirven de apoyo ● En módulos propios ver qué elementos pueden aprovechar el uso de caché. ● Revisar tipo de consultas que se realizan y cómo pueden mejorarse. ● Reducir en lo posible el acceso a BD. ● En el caso específico de MySQL se puede exponer datos a través de vistas (SQL) para forzar el uso de índices y reducir el tiempo de ejecución de las consultas. ● Ej: Consulta normal a través de vistas de los 5 últimos nodos ordenados por fecha de manera descendente de un total de 40,000 nodos: ~3 segs ● Utilizando los datos expuestos de los nodos a través de una vista SQL para la misma consulta: ~0.05 segs ● Sólo se expone los datos de los nodos, el resto se mantiene. D7 para alto rendimiento
  • 28. Nivel avanzado de optimización ● Integrar sistema de caché con reglas ● Controlar en qué momento se hace modificaciones sobre los “bins”. ● Actualizar el caché basado en acciones, no en tiempo. ● https://drupal.org/project/cache_actions ● Caché de vistas persistente en el tiempo: ● Views Content Cache ● https://drupal.org/project/views_content_cache ● Establecer caché para paneles en base a un hash ● Panels Hash Cache ● https://drupal.org/project/panels_hash_cache D7 para alto rendimiento
  • 29. Búsquedas con Apache Solr • Uno de las áreas más explotadas de un sitio web Búsqueda de contenidos. La búsqueda en base de datos es costosa. Consume un alto porcentaje de CPU y memoria. Bloquea la respuesta del webserver hasta obtener respuesta de la BD. El caché de usuarios anónimos es pobre o ineficiente. ● • • • • • Apache Solr es un motor de búsqueda configurable. ● ● ● ● ● Se integra fácilmente con Drupal Podemos personalizar los resultados. Eliminamos la carga de búsqueda a la BD. Se puede hacer uso de facets para filtrar los resultados de búsquedas Permite exponer contenidos “relacionados” ● https://drupal.org/project/apachesolr D7 para alto rendimiento
  • 30. Nivel avanzado de optimización ● Varnish 3.0 es la opción más utilizada (no es la única). ● Permite reducir el número de hits que llegan al servidor web. ● Maneja archivos de scripting para evaluar cómo se debe manejar las solicitudes. ● Permite hacer balanceo de carga entre múltiples servidores. ● Podemos configurar un “fallback” en caso de que el pool de servidores web no responda. ● Puede alterar las cabeceras de respuesta para eliminar o agregar elementos. ● Se puede integrar con reglas y el módulo expire: ● https://drupal.org/project/expire • Permite integrarse con ESI para generar contenido dinámico. D7 para alto rendimiento
  • 31. ¿Qué es ESI? ● Edge Side Includes (http://en.wikipedia.org/wiki/Edge_Side_Includes) ● Generación de contenido dinámico en base a páginas estáticas. ● Se integra con Varnish, Akamai, Squid y NginX Módulo de Drupal ● https://drupal.org/project/esi ● Permite integrar contenido dinámico para usuarios logueados disminuyendo el consumo de recursos. ● D7 para alto rendimiento
  • 32. Nivel avanzado de optimización ● Integración de CDN ● Se elimina completamente los hits al servidor para archivos estáticos. ● Redes CDN comerciales: ● Akamai ● Amazon ● Cloudflare ● Rackspace ● CDN Falso ● Enlace de comunicación separado para ese servidor ● Reduce el costo inicial de la infraestructura. ● Distribuye parte del contenido ● Soporta los métodos Pull y Request ● Se utiliza la aplicación FileConveyor para distribución de contenido y el módulo CDN para actualizar rutas: ● https://drupal.org/project/cdn D7 para alto rendimiento
  • 33. Cloudflare (Opcional) • Plataforma SAS para optimizar y mejorar rendimiento de un sitio web. D7 para alto rendimiento
  • 34. Cloudflare (Opcional) • CDN.- Content Delivery Network Distribuye copias del contenido estático dentro de su red (javascript, imágenes, css). ● Tiene servidores distribuidos dentro de diferentes zonas geográficas. ● Opción de optimizar el contenido ● Minimizar js, css. Firewall de aplicación (Servicio Pro) Proxy inverso Protección contra ataques. Se puede integrar por medio de un módulo de Drupal: ● https://drupal.org/project/cloudflare ● Utilizando reglas se puede forzar la limpieza del caché de archivos de cloudflare. ● • • • • D7 para alto rendimiento
  • 35. Mahout (Opcional) • Permite hacer el cálculo de recomendaciones en base a matrices. • El procesamiento se hace fuera del servidor web. • Actualiza tablas en Drupal para poder obtener información como: ● ● ● ¿Qué vieron otros usuarios? Nodos similares ● Por usuario ● Por rol ● Por historial de navegación ● Por banderas “flags” Venta cruzada D7 para alto rendimiento

×