Mi Blog
¿Qué es DevOps?

¿Qué es DevOps?

(3 votos)

DevOps es un acrónimo inglés que viene de development (desarrollo) y operations (operaciones). Se refiere a una metodología de desarrollo de software que se centra en la comunicación, colaboración e integración entre desarrolladores de software y los profesionales de sistemas en las tecnologías de la información (IT).

Seguid leyendo y os contaré quienes son (SOMOS) los DevOps dentro de una organización...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

DevOps, lejos de ser una moda, llegó para quedarse

 

 

1.- ¿QUÉ ES DEVOPS?

Al término DevOps se le conoce como el conjunto de prácticas, herramientas y filosofía cultural que sirve para automatizar e integrar los procesos que comparten el equipo de desarrollo de software y el de TI. DevOps se centra en la comunicación y colaboración entre los diversos equipos y la automatización de la tecnología.

DevOps es un término relativamente nuevo ya que surgió allá por el año 2007. Fueron los equipos de operaciones de TI y las comunidades de desarrollo los que plantearon objeciones al modelo de desarrollo de software tradicional.

En el nuevo modelo de DevOps, los equipos de desarrollo y operaciones ya no trabajan de forma aislada. En algunas ocasiones, los equipos trabajan de una forma tan conjunta, que se fusionan en uno. En este caso, los desarrolladores e ingenieros trabajan en todo el ciclo de vida de la aplicación, desde el desarrollo y las pruebas hasta la implementación y las operaciones.

Los equipos de DevOps utilizan prácticas y herramientas para automatizar procesos que anteriormente eran realizadas de forma manual y muy lento. Estas herramientas ayudan a los desarrolladores e ingenieros a realizar de forma independiente tareas que normalmente hubieran requerido la ayuda de otros equipos, lo que incrementa todavía más la velocidad del equipo.

El término "DevOps" es la combinación de las palabras inglesas "development" (desarrollo) y "operations" (operaciones).

 

 

2.- CICLO DE LA VIDA DE DEVOPS

El ciclo de vida de DevOps corresponde a los pasos que atraviesa el código fuente de un software antes de llegar a ser desplegado y puesto en producción.

El ciclo comienza en la conocida fase de planificación, donde se toma la decisión de qué y cómo se va realizar. Tras esta fase, viene la fase de codificación en que los desarrolladores comienzan a "picar código". Tras escribir todo el código de la aplicación, la siguiente es la fase de construcción, donde se toma todo el código y se compila para poder ejecutarlo o probarlo. Luego viene la temida fase de pruebas, en la que se aplican tanto pruebas automáticas como manuales para detectar posibles errores en la aplicación durante su desarrollo. Luego viene la fase de release donde se toma lo compilado y desarrollado en fases anteriores y se guarda en un lugar accesible para que el proceso siga su ciclo.

Tras las fases anteriores, aparece la fase de despliegue. En esta fase se toman los programas desarrollados y compilados anteriormente y se le entrega al usuario. En la fase de operación, son los encargados de los equipos de operaciones de utilizar y comprobar que todo funciona bien en el entorno de producción. Por último, está la fase de monitorización, donde se revisan las métricas y se asegura que todo esté bien.

A continuación se detallan un poco más, cada una de las fase del ciclo de la vida DevOps:

Qué es DevOpsCiclo de la vida DevOps

 

 

2.1.- Planificación

Todos los proyectos necesitan una visión a futuro que indique a todas las personas implicadas en el proyecto cual es el motivo y el fin del trabajo a realizar. Ésta es la fase del ciclo donde se definen un conjunto mínimo de funcionalidades requeridos. Durante esta fase, la comunicación que existe entre el negocio y el equipo de desarrollo debe ser total.

Se comienza por elaborar un plan de trabajo para alcanzar el objetivo marcado. Todas las personas involucradas (técnicas o no) deben trabajar sobre dicho documento para lograr el objetivo definido. Por último, cada último, a cada una de las personas y equipos se les define su rol de trabajo, tiempos de trabajo y objetivos a cumplir.

 

2.2.- Codificación

Tras la fase de planificación, se comienza a desarrollar y programar la aplicación según los requisitos acordados con el cliente en la fase de planificación. Esta es la fase de creación de la aplicación. 

Mientras se realiza la codificación de la aplicación, se definen las pruebas a realizar para asegurar que la aplicación cumpla con la especificación definida.

 

2.3.- Construcción

En esta fase se unifican y se integran todos los "trozos de códigos" realizados durante la fase de codificación para construir la aplicación. Es un proceso crítico y que cualquier error en la "fusión/unión" de código puede provocar que la aplicación deje de funcionar. Una vez construida la aplicación, es el momento de crear los nuevos artefactos que componen el software, incluyendo las nuevas funcionalidades. 

