Header Ads Widget

Ticker

6/recent/ticker-posts

Presente y futuro de la gestión de la configuración

 

gestión de la configuración

DevOps es el conjunto de herramientas, procesos y actividades que los equipos de desarrollo de software modernos implementan para garantizar que puedan convertir el código en aplicaciones en vivo de una manera estable y repetible. Es un término que abarca todo y se puede dividir en diferentes áreas. Uno de ellos es la integración continua , el proceso de creación y prueba de código a intervalos regulares para evitar errores y acelerar la integración. Otro es la gestión de la configuración (CM): el conjunto de prácticas que tienen como objetivo gestionar el estado de ejecución de las aplicaciones.

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

Cada aplicación consta de una o más bases de datos, servidores web, servidores de aplicaciones, proxies inversos, balanceadores de carga y otras partes móviles que necesitan trabajar juntas en tiempo de ejecución para hacer un sistema que funcione.

La gestión de la configuración de software es el proceso de describir las formas en que todas estas entradas, llamadas artefactos o elementos de configuración , interactúan y cómo aprovechan la infraestructura subyacente. Específicamente, se ocupa de la instalación, configuración y ejecución de elementos de configuración en servidores. La gestión eficaz de la configuración garantiza la coherencia en todos los entornos, evita interrupciones y facilita el mantenimiento.

La gestión de la configuración tradicional requería que los administradores del sistema escribieran scripts y mantuvieran manualmente los archivos que enumeran los puntos finales técnicos, los números de puerto y los espacios de nombres. Cuando aumenta la complejidad de un sistema, también lo hace el proceso de gestión de la configuración. El control de versiones de artefactos, los cambios en el entorno y las tensiones entre desarrolladores e ingenieros de sistemas han llevado a una mayor automatización de la infraestructura .

CM en la nube

La llegada de la nube significó que los servidores se trasladaron de los centros de datos locales a los de los proveedores de alojamiento en la nube . Si bien desaparecieron las complejidades inherentes a la ejecución de una infraestructura en las instalaciones, también surgieron nuevos problemas.

Las tecnologías en la nube han permitido a los equipos implementar software en cientos, si no miles, de servidores simultáneamente para satisfacer las demandas del uso de software en la era de Internet. Administrar tantos servidores requiere automatización a una escala diferente y un enfoque más sistemático. Aquí es donde un enfoque basado en API para CM puede ayudar: en lugar de instalar y ejecutar scripts en cada nodo, un servidor CM centralizado podría controlar todos los nodos de manera programática y reducir drásticamente la carga de trabajo de los administradores de sistemas del equipo.

En la última década se han introducido gradualmente nuevas herramientas de software de CM para abordar estas necesidades crecientes. En las siguientes dos secciones, veremos algunos de los más populares.

Consulte también DevOps basado en API: Spotlight on Docker

Los líderes: marioneta y chef

Puppet y Chef son las herramientas de CM más maduras y populares en este momento. El empaquetado y la implementación de aplicaciones solían ser competencia exclusiva de los ingenieros de sistemas. Al permitir que los desarrolladores participen en este proceso, Puppet y Chef han definido juntos una nueva categoría de soluciones CM: la infraestructura como código .

Ambos son proyectos de código abierto y están basados ​​en Ruby (aunque partes importantes de la arquitectura Chef se han reescrito en Erlang por razones de rendimiento). Ambos tienen un ecosistema de desarrolladores de complementos, así como una empresa de apoyo que ofrece soluciones empresariales. Cada uno de ellos presenta una arquitectura cliente-servidor , con un servidor maestro que envía elementos de configuración a los agentes que se ejecutan en cada nodo.

Marioneta

 
Gestión de la configuración de Puppet Labs
Puppet by Puppet Labs fue fundado por un administrador de sistema llamado Luke Kanies en 2005. Está construido en Ruby pero ofrece su propio lenguaje declarativo similar a JSON para crear 'manifiestos', los módulos en los que se describen los elementos de configuración, utilizando conceptos de alto nivel. como usuarios, servicios y paquetes. El títere es "impulsado por modelos", lo que significa que normalmente no se requiere mucha programación. Esto hace que Puppet sea un éxito entre los ingenieros de sistemas con poca experiencia en programación.

