A la hora de desarrollar un proyecto, las herramientas que usemos definirán en gran medida qué podremos hacer con éstas, qué deberemos implementar y a qué nos restringiremos, por lo que hoy vamos a ver un stack de aplicaciones relativamente nuevo que está ganando terreno cada día que pasa.

El acrónimo MEAN procede de las iniciales de los paquetes de software M ongoDB E xpress.js A ngularJS N ode.js , principal alternativa al tan famoso LAMP ( Linux Apache MySQL PHP) puesto que ha demostrado una eficiencia muy por encima de éste, a pesar de su no tan extendido uso.

La principal causa de esto es que quizás se requiera algo más de conocimiento técnico y unos pre-requisitos más complejos, no obstante, nos ofrece una ventaja muy relevante , y es que conociendo JavaScript, tendremos el control absoluto de todos sus componentes. Node.js nos permitirá usar JavaScript en backend , así como desarrollar con el mismo lenguaje la interfaz de usuario, ahorrándonos así tener que conocer más de un lenguaje de programación.

La base NoSQL de MongoDB nos permitirá cambiar o modificar de forma rápida y eficaz la capa de datos sin tener que preocuparnos que alguna llamada o referencia quede desatendida, muy útil si nuestro proyecto no tiene una dirección fija, si no que es más bien un entorno multi-purpose…

Por supuesto, son tecnologías con una comunidad de usuarios inmensa tras ellas, con lo que el soporte para cualquier inconveniente que podamos tener, estará al alcance de un par de búsquedas, así como recursos ya creados que podamos reutilizar desde los muchos foros o plataformas web existentes.

La pregunta ahora sería ¿debemos dejar de lado LAMP definitivamente? Por supuesto que no, como siempre encontraremos multitud de casos, configuraciones o instalaciones ya realizadas sobre las que no podremos aplicar una u otra instalación, por lo que dependerá de lo que nos encontremos en cada situación y sobre todo dependerá del uso que vayamos a dar a la instalación.

Sistema Operativo

Es el primer punto a valorar. El sistema operativo que usaremos para elegir un stack u otro será crucial, ya que mientras que LAMP funcionará de forma correcta únicamente en Linux (y sistemas basados en éste), MEAN no aplica estas restricciones y puede ser instalado en cualquier S.O. de hoy día.

Sí, existen adaptaciones LAMP para utilizar bajo Windows o MacOS, pero no dejan de ser eso, adaptaciones que más pronto que tarde nos empezarán a dar problemas que en una situación similar bajo Linux no encontraríamos. Obviamente desde ya recomiendo siempre Linux para cualquier servicio orientado a web que se os ocurra, por la estabilidad sobretodo, y las actualizaciones sin necesidad de reinicio, facilitando la alta disponibilidad de vuestras web-apps o sitios web.

Servidor Web

Cubriendo esta funcionalidad en MEAN tenemos a Node.js (en LAMP es Apache quien lo ofrece) mejorando el rendimiento de cualquier aplicación o servicio que tengamos corriendo , permitiendo la concurrencia en tiempo real entre las peticiones, gracias a características como su base entorno a eventos, entre otras.

Se trata de un componente muy ligero y efectivo, aunque todo hay que decirlo, su tecnología no está tan probada y madura como en el caso de Apache (que ya lleva más de una década entre nosotros y camino de las dos…), lo que viene a significar que si queremos aplicar una configuración “fuera del estándar” deberemos conocer bien el entorno donde lo ejecutaremos, de ahí que uno de los requisitos para MEAN sea un conocimiento medio de JavaScript, para poder solventar problemas como estos (teniendo que escribir nosotros mismos un plugin que necesitemos para cubrir alguna laguna que nos dejen los plugins ya creados, aunque como decía antes, existe una gran comunidad de apoyo para estos menesteres).

Un punto a destacar en este apartado es que la elección de Node.js restringirá todo al uso de JavaScript , que para entornos nuevos no debe ser un problema, pero si tenemos que adaptar un entorno ya creado, o desarrollar uno nuevo de gran complejidad, el tiempo de desarrollo se puede disparar por encima de lo previsto.

El código

MEAN hace uso de Express.js y Angular JS para gestionar la presentación web, el control de flujo, las tareas, etc… (en LAMP tendríamos a cargo de esto a PHP o Python) Aquí sí que vemos un importante beneficio con respecto a LAMP, ya que conociendo JavaScript podremos modificar todos los aspectos relacionados con nuestro proyecto ya sea frontend, backend, flujo de dato…

Almacenamiento de datos

Probablemente el punto más importante en la decisión entre LAMP y MEAN. Mientras que MEAN está diseñado para trabajar únicamente con bases de datos no relacionales , existen plugins que facilitan la integración de funcionalidades hacia bases de datos relacionales, por lo que integrarlo en otros entornos no será más complejo que eso.

Resumiendo

Trabajar con MEAN o pasarnos a este stack de aplicaciones nos traerá numerosos beneficios, de los que destacaremos el uso de un único lenguaje de programación como es JavaScript para absolutamente todo, flexibilidad en el despliegue de aplicaciones y mejorar la velocidad con la que se requieren los datos gracias a MongoDB.

La pega, y no es poco es que si queremos pasar a trabajar con MEAN y tenemos varios proyectos ya realizados, deberemos reescribir todo el código a JavaScript, por lo que la última palabra sobre decidir si usar MEAN o LAMP estará basada en cómo nos organicemos a la hora de trabajar y las prioridades del proyecto a desarrollar.

De todas formas, en el curso de Servidores Web de Openwebinars aprenderemos cómo trabajan ambos stacks de aplicaciones, para que ya sea en nuestros proyectos o en empresas a las que entremos a trabajar, estemos preparados para desempeñar dichas tareas de la forma más eficiente posible.