Meteor es una “plataforma” javascript de código abierto que permite desarrollar aplicaciones para web, móvil y desktop. Es una plataforma fullstack lo que significa que tanto el desarrollo del backend y el frontend lo hacemos en un solo lugar, inicialmente pensado para desarrollar aplicaciones en tiempo real pero que también logra adaptarse a casos en donde esto no sea necesario.

En pocas palabras Meteor es una plataforma que permite desarrollar aplicaciones web y móviles, con datos en tiempo real y que es excelente para desarrollar MVP’s en el menor tiempo posible.

Vamos a analizar el stack básico de Meteor. En la capa de datos tenemos la base de datos no relacional MongoDB. Esta es la base de datos que soporta Meteor y utiliza el log de operaciones para hacer que nuestros datos estén actualizados en tiempo real para todos los usuarios y en todos sus dispositivos conectados. También es posible usar otras bases de datos o API’s por medio de GraphQL y Apollo.

En el backend (servidor) usamos javascript por medio de node js. Meteor nos facilita gran parte del trabajo con un API muy sencillo de utilizar sobre un protocolo llamado DDP (Distributed Data Protocol). Con este creamos métodos y publicaciones los cuales actúan como endpoints rest. Un método puede realizar cualquier acción que le asignemos, ya sea actualizar un documento en la base de datos, leer y devolver una lista de documentos o eliminarlos, entre otras. Las publicaciones son las que nos permiten publicar un grupo de documentos de manera reactiva que se actualiza en tiempo real con cualquier cambio.

Para el frontend podemos integrar React, Angular, Vue o Blaze. Yo utilizo React ya que tiene un gran ecosistema de paquetes open source que facilita el desarrollo de la interfaz gráfica para los usuarios y esta soportada por Facebook.

https://www.toptal.com/meteor/building-real-time-web-applications-with-meteor

En el frontend hacemos uso de los métodos y publicaciones que creamos en el backend, llamamos a los métodos para crear, actualizar o eliminar documentos y nos subscribimos a las publicaciones para leer los documentos de manera reactiva en nuestra aplicación.

¿Por qué deberias escoger Meteor para tu próximo proyecto?

Con Meteor puedes lograr hacer aplicaciones que sean reactivas y se actualicen en tiempo real con mucha facilidad y velocidad algo en lo que la plataforma es excelente.

Es muy facil y rapido aprender con Meteor.

Podemos hacer MVP’s o prototipos de un proyecto bastante rápido ya que podemos iniciar un proyecto en segundos sin tener que preocuparnos por la configuración inicial.

El protocolo DDP y la implementación de Meteor a mi parecer hace mucho más sencillo el desarrollo de las operaciones como el CRUD.

Con MongoDB no necesitamos crear un schema para nuestras colecciones (tablas) lo cual la hace mucho mas flexible, ideal cuando estamos iniciando un proyecto y no conocemos los requerimientos pero deseamos empezar ya e iterar más adelante. Sin embargo puedes utilizar schemas en la aplicación (recomendado).

Podemos desarrollar todas nuestra aplicación de inicio a fin solo con javascript.

Puedes desarrollar PWA’s muy facilmente.

Durante el desarrollo los cambios que haces se “compilan” automáticamente y la pagina se recarga mostrando los cambios.

La comunidad es excelente, si tienes dudas o necesitas ayuda puedes ir al foro y muy seguramente alguien te asistirá.

Puedes integrar fácilmente tus aplicaciones de React Native.

Integración con cordova/phonegap para desarrollar aplicaciones hibridas.

Una experiencia personal

Antes de Meteor venia desarrollando con PHP (hace 4 años), específicamente Laravel. Con Meteor logre desarrollar un prototipo de una aplicación web y móvil en 1 semana (sin haberlo probado antes y sin conocer node), lo cual con Laravel me habría tomado alrededor de 3 o 4 semanas de desarrollo.

Ahora veamos razones por las cuales no escoger Meteor

En este momento no soporta de manera “nativa” otras bases de datos. Debes usar apollo y graphQL para eso.

Aun no soporta HMR (Hot Module Reload). Si vienes de usar webpack lo vas a extrañar un poco. (La comunidad esta hablando de esto y posiblemente el próximo año tengamos HMR)

Así como puede fácilmente crear aplicaciones excelentes y que logran escalar en cantidad de usuarios, también permite algunas malas practicas que pueden causar grandes cuellos de botella para la escalabilidad. Esto depende de ti y cómo estructures la aplicación (Más adelante hare unos posts para hablar sobre escalabilidad a fondo).

Necesitas cambiar la forma de pensar las estructuras de la base de datos ya que MongoDB no es relacional. Pero existen paquetes que hacen que puedas tener relaciones entre tus colecciones (y es mas rápido que MySQL, según las pruebas).

La documentación esta en ingles.

Prueba Meteor

En el siguiente enlace puedes encontrar guías y tutoriales para empezar con Meteor, lamentablemente están en ingles pero si hay suficiente interés, es posible que luego los traduzca y los publique.

Guias y tutoriales

Haz el salto y prueba Meteor, es posible que te guste y decidas utilizarlo en tus aplicaciones de aquí en adelante. Escribe en los comentarios si lo pruebas y te gusta y si no te gusta también, me gustaría conocer tu opinion.