Sin ningún Framework
En ciertos casos, la mejor opción es no utilizar ningún framework. Por ejemplo, cuando necesité configurar colas como Amazon SQS y apuntarlas a funciones Lambda, no había necesidad de enrutamiento ni de exponer rutas HTTP específicas. En esta situación:
Simplicidad: Evité la complejidad innecesaria al no incorporar un framework que no aportaría beneficios significativos para este caso de uso.
Estructura personalizada: Implementé una arquitectura basada en Domain-Driven Design (DDD), creando las carpetas y controladores necesarios para escuchar y procesar los mensajes de SQS.
Eficiencia: Al eliminar capas adicionales, mejoré el rendimiento y reduje el tiempo de desarrollo.
Conclusión: Si tu microservicio no requiere exponer APIs ni manejar enrutamiento, y su funcionalidad es específica y limitada, prescindir de un framework puede ser la decisión más acertada.
Node.js + Express
Cuando el proyecto requiere exponer APIs para ser consumidas por otros servicios o aplicaciones, pero no necesita la complejidad de un framework completo, Express se presenta como una opción ligera y eficiente. En mi experiencia:
Flexibilidad: Express proporciona funcionalidades básicas de enrutamiento y middleware sin imponer una estructura rígida.
Rapidez de desarrollo: Su simplicidad permite un desarrollo más ágil, ideal para microservicios que deben implementarse rápidamente.
Comunidad y soporte: Cuenta con una amplia comunidad y numerosos paquetes que facilitan la incorporación de funcionalidades adicionales si es necesario.
En un proyecto donde necesitaba implementar algunas funcionalidades complejas y exponer un API, pero sin requerir módulos avanzados, seguridad robusta o inyecciones de dependencias complejas, Express fue la elección adecuada.
Conclusión: Si necesitas exponer tu microservicio a través de un API y requieres enrutamiento básico sin la sobrecarga de un framework más pesado, Node.js con Express es una opción sólida.
NestJS
Para proyectos más complejos y escalables, donde la seguridad, la modularidad y la mantenibilidad son esenciales, NestJS se convierte en la herramienta ideal. Al desarrollar un microservicio de pagos:
Arquitectura sólida: NestJS utiliza una arquitectura modular inspirada en Angular, lo que facilita la organización y escalabilidad del proyecto.
Inyección de dependencias: Simplifica la gestión de dependencias, lo que es crucial en aplicaciones grandes.
Funcionalidades avanzadas: Ofrece soporte integrado para seguridad, validaciones, interceptores y más.
TypeScript: Al estar construido sobre TypeScript, proporciona tipado estático, lo que mejora la calidad del código y facilita el mantenimiento.
Conclusión: Si anticipas que tu proyecto crecerá en complejidad y necesitas funcionalidades avanzadas desde el inicio, NestJS es la opción más adecuada.
Preguntas para Ayudarte a Decidir
Para determinar qué opción es la mejor para tu caso, considera las siguientes preguntas:
¿Necesitas exponer un API o manejar enrutamiento?
Sí: Considera usar Express o NestJS.
No: Podrías prescindir de un framework.
¿El proyecto requiere funcionalidades avanzadas como seguridad, inyección de dependencias o modularidad?
Sí: NestJS es la opción más apropiada.
No: Express podría ser suficiente.
¿Qué tan complejo esperas que sea el proyecto en el futuro?
Alto crecimiento: Opta por NestJS para facilitar la escalabilidad.
Proyecto puntual: Express o sin framework podrían ser más eficientes.
Plantillas para Comenzar
Para agilizar el inicio de tus proyectos, aquí tienes algunas plantillas:
Sin Framework:
Estructura basada en DDD.
Controladores personalizados para manejar lógica específica.
Scripts de inicio y configuración minimalistas.
Aqui lo importante es el handler.ts y la estructura de tu carpeta.
export const handler: SQSHandler = async (event: SQSEvent) => {
for (const record of event.Records) {
const OWNER = record.messageAttributes?.Owner?.stringValue;
}
};
Node.js + Express: https://github.com/jbmarflo/nodejs-express-serverless-template
Configuración básica con rutas y middlewares esenciales.
Estructura organizada para facilitar el mantenimiento.
Ejemplos de manejo de errores y respuestas estándar.
NestJS:
Utiliza el Nest CLI para generar la base del proyecto.
Módulos predefinidos para autenticación, servicios y controladores.
Configuraciones para entornos de desarrollo y producción.
Reflexiones Finales
Elegir el framework adecuado es una decisión estratégica que impacta en la eficiencia, escalabilidad y mantenibilidad de tus microservicios. Es fundamental evaluar las necesidades específicas de cada proyecto y considerar factores como la complejidad, el tiempo de desarrollo y las habilidades del equipo.
Recuerda que no existe una solución única para todos los casos. La clave está en seleccionar la herramienta que mejor se adapte a los requerimientos actuales y futuros de tu aplicación.
Comentarios
Publicar un comentario