Desarrollo web con stacks de software

Un web stack, también denominado web application stack o conjunto de soluciones (solution stack), define a un paquete de software necesario para el desarrollo de páginas y aplicaciones web. El término stack (“pila”) hace referencia al método de apilamiento de los componentes de este conjunto de herramientas, uno encima del otro. La sencilla arquitectura de estos stacks para el desarrollo web se compone de un sistema operativo, un servidor web, una base de datos y un intérprete de lenguaje de programación. Este conjunto de elementos se encarga, con la ayuda del hardware del servidor correspondiente, de que la información necesaria sobre el proyecto web en cuestión llegue al cliente que la solicita, por defecto el navegador de Internet, el cual procesa los textos en HTML, CSS y JavaScript y pone la web a disposición del usuario.

Los componentes de software de un web stack pueden combinarse de forma individual, por lo que existe un gran número de versiones, cada una para diferentes fines. La combinación más conocida, sin embargo, es la pila open source LAMP, resultado de la unión de Linux, Apache, MySQL y PHP.

Componentes de un web stack

El stack tradicional usado como infraestructura para páginas y aplicaciones web se compone, como mínimo, de los cuatro componentes de software mencionados anteriormente: sistema operativo, servidor web, base de datos y un intérprete de órdenes o de scripts. En ocasiones, este paquete primordial se puede completar con frameworks, lenguajes de programación adicionales, servidores proxy o diversos programas de análisis. A continuación aclaramos los componentes básicos de un stack para el desarrollo web.

Sistema operativo

El sistema operativo es la interfaz central entre el hardware fundamental del servidor (procesador, unidad de memoria, espacio web) y los otros componentes de software. Dicho de otra forma, el sistema operativo recurre a los recursos de hardware para garantizar la funcionalidad de las aplicaciones, en especial del servidor web. Algunos de los sistemas sobre los que se puede levantar un web stack son Linux, Windows, Unix y Mac OS.

Servidor web

El servidor web es un software instalado en el sistema operativo que entrega documentos al cliente que los solicita. La solicitud del cliente es comunicada al servidor web mediante el protocolo de transmisión HTTP. Si estos documentos solicitados son contenidos estáticos como archivos HTML o imágenes, el servidor web procesa esta petición directamente entregándolos al cliente, pero el contenido dinámico, por el contrario, solo lo puede transmitir con ayuda de bases de datos y módulos de programación. Las soluciones de servidor web más utilizadas incluyen a Apache, Microsoft IIS y nginx.

Base de datos

En los sistemas de bases de datos, también denominados sencillamente bases de datos, se almacenan, de forma eficiente y a largo término, los datos necesarios para que el servidor web, en el momento requerido, pueda recurrir a ellos. Para ello, el servidor emite peticiones con ayuda de las extensiones del servidor, que la base de datos procesa y devuelve a las extensiones del servidor. Estas generan, a partir del resultado de la petición, un formato adecuado de emisión como HTML y lo envían al servidor web. La elección de la base de datos está estrechamente ligada al software del servidor web y al lenguaje de programación utilizado. Los más usados son, entre otros, Oracle, MySQL y MongoDB.

Intérprete de órdenes (Interpreter)

Sin el lenguaje de programación, el software del servidor web no es capaz de generar páginas dinámicas ni aplicaciones web. Los intérpretes de lenguaje actúan, por un lado, en la parte del cliente (en el navegador que realiza la petición) y, por otro, la programación en la parte del servidor hace posible los cálculos necesarios para representar las páginas. El intérprete de lenguaje de programación típico de un web stack es PHP, aunque también se puede recurrir a algunas alternativas menos extendidas como ASP.NET, Java, Ruby, Perl o Python.

Las soluciones de web stack más populares

En el campo del desarrollo web, hay una serie de stacks de software que han demostrado su eficacia. Las crecientes exigencias en cuanto a usabilidad, estabilidad, ampliabilidad y escalabilidad de unas aplicaciones web cada vez más complejas han llevado en los últimos años a que el stack clásico se usara cada vez menos como fundamento. Hoy JavaScript juega un importante papel también en el lado del servidor, de forma que los web application stacks basados en la plataforma de JavaScript Node.js prometen, por ejemplo, una programación simplificada de proyectos web en pleno rendimiento, habiendo ya dejado de ser una rareza. Presentamos aquí tres stacks para el desarrollo web especialmente populares y sus posibles ámbitos de aplicación:

LAMP, el clásico

Como ya se mencionó anteriormente, LAMP es el web stack más conocido. Como una de las primeras, representó durante mucho tiempo la mejor pila de desarrollo de proyectos web. Todos sus componentes son open source con licencia libre y, de esta manera, no solo modificables, sino también gratuitos:

  • sistema operativo Linux,
  • servidor web Apache,
  • base de datos MySQL,
  • intérprete de lenguaje PHP.

