Tras tener varios problemas de servidores en Voota, nos tocó investigar como mejorar los sistemas. Como siempre, lo primero es preguntar a los expertos. Nuestros amigos de amplicate.com y masquemedicos.com lo tenían claro. Junto con muchas otras recomendaciones, nos convencieron para cambiar el servidor web a una arquitectura más moderna.
Adiós Apache y gracias por todo
Apache ha sido durante mucho tiempo (y sigue siendo) el servidor web más utilizado y popular para servir tanto páginas estáticas (html) como aplicaciones desarrolladas en php, perl o python. Pero como pasa con todo, poco a poco ha ido quedándose atrás en favor de otras arquitecturas más modernas.
Nginx
Nginx es un servidor mucho más ligero que apache y que, por lo tanto, realiza menos funciones. La idea de es utilizar Nginx en la primera línea de fuego para servir todo el contenido estático del sitio web: Pagínas html, imágenes, javascript, hojas de estilo, etc. El resto de las tareas se delegarán a un servidor específico.
fast-cgi
Es la evolución de CGI (Common Gateway Interface), aquél protocolo concebido allá por 1993 para responder a la demanda de páginas dinámicas. Hoy fast-cgi permite conectar (por tcp) un servidor web estilo Nginx con otro servidor independiente que ejecuta las aplicaciones. En el caso de Voota, estás aplicaciones están desarrolladas en php y el servidor de aplicación es php-fpm.
En resumen, nada radicalmente nuevo. Mismos programas, mismo lenguaje, pero con una arquitectura mucho más moderna, flexible, rápida y escalable.
4 enero 2010 a las 2:38 am
http://www.megaburst.com/wordpress-benchmarks-running-on-nginx-php-apache-and-fastcgi/
algunos datos sobre nginx + php-fpm
4 enero 2010 a las 11:39 am
Enhorabuena Sergio!
Creo que hay una tendencia en crear arquitecturas mas flexibles y mas simples. Algunos casos:
– Memcached
– Nginx o Lighttpd
– Sistemas de paso de mensajes mucho mas simples (Adiós ActiveMQ y similares)
– Algunas de las bases de datos No-SQL que gritan simplicidad 🙂
etc
4 enero 2010 a las 12:21 pm
Hola Sergio.
Me alegro de que os pasárais al nuevo lado oscuro 🙂
Por aclarar algo por si queda algún despistado y se confunde con lo de “servidor de aplicaciones”, php-fpm (http://php-fpm.org) es “simplemente” un gestor de procesos php-cgi.
Es un parche al código C original de php (aunque se puede compilar como proceso standalone a parte), que permite entre otras cosas, graceful restart de los procesos php-cgi, tener contextos diferentes para cada vhost, con uid diferentes, un log de scripts lentos muy útil y en general una gestión de los procesos mucho más estable que utilizar php-cgi a pelo.
Las ventajas frente a otras arquitecturas alternativas fastcgi, se explican en la página.
Saludos.
4 enero 2010 a las 1:26 pm
Hola Sergio,
gracias por compartir esta información. Comentas que a raiz de algunos problemas con los servidores os planteasteis el cambio. Podrías comentar qué tipo de problemas desencadenaron el cambio?
Gracias. Un saludo
4 enero 2010 a las 5:45 pm
Con los problemas me refería a que hemos tenido varias caídas. Casi con seguridad podemos descartar que era problema de Apache, pero a raíz de estas caídas es cuando decidimos dedicar más esfuerzo a sistemas. Fruto de ese esfuerzo hemos cambiado casi todo. La versión de Ubuntu server (de Hardy a Karmic), el servidor web (Apache a Nginx), hemos reforzado las instancias de ec2 de Amazon (de small a medium), etc. etc. En cualquier caso, parece que no sólo hemos dejado de tener caídas, si no que nos hemos modernizado un poco 🙂
7 enero 2010 a las 1:16 pm
A propósito:
nginx: +82% rocks =>
http://amplicate.com/rocks/nginx
🙂
12 enero 2010 a las 12:56 pm
[…] de Defcon-5 (tranquilidad) a Defcon-2 (máxima alerta) y luego otra vez a Defcon-5. Después de los problemas varios que hemos tenido, cada vez que hay un cambio nos preparamos para cualquier […]
18 abril 2013 a las 12:43 pm
[…] de Defcon-5 (tranquilidad) a Defcon-2 (máxima alerta) y luego otra vez a Defcon-5. Después de los problemas varios que hemos tenido, cada vez que hay un cambio nos preparamos para cualquier […]