
Despliegue de producción. La etapa final de cada proyecto. Cuando todo el trabajo duro que ha realizado a lo largo del tiempo se pone en marcha para ser utilizado por el público objetivo Seguro que es un momento emocionante, ¡especialmente cuando eres parte del proceso de configuración de la infraestructura!
Había sido parte de procesos de implementación en el pasado. Pero esta vez, me puse a trabajar en un sistema enorme en términos de volumen, tecnología e infraestructura, ¡lo cual fue una aventura tentadora! Pude experimentar todo el proceso de primera mano y aprendí bastantes cosas.
Aquí va la lista de mis aprendizajes que voy a recordar y aplicar a lo largo de mi carrera como desarrollador.
Los dos pilares: preparación y planificación⏱️
No hace falta decir que la preparación y la planificación deben ser parte de todo lo que haga. Pero cuando se trata de implementación de producción, se convierte en una regla. Es un hecho, un imperativo . Necesita conocer las complejidades de las tecnologías en las que ha trabajado en su proyecto. También debería pensar en qué tipo de infraestructura sería la más adecuada para ejecutar diferentes tipos de sistemas.
El sistema que construimos constaba de nodejs, MongoDB, InfluxDB, redis, asp.net y rabbitMQ como parte de su pila de tecnología. Uno de los requisitos principales del sistema era manejar un gran volumen de datos a diario. Por lo tanto, el sistema tenía que ponerse en marcha con un mapa de implementación adecuado en mente, que indicaba claramente cosas como:
- ¿Qué tipo de sistema / tecnología se suponía que debía ejecutarse en qué tipo de máquina?
- Las especificaciones relativas a la agrupación de sistemas
- Cómo todas estas cajas independientes iban a hablar entre sí de una manera infalible.
¿Lo local, piensa en global?
Bueno, este fue un consejo de mi arquitecto / amigo de proyectos. Yo y algunos otros desarrolladores jóvenes del equipo no teníamos ninguna experiencia previa en la implementación de un sistema tan grande en nuestras carreras. Por eso, nuestro arquitecto nos recomendó crear un sistema de producción idéntico a nivel local.
Esto significaba que necesitábamos tener una experiencia práctica en todo. Desde un entorno NodeJS agrupado (que comprende 8 clústeres) y una configuración de MongoDB de múltiples servidores con una instalación de Redis lista para producción, hasta tener configuraciones pm2 y variables de entorno listas para producción .
Y documentamos todo. Trabajamos todas las configuraciones de producción en nuestras máquinas locales y luego las probamos de principio a fin. Posteriormente anotamos todos los pasos necesarios para llegar a la infraestructura de trabajo final localmente en nuestras máquinas. Esta práctica nos ayudó a encontrar los problemas típicos encontrados durante la configuración de la infraestructura y cómo podríamos superarlos.
Anotamos todos los consejos, lecciones y ajustes particulares que realizamos para que el sistema funcione. Aumentó mi confianza en varios puntos y me sentí listo para expandir el entorno de producción para nuestra aplicación.
Documento, documento y documento !!?
Sé que sé. Esto se ha dicho mucho. Como desarrollador, lo has escuchado lo suficiente. Probablemente no desee otra conferencia sobre la importancia de la documentación. Así que lo haré breve resaltando los puntos:
- La configuración de producción debe documentarse en bits. Debe ser prolijo, infalible y comprensible.
- Debe tener todas las configuraciones del sistema, direcciones IP, especificaciones del sistema e instrucciones de instalación. Y también cualquier cosa que consideres lo suficientemente importante como para que tú o un compañero desarrollador sepan.
- Debe actualizarse a medida que se realice algún cambio en el entorno de producción del sistema.
Al ser humano, es bastante común pensar en la línea de “¡Oh! ¡Voy a recordar eso! " Créame, no lo hará . ¡Nadie en la historia del desarrollo de software lo ha hecho nunca (de acuerdo, eso podría llevarlo demasiado lejos, pero entiendes la idea!).
Documente todos los datos y metadatos relacionados con su configuración de producción. Te lo agradecerás más tarde. ¡Los futuros desarrolladores que estarán a bordo de su proyecto se lo agradecerán posteriormente!
¿Monitoreo y registro?
Durante el período de desarrollo de un proyecto, es comparativamente más fácil lidiar con errores y fallas. ¿Algo no funciona? Déjame iniciar sesión rápidamente en el cuadro de desarrollo y marcar. Bueno, eso no sucede en producción. No puede iniciar sesión en un sistema en vivo y comenzar a hurgar solo porque no comprende de dónde proviene el problema.
Configurar un sistema de registro y monitoreo adecuado es esencial para mantener un control de salud en el sistema en vivo. Los sistemas de monitoreo inteligentes están disponibles en el mercado hoy en día y pueden brindarle informes de frecuencia de errores, correos electrónicos de verificación de estado programados y más.
Nos decidimos por Sumologic y DataDog como nuestros compañeros en el desarrollo del sistema de registro y monitoreo para nuestra aplicación. Fue casi fascinante cuando pude resolver el problema en el sistema sin hacer un "ssh".
Una configuración decorosa de un sistema de monitoreo contribuye en gran medida a sentar una base sólida para su producto en vivo . ¡No te lo pierdas!
¡Uf! Bueno, eso es una envoltura! ¿Cuáles son tus hallazgos? ¡No dude en compartir sus aprendizajes, consejos o sugerencias en los comentarios a continuación!