¿Qué es la pila MEAN? Aplicaciones web JavaScript

La pila MEAN, definida

La pila MEAN es una pila de software, es decir, un conjunto de capas de tecnología que componen una aplicación moderna, que está construida completamente en JavaScript. MEAN representa la llegada de JavaScript como un lenguaje de "desarrollo de pila completa", que ejecuta todo en una aplicación desde el front-end hasta el back-end. Cada una de las iniciales en MEAN representa un componente en la pila:

  • MongoDB: un servidor de base de datos que se consulta usando JSON (JavaScript Object Notation) y que almacena estructuras de datos en un formato JSON binario
  • Express: un marco de JavaScript del lado del servidor
  • Angular: un marco de JavaScript del lado del cliente
  • Node.js: un tiempo de ejecución de JavaScript

Una gran parte del atractivo de MEAN es la consistencia que proviene del hecho de que es JavaScript de principio a fin. La vida es más sencilla para los desarrolladores porque todos los componentes de la aplicación, desde los objetos de la base de datos hasta el código del lado del cliente, están escritos en el mismo idioma. 

Esta consistencia contrasta con la mezcolanza de LAMP, el elemento básico de los desarrolladores de aplicaciones web desde hace mucho tiempo. Como MEAN, LAMP es un acrónimo de los componentes utilizados en la pila: Linux, el servidor HTTP Apache, MySQL y PHP, Perl o Python. Cada pieza de la pila tiene poco en común con cualquier otra pieza. 

Esto no quiere decir que la pila LAMP sea inferior. Todavía se usa ampliamente y cada elemento de la pila aún se beneficia de una comunidad de desarrollo activa. Pero la consistencia conceptual que MEAN proporciona es una bendición. Si usa el mismo lenguaje y muchos de los mismos conceptos de lenguaje en todos los niveles de la pila, será más fácil para un desarrollador dominar toda la pila a la vez.

La mayoría de las pilas MEAN cuentan con los cuatro componentes: la base de datos, el front-end, el back-end y el motor de ejecución. Esto no significa que la pila consista solo en estos elementos, sino que forman el núcleo.

MongoDB

Al igual que otros sistemas de bases de datos NoSQL, MongoDB utiliza un diseño sin esquema. Los datos se almacenan y recuperan como documentos con formato JSON, que pueden tener cualquier número de campos anidados. Esta flexibilidad hace que MongoDB sea adecuado para el desarrollo rápido de aplicaciones cuando se trata de requisitos que cambian rápidamente.

El uso de MongoDB viene con una serie de advertencias. Por un lado, MongoDB tiene la reputación de ser inseguro por defecto. Si lo implementa en un entorno de producción, debe tomar medidas para protegerlo. Y para los desarrolladores que provienen de bases de datos relacionales, o incluso de otros sistemas NoSQL, necesitarán dedicar un tiempo a conocer MongoDB y cómo funciona. Martin Heller se sumergió profundamente en la revisión de MongoDB 4 en, donde habla sobre los aspectos internos, las consultas y los inconvenientes de MongoDB.

Al igual que con cualquier otra solución de base de datos, necesitará middleware de algún tipo para comunicarse entre MongoDB y los componentes de JavaScript. Una opción común para la pila MEAN es Mongoose. Mongoose no solo proporciona conectividad, sino también modelado de objetos, validación del lado de la aplicación y una serie de otras funciones que no querrá tener que reinventar para cada nuevo proyecto.

Express.js 

Express es posiblemente el marco de aplicación web más utilizado para Node.js. Express proporciona solo un pequeño conjunto de características esenciales —esencialmente es un servidor web programable mínimo— pero se puede ampliar mediante complementos. Este diseño sencillo ayuda a mantener el Express ligero y de alto rendimiento.

Nada dice que una aplicación MEAN deba entregarse directamente a los usuarios a través de Express, aunque ese es ciertamente un escenario común. Una arquitectura alternativa es implementar otro servidor web, como Nginx o Apache, frente a Express como proxy inverso. Esto permite que funciones como el equilibrio de carga se descarguen en un recurso separado.

Como Express es deliberadamente mínimo, no tiene mucha sobrecarga conceptual asociada. Los tutoriales de Expressjs.com pueden llevarlo desde una descripción general rápida de los conceptos básicos hasta la conexión de bases de datos y más.

Angular

Angular (anteriormente AngularJS) se usa para construir el front-end para una aplicación MEAN. Angular utiliza el JavaScript del navegador para formatear los datos proporcionados por el servidor en plantillas HTML, de modo que gran parte del trabajo de renderizado de una página web se puede descargar al cliente. Muchas aplicaciones web de una sola página se crean con Angular en la interfaz.

Una advertencia importante: los desarrolladores trabajan con Angular escribiendo en TypeScript, un lenguaje mecanografiado similar a JavaScript que se compila en JavaScript. Para algunas personas, esto es una violación de uno de los conceptos cardinales de la pila MEAN: que JavaScript se usa en todas partes y exclusivamente. Sin embargo, TypeScript es un primo cercano de JavaScript, por lo que la transición entre los dos no es tan discordante como podría ser con otros lenguajes.

Para una inmersión profunda en Angular, Martin Heller lo tiene cubierto. En su tutorial de Angular, lo guiará a través de la creación de una aplicación web Angular moderna.

Node.js 

Por último, pero no menos importante, está Node.js, el tiempo de ejecución de JavaScript que impulsa el lado del servidor de la aplicación web MEAN. Node se basa en el motor JavaScript V8 de Google, el mismo motor JavaScript que se ejecuta en el navegador web Chrome. Node es multiplataforma, se ejecuta tanto en servidores como en clientes, y tiene ciertas ventajas de rendimiento sobre los servidores web tradicionales como Apache. 

