GESTIÓN DE LA CONFIGURACIÓN: todo lo que necesita saber

gestión de configuración

La gestión de la configuración es un componente crucial de una plataforma tecnológica exitosa. Los excelentes ejecutivos de tecnología querrán saber qué se necesita para implementarlo. El objetivo principal de la gestión de la configuración es categorizar estos datos para que pueda actuar con rapidez y confianza. La gestión de la configuración se utiliza en muchas metodologías de gestión de proyectos, pero es especialmente importante en el contexto del desarrollo de software.
Repasemos la definición de gestión de la configuración en relación con el desarrollo y las herramientas que utiliza para implementarlo en su organización.

¿Qué es la gestión de la configuración?

La gestión de la configuración es el proceso de categorizar y rastrear los sistemas físicos y virtuales de una organización, así como los metadatos asociados con estos activos. La gestión de configuración se utiliza en el desarrollo de software para optimizar las configuraciones de aplicaciones para entornos de producción con el fin de reducir el tiempo de inactividad.

La captura de los metadatos para los múltiples sistemas de una organización es un enfoque importante de la gestión de la configuración. De esta manera, el equipo de desarrollo sabe no solo qué servidores son accesibles, sino también qué sistemas operativos ejecuta cada servidor para cumplir con los requisitos operativos de su aplicación.

Secretos como contraseñas y claves de API, puntos finales para conexiones externas como API y especificaciones informáticas como las necesidades de RAM son otras instancias de metadatos de configuración.

También se ocupa del inventario de los sistemas y sus metadatos, así como del seguimiento de cualquier modificación realizada en estos activos. Si el modelo de teléfono inteligente cambia repentinamente en el caso hipotético, debe ser informado para que pueda ajustar su búsqueda del cargador adecuado. Para sus configuraciones de software, los equipos de desarrollo y operaciones requieren el mismo nivel de experiencia.

¿Por qué es importante la gestión de la configuración?

Para muchos equipos, la gestión de la configuración históricamente ha sido una responsabilidad secundaria. Los datos de configuración normalmente no se guardan en bases de datos centrales o sistemas de control de versiones. Cuando se trata de la parte de operaciones del ciclo DevOps, los datos de configuración son cruciales.
Es más fácil apreciar la importancia de la gestión de la configuración si primero considera lo que sucedería si no existiera.

El precio de una gestión de configuración inadecuada o inexistente

La falta de una base de conocimiento consolidada es una desventaja importante del ciclo de vida de desarrollo de software sin gestión de configuración. Los metadatos de los numerosos sistemas que componen el entorno de producción pueden distribuirse entre varios archivos y estaciones de trabajo, lo que hace que la información crucial, como las claves API y las contraseñas, se disperse. Encontrar estos datos ralentiza la canalización.

Otra desventaja de esta falta de visibilidad es que es difícil hacer coincidir el entorno de prueba de una aplicación con el entorno de producción donde residirá. Este desajuste pone en peligro la calidad de las pruebas de rendimiento, ya que la configuración operativa mientras el programa está activo puede diferir significativamente de la del entorno de demostración. Peor aún, una mala configuración en el software puede impedir que se implemente en producción.

Las configuraciones incorrectas perjudican el rendimiento y pueden conducir al incumplimiento. Por ejemplo, si los datos se almacenan fuera de la base de datos permitida, la aplicación puede infringir los requisitos de privacidad de datos. Alternativamente, si un equipo de desarrollo carece de un inventario preciso, es posible que no pueda rastrear adecuadamente qué software se ha actualizado en qué sistemas, violando los estándares de seguridad cibernética y creando vulnerabilidades.

Excelentes beneficios de gestión de la configuración

Los equipos de DevOps se benefician enormemente de la gestión de la configuración. Como se demostró en la sección anterior, la visibilidad que proporciona es crucial para desarrollar un catálogo unificado de sistemas y servicios que el equipo pueda tener en cuenta al desarrollar y mantener aplicaciones.

La documentación es un componente clave de esta visibilidad, según la gestión de configuración. Esto facilita la incorporación de nuevos ingenieros y garantiza que otros puedan aprender rápidamente el entorno operativo para ser más efectivos en emergencias donde se necesita una respuesta rápida.

El análisis del entorno de producción y la garantía de que el entorno de prueba coincida son procesos sencillos gracias a la gestión de la configuración. Esto reduce el riesgo de implementaciones porque es más probable que la aplicación se ejecute según lo planeado y las pruebas que se ejecutan contra ella son representativas de las demandas reales de software. Cuando el tiempo de inactividad de la aplicación tiene un impacto monetario, se recomienda minimizar los factores de riesgo siempre que sea posible.

Finalmente, ayuda con la recuperación ante desastres en caso de una interrupción u otro incidente imprevisto. La trazabilidad es un elemento básico de la gestión de la configuración, por lo que es relativamente sencillo revertir una actualización a la última versión estable conocida del software. Esto permite que el programa continúe desempeñando sus responsabilidades comerciales mientras el equipo trabaja en una solución a largo plazo.