Puppet compila manifiestos en un catálogo para cada sistema de destino y distribuye los elementos de configuración a través de una API REST, por lo que los equipos de desarrollo no tienen que preocuparse por instalar y ejecutar sus cosas: todos los elementos de configuración se implementarán y ejecutarán automáticamente en cada nodo. según lo previsto en los manifiestos. Las instrucciones se almacenan en su propia base de datos llamada PuppetDB y en un almacén de valores clave llamado Hiera . Puppet se utiliza en Google, la Fundación Wikimedia , Reddit , CERN , Zynga , Twitter, PayPal, Spotify , Oracle y la Universidad de Stanford .

Cocinero

gestión de la configuración del chef

Chef fue creado por Adam Jacob en 2008, como una herramienta interna en su empresa Opscode. Chef generalmente es amigable para los desarrolladores y muy popular entre los equipos que ya usan Ruby. Permite a los desarrolladores escribir 'libros de cocina' en Ruby y almacena las instrucciones resultantes en PostgreSQL. Chef se utiliza en Airbnb , Mozilla , Expedia , Facebook, Bonobos y Disney.

En ambos casos, una API segura está disponible para acceder a cualquier objeto dentro de Puppet o Chef en lugar de pasar por la interfaz de línea de comandos. Por ejemplo, un desarrollador puede consultar la API de cada uno de estos para averiguar cuántos nodos activos están presentes o crear un complemento para su sistema de integración continua favorito para activar una implementación cada vez que se crea una nueva versión del código.

Un ecosistema saludable de desarrolladores ha contribuido con numerosos complementos y extensiones tanto para Puppet como para Chef. Asimismo, los complementos Puppet y Chef también están disponibles para servidores de productos de integración continua populares como Jenkins, lo que permite la integración directa entre los procesos de CI y CM. De esa manera, las compilaciones de código que pasan todas las pruebas requeridas se pueden entregar automáticamente a los entornos de destino sin ninguna intervención manual.

Los contendientes: Salt y Ansible

Si bien Puppet y Chef dominan el panorama de CM, han surgido varios contendientes para atender las debilidades percibidas en su arquitectura.

SaltStack

gestión de la configuración de saltstack

 Es una herramienta CM relativamente nueva construida en Python y de código abierto en 2011. Utilizada por PayPal, Verizon, HP y Rackspace , Salt se centra en la arquitectura de baja latencia y la tolerancia a fallas. Cuenta con una configuración descentralizada, pequeñas cargas útiles de mensajería, ningún punto único de falla y ejecución paralela de comandos para un rendimiento óptimo.

Ansible

Gestión de la configuración de Ansible cm

Ansible , también de código abierto y construido en Python, fue creado por Michael DeHaan en 2012. Fue creado como reacción a la relativa complejidad de Puppet y Chef, e intenta ofrecer una alternativa más simple y elegante, con una curva de aprendizaje más corta.

A diferencia de Puppet, Chef y Salt, Ansible se basa en una arquitectura sin agentes, lo que significa que no se requiere ningún agente para ejecutarse en cada nodo de infraestructura, lo que genera menos complejidad y menos carga en la red. Los módulos Ansible, denominados unidades de trabajo, se pueden escribir con una variedad de lenguajes de programación como Python, Perl o Ruby. Ansible permite a los usuarios definir libros de jugadas en YAML para descripciones de sistemas de uso frecuente.

Los usuarios de Ansible incluyen Apple., Atlassian , EA , Evernote , Twitter, Verizon, NASA, Cisco y Juniper Networks .

Aparte de Puppet, Chef, Salt y Ansible, hay muchas otras opciones de CM, como Capistrano y SmartFrog . Cada uno de ellos se diferencia de una manera determinada. Por ejemplo, Otter tiene una interfaz de usuario basada en web que le permite cambiar entre un editor de arrastrar y soltar y el modo de texto, junto con soporte de primera clase para Windows.