En esta fase del ciclo de vida de DevOps, el desarrollo de software es continuo e iterativo. Esto es beneficioso para el equipo ya que acelera el proceso y aseguramos la entrega.

 

2.4.- Pruebas

La fase de pruebas es la fase para verificar el correcto funcionamiento de todas las características del proyecto. Existen muchos tipos de pruebas: pruebas unitarias, pruebas de integración, pruebas de regresión... etc... Estas pruebas se definen durante la fase previa de planificación.

El equipo encargado de realizar todo el set de pruebas se le denomina equipo de QA. Utilizan herramientas automáticas y manuales para identificar y corregir errores en el código y en el caso que alguna prueba no sea satisfactoria, habrá que realizar cambios en el código hasta que pase la fase de pruebas.

 

2.5.- Lanzamiento

Cuando la aplicación ha pasado todas las pruebas definidas, tanto las funcionales, como de integración, se puede generar una "release" de la aplicación. El objetivo es ir sacando versiones/releases a medida que se van pasando todas las pruebas funcionales y de integración con los cambios realizados. Para el éxito de esta fase, se realizan muchas pruebas y hay que destacar que el desarrollo continuo sólo es posible gracias a la integración y las prueba continuas

 

2.6.- Operación

En este fase, el equipo de operación toma el control de la aplicación en el entorno de producción. Todos los miembros del equipo de operaciones, deben ser conocedores de la misma información acerca de la aplicación o servicio a operar. Se debe notificar a todos los miembros del equipo sobre los problemas ocurridos, tomar decisiones inmediatas (suspender, rollback, etc) y como planificar las mejoras necesarias antes de volver a pasar a producción.

 

2.7.- Monitorización

La monitorización es la última fase del ciclo de la vida DevOps. En esta fase se recopila toda la información a lo largo de un tiempo o periodo predefinido para poder realizar las pequeñas modificaciones de la fase de planificación. Desde los equipos de operaciones se definen las medidas y alertas a monitorizar. De esta forma, se controla el estado de salud de las aplicaciones y de su infraestructura. 

 

 

3.- HERRAMIENTAS DEVOPS

Una parte fundamental dentro del mundo DevOps son las herramientas que se utilizan para agilizar cada aplicación del proceso, desde el planteamiento inicial hasta la entrega del software. Aunque las herramientas son casi "infinitas", podemos resumirlas en las siguientes categorías según el tipo de herramientas y su objetivo:

 

3.1.- Herramientas de gestión de proyectos

Estas herramientas son aquellas que sirven para administrar y seguir la evolución de las tareas de los proyectos. Destacan: GitHub Issues y Jira, además y son de código abierto.

 

3.2.- Repositorios de código fuente

Los repositorios de código están fuertemente integrados con las herramientas de CI/CD, testeo y seguridad. Es por ello que los desarrolladores de software pueden trabajar en la misma base de código con la que trabajan los entornos de CI/CD. Los repositorios de código abierto más destacados son GitHub y GitLab.

 

3.3.- CI/CD pipelines

Hablar de Pipelines es hablar de DevOps y CI/CD. Estas herramientas DevOps de integración continua, automatizan todo el ciclo de vida de un desarrollo de software. Sin lugar a dudas, el más popular, multiplataforma y de código abierto es Jenkins.

 

3.4.- Test de automatización

Son herramientas de prueba continua, que graban y reproducen la funcionalidad de la aplicación de forma "infinita". Se usa frecuentemente Selenium.

 

3.5.- Herramientas de gestión configuración

Son herramientas encargadas de configurar y gestionar la infraestructura como código, facilitando así la labor de los ingenieros a la hora de hacer despliegues de configuraciones similares o idénticas en multitud de máquinas. Las herramientas de código abierto más usadas son Ansible (que pertenece a Red Hat), Chef, Puppet y Terraform.

 

3.6.- Herramientas de monitorización

Las herramientas de monitorización recogen datos en tiempo real y detectan posibles problemas que puedan afectar a las aplicaciones y la experiencia del usuario. Algunas de estas herramientas de código abierto son Nagios, Prometheus, Grafana y Splunk.

 

3.7.- Medición del impacto

Se implementan después del lanzamiento del producto y su objetivo principal es registrar y verificar el comportamiento y satisfacción de los usuarios. Se suelen utilizar mapas de calor, encuestas de usuario, incidencias etc...

 

 

Qué es DevOps

Herramientas DevOps

 

 

4.- ¿CUALES SON LAS VENTAJAS DE DEVOPS?