Ahora que comprende los beneficios de una excelente administración de la configuración, veamos cómo podría implementarla en su empresa.

¿Cómo es una estrategia de gestión de la configuración?

Un plan de gestión de la configuración se centra en cuatro áreas. Repasemos cada uno.

#1. Descubrimiento

Inventariar los sistemas existentes es el paso inicial. La catalogación debe tener lugar en todos los contextos importantes para la prueba y el funcionamiento de su aplicación. A continuación, el proceso de descubrimiento pasará a recopilar los metadatos de sus elementos identificados en un único repositorio central. Esta única fuente de verdad almacenará estos datos en archivos de datos, con mucho cuidado para cifrar cualquier información confidencial, como contraseñas y claves, antes de guardarla.

#2. Punto de referencia

Una vez que se completa el proceso de descubrimiento, puede analizar los datos de configuración ensamblados para crear una línea de base para una operación exitosa. En otras palabras, el punto de referencia es una línea de base de las configuraciones requeridas para que el programa funcione correctamente. Estos parámetros se pueden encontrar inspeccionando una aplicación en ejecución y su entorno.

#3. Control de versiones

La gestión de la configuración incluye ampliamente el control de versiones. El uso de un sistema de control de versiones como Git y el seguimiento de sus archivos de datos de configuración dará como resultado un historial verificable de cualquier cambio realizado. El control de versiones también facilita la reversión a una versión anterior si una actualización interrumpe la aplicación.

#4. Revisar

Una ventaja separada pero importante de usar un sistema de control de versiones es que le permite mantener sus datos de configuración en el mismo repositorio que su código, evitando cambios no autorizados. Puede limitar las capacidades de edición a miembros específicos del equipo y diseñar un proceso de aprobación para que cualquier cambio de configuración requiera aprobación previa antes de implementarse en la aplicación.

Debido a que todo el equipo puede examinar los archivos de configuración en el repositorio, esto promueve la responsabilidad, elimina riesgos y facilita la cooperación.

Cómo se relaciona la gestión de la configuración con DevOps, la entrega continua y otras tecnologías...

A estas alturas, debería tener una buena comprensión de lo que es la gestión de la configuración y lo que se esfuerza por hacer. Antes de examinar las herramientas, me gustaría explorar cómo encaja la gestión de configuración con otros conceptos de desarrollo de software como Agile, DevOps, integración continua, entrega continua y Docker para que pueda comprender cómo encajan estos conceptos con las ideas de gestión de configuración.

¿Agile es compatible con la gestión de la configuración?

Sí. El software ágil, por definición, representa el deseo de realizar cambios en nuestro software más rápidamente para adaptarse a las demandas del mercado. La gestión de la configuración nos permite mantener una alta velocidad mientras gestionamos los cambios de forma segura.

Gestión de la configuración y DevOps: ¿cómo encajan?

DevOps es la aplicación de conceptos ágiles a las divisiones de desarrollo y operaciones. De hecho, DevOps pretende alinear los objetivos de ambos departamentos. En algunas empresas, el departamento de desarrollo busca el cambio, mientras que el departamento de operaciones busca la estabilidad. Las empresas que adoptan DevOps, por otro lado, buscan tanto la estabilidad de sus activos desplegados como la frecuencia de cambio. Sin embargo, alcanzar este resultado requerirá un cambio cultural.

La gestión de la configuración, como Agile, ofrece a los equipos la confianza para realizar cambios rápidamente. La organización asigna tareas de gestión a los equipos de desarrollo bajo principios ágiles, facultándolos para proporcionar, configurar y mantener su propia infraestructura. Lo construyes y lo operas.

¿Dónde encajan las canalizaciones en la gestión de la configuración?

Las canalizaciones de software (o "flujo de valor", que podemos diseñar con herramientas como Plutora) son las etapas que normalmente automatizamos para mover el código de la confirmación a la producción. Las canalizaciones suelen incluir fases como código de pelusa, código de prueba de unidad, código de prueba de integración y creación de artefactos.

Por lo tanto, una canalización de software es un tipo de gestión de la configuración. Cuando creamos software con herramientas como Docker, codificamos nuestras instrucciones de compilación en un Dockerfile. Esto nos permite comprender mejor las dependencias de nuestros artefactos.

¿La gestión de la configuración de la infraestructura como código es algo real?

La infraestructura como código (o IaC) es la práctica de garantizar que todo el aprovisionamiento de infraestructura se realice a través del código. El objetivo de IaC es mantener un registro documentado de qué servicios existen, dónde están ubicados y en qué condiciones están disponibles. La gestión de la configuración puede decidir utilizar componentes de IaC para tener una comprensión completa de todos los activos tecnológicos que posee una organización.

¿Tiene administración de configuración de entrega/integración continua?