Soluciones de proveedores en la nube

Los proveedores de infraestructura como servicio como Amazon Web Services vienen con sus propios conceptos y terminología altamente específicos, y las herramientas de CM necesitan hablar ese idioma para permitir que las personas de DevOps naveguen por su pila de productos.

Todos los productos CM mencionados anteriormente tienen extensiones para Amazon EC2, y algunos de ellos tienen soporte nativo para Google Compute Engine. Amazon tiene su propio producto de gestión de configuración nativo llamado OpsWorks que compite con Puppet y Chef por aplicaciones alojadas completamente en Amazon Web Services (aunque OpsWorks se basa en Chef internamente).

Vagrant de HashiCorp es una herramienta de código abierto para administrar entornos de desarrollo virtual (como VM y contenedores Docker) y envuelve las herramientas CM. Con Vagrant, los equipos pueden crear entornos de desarrollo portátiles que se pueden mover entre hosts sin ningún cambio en la configuración.

Consulte nuestra lista de herramientas de integración continua para impulsar el desarrollo de API

Herramientas CM internas

Algunas empresas tienen requisitos muy específicos sobre CM que son difíciles de cumplir mediante el uso de uno de los productos disponibles en el mercado. La creación de una solución de gestión de la configuración completa y personalizada representa una gran cantidad de trabajo, pero puede valer la pena para las empresas que tienen los medios para llevarla a cabo.

Netflix creó su propia API de administración de configuración llamada Archaius . Esta herramienta interna basada en Java y Scala, que lleva el nombre de una especie de camaleón, permite a Netflix realizar cambios dinámicos en la configuración de sus aplicaciones basadas en Amazon EC2 en tiempo de ejecución. Fue de código abierto en 2012.

Netflix tenía una variedad de razones para crear una alternativa a Puppet o Chef. La alta disponibilidad es fundamental para su modelo de negocio, por lo que no pueden evitar el tiempo de inactividad relacionado con las implementaciones de servidores. Todas sus aplicaciones están diseñadas de tal manera que la configuración se puede recargar en tiempo de ejecución.

Además, los servidores de Netflix abarcan varios entornos, regiones de AWS y pilas de tecnología, que se denominan colectivamente "contexto". Gracias a Archaius, Netflix puede habilitar / deshabilitar funciones dinámicamente según su contexto.

El camino por delante

Si bien el panorama tecnológico de la gestión de la configuración ha madurado mucho en los últimos años, existe un consenso general de que las cosas seguirán evolucionando en el futuro. Las soluciones convencionales actuales a menudo se consideran demasiado complicadas, implacables y difíciles de mantener. Una alternativa al enfoque clásico de CM es la infraestructura inmutable emergente defendida por Docker .

Mientras que la administración de configuración regular tiene como objetivo definir y administrar el estado en tiempo de ejecución, las aplicaciones en contenedores requieren que toda la configuración se defina en el momento de la compilación. Los contenedores portátiles resultantes se pueden mover de un host al siguiente sin ningún cambio de estado.

Estos estados se pueden guardar en imágenes de Docker y usarlos más tarde para volver a generar una nueva instancia del entorno completo. Por tanto, las imágenes ofrecen un medio alternativo de gestión de la configuración, posiblemente superior a la gestión de la configuración en tiempo de ejecución .

Otra alternativa es ocultar las complejidades de la gestión de la configuración con soluciones PaaS como Heroku que tratan con CM bajo el capó y empaquetan todo lo necesario para ejecutar una aplicación en paquetes de compilación. Aunque es menos flexible que IaaS, ofrece el lujo de ignorar por completo el proceso de CM.

No está claro hacia dónde se dirige la gestión de la configuración, pero una cosa es segura: seguirá siendo una de las principales preocupaciones de todos los equipos de DevOps en el futuro previsible.

Si le gustó esta publicación, asegúrese de suscribirse a nuestro boletín para recibir notificaciones de nuestro próximo lanzamiento de libro electrónico:  DevOps basado en API . 

Publicar un comentario

0 Comentarios