SlideShare una empresa de Scribd logo
1 de 35
Drupal 7 para sitios de
alto rendimiento y
disponibilidad
IIG. Iván G. Campaña N.
¿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
¿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
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
¿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
¿Qué se necesita para optimizarlo?
● Conocimientos :)
● Recursos :(

D7 para alto rendimiento
¿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
¿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
Estructura genérica con Drupal 7

D7 para alto rendimiento
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
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
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
¿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
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
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
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
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
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
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
Nivel básico de optimización

D7 para alto rendimiento
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
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
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
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
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
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
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
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
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
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
¿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
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
Cloudflare (Opcional)
• Plataforma SAS para optimizar y mejorar rendimiento de un sitio web.

D7 para alto rendimiento
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
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

Más contenido relacionado

La actualidad más candente

Curso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de WordpressCurso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de Wordpress
Irontec
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
Guillermo Nassi
 

La actualidad más candente (20)

Html5
Html5Html5
Html5
 
SQL Server 2014 infraestructura hibrida y nube
SQL Server 2014 infraestructura hibrida y nubeSQL Server 2014 infraestructura hibrida y nube
SQL Server 2014 infraestructura hibrida y nube
 
Couchdb
CouchdbCouchdb
Couchdb
 
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos RamajoCharla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
Charla betabeers optimización y rendimiento en Wordpress - Marcos Ramajo
 
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
Arquitectura de las nuevas aplicaciones web: Como lograr escalabilidad, alta ...
 
Curso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de WordpressCurso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de Wordpress
 
Base de datos
Base de datosBase de datos
Base de datos
 
AlwaysON Lecciones Aprendidas
AlwaysON Lecciones AprendidasAlwaysON Lecciones Aprendidas
AlwaysON Lecciones Aprendidas
 
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerRecuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
 
Couch db
Couch dbCouch db
Couch db
 
Diferencia entre SGBD
Diferencia entre SGBDDiferencia entre SGBD
Diferencia entre SGBD
 
Analizando la performance del subsistema de IO
Analizando la performance del subsistema de IOAnalizando la performance del subsistema de IO
Analizando la performance del subsistema de IO
 
Windows Server 2012 web and application platform
Windows Server 2012 web and application platformWindows Server 2012 web and application platform
Windows Server 2012 web and application platform
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
 
Windows server 2012 para it
Windows server 2012 para itWindows server 2012 para it
Windows server 2012 para it
 
Alta Disponibilidad y Recuperación ante de desastres en SQL Server 2012, 2014...
Alta Disponibilidad y Recuperación ante de desastres en SQL Server 2012, 2014...Alta Disponibilidad y Recuperación ante de desastres en SQL Server 2012, 2014...
Alta Disponibilidad y Recuperación ante de desastres en SQL Server 2012, 2014...
 
Alta disponibilidad SQL Server 2012
Alta disponibilidad SQL Server 2012Alta disponibilidad SQL Server 2012
Alta disponibilidad SQL Server 2012
 
Evaluacion y mantenimiento de un sitio
Evaluacion y mantenimiento de un sitioEvaluacion y mantenimiento de un sitio
Evaluacion y mantenimiento de un sitio
 
Branchcache presentacion (español)
Branchcache presentacion (español)Branchcache presentacion (español)
Branchcache presentacion (español)
 
Wordpress
WordpressWordpress
Wordpress
 

Similar a Drupal 7 para sitios de alto rendimiento y alta disponibilidad

cuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxcuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docx
Igor Rodriguez
 
Trabajo avila
Trabajo avilaTrabajo avila
Trabajo avila
adezhiz
 

Similar a Drupal 7 para sitios de alto rendimiento y alta disponibilidad (20)

Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupal
 
Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021
 
Drupal Sitebuilding 101
Drupal Sitebuilding 101Drupal Sitebuilding 101
Drupal Sitebuilding 101
 
cuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxcuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docx
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
 
Headless Wordpress with React & GraphQL
Headless Wordpress with React & GraphQLHeadless Wordpress with React & GraphQL
Headless Wordpress with React & GraphQL
 
WPO para proyectos WooComerce
WPO para proyectos WooComerceWPO para proyectos WooComerce
WPO para proyectos WooComerce
 
Alternativas de hosting para WordPress
Alternativas de hosting para WordPressAlternativas de hosting para WordPress
Alternativas de hosting para WordPress
 
Curso CDA: Seguridade e rendemento en Drupal
Curso CDA: Seguridade e rendemento en DrupalCurso CDA: Seguridade e rendemento en Drupal
Curso CDA: Seguridade e rendemento en Drupal
 
avanttic - webinar: Oracle Database 12c (24-03-2015)
avanttic - webinar: Oracle Database 12c (24-03-2015)avanttic - webinar: Oracle Database 12c (24-03-2015)
avanttic - webinar: Oracle Database 12c (24-03-2015)
 
Manual del usuario web
Manual del usuario webManual del usuario web
Manual del usuario web
 
202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
Resumen Técnico Red Hat Summit 2015
Resumen Técnico Red Hat Summit 2015Resumen Técnico Red Hat Summit 2015
Resumen Técnico Red Hat Summit 2015
 
Drupal 8 WorkShop
Drupal 8 WorkShopDrupal 8 WorkShop
Drupal 8 WorkShop
 
Inciación a Drupal 8
Inciación a Drupal 8Inciación a Drupal 8
Inciación a Drupal 8
 
Trabajo avila
Trabajo avilaTrabajo avila
Trabajo avila
 
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
Sistemas de publicación de noticias y contenidos multimedia Web para Medios d...
 
10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datos
 
SQLite
SQLiteSQLite
SQLite
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a Drupal
 

Más de Iván Campaña Naranjo

Más de Iván Campaña Naranjo (7)

Integrando AngularJS y drupal
Integrando AngularJS y drupalIntegrando AngularJS y drupal
Integrando AngularJS y drupal
 
De idea a mvp, drupal para emprendedores
De idea a mvp, drupal para emprendedoresDe idea a mvp, drupal para emprendedores
De idea a mvp, drupal para emprendedores
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móviles
 
Mejorando la búsqueda Web con Apache Solr
Mejorando la búsqueda Web con Apache SolrMejorando la búsqueda Web con Apache Solr
Mejorando la búsqueda Web con Apache Solr
 
Creación de proyectos web con Drupal
Creación de proyectos web con DrupalCreación de proyectos web con Drupal
Creación de proyectos web con Drupal
 
Emprendimiento de TICs, sueño o pesadilla
Emprendimiento de TICs, sueño o pesadillaEmprendimiento de TICs, sueño o pesadilla
Emprendimiento de TICs, sueño o pesadilla
 
Software libre como fuente de poder en las empresas
Software libre como fuente de poder en las empresasSoftware libre como fuente de poder en las empresas
Software libre como fuente de poder en las empresas
 

Último

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
 
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
FagnerLisboa3
 
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
241521559
 

Último (10)

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...
 
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
 
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
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
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
 
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
 
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
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
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)
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 

Drupal 7 para sitios de alto rendimiento y alta disponibilidad

  • 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