Posts Tagged ‘php’

nginx + fast-cgi: Nueva arquitectura para Voota

31 diciembre 2009

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

Arquitectura nginx con fast-cgi

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.

Anuncios

Herramientas libres para Voota

14 septiembre 2009

Decir que utilizamos únicamente software libre es muy bonito, pero a la hora de ponerte a buscar las herramientas que se van a utilizar, hay que poner mucha atención. Hagamos un pequeño repaso del software más importante que hemos escogido y por qué para construir Voota.

php (vs java)

La única duda que se nos planteó era utilizar java o php. Ambos tienen sin duda puntos a favor y en contra. A favor de Java podemos decir que es, sin duda, uno de los lenguajes más robustos y que mejor implementa aspectos como la herencia y el polimorfismo. Es el lenguaje que yo elegiría para aplicaciones grandes y con cálculos complejos (bancos, compañías de seguros o aplicaciones internas en empresas grandes).

Sin embargo, cuando los requerimientos de agilidad y rendimiento son críticos, php manda. Así, ulizando php ganamos fundamentalmente en dos cosas: Velocidad y velocidad, o lo que es lo mismo, en tiempo de desarrollo y en rendimiento en ejecución. He aquí algunos mitos que hay que ir olvidando:

  • php no es un lenguaje serio: Es posible que esto fuera cierto en las primeras versiones, pero desde php5 ya es un lenguaje orientado a objetos real  y con todas las características necesarias para para hacer software de calidad.
  • php solo lo usan sitios pequeños. No se por qué razón me ha tocado oir tantas veces frases como esta, pero el hecho de que Wikipedia, Facebook o Yahoo estén en php habla por sí solo.

Si la única pega de php es, pues, que no es tan robusto y, quizá, “estricto” como Java, la solución pasa por utilizar un framework que ponga “orden” y estructura en la aplicación.

Herramientas para Voota

Herramientas para Voota

symfony

Hay varios frameworks haciendo la competencia a symfony: CakePHP, Zend y muchos otros. En realidad cualquiera de ellos ofrece servicios similares (diseño 3 capas, scaffolding, etc.). La elección de symfony es, sobre todo, por ser el más utilizado dentro de la comunidad opensource, por la calidad del código y por el soporte (usuarios, plugins y código ya desarrollado). Desde nuestro punto de vista la eterna cuestión de si se debe usar un framework o, por el contrario, cada desarrollo debería llevar su propio código (al menos de base) está obsoleta: No utilizarlo, es colgarse un yunque del cuello.

mysql (vs postgres)

No hay una razón real para no utilizar una base de datos tipo postgres. Realmente las dos son fiables. Utilizamos mysql principalmente porque es la utilizada “por defecto” en entornos LAMP. En cualquier caso utilizaremos siempre un sql lo más estándar posible para mantener la máxima independencia de la base de datos. Cosa que por otro lado también nos proporciona Symfony.

svn (vs git)

A pesar de que últimamente parece estar muy de moda utilizar git como repositorio de software, hemos optado por subversión. Las razones son simples: Es el más maduro, el que mejor se integra con otras herramientas que utilizamos (Eclipse, Trac, etc.) y porque nos da todas las funcionalidades que necesitamos.

Trac

Pocas alternativas tenemos a Trac. Permite publicar todo lo necesario a través del wiki, tiene un sistema de tickets muy potente, se integra a la perfección con el repositorio de software, y sobre todo es muy muy muy simple de manejar. ¿Qué no? Te invito a que lo compruebes 😉

http://trac.voota.org/

Pootle

Una agradable sorpresa. No tenía el gusto de conocer esta pequeña herramienta. De hecho todavía la tenemos como “experimento”, pero cada día nos gusta más. Ofrece una interfaz web para traducir las etiquetas de cualquier aplicación y admite tanto los clásicos “.po” de toda vida, como los modernos “.xliff” utilizados por Voota.es.

Otras herramientas que estamos utilizando para un futuro no muy lejano son OTRS (ticketing system) y OpenERP como aplicación de gestión. A lo mejor próximamente son motivo de un nuevo post …