¿Qué proporcionan las herramientas de SCM (Ansible, Puppet, Chef, etc.)?

7

He leído bastante sobre la administración de configuración de software (en Internet y también en SWEBOK), pero no tengo claro cuál es el propósito de las herramientas de SCM. O, mejor dicho, ¿qué proporcionan estas herramientas que otras herramientas no?

Digamos que tengo un entorno con las siguientes herramientas:

  • Jenkins para la integración continua.
  • Ant como herramienta de construcción.
  • Git como sistema de control de versiones.
  • GitLab para la gestión de repositorios Git, y también para el seguimiento de problemas.
  • Herramientas de análisis y análisis de código fuente, como Sonar y JUnit.

Entonces, mi pregunta es, ¿qué proporcionarían esas herramientas de SCM? ¿De qué manera serían útiles?

    
pregunta Julen 02.11.2015 - 09:54

1 respuesta

8

Todas las herramientas que has mencionado (Jenkins, ant, git) ayudan a construir y probar tu artefacto. En el mundo de Java, por lo general, esto puede ser guerra, oído o simplemente zip con la aplicación en el interior. A veces para aplicaciones complicadas puede ser más de un artefacto. Para otras plataformas de programación puede variar, DLL, binarios para múltiples plataformas diferentes, etc.

Ahora digamos que desea implementar su aplicación. Si tiene un servidor, puede hacerlo manualmente o con algún script propio. Hasta ahora todo bien :)

Pero, ¿qué sucede si tiene muchas granjas (grupos de máquinas), diferentes fincas deben tener implementaciones con diferentes configuraciones (bases de datos, diferentes ubicaciones geográficas)? ¿Qué pasa si su aplicación se puede escalar horizontalmente para agregar un par de nodos nuevos al La granja debe ser una tarea trivial. Es posible que su equipo de control de calidad solo solicite un nuevo entorno para ejecutar sus pruebas, su equipo de rendimiento puede solicitar un nuevo entorno o agregar nodos a la granja para realizar pruebas de estrés, etc. Ahora manejar todo esto parece ser complicado. Ahí es donde entran en juego herramientas como ansible, chef, sal, títeres y otros.

En realidad, están ayudando a automatizar la implementación. Pueden proporcionar recetas de implementación, instalar dependencias faltantes (para ejecutar su proyecto puede requerir jre, tomcat de una versión específica y nginx para contenido estático). Todo esto a nivel de granja.

Sé que la respuesta es demasiado genérica y puede parecer menos obvia para los desarrolladores de Java (yo soy uno de ellos). Pero si tienes un equipo de chicos de sistemas / devops, deberían apuntar de inmediato a los beneficios de estas herramientas.

    
respondido por el Mark Bramnik 02.11.2015 - 11:48

Lea otras preguntas en las etiquetas