Un web stack, también de­no­mi­na­do web ap­pli­ca­tion stack o conjunto de so­lu­cio­nes (solution stack), define a un paquete de software necesario para el de­sa­rro­llo de páginas y apli­ca­cio­nes web. El término stack (“pila”) hace re­fe­re­n­cia al método de api­la­mie­n­to de los co­m­po­ne­n­tes de este conjunto de he­rra­mie­n­tas, uno encima del otro. La sencilla ar­qui­te­c­tu­ra de estos stacks para el de­sa­rro­llo web se compone de un sistema operativo, un servidor web, una base de datos y un in­té­r­pre­te de lenguaje de pro­gra­ma­ción. Este conjunto de elementos se encarga, con la ayuda del hardware del servidor co­rre­s­po­n­die­n­te, de que la in­fo­r­ma­ció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 Ja­va­S­cri­pt y pone la web a di­s­po­si­ción del usuario. Los co­m­po­ne­n­tes de software de un web stack pueden co­m­bi­nar­se de forma in­di­vi­dual, por lo que existe un gran número de versiones, cada una para di­fe­re­n­tes fines. La co­m­bi­na­ción más conocida, sin embargo, es la pila open source LAMP, resultado de la unión de Linux, Apache, MySQL y PHP.

Co­m­po­ne­n­tes de un web stack

El stack tra­di­cio­nal usado como in­frae­s­tru­c­tu­ra para páginas y apli­ca­cio­nes web se compone, como mínimo, de los cuatro co­m­po­ne­n­tes de software me­n­cio­na­dos an­te­rio­r­me­n­te: sistema operativo, servidor web, base de datos y un in­té­r­pre­te de órdenes o de scripts. En ocasiones, este paquete pri­mo­r­dial se puede completar con fra­me­wo­r­ks, lenguajes de pro­gra­ma­ción adi­cio­na­les, se­r­vi­do­res proxy o diversos programas de análisis. A co­n­ti­nua­ción aclaramos los co­m­po­ne­n­tes básicos de un stack para el de­sa­rro­llo web.

Sistema operativo

El sistema operativo es la interfaz central entre el hardware fu­n­da­me­n­tal del servidor (pro­ce­sa­dor, unidad de memoria, espacio web) y los otros co­m­po­ne­n­tes de software. Dicho de otra forma, el sistema operativo recurre a los recursos de hardware para ga­ra­n­ti­zar la fu­n­cio­na­li­dad de las apli­ca­cio­nes, 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 do­cu­me­n­tos al cliente que los solicita. La solicitud del cliente es co­mu­ni­ca­da al servidor web mediante el protocolo de tra­n­s­mi­sión HTTP. Si estos do­cu­me­n­tos so­li­ci­ta­dos son co­n­te­ni­dos estáticos como archivos HTML o imágenes, el servidor web procesa esta petición di­re­c­ta­me­n­te en­tre­gá­n­do­los al cliente, pero el contenido dinámico, por el contrario, solo lo puede tra­n­s­mi­tir con ayuda de bases de datos y módulos de pro­gra­ma­ción. Las so­lu­cio­nes de servidor web más uti­li­za­das incluyen a Apache, Microsoft IIS y nginx.

Base de datos

En los sistemas de bases de datos, también de­no­mi­na­dos se­n­ci­lla­me­n­te bases de datos, se almacenan, de forma eficiente y a largo término, los datos ne­ce­sa­rios para que el servidor web, en el momento requerido, pueda recurrir a ellos. Para ello, el servidor emite pe­ti­cio­nes con ayuda de las ex­te­n­sio­nes del servidor, que la base de datos procesa y devuelve a las ex­te­n­sio­nes 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á es­tre­cha­me­n­te ligada al software del servidor web y al lenguaje de pro­gra­ma­ción utilizado. Los más usados son, entre otros, Oracle, MySQL y MongoDB.

In­té­r­pre­te de órdenes (In­te­r­pre­ter)

