DevOps Resumen General
DevOps Resumen General
1. Introducción................................................................................................... 2
1.1. Objetivos..................................................................................................... 2
1.2. Contexto: Problemas en el desarrollo de software tradicional...................................2
1.3. ¿Qué es DevOps?.......................................................................................... 3
2. Desarrollo....................................................................................................... 4
2.1. Roles en DevOps........................................................................................... 4
2.2. Actividades en DevOps.................................................................................... 6
2.4. Competencias en DevOps.............................................................................. 11
2.5. Fases en DevOps......................................................................................... 13
2.6. Recursos en DevOps..................................................................................... 16
2.7. Prácticas en DevOps.................................................................................... 18
3. Conclusión.................................................................................................... 25
4. Referencias................................................................................................... 26
Tabla de ilustraciones
Ilustración 1- Entrega Continua e Implementación continua - AWS...................................................7
Ilustración 2 DevOps VS DevSecOps................................................................................................13
Ilustración 3 – Ciclo de DevOps y sus fases......................................................................................15
Ilustración 4 - Herramientas por Fases de desarrollo en DevOps....................................................18
Ilustración 5 - Pirámide DevOps Automatización de Pruebas..........................................................19
Ilustración 6 - Control de Versiones..................................................................................................22
Ilustración 7 - Monitoreo Continuo DevOps.....................................................................................23
Ilustración 8 - Beneficios DevSecOps................................................................................................24
1. Introducción
1.1.Objetivos
El presente reporte tiene como objetivo analizar y profundizar en la metodología
DevOps como un enfoque integral para mejorar la eficiencia en el desarrollo y
operación de software, considerando no solo los aspectos técnicos de programación
y operación, sino también el componente humano de colaboración entre los
equipos de trabajo. A través de este análisis, se busca comprender cómo DevOps
aborda los desafíos comunes en el contexto del desarrollo de software tradicional,
creando una sinergia entre los equipos de desarrollo (Dev) y operaciones (Ops)
mediante prácticas de integración continua, despliegue automatizado y monitoreo
constante.
1.3.¿Qué es DevOps?
“DevOps es más que solo equipos de desarrollo y operaciones trabajando juntos.
Es más que herramientas y prácticas. DevOps es una mentalidad, un cambio
cultural, donde los equipos adoptan nuevas formas de trabajar. (Atlassian, s.f.)”.
2. Desarrollo
2.1.Roles en DevOps
En DevOps, a diferencia de los enfoques tradicionales no están marcados a una
estructura rígida de desarrollo y operaciones, al contrario, cada rol trabaja de forma
integrada y colaborativa con el fin de lograr un trabajo ágil y automatizado en el
desarrollo, siempre trabajando de la mano con los otros roles. A continuación, se
detallan los roles clave:
1. Desarrollador de software
a. Descripción y responsabilidades
En DevOps los desarrolladores van más allá de solo codificar, o como
su nombre lo indica desarrollar software, en DevOps se encargan de
escribir, probar y mantener el código del software, esto les asigna
responsabilidades como la participación activa en la automatización de
pruebas y despliegues con el fin de asegurarse de que el código se
integra y despliega sin problemas en producción, esta participación se
ve reflejada en la creación de scripts para pruebas automatizadas y en la
configuración de pipelines de CI/CD.
b. Colaboración con otros roles
Según Accelerate de Nicole Forsgren, Jez Humble y Gene Kim, la
coordinación entre los equipos de desarrollo y operaciones en DevOps
es esencial para tener una eficiencia acorde a las necesidades de los
usuarios y de las demandas actuales, tal como se menciona, los
desarrolladores no solo trabajan técnicamente en el proceso de
integración y despliegue si no que tambien se conforma un habito
cultural y laboral que rodean estos procesos logrando una adaptación
rápida a las demandas del negocio. Esta colaboración entre los equipos,
colaboración técnica y cultural, permite generar agilismo en la empresa,
un termino que involucra crear sinergia entre los equipos, técnicamente,
automatización de pruebas, control de versiona miento y construcción
de pipelines. (Nicole Forsgren J. H.)
2. Ingeniero DevOps
a. Descripción y responsabilidades
“Un ingeniero de DevOps debe tener habilidades que abarquen tanto el
desarrollo como las operaciones, así como habilidades interpersonales
para ayudar a cerrar las divisiones entre los equipos aislados.”
(Atlassian, s.f.).
Este rol es fundamental para trabajar con DevOps, su función esencial
es ser el puente, es decir, el mediador entre los desarrolladores y los
administradores de sistemas con el fin de lograr un despliegue ágil y
seguro, técnicamente los ingenieros DevOps configuran la
infraestructura necesaria para que sea eficiente el proceso de desarrollo
y se ejecute sin impedimentos, gestionan las herramientas de CI/CD,
orquestación de contenedores y los ya mencionados scripts de
automatización que son clave en DevOps, facilitando tanto
técnicamente como culturalmente la construcción de un ambiente de
colaboracion.
b. Colaboración con otros roles
Como se mencionó en la descripción del rol, la colaboracion con los
otros roles del ingeniero DevOps es esencial, es el puente que hace que
los desarrolladores y los administradores de sistemas trabajen de la
mano y colaborando mutuamente, logrando así un despliegue continuo
sin inconvenientes y ágil. The DevOps Handbook destaca cómo los
ingenieros DevOps facilitan un flujo de trabajo que conecta desarrollo,
QA, IT y seguridad, logrando así una integración continua que culmina
en un despliegue eficiente y seguro. Este enfoque del rol asegura que
tanto técnicamente como culturalmente se cree esa sinergia entre los
equipos técnicos permitiendo crear un contexto estable y seguro,
enfocando la importancia de construir sistemas agiles, productivos y
sostenibles mediante el uso de plataformas de autoservicio y
herramientas automatizadas. (Gene Kim, 2021).
3. Administrador de sistemas
a. Descripción y responsabilidades
Como papel fundamental de este rol tenemos que sigue siendo esencial
para la configuración y mantenimiento de los servidores y en general la
infraestructura en la que se ejecuta las aplicaciones. En DevOps, las
responsabilidades de este puesto se han transformado, centrándose en
acciones que incrementan la confiabilidad y escalabilidad del sistema,
administrando los ambientes de desarrollo y los de prueba y producción,
garantizando la disponibilidad, escalabilidad y seguridad de la
infraestructura. Las practicas de este rol se enfocan en los principios de
Site Reliability Engineering (SRE) para mejorar el rendimiento y
minimizar interrupciones. Como se señala en Site Reliability
Engineering: How Google Runs Production Systems, el fin de SRE es
enfocar las tareas de administración en torno al objetivo de lograr un
sistema ágil, eficiente y flexible en todo momento, destacando la
importancia de que este sistema debe ser lo mas seguro y fiable posible,
siendo los aspectos fundamentales para que cualquier sistema operativo
sea eficiente.
b. Colaboración con otros roles
Así como los otros roles se trabaja en conjunto en una cultura de
colaboracion con el fin de lograr un agilismo y despliegue continuo y
seguro de los productos de software, específicamente junto al ingeniero
DevOps trabajan en colaboracion para optimizar la infraestructura de
los sistemas, garantizando que esta este estable y soporte el trabajo
desarrollado por el equipo de desarrollo y cumpla con los estándares de
seguridad, tambien colaboran en la integración de herramientas de
monitoreo y resolución de incidentes que estén afectando la operación
de los servicios.
4. QA/Tester
a. Descripción y responsabilidades
Los QA y testers en DevOps no solo ejecutan pruebas, tambien se
encargan de automatizar este proceso, participan en el desarrollo y
mantenimiento de pruebas automatizadas que incluyen pruebas
unitarias, de integración y de regresión asegurando que cualquier
producto sea de alta calidad.
b. Colaboración con otros roles
Trabajan muy en conjunto con los desarrolladores para entender la
lógica del trabajo o código, así automatizar las pruebas entorno a ese
flujo de código para que sean correctas, además de trabajar en
colaboracion con los ingenieros DevOps para integrar estas pruebas a
los pipelines de CI/CD.
2.2.Actividades en DevOps
Las actividades en DevOps son el eje central para lograr su meta como método de
desarrollo enfocado en colaboracion y automatización, estas actividades permiten
que el ciclo de vida del desarrollo y despliegue sea eficiente pero sobre todo
continuo y estable, así como tambien permiten acelerar los tiempos de entrega e
incrementar la calidad y confiabilidad del producto. A continuación, se detallan las
actividades principales en el contexto DevOps:
3. Automatización de pruebas
a. Descripción
La automatización de pruebas es una practica clave en DevOps que
garantiza que cada desarrollo o cambio de software cumpla con los
estándares de calidad antes de su despliegue o lanzamiento. Estas
pruebas incluyen como ya se ha mencionado pruebas unitarias, de
integración, de regresión y pruebas funcionales, pruebas que, a
comparacion de las pruebas manuales reducen enormemente el tiempo y
los recursos necesarios.
b. Impacto en la eficiencia
Automatizar las pruebas da paso a que se identifiquen de manera
acertada y eficiente defectos que puedan tener los códigos
desarrollados, evitando fallas en el despliegue o lanzamiento de estos
cambios, permitiendo que los desarrolladores entreguen actualizaciones
de manera continua sin comprometer la calidad y confiabilidad del
sistema. GitLab menciona que la automatización de pruebas disminuye
enormemente el riesgo de errores en producción, creando un entorno de
pruebas seguro y confiable que permite que los desarrolladores se
enfoquen en mejoras y cambios continuos en lugar de correcciones
constantes del código.
b. Impacto en la eficiencia:
El monitoreo continuo detecta y resuelve problemas antes de que se
afecten a los usuarios finales, permitiendo que los equipos ajusten el
software en función de las métricas detectadas, favoreciendo tanto al
sistema como a la experiencia del usuario.
1. Código Fuente
a. Descripción
El código fuente es la parte central de cualquier proceso de desarrollo
de software. Este se almacena y gestiona mediante el control de
versiones como Git, permitiendo a los equipos de desarrollo realizar
cambios de manera estructurada y colaborativa. Aquí, el control de
versiones es de mucha importancia pues es esencial para verificar
cambios, revertir errores y como se menciona facilitar la colaboracion
en equipos grandes o distribuidos.
b. Importancia
Como se menciona el código versionado es la base de cualquier
proyecto de software, este código versionado permite realizar las
prácticas de integración continua, donde se fusionan los distintos
códigos versionados desarrollados y se prueban constantemente, Según
Atlassian, el uso de un sistema controlado de versiones mejora
enormemente la eficiencia de los equipos de desarrollo sobre todo al
usar DevOps, ofreciendo visibilidad y control sobre el código fuente.
2. Pipelines de CI/CD
a. Descripción
Los pipelines de integración son pasos por seguir o flujos de trabajo
automatizados enfocados en la integración y despliegue continuo de
DevOps (CI/CD), estos permiten compilar, probar y desplegar los
códigos fuente de manera eficiente y segura. Cada pipeline incluye una
serie de etapas, como compilación, pruebas automatizadas y despliegues
en los diferentes entornos como prueba, preproducción y producción.
Estos pipelines minimizan los errores humanos, minimiza los riesgos y
asegura que los cambios del producto sean de la mejor calidad.
b. Importancia
Los pipelines de CI/CD son clave para que cada cambio o producto que
se desarrolle se haga de manera ágil y continua, pues estas aseguran que
cada desarrollo o cambio en los códigos pasen por las pruebas
automatizadas y se verifiquen correctamente antes de llegar al entorno
de producción. Como lo menciona AWS, los pipelines de CI/CD
permiten una entrega rápida y segura, reduciendo enormemente los
tiempos de lanzamiento de nuevos productos y la probabilidad de
errores en producción. (Amazon Web Services, s.f.).
3. Documentación
a. Descripción
La documentación en DevOps incluye manuales de usuario y guías de
instalación, pero también incluye documentación de procesos,
configuraciones y arquitectura del sistema. Esta documentación es
fundamental para que se del trabajo colaborativo que se busca en
DevOps ya que ayuda a los equipos otorgando información importante
de como operar, configurar y resolver problemas del sistema.
b. Importancia
Una documentación especifica y accesible para todo el equipo ayuda a
que los equipos puedan entender y configurar el sistema de manera ágil.
En DevOps, donde el cambio es un evento constante, la documentación
asegura que las mejores prácticas y procesos estén claros para todo el
equipo, promoviendo así la colaboración ente ellos y reduciendo el
tiempo de adaptación para posibles nuevos integrantes.
2.4.Competencias en DevOps
Para que DevOps funcione de manera correcta, es esencial que los equipos
cumplan con las competencias necesarias, que tal como se desarrolla este método,
muchas van más allá de habilidades técnicas, por ejemplo, es esencial tener
habilidades blandas como trabajo en equipo, colaboracion, adaptabilidad,
comunicación entre otras. Las competencias en DevOps abarcan diversas áreas,
desde conocimientos de automatización y orquestación hasta el manejo de la
infraestructura como código. A continuación se presentan las competencias
fundamentales en un equipo de DevOps eficiente:
2.5.Fases en DevOps
El ciclo de DevOps este compuesto de 8 fases clave, cada una diseñada para
permitir un flujo de trabajo fácil, continuo y adaptable. A continuación, se
describen estas fases con sus contribuciones al proceso:
1. Plan
a. Descripción
La fase de planificación se utiliza para estableces cuales son los
requisitos y objetivos del proyecto. Se definen las tareas a realizar, se
les dan unas prioridades y se divide el trabajo en cantidades manejables
para el equipo. Esto permite que todos los miembros comprendan cuales
son las metas y trabajen en conjunto para lograr un objetivo común,
facilitando la colaboración y agilidad del equipo DevOps.
2. Code
a. Descripción
En esta fase, los desarrolladores crean el código fuente para nuevas
funcionalidades, nuevos proyectos o mejoras en proyectos ya existentes.
El uso del versiona miento que se ha mencionado o sistemas de control
de versiones para código, como Git, permite que los desarrolladores
trabajen en paralelo en sus tareas asignadas, gestionen los cambios
necesarios y mantengan el código limpio y eficiente para una
integración continua necesaria en DevOps
3. Build
a. Descripción
La fase de construcción da paso a convertir en un paquete ejecutable el
código fuente, durante esta etapa, el código se copila, resolviendo
dependencias y verificando que esté listo para un despliegue correcto.
Herramientas como Jenkins automatizan este proceso, permitiendo que
el ciclo sea continuo y confiable.
4. Test
a. Descripción
La fase de pruebas como su nombre lo indica asegura que el software
cumpla con esas pruebas que validan que este cumple con los estándares
de calidad establecidos. Se realizan pruebas unitarias, de integración,
funcionales y de regresión para verificar que todo este correcto y se
garantice la estabilidad y funcionalidad del software, recordemos que
esta fase se debe realizar entorno a la automatización de pruebas clave y
necesaria para DevOps, permitiendo una rápida detección y corrección
de errores en el software antes de que llegue al ambiente de producción.
5. Release
a. Descripción
En la fase de lanzamiento, el software pasa por la ultima validación
antes de ser configurado para su despliegue, esta última validación se
encarga de verificar que el software cumpla con todos los requisitos y
esté listo para entrar a producción, logrando un despliegue seguro,
controlado y estale.
6. Deploy
a. Descripción
En esta fase, el software pasa al entorno de producción o a entornos de
staging como preproducción para pruebas adicionales. El despliegue
tambien se realiza de manera automatizada minimizando los errores
humanos, logrando lanzamientos seguros y continuos que mantienen la
fiabilidad del sistema.
7. Operate
a. Descripción
La fase de operación está dedicada en mantener ese despliegue en
funcionamiento de manera estable, eficiente y segura en el entorno de
producción. Incluye administración de la infraestructura, soporte y
resolución de problemas capturados con el monitoreo continuo en
tiempo real, permitiendo que los usuarios tengan una experiencia
agradable y continua con el producto.
8. Monitor
a. Descripción
La fase de monitoreo está enfocada en observar el rendimiento y
disponibilidad del software en producción. A través de herramientas que
permiten el monitoreo, los equipos detectan problemas en tiempo real y
recopilan métricas importantes sobre cómo se está comportando el
sistema, analizando en tiempo real y tambien guardando un histórico
sobre cómo se ha comportado el sistema, observando tendencias
patrones que permitan una rápida respuesta ante posibles problemas,
asegurando la estabilidad continua del sistema.
2.6.Recursos en DevOps
La implementación de DevOps se apoya en distintas herramientas especializadas
en este método que permiten las actividades claves de DevOps, es decir, la
automatización, la colaboracion continua y la eficiencia en los procesos. A
continuación, se presentan los recursos clave organizados por sus funciones
específicas:
1. Herramientas de CI/CD
a. Descripción
Estas herramientas permiten automatizar todo lo que involucra la
integración y despliegue continuo de código, asegurando que ellos
cambios se prueben y desplieguen de manera continua y segura
b. Ejemplos
Jenkins, GitLab CI, GitHub Actions, CircleCI y Bamboo (Atlassian).
Jenkins destaca por su flexibilidad y gran cantidad de plugins que
permiten personalizar los pipelines de CI/CD.
3. Herramientas de Contenedorización
a. Descripción
Facilitan el empaquetado de aplicaciones junto con sus dependencias,
garantizando su ejecución en diferentes entornos sin conflictos
b. Ejemplos
Docker es el estándar de contenedorización, permitiendo a los equipos
empaquetar aplicaciones y sus dependencias en contenedores ligeros y
portátiles. Podman es una alternativa útil, especialmente en entornos sin
un daemon centralizado.
2.7.Prácticas en DevOps
Las prácticas en DevOps representan procesos, estrategias y métodos clave que
ayudan a los equipos a implementar DevOps de manera eficiente. Estas practicas
abarcan tambien enfoques culturales que ayudan a crear una sinergia entre los
equipos de desarrollo y operaciones, promoviendo el trabajo en equipo, la
colaboración, y la mejora continua. A continuación, se presentan algunas de las
practicas fundamentales en DevOps:
1. Automatización de pruebas
a. Descripción
La automatización de pruebas garantiza que cada versión del software
sea probada de forma rápida y eficaz. Incluye pruebas unitarias, de
integración, de regresión y funcionales, lo que permite identificar
errores antes de que lleguen a producción.
b. Importancia
Automatizar las pruebas minimiza el riesgo de errores en el software y
acelera los lanzamientos, permitiendo que los equipos implementen
cambios de manera continua y confiable.
6. Monitoreo Proactivo
a. Descripción
El monitoreo proactivo permite que los equipos puedan detectar y
resolver problemas antes de que estos afecten a los usuarios finales, este
monitoreo no solo se da en entorno de producción si no que se debe
realizar un monitoreo durante todas las etapas del proceso de desarrollo
de software, teniendo un control no solo de los productos ya
desplegados si no que tambien de los productos en planeación,
desarrollo o en cualquier otra fase de DevOps.
3. Conclusión
DevOps se ha convertido en un método muy utilizado y relativamente moderno para
desarrollo de software, su misión principal es lograr derribar ese muro de la confusión
generado por los métodos tradicionales de desarrollo de software, promoviendo la
colaboracion continua, el agilismo mediante la automatización ya sea de pruebas o de
despliegue, minimizando los errores humanos y mejorando la calidad del software en
cada uno de los ciclos de desarrollo. Al implementar DevOps de manera adecuada, los
equipos de desarrollo y operaciones rompen ese muro de la confusión, colaborando
entre ellos, dándose una comunicación efectiva que facilita el flujo del trabajo,
mejorando la eficiencia con respecto a los tiempos de entrega, lo cual resulta en un
producto de mayor calidad y con lanzamientos mas frecuentes, seguros y rápidos.
Sin embargo, aunque DevOps ha tenido una buena aceptación como método de
desarrollo de software, no esta libre de desafíos, entre los principales encontramos que
hay una notoria resistencia al cambio cultural dentro de las empresas, dificultad para
integrar herramientas de automatización y la complejidad de configurar infraestructuras
consistentes. Superar estos desafíos es clave para lograr fomentar DevOps, pero
superarlos no es un proceso que se dé de un día para otro, deben crearse estrategias
graduales que primero antes que todo fomenten esa cultura colaborativa, de trabajo en
equipo y comunicación efectiva, hablando en términos técnicos, la capacitación de los
equipos en las herramientas y practicas necesarias para trabajar con DevOps es
supremamente necesario, esto incluye capacitación en prácticas de automatización,
herramientas de CI/CD, herramientas de monitoreo proactivo que lleven hacia un
camino de agilismo, seguridad, transparencia y eficiencia operativa. Generando una
estrategia clara, las empresas pueden sacarle el máximo provecho a DevOps,
optimizando y mejorando los procesos de desarrollo, ofreciendo soluciones innovadoras
y de alta calidad a los usuarios.
4. Referencias
Amazon Web Services. (s.f.). Obtenido de
https://aws.amazon.com/es/devops/continuous-delivery/
Atlassian. (s.f.). Atlassian. Obtenido de https://www.atlassian.com/devops/what-
is-devops
Atlassian Automatizacion De Pruebas. (s.f.). Obtenido de
https://www.atlassian.com/es/devops/devops-tools/test-automation
Atlassian Entrega Continua. (s.f.). Obtenido de
https://www.atlassian.com/continuous-delivery
Atlassian Monitoreo DevOps. (s.f.). Obtenido de
https://www.atlassian.com/es/devops/devops-tools/devops-monitoring
Attlassian Control de Versiones. (s.f.). Obtenido de
https://www.atlassian.com/es/git/tutorials/what-is-version-control
Attlassian Integracion Continua. (s.f.). Obtenido de
https://www.atlassian.com/es/continuous-delivery/continuous-integration
Gene Kim, J. H. (2021). The DevOps Handbook: How to Create World-Class
Agility, Reliability, & Security in Technology Organizations. IT Revolution
Press.
GitLab. (s.f.). Obtenido de https://about.gitlab.com/es/topics/devops/devops-
test-automation/
GitLab CI. (s.f.). Obtenido de https://about.gitlab.com/es/topics/ci-cd/benefits-
continuous-integration/#what-are-the-benefits-of-continuous-integration-
for-dev-ops-teams
HashiCorp. (s.f.). Obtenido de https://www.hashicorp.com/resources/what-is-
infrastructure-as-code
Nicole Forsgren, J. H. (s.f.). Accelerate: The Science of Lean Software and
DevOps.
Snyk DevSecOps. (s.f.). Obtenido de https://snyk.io/series/devsecops/