En informática, una pila de soluciones (también llamada pila de software o pila tecnológica) es un conjunto de subsistemas o componentes de software necesarios para crear una plataforma completa, de modo que no se necesite software adicional para soportar las aplicaciones. Se dice que las aplicaciones se ejecutan "sobre" o "encima de" la plataforma resultante.

Por ejemplo, para desarrollar una aplicación web, el arquitecto define la pila como el sistema operativo objetivo, el servidor web, la base de datos y el lenguaje de programación. Otra versión de una pila de software es la combinación de sistema operativo, middleware, base de datos y aplicaciones. Normalmente, los componentes de una pila de software son desarrollados por diferentes desarrolladores de forma independiente entre sí.

Algunos componentes/subsistemas de un sistema global se eligen juntos con suficiente frecuencia que el conjunto particular se denomina con un nombre que representa el todo, en lugar de nombrar las partes. Habitualmente, el nombre es un acrónimo que representa los componentes individuales.

El término "pila de soluciones" ha incluido históricamente, en ocasiones, componentes de hardware como parte de un producto final, mezclando tanto el hardware como el software en capas de soporte.

Desarrollador full-stack Se espera que un desarrollador full-stack sea capaz de trabajar en todas las capas de la aplicación (front-end y back-end). Un desarrollador full-stack puede definirse como un desarrollador o ingeniero que trabaja tanto en el desarrollo front-end como back-end de un sitio web, una aplicación web o una aplicación de escritorio. Esto significa que pueden liderar la construcción de plataformas que involucran bases de datos, sitios web orientados al usuario y trabajar con los clientes durante la fase de planificación de los proyectos.

Pilas de JavaScript Una pila de JavaScript es un conjunto de tecnologías que utilizan JavaScript como lenguaje de programación principal en todo el proceso de desarrollo de software, típicamente combinando herramientas de front-end y back-end para construir aplicaciones web a gran escala. Con el auge de Node.js, JavaScript ahora puede ejecutarse en el lado del servidor, lo que permite a los desarrolladores utilizar un único lenguaje tanto para el desarrollo del cliente como del servidor. Esta unificación simplifica el flujo de trabajo de desarrollo, mejora la reutilización de código y aumenta la productividad al permitir una lógica y herramientas consistentes en toda la aplicación. Las pilas de JavaScript son a menudo preferidas por su velocidad, escalabilidad y acceso a un vasto ecosistema de bibliotecas y frameworks disponibles a través de plataformas como npm. La creciente popularidad de estas pilas refleja un cambio más amplio hacia el desarrollo full-stack con JavaScript en la ingeniería web moderna.Tilkov, Stefan, and Steve Vinoski. "Node.js: Using JavaScript to Build High-Performance Network Programs." IEEE Internet Computing, vol. 14, no. 6, 2010, pp. 80–83. DOI: 10.1109/MIC.2010.145Pimentel, Jon. Full-Stack React Projects. Packt Publishing, 2018.

Pila de sistemas operativos

LAMP Linux (sistema operativo) Apache (servidor web) MySQL o MariaDB (base de datos) Perl, PHP, y/o Python (lenguajes de programación)

