Si comienzas a programar aplicaciones web estás bastante perdido preguntándote por dónde empezar. Una buena opción es plantearlo de la siguiente manera. Tienes que elegir entre LAMP o MEAN. ¿Pero cuál es mejor? ¿En qué se diferencian?
Cualquiera de las dos pilas o stack es una buena apuesta de futuro porque las empresas no pueden cubrir los puestos LAMP y MEAN que ofrecen, y no parece que las cosas vayan a cambiar mucho a medio y largo plazo.
Pero no nos engañemos. Ninguna de las dos pilas es perfecta y al final se termina eligiendo una u otra en función del proyecto que se tiene que implementar.
Y por supuesto que no son las únicas opciones, también están las arquitecturas Java y Ruby, pero el post de hoy lo hemos planteado como una especie de batalla entre LAMP y MEAN para dar un poco de emoción :)
Ok, veamos algunas diferencias entre LAMP y MEAN, así como sus ventajas, inconvenientes y proyecciones de futuro. Are you ready?
LAMP es el nombre de estas tecnologías:
El nombre original LAMP responde a Linux, Apache, MySQL y PHP/Python/Perl, pero también puede incluir otras tecnologías.
La idea importante de LAMP es que funciona sobre sistemas operativos Linux y te permite construir apps web que son gestionadas por un servidor web (Apache, Nginx u otros) vía HTTP o HTTPS, en el puerto 80 o 443. Este es el paradigma que determina la arquitectura de la aplicación.
Las apps web LAMP se programan con lenguajes de script de servidor como PHP o Python y utilizan bases de datos MySQL, aunque también puedes utilizar otro motor como PostgreSQL o incluso otras tecnologías de bases de datos como SQLite.
MEAN quiere decir esto:
¡En MEAN todo es JavaScript!, este es el lenguaje de programación que se utiliza tanto en la parte frontend como en la parte backend.
MongoDB es una base de datos NoSQL orientada a documentos. Express es el framework web más utilizado en Node.js. AngularJS es el framework que utilizan los frontenders para construir apps SPA (single-page application) robustas y mantenibles. Finalmente, Node.js es la tecnología de servidor orientada a eventos, no bloqueante, que viene a sustituir al tradicional servidor web de la pila LAMP.
Una cosa muy importante a tener en cuenta es que Node.js es diferente a los servidores web tradicionales tales como Apache o Nginx, y el JavaScript empleado en el lado del servidor se escribe bajo un paradigma orientado a eventos. Nada que ver con las aplicaciones Python, PHP, Ruby, etc.
En mi humilde opinión, si quieres aprender programación web puedes elegir tanto LAMP como MEAN. Los dos caminos son buenos, aunque lo ideal es combinar cosas de los dos mundos porque al final suele emplearse una u otra pila dependiendo de la aplicación a implementar.
Si te encanta el mundo de las startups punteras tipo Facebook e Instagram, por poner algunos ejemplos, si lo tuyo es Silicon Valley, es más recomendable que empieces por MEAN. No te lo pienses dos veces, elige MEAN si te gusta experimentar, programar aplicaciones concurrentes, romper cosas cada dos por tres, y estar a la vanguardia de las últimas tendencias.
Por el contrario, si prefieres trabajar en entornos medianos y grandes (no tanto como Facebook) dando soporte a pymes que trabajan con WordPress u otros CMS basados en PHP, o simplemente quieres desarrollar aplicaciones web sin complicaciones que simplemente funcionen, ya sea por tu cuenta o para otros, LAMP es el camino a seguir.
LAMP es recomendable para los que no queréis arriesgar demasiado dinero invirtiendo en recursos, formación, personal, etc., en un entorno tan extremadamente cambiante como el de JavaScript en 2016.
Ya para terminar voy a posicionarme respecto a este tema como se viene haciendo en varios debates de la Web. ¿MEAN es el futuro? Creo que LAMP seguirá muy viva en los próximos años, simplemente MEAN ha entrado en juego a solucionar el problema de la programación concurrente y a mejorar la programación de apps SPA.
Pero las dos tenderán a converger. No habrá apps MEAN puras ni apps LAMP puras porque hay cosas de MEAN que puedes aplicar en LAMP y viceversa. Nada te priva de coger la A (AngularJS) de MEAN y ponerla en LAMP. Por otro lado, hay cosas que no se pueden hacer con LAMP y otras cosas que no permite MEAN.
Así pues, el desarrollador full stack del futuro tendrá que conocer LAMP y MEAN.
Otra previsión para el medio plazo: a medida que MEAN madure algunas tecnologías se terminarán deprecando, imponiéndose unas sobre otras, o cambiarán radicalmente como ya pasó hace poco con la actualización de AngularJS 1 a AngularJS 2.