Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Documento Unido - Semana 10 - 11 IIS
Documento Unido - Semana 10 - 11 IIS
ADMINISTRACIÓN
CONFIGURACIÓN DEL SOFTWARE
DE LA
22
CONCEPTOS uando se construye software de computadoras, el cambio es inevitable. Y el cambio
C
CLAVE
administración de contenido . 517 aumenta el nivel de confusión cuando los miembros de un equipo de software trabajan
auditoría de configuración . . 514 en un proyecto. La confusión surge cuando los cambios no se analizan antes de que se
líneas de referencia . . . . . . . 504 realicen, cuando no se registran antes de que se implanten, si no se reportan a quienes tienen
control de cambio . . . . . . . . 511 necesidad de conocerlos o si no se controlan en forma que mejore la calidad y se reduzca el
control de versión . . . . . . . . 510 error. Babich [Bab86] analiza esto cuando afirma:
identificación. . . . . . . . . . . . 509
El arte de coordinar el desarrollo de software para minimizar [...] la confusión se llama administración
ítems de configuración de la configuración, que es el arte de identificar, organizar y controlar las modificaciones que se hacen
de software (ICS) . . . . . . . . 505
al software que construirá un equipo de programación. La meta es maximizar la productividad al
objeto de configuración . . . . 505
minimizar los errores.
objetos de configuración
de webapps . . . . . . . . . . . . 517 La administración de la configuración del software (ACS) es una actividad sombrilla que se
proceso ACS . . . . . . . . . . . . 508 aplica a lo largo del proceso de software. Puesto que el cambio puede ocurrir en cualquier mo-
reporte de estado . . . . . . . . 615 mento, se desarrollan actividades ACS para 1) identificar el cambio, 2) controlar el cambio, 3)
repositorio . . . . . . . . . . . . . 506 garantizar que el cambio se implementó de manera adecuada y 4) reportar los cambios a otros
webapps . . . . . . . . . . . . . . 515 que puedan estar interesados.
Es importante hacer una distinción clara entre el apoyo al software y la administración de la
configuración del software. El apoyo es un conjunto de actividades de ingeniería de software
que ocurren después de que éste se entregó al cliente y de que se puso en operación. La admi-
nistración de la configuración del software es un conjunto de actividades de rastreo y control
que inicia cuando comienza un proyecto de ingeniería de software y sólo termina cuando el
software se retira de la operación.
UNA
MIRADA ¿Qué es? Cuando se construye software de ga se demora. Por dicha razón, la gestión del cambio es
RÁPIDA
computadora, ocurren cambios. Y puesto que parte esencial de la administración de la calidad.
ocurren, es necesario administrarlos de manera ¿Cuáles son los pasos? Puesto que muchos productos de
efectiva. La administración de la configuración trabajo se realizan cuando el software se construye, cada
del software (ACS), también llamada gestión del cambio, uno debe identificarse de manera única. Una vez logrado,
es un conjunto de actividades diseñadas para administrar pueden establecerse mecanismos para control de versión y
el cambio mediante la identificación de los productos de de cambio. Para garantizar que la calidad se mantiene
trabajo que es probable que cambien, el establecimiento conforme se realizan cambios, audite el proceso; y para
de relaciones entre ellos, la definición de mecanismos para asegurarse que quienes deben conocerlos estén informa-
administrar diferentes versiones de dichos productos de dos acerca de los cambios, realice reportes.
trabajo y el control de los cambios impuestos, así como la ¿Cuál es el producto final? Un Plan de Administración
auditoría y reporte de los cambios realizados. de la Configuración del Software define la estrategia del
proyecto para la gestión del cambio. Además, cuando se
¿Quién lo hace? Todos los involucrados en el proceso de
invoca ACS formal, el proceso de control de cambio pro-
software se relacionan en cierta medida con la gestión del
duce solicitudes de cambio de software, reportes y órdenes
cambio, pero en ocasiones se crean posiciones de apoyo
de cambio de ingeniería.
especializadas para administrar el proceso ACS.
¿Cómo me aseguro de que lo hice bien? Cuando
¿Por qué es importante? Si no se controla el cambio, todo producto de trabajo pueda explicarse, rastrearse y
éste lo controla a uno. Y eso nunca es bueno. Es muy fácil controlarse; cuando todo cambio pueda rastrearse y ana-
que un torrente de cambios descontrolados convierta en lizarse; cuando todos los que deben saber acerca de un
caos un proyecto de software bien estructurado. Como cambio están informados, entonces la gestión del cambio
consecuencia, la calidad del software se reduce y la entre- se hizo correctamente.
501
www.FreeLibros.me
Una meta principal de la ingeniería de software es mejorar la facilidad con la que los cam-
bios pueden acomodarse y reducir la cantidad de esfuerzo empleado cuando deban realizarse
cambios. En este capítulo se estudian las actividades específicas que permiten administrar
el cambio.
La salida del proceso de software es información que puede dividirse en tres categorías amplias:
1) programas de cómputo (tanto en el nivel de fuente como en formatos ejecutables), 2) produc-
tos de trabajo que describen los programas de cómputo (dirigidos a varios participantes) y 3)
datos o contenido (incluidos dentro del programa o externos a él). Los ítems que comprenden
toda la información producida como parte del proceso de software se llaman colectivamente
configuración del software.
Conforme avanza el trabajo de ingeniería de software, se crea una jerarquía de ítems de con-
Cita: figuración del software (ICS): un elemento de información nominado que puede ser tan pequeño
como un solo diagrama UML o tan grande como el documento de diseño completo. Si cada ICS
“No hay nada permanente,
excepto el cambio.” simplemente conduce a otros ICS, dará como resultado poca confusión. Por desgracia, en el
proceso entra otra variable: el cambio, que puede ocurrir en cualquier momento, por cualquier
Heráclito, 500 a.C.
razón. De hecho, la Primera Ley de la Ingeniería de Sistemas [Ber80] establece: “Sin importar
dónde se esté en el ciclo de vida del sistema, el sistema cambiará, y el deseo por cambiar per-
sistirá a lo largo del ciclo de vida.”
¿Cuál es el origen de estos cambios? La respuesta a esta pregunta es tan variada como los
mismos cambios. Sin embargo, existen cuatro fuentes fundamentales de cambio:
1 Esta sección se extrajo de [Dar01]. El permiso especial para reproducir “Spectrum of functionality in CM System”,
de Susan Dart [Dar01], © 2001 de Carnegie Mellon University, se obtuvo del Software Engineering Institute.
www.FreeLibros.me
más pequeños o más grandes, pero, en esencia, hay temas genéricos que cada uno de estos
proyectos enfrenta con respecto a la AC).
En el nivel operativo, el escenario involucra varios roles y tareas. Para el gerente de proyecto,
? ¿Cuáles son las metas
de y las actividades la meta es garantizar que el producto se desarrolla dentro de cierto marco temporal. Por
realizadas por cada uno tanto, monitorea el progreso del desarrollo y reconoce y reacciona ante los problemas. Esto se
de los elementos hace mediante la generación y el análisis de reportes acerca del estado del sistema de software
constituyentes
y al realizar revisiones al sistema.
involucrados en la
administración del Las metas del gerente de configuración son garantizar que se sigan los procedimientos y
cambio? políticas para crear, cambiar y probar el código, así como hacer accesible la información acerca
del proyecto. Para implantar técnicas a fin de mantener el control sobre los cambios de código,
este gerente introduce mecanismos para: realizar peticiones oficiales de cambios, evaluarlos
(mediante un Consejo de Control de Cambios que sea responsable de aprobar los cambios al
sistema de software) y autorizarlos. El gerente elabora y difunde la lista de tareas para los inge-
nieros y básicamente crea el contexto del proyecto. Además, recopila estadísticas acerca de los
componentes que hay en el sistema de software, tales como la información que determina cuá-
les componentes del sistema son problemáticos.
PU Para los ingenieros de software, la meta es trabajar eficazmente. Esto significa que los inge-
NT
O nieros no deben interferir innecesariamente unos con otros en la creación y prueba del código
CLAVE y en la producción de productos operativos de apoyo. Pero, al mismo tiempo, deben intentar
Debe existir un mecanismo para comunicarse y coordinarse de manera eficiente. Específicamente, los ingenieros usan herra-
asegurar que los cambios
mientas que ayudan a construir un producto de software consistente. Se comunican y coordinan
simultáneos hechos al mismo
componente se rastreen, gestionen y al notificarse unos con otros las tareas requeridas y las tareas completadas. Los cambios se
ejecuten de manera adecuada. propagan a través del trabajo mutuo mediante fusión de archivos. Existen mecanismos para
garantizar que, para componentes que experimentan cambios simultáneos, hay alguna forma
de resolver los conflictos y la fusión de cambios. Se conserva una historia de la evolución de
todos los componentes del sistema, una bitácora con las razones de los cambios y un registro
de lo que realmente cambió. Los ingenieros tienen su propio espacio de trabajo para crear,
cambiar, poner a prueba e integrar código. En cierto punto, el código se convierte en una línea
de referencia desde la cual continúan mayores desarrollos y se realizan variantes para otras
máquinas objetivo.
El cliente usa el producto. Puesto que éste se encuentra bajo control AC, el cliente sigue pro-
cedimientos formales para solicitar cambios y para indicar errores en el producto.
De manera ideal, un sistema AC utilizado en este escenario debe apoyar todos estos roles y
tareas, es decir, los roles determinan la funcionalidad requerida de un sistema AC. El gerente de
proyecto ve la AC como un mecanismo de auditoría; el gerente de configuración la considera
un mecanismo de control, rastreo y generación de políticas; el ingeniero de software, como un
mecanismo de control de cambio, construcción y acceso; y el cliente la ve como un camino para
garantizar la calidad.
www.FreeLibros.me
Estos elementos (que se estudiarán con más detalle en secciones posteriores) no son mutua-
mente excluyentes. Por ejemplo, los elementos componentes trabajan en conjunción con los
elementos de construcción conforme evoluciona el proceso de software. Los elementos de pro-
ceso guían muchas actividades humanas que se relacionan con la ACS y, por tanto, también
pueden considerarse como elementos humanos.
Una especificación o producto que se revisó formalmente y con el que se estuvo de acuerdo, que a
partir de entonces sirve como base para un mayor desarrollo y que puede cambiar sólo a través de
procedimientos de control de cambio formal.
Antes de que un ítem de configuración del software se convierta en línea de referencia, los
cambios pueden realizarse rápida e informalmente. No obstante, una vez establecida la línea de
referencia, pueden realizarse cambios, pero debe aplicarse un procedimiento formal específico
para evaluar y verificar cada uno de ellos.
En el contexto de la ingeniería de software, una línea de referencia es un hito en el desarrollo
del software. Una línea de referencia se marca al entregar uno o más ítems de configuración del
software que se aprobaron como consecuencia de una revisión técnica (capítulo 15). Por ejemplo,
los elementos de un modelo de diseño se documentaron y revisaron. Se encontraron y corrigie-
ron errores. Una vez que todas las partes del modelo se revisaron, corrigieron y luego aprobaron,
el modelo de diseño se convierte en línea de referencia. Los cambios adicionales a la arquitectura
del programa (documentada en el modelo de diseño) pueden realizarse sólo después de que cada
uno se evalúa y aprueba. Aunque las líneas de referencia pueden definirse en cualquier nivel de
detalle, en la figura 22.1 se muestran las líneas de referencia de software más comunes.
En la figura 22.1 también se ilustra la progresión de eventos que conducen a una línea de
CONSEJO referencia. Las tareas de la ingeniería de software producen uno o más ICS. Después de revisar
Asegúrese de que la base de datos y aprobar los ICS, se colocan en una base de datos del proyecto (también llamada librería de pro-
del proyecto se mantenga en una yecto o repositorio de software, y que se estudia en la sección 22.2). Cuando un miembro de un
ubicación centralizada controlada. equipo de ingeniería de software quiere hacer una modificación a un ICS que se ha convertido
en línea de referencia, se copia de la base de datos del proyecto en el espacio de trabajo priva-
do del ingeniero. Sin embargo, este ICS extraído puede modificarse solamente si se siguen
controles ACS (que se estudian más adelante en este capítulo). Las flechas de la figura 22.1
ilustran la ruta de modificación de un ICS convertido en línea de referencia.
www.FreeLibros.me
FIGURA 22.1
Modificado
ICS como línea de ICS
referencia y base
Base de datos del proyecto
de datos del
proyecto Aprobado
Tareas de Revisiones
la ingeniería ICS ICS
técnicas
de software
Almacenado
ICS
Extraído
Controles
ICS
ACS
LÍNEAS DE REFERENCIA:
Especificación del sistema
Requerimientos de software
Especificación de diseño
Código fuente
Planes/procedimientos/datos de prueba
Sistema operativo
2 Esas relaciones se definen dentro de la base de datos. La estructura de la base de datos (repositorio) se estudia
con mayor detalle en la sección 22.2.
www.FreeLibros.me
FIGURA 22.2
Objetos de DataModel
configuración
DesignSpecification
diseño de datos
diseño arquitectónico
diseño de módulo
diseño de interfaz
ComponentN
descripción de interfaz
descripción de algoritmo
TestSpecification PDL
plan de pruebas
procedimiento de pruebas
casos de pruebas
SourceCode
www.FreeLibros.me
www.FreeLibros.me
“captura todos los cambios habidos en todos los archivos que hay en la configuración, junto con
la razón de los cambios y detalles de quién y cuándo hizo los cambios”.
Algunos conjuntos de cambio nominados pueden identificarse para una aplicación o sistema.
Esto permite construir una versión del software al especificar los conjuntos de cambios (por
nombre) que deben aplicarse a la configuración de referencia. Para lograr esto, se aplica un
enfoque de modelado de sistema. El modelo del sistema contiene: 1) una plantilla que incluye una
jerarquía de componente y un “orden de construcción” para los componentes que describen
cómo debe construirse el sistema, 2) reglas de construcción y 3) reglas de verificación.4
Durante las décadas pasadas se propusieron algunos enfoques automatizados diferentes
para el control de versión. La diferencia principal en los enfoques es la sofisticación de los atri-
butos que se usan para construir versiones específicas y variantes de un sistema y la mecánica
del proceso para su construcción.
H ERRAMIENTAS DE SOFTWARE
El Sistema de Versiones Concurrentes (SVC)
El uso de herramientas para lograr el control de ver- Deben integrarse otras herramientas (por ejemplo, Makefile) con el
sión es esencial para la administración efectiva del cam- SVC para lograr esto. El SVC no implanta un proceso de control de
bio. El sistema de versiones concurrentes (SVC) es una herramienta cambio (por ejemplo, solicitudes de cambio, reportes de cambio, ras-
ampliamente utilizada para el control de versiones. Originalmente treo de errores).
diseñada para código fuente, pero útil para cualquier archivo basado Incluso con estas limitaciones, el SVC “es un dominante sistema de
en texto, el SVC 1) establece un repositorio simple, 2) mantiene todas control de versión, de red transparente y código abierto, [que] es útil
las versiones de un archivo en un solo archivo nominado al almace- para todos, desde desarrolladores individuales hasta grandes equipos
nar sólo las diferencias entre versiones progresivas del archivo origi- distribuidos” [CVS07]. Su arquitectura cliente-servidor permite a los
nal y 3) protege a un archivo contra los cambios simultáneos al esta- usuarios acceder a los archivos mediante conexiones de internet, y su
blecer diferentes directorios para cada desarrollador, lo que, por filosofía de código abierto lo vuelve disponible para la mayoría de las
tanto, aísla uno de otros. El SVC mezcla los cambios cuando cada plataformas más usadas.
desarrollador completa su trabajo. SVC está disponible sin costo alguno para entornos Windows,
Es importante observar que el SVC no es un sistema “de construc- Mac OS, LINUX y UNIX. Vea [CVS07] para más detalles.
ción”, es decir, no construye una versión específica del software.
“El arte de avanzar es preservar El control del cambio es vital. Pero las fuerzas que lo hacen necesario también lo hacen desconcer-
el orden en medio del cambio y tante. Nos preocupamos por el cambio porque una pequeña perturbación en el código puede crear una
preservar el cambio en medio gran falla en el producto. Pero también puede corregir un gran fallo o permitir maravillosas nuevas
del orden.” capacidades. Nos preocupamos por el cambio porque un solo desarrollador granuja podría hundir el
Alfred North Whitehead proyecto, aunque en las mentes de dichos granujas se originan ideas brillantes y un abrumador pro-
ceso de control del cambio podría efectivamente desalentarlos de hacer trabajo creativo.
Bach reconoce que se está frente a un acto de equilibrio. Mucho control del cambio y se crearán
problemas. Muy poco y se crearán otros problemas.
Para un gran proyecto de software, el cambio descontrolado conduce rápidamente al caos.
Para tales proyectos, el control del cambio combina procedimientos humanos y herramientas
4 También es posible consultar el modelo del sistema para valorar cómo impactará un cambio en un componente
a otros componentes.
www.FreeLibros.me
En un sitio descontrolado, donde múltiples autores tienen acceso para editar y contribuir, surge el
potencial para conflictos y problemas, más aún si dichos autores trabajan desde diferentes oficinas en
diferentes momentos del día y de la noche. Usted puede pasar el día mejorando el archivo index.html
para un cliente. Después de que usted realiza sus cambios, otro desarrollador que trabaja en casa
después de las horas de oficina, o en otra oficina, puede pasar la noche actualizando su propia versión
recientemente revisada del archivo index.html, ¡y sobreescribir por completo su trabajo sin que haya
forma de recuperarlo!
Es probable que usted haya experimentado una situación similar. Para evitarla, se requiere un
proceso de control de versiones.
1. Debe establecerse un repositorio central para el proyecto web, que contendrá las versiones
actuales de todos los objetos de configuración webapp (contenido, componentes funcio-
nales y otros).
2. Cada ingeniero web crea su propia carpeta de trabajo, que contiene aquellos objetos que
se crean o cambian en cualquier momento.
3. Los relojes en todas las estaciones de trabajo de los desarrolladores deben estar sincroniza-
dos para evitar conflictos de sobreescritura cuando dos desarrolladores realizan actuali-
zaciones que están muy cercanas en el tiempo.
4. Conforme se desarrollan nuevos objetos de configuración o se cambian los objetos existen-
tes, deben importarse hacia el repositorio central. La herramienta de control de versión
(vea la discusión de SVC en la barra lateral) gestionará todas las funciones de entrada y
salida de las carpetas de trabajo de cada desarrollador web. Cuando se hagan cambios
al repositorio, la herramienta también proporcionará actualizaciones automáticas por
correo electrónico a todas las partes interesadas.
5. Conforme los objetos se importen al o se exporten del repositorio, se elabora un mensaje de
bitácora automático con marca de tiempo. Esto proporciona información útil para auditar
y puede volverse parte de un esquema de reporte efectivo.
10 Esto empieza a cambiar. Hay un creciente énfasis en la ACS como un elemento de la seguridad de la webapp
[Sar06]. Al proporcionar un mecanismo para rastrear y reportar todo cambio hecho a cada objeto Web, una he-
rramienta de administración del cambio puede proporcionar valiosa protección contra cambios maliciosos.
www.FreeLibros.me
Codeline (B)
L1 L2 Ex1
B B1.1 B1.2 B1.3
Baseline - V2
Codeline (C)
C C1.1 C1.2 C1.3 A1.3 B1.2 C1.2
2 5 .2 Gestión de versiones
Fecha de creación
Secuencia de versión
Más reciente
Código
Figura 25.7 Gestión D1 D2 D3 fuente V1.3
de almacenamiento
con deltas Estructura de almacenamiento
A B X Y
C C
Alice Bob
proyecto, como CVS (Vesperman, 2003), es posible ingresar (chek in) y sacar (check
out) todos los archivos asociados con un proyecto en lugar de tener que trabajar a la
vez con un archivo o directorio.
Cuando se desarrollaron por primera vez los sistemas de gestión de versiones, la gestión
del almacenamiento fue una de sus funciones más importantes. Las características de ges-
tión de almacenamiento en un sistema de control de versiones reduce el espacio de disco
requerido para mantener todas las versiones del sistema. Cuando se crea una nueva ver-
sión, el sistema simplemente almacena una delta (una lista de diferencias) entre la nueva
versión y la anterior que se usó para crear esa nueva versión (lo que se ilustra en la parte
inferior de la figura 25.7). En esta misma figura, los recuadros sombreados representan
versiones anteriores de un componente que se recrean automáticamente a partir de la ver-
sión de componente más reciente. Por lo general, las deltas se almacenan como listas de
líneas que cambiaron y, al aplicarlas automáticamente, puede crearse una versión de un
componente a partir de otro. Como es más probable que se use la versión más reciente de
un componente, la mayoría de los sistemas almacenan completa dicha versión. Entonces,
las deltas definen cómo recrear versiones anteriores del sistema.
La mayor parte del desarrollo de software es una actividad grupal, de modo que con
frecuencia surgen situaciones en las que diferentes miembros del equipo trabajan paralela-
mente en el mismo componente. Por ejemplo, suponga que Alicia hace algunos cambios a
un sistema, lo que implica cambiar los componentes A, B y C. Al mismo tiempo, Roberto
trabaja en cambios que requieren modificar los componentes X, Y y C. Entonces, tanto
Alicia como Roberto cambian C. Es importante evitar que estos cambios interfieran entre
sí, es decir, que los cambios de Roberto a C sobrescriban en los de Alicia o viceversa.
Para apoyar el desarrollo independiente sin interferencia, los sistemas de gestión de
versiones usan el concepto de repositorio público y un espacio de trabajo privado. Los
desarrolladores sacan componentes del repositorio público hacia su espacio de trabajo
privado y pueden cambiarlos como deseen en su mismo espacio. Cuando sus cambios
están completos, ingresan los componentes al repositorio. Esto se ilustra en la figura
25.8. Si dos o más personas trabajan en un componente al mismo tiempo, cada uno debe
sacar el componente del repositorio. Si se extrae un componente, el sistema de gestión
de versiones por lo general advierte a otros usuarios que quieren sacar dicho componente
que alguien más lo está usando. El sistema también garantizará que, al ingresar los
Codeline 2.1
<ramificación>
V2.1.1 V2.1.2
Codeline 2
<combinación>
V2.0 V2.1 V2.4
V2.2 V2.3
Figura 25.9 <ramificación>
Ramificación
(branching) y V1.0 V1.1 V1.2
combinación
(merging) Codeline 1
1 DATYS, Cuba, enrique.carbonel@datys.cu, Máximo Gómez #65 Norte e/Tirso Marín y Calderón, Sancti Spíritus, Sancti
Spíritus, Cuba, CP 10600
2 DESOFT, Cuba, anamaria.garcia@vcl.desoft.cu
ABSTRACT: The configuration management tools (CMT) essentially allow automation of installation,
configuration and update of system’s software. The variety of these tools available in the market makes it difficult
the right selection according to the needs of clients when you do not have consultant experts. The purpose of
this work is select the features to build a comparative framework and apply it to four of the most popular CMT. In
order to select some CMT we take into account some benchmarks of previous studies and join with others
proposed here to obtain a simple comparative framework. The tools selected by popularity went: CFEngine,
Puppet, Ansible and Salt. This work provides a summary table where the selected features are evaluated in
each of analyzed tools.
KeyWords: configuration management tools; comparison framework; CFEngine; Puppet; Ansible; Salt
proyectos [10][11] Pero como ningún método es servidores, teléfonos inteligentes, equipamiento de
perfecto, frecuentemente sus criterios están siendo red, etc. Es por ello que considerar las plataformas
revisados y actualizados. y dispositivos soportados aportan elementos para
Para la selección de los criterios específicos del evaluar cuán flexible es la CMT y cuántos sistemas
campo de aplicación tratado, se tuvieron en cuenta diferentes se pueden gestionar con el software
en primera instancia estudios comparativos previos [14][15].
[12], trabajos que introducen y caracterizan Propiedades de gestión
diferentes alternativas de CMS [8][13],
presentaciones en eventos, documentaciones
oficiales de los productos, criterios de la comunidad
(blog, IRC, redes sociales, etc. ), entre otras fuentes
disponibles de los últimos cinco años. De igual
forma se tuvo en cuenta que en Cuba no se cuenta
con grandes compañías que empleen estos
sistemas, por lo que el reducido nivel de expertos
en el área llevó a descartar cualquier criterio
previamente empleado que dependa de la
validación por el criterio de expertos.
disponible y dentro de esta, la documentación de son las compañías de referencia que emplean el
instalación; evaluando los prerrequisitos o cantidad producto. Estos elementos muestran su
de elementos necesario a instalar para que generalización en las diferentes organizaciones y si
funcione, así como las formas de instalación sirve para grandes escenarios de despliegue
pueden dar una idea de cuán rápido pudiera ser la [14][16]. No obstante es difícil medir exactamente el
puesta en marcha del nuevo sistema. número de usuarios y despliegues, por lo que se
Un elemento deseable para viabilizar la evaluación emplean otros criterios aproximados como el
de un producto de software es que se provean número de usuarios en la lista de distribución y las
recursos para el mismo de forma tal que se organizaciones que emplean el producto.
minimicen los esfuerzos de instalación y Adicionalmente se analizó la presencia en las redes
configuración que en etapas de exploración sociales teniendo en cuenta su actividad.
pudiesen incurrir en gasto de tiempo por la falta de Licencias
familiarización con los productos, para ello es Aunque todos los CMT que se evalúan en este
frecuente encontrar demos online, recursos de trabajo tienen una distribución de código abierto, es
Vagrant, recursos para un despliegue limitado en interesante conocer bajo qué licencia específica se
un proveedor de servicios en la nube o máquinas distribuyen: MIT, GPL, LGPL, etc., criterio que ha
virtuales con los componentes instalados para sido empleado por Torberntsson y Rydin [14].
probar localmente.
Precio
Constar con una versión comercial del producto
El precio constituye un factor determinante en todo
usualmente brinda mayor confianza a la hora
producto a adquirir que usualmente varía en
seleccionar una alternativa, pues generalmente
dependencia de la cantidad de nodos a gestionar y
estas vienen asociadas con un alto compromiso de
el soporte contratado, por lo que se tuvo en cuenta
soporte técnico por parte de los creadores y
el precio anual más bajo para 100 instancias con la
funcionalidades que no podemos encontrarnos en
versión Empresarial, similar al trabajo de
las versiones de la comunidad. Adicionamos
Torberntsson y Rydin [14].
entonces al análisis la presencia de versiones
comerciales del producto y sus funcionalidades Lenguaje de desarrollo
adicionales en comparación con la de la El lenguaje de desarrollo de un software puede
comunidad. afectar elementos como la comunidad y el
La estabilidad de un proyecto depende de muchos desempeño. Es común considerar que un software
factores difíciles de medir cuando estamos desarrollado en un lenguaje muy popular tenga
iniciándonos en un producto; sin embargo podemos mayor cantidad de contribuidores y seguidores. De
investigar sobre su política y frecuencia de igual forma sucede con un software desarrollado en
liberación para tener una idea al respecto. C, debe tener mejor rendimiento que otro
desarrollado en un lenguaje a más alto nivel. Por
Comunidad
estas razones se agregó al estudio el lenguaje con
Un elemento importante que buscamos en que es desarrollada la CMT.
productos de software es la comunidad que tiene
A modo de resumen la Figura 1 muestra las
un proyecto. En presencia de una comunidad
características que fueron seleccionadas para
grande es fácil resolver problemas, encontrar las
conformar el marco de comparación.
mejores prácticas, casos de uso exitoso de las
herramientas, etc. Por lo que se adicionó la Requerimientos de hardware
evaluación de la comunidad teniendo en Para tener una idea de las prestaciones básicas
consideración: la cantidad de usuarios necesarias en la explotación de las CMT se
contribuyentes del proyecto, la cantidad de incluyeron los requerimientos de hardware mínimos
proyectos relacionados y los canales de para el despliegue más básico de la distribución
comunicación (blog, redes sociales, salas de chat, empresarial.
foros) donde usualmente se publica información al
respecto.
2.2 Evaluaciones
Actualización
Para medir la actividad de actualización se tuvo en 2.2.1 CFEngine
cuenta: el tiempo transcurrido desde la última CFEngine es una CMT que permite gestionar de
actualización del producto y la cantidad de issues forma segura las infraestructuras de IT. Los
resueltos en el primer semestre del año. escenarios de usos son disimiles entre los que
Popularidad podemos encontrar: verificación del contenido y la
Usualmente cuando evaluamos un producto de integridad de archivos, despliegue de aplicaciones y
software buscamos la cantidad de usuarios y cuáles actualizaciones de sistemas.
Su Design Center (DC) es ofrecido como el contactan al servidor de políticas que son los
repositorio público donde los miembros de su responsables de la distribución de las políticas. Una
comunidad pueden compartir código y patrones de política no es más que un conjunto de promesas
diseño. En la versión Empresarial se cuenta con el que a su vez son empleadas para describir el
Design Center UI que permite a los ingenieros de estado deseado de un sistema.
infraestructura autorizados configurar, desplegar y Cuando el servidor de políticas ha publicado una
monitorear plantillas de políticas. El DC se promesa los clientes pueden actualizarse
encuentra público en Github pero según las automáticamente. Cada nodo en una red de
estadísticas del repositorio no cuenta con mucha CFEngine son actores independientes y trabajan de
actividad y en los últimos 6 meses ha estado forma oportunista que significa que incluso si un
prácticamente inerte. servidor de políticas desaparece, se mantendrá en
funcionamiento haciendo lo que puede con la
información que tiene almacenada.
No está documentado el uso de herramientas
complementarias para la ejecución de pruebas de
las especificaciones, solo aparece una referencia
sobre la necesidad de hacer test de las políticas
antes de liberarlas en producción. No obstante
como parte del mecanismo de distribución de los
estados deseados, los agentes locales siempre
ejecutan una comprobación de sintaxis antes de
aplicar los cambios [17].
Soporta la gestión de conflictos detectando
conflictos de modalidad, como una configuración
inestable que no converge [12][18].
CFEngine cuenta dos versiones del producto: la
Empresarial recomendada para producción y la de
la Comunidad que fue la pionera en 1993.
Valoramos la actividad del proyecto cfengine/core
analizando los 12K commits, 210 releases y la
cantidad de issues resueltos cuya mayor actividad
se enmarca entre 2013 y finales del 2014, por lo
que se valoró como activo.
Su presencia en las redes sociales se mantiene
activa, con actividad en: Google+ con casi 100
seguidores y más de 13K visitas, junto a su canal
de YouTube que desde 2010 ha compartido más de
100 videos para sus 300 suscriptores. En el caso
de LinkedIn se puede encontrar junto a su sitio
oficial varios grupos que garantizan la constante
actualización de temáticas relacionadas con sus
Figura 1: Criterios aplicados para el análisis de CMT. funcionalidades y mejores prácticas. De igual forma
la actividad se mantiene en el caso de Twitter con
De forma general si está preparado para grandes valores que superan los 2K tweet y 1K seguidores.
despliegues incluso manteniendo la alta Por estas razones de clasifico como activo.
disponibilidad de servicio mediante un pull de
servidores de políticas (configuraciones). 2.2.2 Puppet
La arquitectura empleada es distribuida con el Puppet Labs es uno de los líderes en la
énfasis en los agentes que se ejecutan en cada automatización de IT desde sus inicios en 2005,
host gestionado. El servidor central solo se emplea facilitando la automatización y gestión de los host y
para coordinar la distribución de las políticas. sus softwares tanto en máquinas físicas como
Los clientes de CFEngine pueden trabajar como virtuales en servidores dedicados o integrándose
clientes o como una estructura multinodo. Cuando con servicios en la nube. Puppet aparece como
se opera como una estructura multinodo, algunos proyecto de código abierto y a partir de este se
clientes pueden ser configurados como servidor de distribuye Puppet Enterprise (PE). PE es una
políticas y otros como simples clientes. Los clientes extensión de Puppet que incluye soporte
profesional, un stack de Puppet listo para
producción, una consola web para analizar reportes versiones ya se soporta el sistema operativo Cisco
y controlar las infraestructuras, funcionalidades de NX-OS como plataforma para correr los agentes en
orquestación y herramientas para provisionar en la los switches de red. Inclusive algunos socios como
nube. Huawei ya han incluido nativamente el soporte de
El ecosistema de Puppet incluye decenas de los agentes en sus dispositivos de red.
proyectos de código abierto que se emplean tanto Puppet fue de los pioneros en facilitar el trabajo de
en la versión de la Comunidad como en la la Infraestructura como Código (IaC) y tiene
Empresarial. Dentro de estos podemos encontrar experiencia aplicando test sobre las infraestructuras
Geppeto que es un IDE para facilitar el desarrollo [7]. Por ejemplo para que un módulo de Forge esté
en Puppet. Adicionalmente provee una interfaz: listo para producción es requerido su verificación en
Forge para crear proyectos desde módulos PE asegurando el estilo de la sintaxis con Puppet-
preexistentes y facilitar su socialización en la lint, pasar los test unitarios con rspec-puppet y
comunidad. realizar test de aceptación con Beaker framework.
Considerando estos elementos junto a la facilidad
En la versión PE se incluye una interfaz web
para trabajar varios entornos podemos decir que
llamada Console que permite analizar los
tiene soporte para test de especificaciones.
elementos de la infraestructura de forma
centralizada, ofreciendo una forma sencilla para Para la integración con un CVS hay algunas
desplegar configuraciones y aplicaciones a los referencias donde abordan como emplear Git para
servidores y dispositivos de red. trabajar con Puppet, incluso el IDE Geppeto permite
Adicionalmente Puppet cuenta con un repositorio trabajar con los módulos de la comunidad e
de módulos escritos por la comunidad llamado integrarlos con Git para su provisionamiento en PE.
Forge. Al publicarse un módulo, este puede ser Para valorar actividad del proyecto
revisado y clasificación según su popularidad, puppetlabs/Puppet se contó con los 20K commits,
originalidad entre otros elementos aportados por la 301 releases y la cantidad de issues resueltos que
comunidad. Como resultado el modulo se etiqueta se ha mantenido bastante alta desde finales del
estableciendo su estabilidad y confiabilidad para el 2011, por lo que es un proyecto muy activo.
empleo en producción. Mantiene cuentas en las redes sociales como
Puppet está diseñado para funcionar en una Google+ con más de 2K seguidores y 60K visitas,
arquitectura cliente/servidor o de forma junto a su canal de YouTube creado en el 2011 con
independiente. En la primera todos los ficheros de +500 videos compartidos para más de 7K
configuración con las “recetas” escritas en el suscriptores. En el caso de LinkedIn se puede
lenguaje declarativo son almacenados en el nodo encontrar junto a su sitio oficial varios grupos en los
servidor denominado “Puppet Master”. Este nodo que se comparten experiencias de desarrollo y
central se encarga de muchas de las tareas como administración. Esta actividad se mantiene en
analizar las recetas y compilarlas para generar Twitter con valores que superan los 8K tweet y
catálogos. Estos catálogos son conjuntos de 53.6K seguidores. Por estas razones se clasificó
ficheros XML que serán recogidos por los clientes o como muy activo.
agentes. Los clientes solo se encargan de 2.2.3 Ansible
implementar la funcionalidad requerida al comparar
los catálogos almacenados en su cache local con Ansible es una de las más recientes herramientas
los del servidor y finalmente reporta al servidor los de automatización de IT, dentro de sus uso
cambios realizados. El Master también puede podemos encontrar la automatización del
enviar notificaciones a los clientes en caso de que aprovisionamiento en la nube, la gestión de la
los ficheros de configuración hayan cambiado para configuración, el despliegue de aplicaciones y la
hacer que el cliente obtenga los nuevos catálogos. orquestación de servicios y sus interdependencias.
En la arquitectura independiente los nodos Ansible Tower es su distribución comercial
administrados contienen la copia completa de su recomendada para el contexto empresarial. Es una
información de configuración y compilan su propio interfaz web que permite centralizar y controlar las
catalogo para luego en demanda o por un proceso infraestructuras incluyendo: un dashboard, control
planificado aplicarlos. de acceso basado en roles, planificación de
Trabaja con gran variedad de plataformas, trabajos y la gestión visual de los inventarios;
anunciando para próximas entregas la ampliación simplificando la creación de nuevos entornos,
del soporte de los agentes en Mac OS, AIX, Solaris, permitiendo a desarrolladores establecer fácilmente
etc. sus entornos para QA y Test amend de la
intervención del personal de Ops. Incluso el propio
Se emplea para gestionar servidores pero es capaz personal comercial podría establecer en demanda
de trabajar sobre cualquier sistema que soporte la entornos para demos.
instalación de los agentes. En las recientes
Cuenta con roles y playbook. Los roles son la soporte en el tiempo de atención, las vías de
agrupación de un conjunto de tareas, variables, comunicación y el tiempo de respuesta según el
plantillas para lograr un fin específico y los playbook tipo de problema reportado.
son los que permiten representar el conjunto de La actividad del proyecto ansible/ansible se
pasos o roles a seguir/aplicar en la infraestructura evidencia con los 16K commits, 81 releases y la
gestionada con Ansible. cantidad de issues resueltos que se ha mantenido
Los roles en Ansible son construidos en aras de alta desde principios del 2013, por lo que se valora
incluir ficheros y combinarlos de forma clara, como muy activo.
reusable que nos permitan abstraernos y Mantiene cuentas en las redes sociales como
enfocarnos en la idea general y solo profundizar en Google+ con más de 625 seguidores y más de 42K
los detalles de implementación cuando sea vistas, junto a su canal de YouTube con muy pocos
necesario. videos compartidos para alrededor de 600
Los roles pueden ser compartidos a la comunidad suscriptores. En el caso de LinkedIn se puede
mediante Galaxy que es el sitio web para compartir encontrar junto a su sitio oficial varios grupos en
roles o herramientas de línea de comandos creadas diferentes localidades. Pero donde se evidencia
para ayudar a trabajar con los roles. una gran actividad es en Twitter con cifras
Ansible trabaja sin contar con un agente instalado superiores a los 6K tweet y 12K seguidores. Por
en cada host, evitando la necesidad de mantener estas razones de clasificó como activo.
actualizado estos agentes y pudiendo resolver el 2.2.4 Salt
impedimento de gestionar host donde no existen los
agentes instalados. Ansible es descentralizado SaltStack es una de las herramientas para
delegando el control de acceso a las credenciales desplegar y orquestar infraestructuras de nube,
del OS a administrar o integrándose a sistemas de optimizar la configuración de sistemas y controlar
gestión centralizada de usuarios. una vasta cantidad de entornos como: VMware,
OpenStack, Google Compute Engine, AWS,
Su versatilidad le permite su aplicación en gran Docker, etc.
variedad de dispositivos, incluso dentro de sus
socios hay proveedores de dispositivos de red SaltStack es comúnmente empleado para
como CISCO y Juniper Networks. desplegar, gestionar y automatizar infraestructuras
y aplicaciones para big data, IoT, storages
Ansible está diseñado para ser fail-fast, sin dinámicos, redes definidas por software, servidores
embargo se plantea que existen diferentes formas de seguridad, etc.
de plantear test con su sintaxis. Aplicando estos
mecanismos de pruebas en las diferentes etapas Ha sido acreedora de varios premios en los últimos
de desarrollo local, QA y producción podemos años en competencias y eventos relacionados con
reducir los riesgos en los entornos reales de la gestión de virtualización, entornos de nube y big
producción. Existen diferentes formas de trabajo data, siendo un referente en las mejores prácticas
para los test, pero la esencia es siempre ejecutar de DevOps y herramienta de gestión de la nube.
los mismos playbook en desarrollo, QA y En la próxima versión empresarial han anunciado la
producción. incorporación de una GUI siguiendo los pasos de
Usualmente se liberan nuevas versiones cada dos su competencia.
meses. La aplicación principal se desarrolla Para la modularización cuenta con módulos y
conservadoramente valorando la simplicidad en el fórmulas que permiten representar la configuración,
diseño del lenguaje y la configuración. Sin despliegue y orquestación de los host.
embargo, el desarrollo de la comunidad alrededor Adicionalmente mantiene público en github una
de nuevos módulos y plugins ocurre rápidamente, colección de fórmulas y además cuenta con un
añadiendo 20 o más módulos en cada entrega. gestor de fórmulas Salt Package Manager (SPM)
Cuenta con un servicio de consultoría y que permite construir y desplegarlas de forma
entrenamiento, mediante el que especialistas sencilla y análoga a los sistemas de empaquetado
pueden revisar los contenidos y configuraciones de como Yum o RPM.
Ansible y Tower instalados haciendo Una de sus ventajas es que soporta ambos
recomendaciones para futuros proyectos; ayudando mecanismos de distribución (push y pull) según
en el proceso de migración desde otros CMT o sean las necesidades del cliente. Cuenta con
soluciones locales. También cuenta con un sitio diferentes componentes desde los que podemos
destinado al soporte en el que se organizan las ejecutar las acciones remotamente sobre los nodos
respuestas a preguntas frecuentes. administrados o distribuir los cambios mediante
Tower se ofrece en diferentes ediciones: Básica, aplicaciones instaladas previamente en los nodos a
Empresarial y Premium diferenciándose respecto al gestionar.
Server, Ubuntu
Flexibilidad
Comunidad
Contribuidores 73 398 1156 1248
Proyectos relacionados <10 >2116 <15 <40
Actividad del proyecto activo muy activo muy activo muy activo
Redes sociales, IRC,
Redes sociales, IRC, Redes sociales, IRC,
Redes sociales, IRC, Newsletter, RSS,
Newsletter, RSS, Newsletter, RSS,
Canales de comunicación Newsletter, RSS, Youtube, grupos de
Youtube, grupos de grupos de google,
Youtube google, Puppet Ask,
google Youtube, Reddit
Reddit,
Actualización
Tiempo desde la última entrega <6 meses <6 meses <6 meses <6 meses
Issues resueltos 1er semestre 211 de 238 729 de 763 926 de 1290 1441 de 2730
Año de creación 1993 2005 2012 2011
Popularidad
Usuarios/Temas de la lista de
712/6070 8181/14527 5234/7070 3234/5252
distribución
LinkedIn, NASA JPL,
SONY, redhat, Twitter, Departamento de
Intel, Linkedin, Evernote, Universidad
SUN Oracle, Motorola, Defensa de los E.U,
Clientes SAMSUNG,Chevron, de Hardvard, Verizon,
Empresas de WMWare, github, Intel, Universidades de
Comcast, DIRECTV Twitter
referencia at&t, NESTLE Columbia y Hardvard,
Rakspace, Salesforce
IBM, Cisco, Amazon, VMWare, redhat, redhat,VMWare, Cisco,
Socios NE
Microsoft, HP, VMWare RackSpace, mas de 50 HP
Presencia en redes sociales Activo Muy Activo Activo Muy activo
Tipo de Licencia GPL v3,0 Apache License v2.0 GPL v3,0 Apache License v2.0
Precio Negociar con proveedor $10500 $5000 Negociar con proveedor
Lenguaje de desarrollo C 95% Ruby 97% Python 89,4% Python 97.6%
12núcleos, 2GRAM, 4 núcleos, 16GB RAM,
Servidor 4GB RAM, 20G Disco NE
100MB Disco x agente 142G Disco
Requerimientos
256MB RAM, 100MB
de hardware
Cliente Disco o 1G para NE NE NE
Windows
NE: no especificado oficialmente.