Sin el lenguaje de pro­gra­ma­ción, el software del servidor web no es capaz de generar páginas dinámicas ni apli­ca­cio­nes web. Los in­té­r­pre­tes de lenguaje actúan, por un lado, en la parte del cliente (en el navegador que realiza la petición) y, por otro, la pro­gra­ma­ción en la parte del servidor hace posible los cálculos ne­ce­sa­rios para re­pre­se­n­tar las páginas. El in­té­r­pre­te de lenguaje de pro­gra­ma­ción típico de un web stack es PHP, aunque también se puede recurrir a algunas al­te­r­na­ti­vas menos ex­te­n­di­das como ASP.NET, Java, Ruby, Perl o Python.

Las so­lu­cio­nes de web stack más populares

En el campo del de­sa­rro­llo web, hay una serie de stacks de software que han de­mo­s­tra­do su eficacia. Las cre­cie­n­tes exi­ge­n­cias en cuanto a usa­bi­li­dad, es­ta­bi­li­dad, am­plia­bi­li­dad y es­ca­la­bi­li­dad de unas apli­ca­cio­nes 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 fu­n­da­me­n­to. Hoy Ja­va­S­cri­pt juega un im­po­r­ta­n­te papel también en el lado del servidor, de forma que los web ap­pli­ca­tion stacks basados en la pla­ta­fo­r­ma de Ja­va­S­cri­pt Node.js prometen, por ejemplo, una pro­gra­ma­ción si­m­pli­fi­ca­da de proyectos web en pleno re­n­di­mie­n­to, habiendo ya dejado de ser una rareza. Pre­se­n­ta­mos aquí tres stacks para el de­sa­rro­llo web es­pe­cia­l­me­n­te populares y sus posibles ámbitos de apli­ca­ción:

LAMP, el clásico

Como ya se mencionó an­te­rio­r­me­n­te, LAMP es el web stack más conocido. Como una de las primeras, re­pre­se­n­tó durante mucho tiempo la mejor pila de de­sa­rro­llo de proyectos web. Todos sus co­m­po­ne­n­tes son open source con licencia libre y, de esta manera, no solo mo­di­fi­ca­bles, sino también gratuitos:

  • sistema operativo Linux,
  • servidor web Apache,
  • base de datos MySQL,
  • in­té­r­pre­te de lenguaje PHP.

Pese a su condición gratuita, LAMP supo ma­n­te­ne­r­se firme desde el principio frente a so­lu­cio­nes pro­pie­ta­rias equi­pa­ra­bles y se usó, por ejemplo, para el de­sa­rro­llo de MediaWiki, el software de Wikipedia.

El stack LAMP está es­pe­cia­l­me­n­te indicado para la rea­li­za­ción de páginas web dinámicas con varias su­b­pá­gi­nas. Los usuarios se be­ne­fi­cian, sobre todo, de la gran comunidad que lo apoya, de unos tu­to­ria­les muy buenos y de la po­si­bi­li­dad de poder im­ple­me­n­tar PHP o he­rra­mie­n­tas tan potentes como ph­p­M­yA­d­min.

Debido a los avances técnicos co­n­s­ta­n­tes y al de­sa­rro­llo de nuevo software libre, hoy existen algunas va­ria­cio­nes de LAMP, en las cuales se han su­s­ti­tui­do pa­r­cia­l­me­n­te los co­m­po­ne­n­tes tra­di­cio­na­les. 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 in­té­r­pre­te de lenguaje, además de un servidor FTP in­de­pe­n­die­n­te de pla­ta­fo­r­ma)
  • LAPP (Base de datos Po­s­t­gre­S­QL para proyectos em­pre­sa­ria­les de gran en­ve­r­ga­du­ra)

Desde la pu­bli­ca­ción de MariaDB, derivada de MySQL, también le co­rre­s­po­n­de la M de LAMP a este sistema de base de datos con una capacidad superior de re­n­di­mie­n­to. En este artículo obtienes una in­fo­r­ma­ción más completa sobre LAMP y su in­s­ta­la­ción.

WISA, el stack de Microsoft