Pese a su condición gratuita, LAMP supo mantenerse firme desde el principio frente a soluciones propietarias equiparables y se usó, por ejemplo, para el desarrollo de MediaWiki, el software de Wikipedia.

El stack LAMP está especialmente indicado para la realización de páginas web dinámicas con varias subpáginas. Los usuarios se benefician, sobre todo, de la gran comunidad que lo apoya, de unos tutoriales muy buenos y de la posibilidad de poder implementar PHP o herramientas tan potentes como phpMyAdmin.

Debido a los avances técnicos constantes y al desarrollo de nuevo software libre, hoy existen algunas variaciones de LAMP, en las cuales se han sustituido parcialmente los componentes tradicionales. Algunos de las más conocidas son:

  • WAMP (Sistema operativo Windows)
  • MAMP (Sistema operativo Mac OS X)
  • XAMPP (Sistema operativo a escoger, Perl y PHP como intérprete de lenguaje, además de un servidor FTP independiente de plataforma)
  • LAPP (Base de datos PostgreSQL para proyectos empresariales de gran envergadura)

Desde la publicación de MariaDB, derivada de MySQL, también le corresponde la M de LAMP a este sistema de base de datos con una capacidad superior de rendimiento. En este artículo obtienes una información más completa sobre LAMP y su instalación.

WISA, el stack de Microsoft

A diferencia de LAMP, cuyos componentes aislados no fueron en principio desarrollados para colaborar entre sí, Microsoft programó los componentes de WISA precisamente con este fin, lo que garantiza el funcionamiento óptimo de este web stack. El software incluido es, lógicamente, propietario, por lo que su uso requiere la previa adquisición de las correspondientes licencias de uso, pero, por otro lado, los usuarios pueden contar con el amplio soporte prestado por el gigante informático.

WISA se compone de estos elementos:

  • sistema operativo Windows Server,
  • Internet Information Services (IIS) como software del servidor web,
  • sistema de gestión de bases de datos relacional SQL Server,
  • biblioteca de lenguajes de programación ASP.NET

Gracias a la biblioteca ASP.NET se pueden programar proyectos web con Visual C# o Visual Basic.NET, que el sistema puede ejecutar con ayuda de un compilador. De esta forma, WISA no presupone el uso de un intérprete de lenguaje, consiguiendo así una mejor performance frente a los stacks de su clase. Esto convierte al stack de Microsoft en una buena solución para proyectos web complejos y exigentes con cifras remarcables de visitas.

MEAN, la solución para aplicaciones web

La pila MEAN sigue un concepto completamente diferente al del web stack clásico. Debido a su composición, la necesidad habitual de diferentes lenguajes de programación para el servidor (PHP, etc.) y para el cliente (JavaScript) desaparece, ya que todos los elementos de este paquete de software soportan JavaScript. El sistema operativo y el software del servidor web pasan a una posición secundaria.

Los componentes de un stack MEAN son:

  • la base de datos NoSQL MongoDB
  • el framework para aplicaciones web desde el servidor Express.js,
  • el framework para el frontend de parte del cliente AngularJS,
  • y la plataforma Node.js,  basada en el entorno de ejecución de JavaScript.

Este stack tiene la ventaja de facilitar y acelerar el proceso de desarrollo y de permitir una buena escalabilidad del proyecto web. La transmisión de los datos en formato JSON beneficia, en especial, a la implementación de aplicaciones web de una sola página en el lado del cliente y de aplicaciones móviles.

También en este caso existen una serie de variaciones como MEEN, con Ember.js como framework para el frontend, o MERN, con REact.js.

Una ejecución completamente compilada y ampliada de un stack de MEAN la representa la plataforma de JavaScript Meteor.

Cómo encontrar el web stack más adecuado

Decidir cuál es el paquete de software que ofrece el mejor entorno de desarrollo y ejecución para un proyecto web depende de diferentes factores. Mientras que los stacks basados en JavaSript están indicados sobre todo para la realización de aplicaciones de una sola página, las pilas clásicas basadas en PHP, en Python o en Perl representan ventajas claras en la creación de proyectos con varias páginas. Los lenguajes de programación también juegan, en general, un gran papel en la decisión. Una regla esencial a seguir es escoger un stack que esté basado en un lenguaje que se domine, pues solo así se conseguirán los mejores resultados.

Naturalmente, es conveniente tener en cuenta también las diferencias técnicas de rendimiento y estabilidad del entorno de software. Aquí se podría considerar también el uso de componentes alternativos como el software para el servidor web nginx para proyectos web con un gran número de visitas.

En definitiva, la gran cantidad de web stacks disponible deja claro que no existe la solución universal válida para todos los casos.