El proceso de garantizar que el software esté siempre disponible se conoce como entrega continua. Esto se puede lograr mediante una amplia automatización y pruebas. La integración continua es el proceso de reunir a menudo artefactos de software dispares en una sola ubicación para garantizar que el código se integre correctamente. Las herramientas de integración continua, que a menudo son servidores que ejecutan conjuntos de pruebas de automatización, funcionan como una especie de gestión de configuración al proporcionar visibilidad de los procedimientos necesarios para instalar y configurar un activo de software específico.

Eso debería responder algunas de sus preguntas restantes sobre cómo la administración de la configuración se alinea con los métodos o ideas que puede estar empleando o con los que está familiarizado. Sin embargo, cualquier discusión sobre la gestión de la configuración sería inadecuada sin una discusión sobre las herramientas. Por lo tanto, echemos un vistazo a las diversas herramientas disponibles para implementar la gestión de configuración.

Herramientas de gestión de la configuración

#1. git

Git es la solución de control de versiones líder en la industria para rastrear cambios de código. La inclusión de datos de gestión de configuración con código en un repositorio de Git proporciona una vista integral de control de versiones de un proyecto completo. Git es una herramienta fundamental para la gestión de configuración de alto nivel. La siguiente lista de herramientas de administración de configuración alternativas está destinada a mantenerse en un repositorio de Git y usar el seguimiento del control de versiones de Git.

#2. Estibador

La contenedorización, como un bloqueo de configuración, es una forma avanzada de gestión de configuración que ofrece Docker. Docker se basa en archivos de configuración llamados Dockerfiles, que incluyen una lista de comandos que se evalúan para reconstruir la instantánea prevista del estado del sistema operativo. Docker genera contenedores a partir de estos Dockerfiles, que son instantáneas de una aplicación preestablecida. Los Dockerfiles están comprometidos con un repositorio de Git para el control de versiones y requieren una administración de configuración adicional antes de que puedan implementarse en una infraestructura.

#3. Terraformar

Terraform de HasiCorp es una plataforma de gestión de configuración de código abierto. Terraform utiliza IaC para aprovisionar y administrar clústeres, infraestructura de nube y servicios. AWS, Microsoft Azure y otras plataformas en la nube son compatibles con Terraform.

Cada plataforma en la nube tiene su propia representación e interfaz para los componentes básicos de la infraestructura, como servidores, servidores de bases de datos y colas. Terraform creó una capa de abstracción de herramientas de configuración para plataformas en la nube. Las herramientas de configuración permiten a los equipos producir archivos que son descripciones reproducibles de su infraestructura.

#4. Chef, Marioneta, Ansible, Salt Stack

Los marcos de automatización de TI incluyen Ansible, Salt Stack, Chef y Puppet. Estos marcos automatizan varios procesos típicos del administrador del sistema. Cada marco emplea un conjunto de archivos de datos de configuración, normalmente YAML o XML, que son analizados por un ejecutable.

Los archivos de datos de configuración describen los pasos a seguir para configurar un sistema. El ejecutable luego realiza las acciones. El idioma del ejecutable varía entre las plataformas; Ansible y Salt Stack están basados ​​en Python, mientras que Chef está basado en Ruby. Este método es similar a ejecutar scripts de shell ad-hoc, pero brinda una experiencia más estructurada y refinada a través de los ecosistemas de las respectivas plataformas.

Estas herramientas proporcionarán la automatización necesaria para lograr CI/CD.

¿Cómo se puede empezar con la gestión de la configuración?

Por supuesto, no puede pasar de "cero" a "condición deseada" en un instante. De hecho, antes de elegir un sistema de administración de configuración, primero debe determinar por qué lo necesita. A continuación, se explica cómo comenzar con la administración de la configuración:

  • Comience compilando listas de verificación y documentación manuales en un grupo común de opciones de configuración que existen en todos (o la mayoría) de los sistemas. Enfocar sus esfuerzos de administración de configuración en los patrones más predominantes inicialmente puede ayudarlo a ahorrar la mayor cantidad de trabajo humano y brindar beneficios de automatización rápidos a su empresa.
  • Verifique que la lista de verificación incluya software de monitoreo, antivirus y otro software de uso común.
  • Para desarrollar piezas de infraestructura reutilizables como código, clasifique los sistemas según lo que necesite cambiar para hacerlos específicos para aplicaciones específicas, ubicaciones geográficas u otras categorías.
  • Elija un sistema de gestión de configuración.

Conclusión

¡Eso es todo al respecto! Con suerte, esto aclarará su comprensión de la gestión de configuración. Se trata de realizar un seguimiento del estado actual de su software e infraestructura.

Existen numerosos enfoques para implementar la gestión de la configuración, así como numerosas herramientas y procedimientos. Por lo tanto, cuando se trata de estrategia, tómese su tiempo para evaluar opciones y determinar cómo desea que funcionen sus procedimientos de administración de configuración.
Sin embargo, todo valdrá la pena al final. Si realiza correctamente la gestión de la configuración, sus equipos estarán más seguros, serán más productivos y podrán realizar cambios más rápidamente.

¡Buena suerte y, de ahora en adelante, audite, rastree y escriba todo como código!

Referencias

Deje un comentario

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *

También te puede interesar