LYME y LYCE Linux ((sistema operativo) Yaws (servidor web escrito en Erlang) Mnesia o CouchDB (base de datos escrito en Erlang) Erlang (lenguaje de programación funcional)

GLASS GemStone (database and application server) Linux (operating system) Apache (web server) Seaside (web framework) Smalltalk (lenguaje de programación)

LEAP Linux (operating system) Eucalyptus (alternativa libre para EC2) AppScale (Cloud computing-framework and free and open-source alternative to Google App Engine), Python (lenguaje de programación

OpenStack Linux – OpenStack nodos del controlador funcionar exclusivamente con Linux OpenStack

Ganeti Xen o KVM (hypervisor) Linux con LVM (gestión) Distributed Replicated Block Device (replicación de almacenamiento) Ganeti (virtual machine cluster management) Ganeti Web Manager (interfaz web)

MEAN MongoDB: Una base de datos NoSQL orientada a documentos. Almacena datos en formato JSON (BSON) y es muy flexible para manejar información no estructurada. Funciona como el almacén de datos para el proyecto MEAN. Express: Un framework minimalista de Node.js que se utiliza para construir aplicaciones web y APIs. Facilita el manejo de rutas, solicitudes y respuestas del servidor, lo que agiliza el desarrollo del backend. Angular: Un framework de JavaScript desarrollado por Google para construir aplicaciones web del lado del cliente (frontend). Proporciona herramientas y componentes para crear interfaces de usuario interactivas y dinámicas. Node.js: Un entorno de ejecución de JavaScript en el servidor. Permite desarrollar el backend del proyecto MEAN utilizando JavaScript. Utiliza el modelo de E/S no bloqueante, lo que lo hace ideal para aplicaciones en tiempo real y de alta concurrencia.

MERN (ver MEAN) MongoDB Express ReactJS: Comúnmente conocido simplemente como React, es una biblioteca de JavaScript que se utiliza para crear interfaces de usuario. Cada aplicación web React se compone de componentes reutilizables que forman parte de la interfaz de usuario. En la mayoría de los casos, la sintaxis utilizada para crear aplicaciones React se llama JSX (JavaScript XML), que es una extensión de sintaxis de JavaScript . Node.js

Pilas de frameworks específicos

Pila Java-Spring La pila Java-Spring es una pila tecnológica robusta y de nivel empresarial construida en torno al lenguaje de programación Java y al ecosistema Spring. Su núcleo es el Spring Framework, que proporciona un modelo integral de programación y configuración para aplicaciones Java modernas. Esta pila suele incluir Spring Boot, un proyecto que simplifica la configuración de aplicaciones Spring mediante la convención sobre configuración, servidores embebidos y opciones predeterminadas listas para producción. Componentes adicionales como Spring MVC, Spring Data y Spring Security se utilizan comúnmente para construir aplicaciones web, acceder a bases de datos e implementar autenticación y autorización. La pila Java-Spring se combina frecuentemente con bases de datos relacionales como MySQL o PostgreSQL y suele desplegarse utilizando contenedores de servlets como Apache Tomcat o plataformas como Spring Cloud para arquitecturas de microservicios. Conocida por su escalabilidad, modularidad y estabilidad a largo plazo, la pila Java-Spring es ampliamente adoptada en entornos empresariales, particularmente en finanzas, telecomunicaciones y plataformas SaaS a gran escala.Walls, Craig. Spring in Action. Manning Publications, 2022.

Pila Python-Django La pila Python-Django utiliza Python como lenguaje de programación principal y Django como framework web. Django está diseñado para fomentar un diseño limpio y pragmático, siguiendo el principio DRY (Don't Repeat Yourself, «no te repitas»). Incluye una amplia gama de características integradas, como autenticación de usuarios, una interfaz de administración, manejo de formularios y un potente ORM. Estas herramientas integradas hacen que Django sea especialmente eficaz para aplicaciones web con gran cantidad de contenido o uso intensivo de bases de datos. La pila suele combinar Django con PostgreSQL o SQLite como base de datos y se ejecuta en servidores web como Gunicorn detrás de nginx. Debido a la legibilidad de Python y la documentación exhaustiva de Django, esta pila se utiliza ampliamente en plataformas educativas, aplicaciones científicas y sistemas de gestión de contenidos.Holovaty, Adrian, and Jacob Kaplan-Moss. The Django Book. Version 2.0.

Pila Ruby on Rails La pila Ruby on Rails se construye en torno al lenguaje de programación Ruby y al framework web Rails. Enfatiza el principio de convención sobre configuración, lo que permite a los desarrolladores construir aplicaciones rápidamente reduciendo la necesidad de código repetitivo y configuración manual. Ruby on Rails incluye un conjunto integrado de herramientas, como un sistema de mapeo objeto-relacional (ORM), andamiaje para la generación de código y una estructura de directorios organizada, lo que lo hace muy adecuado para el desarrollo rápido de aplicaciones. Su enfoque en la simplicidad y la satisfacción del desarrollador lo ha convertido en una opción popular entre las startups y los equipos pequeños. La pila suele incluir una base de datos PostgreSQL o MySQL, un servidor web como Puma o nginx, y herramientas de despliegue como Capistrano o Heroku.

Otros stacks

Stacks a nivel de sistema operativo

BCHS OpenBSD (sistema operativo) C (lenguaje de programación) httpd (servidor web) SQLite (base de datos)

Ganeti Xen o KVM (hipervisor) Linux con LVM (gestión de dispositivos de almacenamiento masivo) Distributed Replicated Block Device (replicación de almacenamiento) Ganeti (herramienta de gestión de clústeres de máquinas virtuales) Ganeti Web Manager (interfaz web)

GLASS GemStone (base de datos y servidor de aplicaciones) Linux (sistema operativo) Apache (servidor web) Smalltalk (lenguaje de programación) Seaside (framework web)

LAMP Linux (sistema operativo) Apache (servidor web) MySQL o MariaDB (sistemas de gestión de bases de datos) Perl, PHP o Python (lenguajes de script)

LEAP Linux (sistema operativo) Eucalyptus (alternativa libre y de código abierto a Amazon Elastic Compute Cloud) AppScale (framework de computación en la nube y alternativa libre y de código abierto a Google App Engine) Python (lenguaje de programación)

LEMP/LNMP Linux (sistema operativo) nginx (servidor web) MySQL o MariaDB (sistemas de gestión de bases de datos) Perl, PHP o Python (lenguajes de script)

LLMP Linux (sistema operativo) lighttpd (servidor web) MySQL o MariaDB (sistemas de gestión de bases de datos) Perl, PHP o Python (lenguajes de script)

LYME y LYCE Linux (sistema operativo) Yaws (servidor web, escrito en Erlang) Mnesia o CouchDB (base de datos, escrita en Erlang) Erlang (lenguaje de programación funcional)

MAMP Mac OS X (sistema operativo) Apache (servidor web) MySQL o MariaDB (base de datos) PHP, Perl o Python (lenguajes de programación)

LAPP Linux (sistema operativo) Apache (servidor web) PostgreSQL (sistemas de gestión de bases de datos) Perl, PHP o Python (lenguajes de script)

WAMP Windows (sistema operativo) Apache (servidor web) MySQL o MariaDB (base de datos) PHP, Perl o Python (lenguajes de programación)

WIMP Windows (sistema operativo) Internet Information Services (servidor web) MySQL o MariaDB (base de datos) PHP, Perl o Python (lenguajes de programación)

WINS Windows Server (sistema operativo) Internet Information Services (servidor web) .NET (framework de software) SQL Server (base de datos)

WISA Windows Server (sistema operativo) Internet Information Services (servidor web) SQL Server (base de datos) ASP.NET (framework web)

Stacks web independientes del sistema operativo ELK Elasticsearch (motor de búsqueda) Logstash (herramienta de gestión de eventos y registros) Kibana (visualización de datos)

MARQS Apache Mesos (inicio/parada de nodos) Akka (implementación de actores) Riak (almacén de datos) Apache Kafka (mensajería) Apache Spark (big data y MapReduce)

NMP nginx (servidor web) MySQL o MariaDB (base de datos) PHP (lenguaje de programación)

OpenACS NaviServer (servidor web) OpenACS (framework de aplicación web) PostgreSQL u Oracle Database (base de datos) Tcl (lenguaje de script)

PLONK Prometheus (métricas y series temporales) Linkerd (malla de servicios) OpenFaaS (gestión y autoescalado de cómputo) NATS (bus/cola de mensajes asíncrona) Kubernetes (clustering declarativo, extensible, escalable y autorreparable)

SMACK Apache Spark (big data y MapReduce) Apache Mesos (inicio/parada de nodos)