A di­fe­re­n­cia de LAMP, cuyos co­m­po­ne­n­tes aislados no fueron en principio de­sa­rro­lla­dos para colaborar entre sí, Microsoft programó los co­m­po­ne­n­tes de WISA pre­ci­sa­me­n­te con este fin, lo que garantiza el fu­n­cio­na­mie­n­to óptimo de este web stack. El software incluido es, ló­gi­ca­me­n­te, pro­pie­ta­rio, por lo que su uso requiere la previa ad­qui­si­ción de las co­rre­s­po­n­die­n­tes licencias de uso, pero, por otro lado, los usuarios pueden contar con el amplio soporte prestado por el gigante in­fo­r­má­ti­co.

WISA se compone de estos elementos:

  • sistema operativo Windows Server,
  • Internet In­fo­r­ma­tion Services (IIS) como software del servidor web,
  • sistema de gestión de bases de datos re­la­cio­nal SQL Server,
  • bi­blio­te­ca de lenguajes de pro­gra­ma­ción ASP.NET

Gracias a la bi­blio­te­ca ASP.NET se pueden programar proyectos web con Visual C# o Visual Basic.NET, que el sistema puede ejecutar con ayuda de un co­m­pi­la­dor. De esta forma, WISA no presupone el uso de un in­té­r­pre­te de lenguaje, co­n­si­guie­n­do así una mejor pe­r­fo­r­ma­n­ce 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 re­ma­r­ca­bles de visitas.

MEAN, la solución para apli­ca­cio­nes web

La pila MEAN sigue un concepto co­m­ple­ta­me­n­te diferente al del web stack clásico. Debido a su co­m­po­si­ción, la necesidad habitual de di­fe­re­n­tes lenguajes de pro­gra­ma­ción para el servidor (PHP, etc.) y para el cliente (Ja­va­S­cri­pt) des­apa­re­ce, ya que todos los elementos de este paquete de software soportan Ja­va­S­cri­pt. El sistema operativo y el software del servidor web pasan a una posición se­cu­n­da­ria. Los co­m­po­ne­n­tes de un stack MEAN son:

  • la base de datos NoSQL MongoDB
  • el framework para apli­ca­cio­nes web desde el servidor Express.js,
  • el framework para el frontend de parte del cliente AngularJS,
  • y la pla­ta­fo­r­ma Node.js,  basada en el entorno de ejecución de Ja­va­S­cri­pt.

Este stack tiene la ventaja de facilitar y acelerar el proceso de de­sa­rro­llo y de permitir una buena es­ca­la­bi­li­dad del proyecto web. La tra­n­s­mi­sión de los datos en formato JSON beneficia, en especial, a la im­ple­me­n­ta­ción de apli­ca­cio­nes web de una sola página en el lado del cliente y de apli­ca­cio­nes móviles. También en este caso existen una serie de va­ria­cio­nes como MEEN, con Ember.js como framework para el frontend, o MERN, con REact.js. Una ejecución co­m­ple­ta­me­n­te compilada y ampliada de un stack de MEAN la re­pre­se­n­ta la pla­ta­fo­r­ma de Ja­va­S­cri­pt Meteor.

Cómo encontrar el web stack más adecuado

Decidir cuál es el paquete de software que ofrece el mejor entorno de de­sa­rro­llo y ejecución para un proyecto web depende de di­fe­re­n­tes factores. Mientras que los stacks basados en JavaSript están indicados sobre todo para la rea­li­za­ción de apli­ca­cio­nes de una sola página, las pilas clásicas basadas en PHP, en Python o en Perl re­pre­se­n­tan ventajas claras en la creación de proyectos con varias páginas. Los lenguajes de pro­gra­ma­ció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 co­n­se­gui­rán los mejores re­su­l­ta­dos.

Na­tu­ra­l­me­n­te, es co­n­ve­nie­n­te tener en cuenta también las di­fe­re­n­cias técnicas de re­n­di­mie­n­to y es­ta­bi­li­dad del entorno de software. Aquí se podría co­n­si­de­rar también el uso de co­m­po­ne­n­tes al­te­r­na­ti­vos como el software para el servidor web nginx para proyectos web con un gran número de visitas.

En de­fi­ni­ti­va, la gran cantidad de web stacks di­s­po­ni­ble deja claro que no existe la solución universal válida para todos los casos.

Ir al menú principal