Las ventajas de DevOps incluyen lanzamientos más rápidos y sencillos, mayor eficiencia de los equipos, mayor seguridad, productos de mayor calidad y, en consecuencia, equipos y clientes más felices.

 

4.1.- Alta Velocidad de Desarrollo

El modelo utilizado por los ingenieros de DevOps, ayuda a los desarrolladores y al resto de equipos operativos, a automatizar todos los procesos y pruebas para innovar más rápido. También, gracias a dicho modelo, se consigue producir software de alta calidad con más velocidad, conseguimos adaptarnos a los cambios rápidamente.

 

4.2.- Entrega Rápida

Se puede aumentar la velocidad y la frecuencia de las publicaciones de las releases, y gracias a los DevOps adaptar los ciclos de publicación y reducir el tiempo de comercialización.

 

4.3.- Estabilidad y Fiabilidad del Sistema

Las prácticas y herramientas que utilizan los ingenieros de DevOps, garantizan a los demás equipos calidad y estabilidad del software. Las prácticas de denominadas CI/CD, resultan útiles para mantener un sistema estable. La estabilidad aumenta fiabilidad del software.

 

4.4.- Escalabilidad

Escalabilidad va unido a la palabra DevOps. Aumentar (o reducir) el número de elementos en la infraestructura para mejorar y aprovechar los recursos es una práctica habitual en el ámbito DevOps.

 

4.5.- Seguridad

El término DevSecOps se introdujo hace pocos años para que todos en el equipo sean responsables de mantener la seguridad, no solo "uno mismo" dentro del equipo. DevSecOps ayuda a rastrear los problemas de seguridad, detectarlos y resolverlos antes de que puedan causar algún daño.

 

4.6.- Satisfacción del Cliente

Gracias a incrementar la velocidad de entrega del software, se tiene tiempo suficiente para recoger los comentarios de los clientes, hacer un seguimiento del progreso del software en las distintas fases y proponer cambios. Por tanto, cuando se trabaja en los defectos y se mejora la funcionalidad del software basándose en las demandas de los usuarios, se aumenta el nivel de satisfacción

 

4.7.- Ventaja Competitiva en el Mercado

La implementación de DevOps ayuda a realizar lanzamientos rápidos de software, entregas rápidas, funcionalidades, seguridad y una mayor satisfacción del cliente.  Además, también ayuda a reducir el coste de todo el ciclo del software.

 

 

5.- PRÁCTICAS DE DEVOPS

Las prácticas de DevOps son el reflejo de la idea de automatización y mejora continua. Muchas de esas ideas se centran en una o en varias fases del ciclo de desarrollo de software.

Estas prácticas incluyen los siguientes puntos:

 

5.1.- Desarrollo continuo

Esta práctica engloba tanto la fase de planificación como la fase de codificación del ciclo de DevOps.

 

5.2.- Realización de pruebas continuas

Esta práctica DevOps agrupa tanto pruebas de código automatizadas como pruebas programadas. Dichas pruebas se realizan con antelación a medida que el código de aplicación se está creando o actualizando. Gracias a estas pruebas, el código pasa antes a la fase de producción.

 

5.3.- Integración continua (CI)

En esta práctica se combinan tanto herramientas de gestión de configuración (CM) como otras herramientas de pruebas y desarrollo. El objetivo del uso de dichas herramientas es saber qué cantidad del código desarrollado está listo para pasar a producción. El intercambio de información entre las fase de prueba y las fase de desarrollo debe ser fluido de tal forma que permita identificar y resolver con rapidez problemas en el código.

 

5.4.- Entrega continua

Esta práctica automatiza la introducción de cambios en el código para pasar a un entorno de preproducción o de almacenamiento provisional tras la fase de pruebas. Un miembro del equipo podría ser el encargado de decidir si es conveniente promover estos cambios de código a la fase de producción.

 

5.5.- Puesta en marcha continua (CD)

Esta práctica automatiza el lanzamiento de código nuevo o modificado a la fase de producción. Gracias a Docker y Kubernetes, se hace posible esta fase al ayudar a mantener la estabilidad del código en los diferentes entornos y plataformas.

 

5.6.- Supervisión continua

Esta práctica implica la supervisión de forma continua del código en la fase de producción y su infraestructura

 

5.7.- Infraestructura como código

Esta práctica se utiliza para para automatizar el aprovisionamiento de la infraestructura que se necesita para publicar el software. Por ejemplo con Docker, Kubernetes u OpenShift. Gracias a esta práctica, los equipos de operaciones también pueden supervisar las configuraciones de entorno.

 

 

ENJOY!


Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

Dirección: León, España

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

Skype: raul.lnx

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!