Node.js adopta un enfoque diferente para atender solicitudes web que los servidores web tradicionales. En el enfoque tradicional, el servidor genera un nuevo hilo de ejecución o incluso bifurca un nuevo proceso para manejar la solicitud. La generación de subprocesos es más eficiente que los procesos de bifurcación, pero ambos implican una gran cantidad de gastos generales. Una gran cantidad de subprocesos puede hacer que un sistema muy cargado gaste ciclos preciosos en la programación de subprocesos y el cambio de contexto, lo que agrega latencia e impone límites a la escalabilidad y el rendimiento. 

Node.js es mucho más eficiente. El nodo ejecuta un bucle de eventos de un solo subproceso registrado con el sistema para manejar las conexiones, y cada nueva conexión hace que se active una función de devolución de llamada de JavaScript. La función de devolución de llamada puede manejar solicitudes con llamadas de E / S sin bloqueo y, si es necesario, puede generar subprocesos de un grupo para ejecutar operaciones de bloqueo o de uso intensivo de la CPU y equilibrar la carga entre los núcleos de la CPU.

Node.js requiere menos memoria para manejar más conexiones que la mayoría de las arquitecturas competitivas que escalan con subprocesos, incluidos el servidor HTTP Apache, ASP.NET, Ruby on Rails y servidores de aplicaciones Java. Por lo tanto, Node se ha convertido en una opción extremadamente popular para crear servidores web, API REST y aplicaciones en tiempo real como aplicaciones de chat y juegos. Si hay un componente que define la pila MEAN, es Node.js. 

Para obtener una introducción a Node.js, consulte el explicador de Martin Heller. Para comenzar a desarrollar con Node, consulte su tutorial de Node.js. 

Ventajas y beneficios de la pila MEAN 

Estos cuatro componentes que trabajan en conjunto no son la solución a todos los problemas, pero definitivamente han encontrado un nicho en el desarrollo contemporáneo. IBM analiza las áreas en las que la pila MEAN encaja perfectamente. Debido a que es escalable y puede manejar una gran cantidad de usuarios simultáneamente, la pila MEAN es una opción particularmente buena para las aplicaciones nativas de la nube. La interfaz angular también es una excelente opción para aplicaciones de una sola página. Ejemplos incluyen:

  • Aplicaciones de seguimiento de gastos
  • Sitios de agregación de noticias
  • Aplicaciones de mapeo y ubicación

MEAN vs MERN

El acrónimo "MERN" se usa a veces para describir pilas MEAN que usan React.js en lugar de Angular. React es un marco, no una biblioteca completa como Angular, y hay ventajas y desventajas para cambiar React a una pila basada en JavaScript. En resumen, React es más fácil de aprender, y la mayoría de los desarrolladores pueden escribir y probar el código React más rápido de lo que pueden escribir y probar una aplicación Angular completa. React también produce mejores interfaces móviles. Por otro lado, el código angular es más estable, más limpio y con mejor rendimiento. En general, Angular es la opción para el desarrollo de clase empresarial.

Pero el hecho mismo de que esta opción esté disponible demuestra que MEAN no es una camisa de fuerza limitada para los desarrolladores. No solo puede intercambiar diferentes componentes por una de las cuatro capas canónicas; también puede agregar componentes complementarios. Por ejemplo, los sistemas de almacenamiento en caché como Redis o Memcached podrían usarse dentro de Express para acelerar las respuestas a las solicitudes.

Desarrolladores de pila MEAN

Tener las habilidades para ser un desarrollador de pila MEAN básicamente implica convertirse en un desarrollador de pila completa, con un enfoque en el conjunto particular de herramientas de JavaScript que hemos discutido aquí. Sin embargo, la popularidad de la pila MEAN significa que muchos anuncios de trabajo estarán dirigidos a desarrolladores de pila completa con habilidades específicas de MEAN. Guru99 analiza los requisitos previos para conseguir uno de estos trabajos. Más allá de la familiaridad con los componentes básicos de la pila MEAN, un desarrollador de pila MEAN debe tener una buena comprensión de:

  • Procesos de front-end y back-end
  • HTML y CSS
  • Plantillas de programación y pautas de diseño de arquitectura
  • Desarrollo web, integración continua y tecnologías en la nube
  • Arquitectura de base de datos
  • El ciclo de vida del desarrollo de software (SDLC) y cómo es desarrollar en un entorno ágil

¿Cuál es el salario de un desarrollador de pila MEAN? Si bien siempre hay un rango basado en la experiencia y el empleador, definitivamente es un campo lucrativo. En diciembre de 2019, Neuvoo.com dice que el salario medio que puede esperar un desarrollador de pilas MEAN es de alrededor de 125.000 dólares al año. Indeed.com agrupa a los desarrolladores de MEAN stack con los desarrolladores full-stack de manera más general, y fija el salario anual típico en alrededor de $ 112,000.

Tutoriales de MEAN stack

¿Se siente cómodo con los conceptos básicos técnicos y está listo para sumergirse y aprender la pila MEAN? Hay una serie de tutoriales gratuitos que pueden ayudarlo a comenzar. El sitio de Angular Templates tiene un tutorial particularmente completo que lo guía a través del proceso de construcción de un sitio web simple usando la pila MEAN. TutorialsPoint tiene una buena guía para crear una aplicación web de una sola página con la pila MEAN. ¡Disfruta ensuciándote las manos y buena suerte!