¿Que es DevOps?

Publicada en Publicada en Agile

Compartelo con tus amigos!

No existe una definición que podamos llamar como “canonica” sobre lo que es DevOps, la cual muchas veces se confunde (como casi siempre pasa con las buzzwords) con las herramientas que se requieren para su implementación o con los beneficios que obtenemos luego de implementarlo. En este post trataremos de arrojar luces sobre lo que es DevOps.

Wikipedia

Una definición según wikipedia

DevOps es un acrónimo inglés de development (desarrollo) y operations (operaciones), que se refiere a una cultura o movimiento centrado en la comunicación, colaboración e integración entre desarrolladores de software y los profesionales en las tecnologías de la información (IT). Automatiza el proceso de entrega del software y los cambios en la infraestructura. Su objetivo es ayudar a crear un entorno donde la construcción, prueba y lanzamiento de un software pueda ser más rápido y con mayor fiabilidad.

Las empresas con entregas (releases) muy frecuentes podrían requerir conocimientos de DevOps. Flickr desarrolló un sistema DevOps para cumplir un requisito de negocio de diez despliegues al día. A este tipo de sistemas se les conoce como despliegue continuo (continuous deployment) o entrega continua (continuous delivery), y suelen estar asociados a metodologías lean startup. Grupos de trabajo, asociaciones profesionales y blogs usan el término desde 2009.

Creo que en este caso Wikipedia, esta bastante acertado en cuanto a conceptos se tratan. Vamos ver un poco como influencia la implementación de DevOps en el proceso de desarrollo.

Uno de los grandes problemas que tenemos al realizar un desarrollo (sobre todo en aplicaciones grandes) es el mantenimiento esto significa que una vez que el aplicativo esta en producción los usuarios piden cambios o nuevas funcionalidades y entonces empezamos a modificar el aplicativo, pero los cambios que hacemos en un 85% de las veces va a impactar en otro lado del aplicativo lo que conlleva problemas de estabilidad y fiabilidad del aplicativo, para solucionar este problema es que se ha hecho bastante popular crear tests (unitarios, funcionales, de integración) los cuales pueden ejecutarse sin problemas una vez realizado el cambio. Sin embargo, cuando se trabaja en un equipo de desarrollo durante el ‘desarrollo’ en si mismo no se ejecutan ‘todos los tests’ sino solamente aquellos que creemos que serán afectados (esto por diversos motivos que no vamos a detallar) por ello es bueno tener un agente que ejecute dichas pruebas de forma automatizada, así podremos asegurarnos de que ‘todas’ las pruebas se ejecutan (Integración Continua).

Una vez que se ha terminado el desarrollo y se han realizado las pruebas respectivas es necesario pasar a las pruebas de aceptación del usuario, en esta etapa normalmente vamos a publicar el aplicativo en un ambiente de Test, no de producción. No me olvide del área de QA, simplemente no lo puse a drede por que en este proceso no se requiere un área de QA ya que las pruebas serán ejecutas si o si antes de cada publicación. Esta publicación se puede hacer de forma automática también ya que, dependiendo de la aplicación, se pueden copiar los archivos, subirlos a un servidor FTP o aun hosting (Entrega Continua).

Todas las partes que convenientemente he marcado como “automatizado” son las partes que conforman DevOps; implementar un buen proceso de Integración Continua  o Entrega Continua no es algo simple o trivial, y existen muchas herramientas en el mercado que lo hacen debemos invertir tiempo y esfuerzo en escoger la que mejor se adapte a nuestro equipo de trabajo; pero una vez implementado permite que los desarrolladores se olviden de la ejecución continua de pruebas o la publicación  de entregables, esto hace que se centren en la tarea de “desarrollar”, que es su primera y principal actividad.

 

Compartelo con tus amigos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *