Uso de inventarios para administrar recursos y evitar la duplicación
A medida que crece la organización, así que hace el seguimiento de la cantidad de cosas que necesita realizar. A menudo, las organizaciones tienen esfuerzos internos duplicados porque un equipo no conoce el proyecto del otro. A medida que las personas se mueven entre equipos, las nuevas personas se unen a la empresa y otras dejan, los proyectos pueden quedar huérfanos. Los inventarios ayudan a resolver estos problemas y son una parte clave de la ingeniería de plataformas.
Un inventario es una herramienta o sistema que se usa para realizar un seguimiento, administrar y organizar los recursos técnicos de una organización. Estos recursos incluyen código, API, contenedores, máquinas virtuales (VM), permisos de equipo y mucho más.
No realizar un seguimiento de los activos conduce a la expansión técnica y los residuos simplemente porque no se puede descubrir fácilmente lo que ya existe. Perder el seguimiento de lo que ya existe es un desafío común.
Tenemos una gran parte de contenedores o instancias de [VM] en ejecución. ¿Podemos eliminar nuestras máquinas virtuales antiguas? Nadie sabe. Tenemos que buscar una manera de limpiar las cosas antiguas y usar etiquetas adecuadas para que sepamos quién es el propietario o equipo que nos puede informar sobre lo que podemos hacer y cuál es el ciclo de vida. No sabemos si podemos apagar una máquina virtual determinada porque no estamos seguros de lo que ocurrirá. - Martin, Ingeniero de DevOps, Large Logistics Company
Seguimiento de recursos
Necesita un inventario para realizar un seguimiento de todas las cosas que ha creado o integrado en el ecosistema que los clientes internos pueden visualizar de una manera comprensible.
Un inventario puede mejorar la seguridad, promover la reutilización y, por lo general, facilitar la detección. Hay diferentes herramientas disponibles para realizar el seguimiento de diferentes tipos de recursos. Cada una de estas herramientas proporciona un inventario para ayudarle a administrar, realizar un seguimiento y limpiar los residuos.
Las herramientas de seguimiento disponibles incluyen:
- Los entornos de implementación de Azure permiten realizar un seguimiento de la infraestructura compleja creada a través de la infraestructura como código (IaC) como entorno abstracto.
- Azure API Center proporciona una manera de que los desarrolladores detecten y consuman api.
- Los registros de paquetes como Paquetes de GitHub o Azure Artifacts (u otros inventarios de paquetes y SDK aprobados) mejoran la seguridad de la cadena de suministro.
Al decidir la visibilidad de los inventarios, considere el mejor enfoque para su organización. Algunas organizaciones permiten a todos los desarrolladores ver recursos de software, pero solo algunos pueden modificarlos (similar a una cocina abierta). Otros, especialmente en sectores regulados, restringen el acceso más estrechamente, a veces incluso limitando la visibilidad a los nombres de proyecto debido a la sensibilidad.
Mejora de la detectabilidad, la gobernanza y la reutilización
Tener uno o varios sistemas de inventario que le ayuden a realizar un seguimiento de lo que tiene es fundamental para las prácticas de ingeniería de plataformas y evitar la expansión técnica. Inicialmente, tener un conjunto de listas de inventario plano podría ser suficiente. Sin embargo, puede mejorar aún más la detectabilidad agregando relaciones entre distintos recursos en varios inventarios. Independientemente del nivel de visibilidad que necesite, tener un punto de agregación centralizado permite a los equipos buscar y detectar rápidamente todos los recursos disponibles para ellos. Esto promueve la reutilización, reduce la redundancia y establece un enfoque coherente para la gobernanza.
Considere la relación entre una definición de API y el código de aplicación implementado que implementa la interfaz. Este código se almacena en un repositorio y lo administra un equipo y proporciona documentación sobre su uso. Se crean entornos de espacio aislado temporal, desarrollo, prueba, producción e incluso temporal. En escenarios nativos en la nube, es posible que los entornos se implementen en un clúster de Kubernetes compartido. El equipo de desarrollo que crea la API y los consumidores internos de ella deben poder obtener información sobre cada una de estas cosas, pero la relación de los recursos no es obvia.
Para empezar, puede usar algo tan sencillo como una página wiki para ayudar a realizar un seguimiento de cómo se relaciona cada cosa entre sí. Pero la documentación es rápida y puede ser difícil de encontrar y analizar. Idealmente, tendría un sistema con un gráfico de relaciones que puede impulsar las interfaces de usuario para atravesar estas relaciones en el inventario. Para mejorar realmente la detectabilidad, deberá poder asociar elementos almacenados en varios tipos de inventarios o gráficos juntos. Es posible que no necesite consumir inventarios directamente, pero es probable que quiera asociarlo con información en un sistema de catálogo de API.
Vinculación de inventarios con gráficos relacionales y catálogos
Para usar la analogía de la tienda digital, también puede ser útil asociar los elementos (plantillas) del catálogo con el contenido del inventario resultante. Por ejemplo, si se da cuenta de que una de las plantillas crea una configuración no segura, deberá buscar rápidamente todos los recursos que se crearon con la plantilla para corregirlos. Las plantillas de aplicación adecuadas son paquetes de kit de inicio en este catálogo que se vinculan a otros tipos de elementos de catálogo (como las plantillas de IaC). El seguimiento de estas asociaciones le permitiría encontrar proactivamente cualquier aplicación que haga referencia a una plantilla de IaC incorrecta incluso si aún no se aprovisiona ninguna infraestructura.
Una variación simplificada de este gráfico conceptual de la plataforma de desarrollo de alto nivel se puede encontrar en algunos kits de herramientas y productos hoy en día, aunque lo que se llama varía. Por ejemplo, el kit de herramientas del portal de código abierto Backstage.io llama a este catálogo de software mientras que otros productos usan términos diferentes. Sin embargo, la mayoría de estos productos y kits de herramientas asumen que usa su conjunto de características más amplio y requieren que el contenido de los inventarios se duplique dentro de ellos. Esta duplicación significa que el contenido de la base de datos de catálogo no es específico del usuario, puede quedar obsoleto y no está controlado por los mecanismos reales de autorización de usuario del sistema de origen. Sin embargo, esto puede funcionar bien para su organización si sigue un enfoque de cocina abierta.