Algunas características que todo DevOps debe tener
Published: 2021-11-23 17:15:47

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yr13rs1sl550f1co1ycl.png)

## Empecemos explicando en qué consiste **“DevOps”**. 

Esta cultura busca acercar a los equipos de desarrollo y operaciones, optimizando los procesos durante todo el ciclo de vida del desarrollo de software, desde la codificación hasta el mantenimiento. 

Por ello, **muchas empresas buscan un perfil DevOps:** 
un profesional con unas habilidades y conocimientos en una amplia variedad de temas, desde el desarrollo de software hasta las operaciones de infraestructura. Actualmente, no existe una formación oficial para convertirse en ingeniero DevOps por ello a continuación detallamos algunas habilidades y conocimientos que consideramos que debería tener este perfil:

**Experiencia con lenguajes de scripting**

Para adentrarnos en el mundo DevOps es muy importante tener una base sólida de programación aún sin ser desarrolladores expertos. Los lenguajes más relevantes a día de hoy para tareas relacionadas con DevOps son **Bash y Python**, aunque recomendamos tener conocimientos de algún lenguaje adicional como por ejemplo: **Go, C, C++, PHP, Ruby, Node.js o PowerShell**. 

Aunque no vayamos a programar sí necesitaremos conocer las tecnologías con las que trabajan los desarrolladores para poder realizar la implementación de las pipelines de integración, así como desarrollar nuestras propias herramientas para la automatización de algunos procesos.

**Contenedores y orquestación de contenedores** 

Muchas empresas abandonan los modelos tradicionales de despliegue de aplicaciones para realizar una transición a un entorno basado en microservicios (generalmente sistemas en contenedores). 

Las ventajas del uso de contenedores son múltiples, desde asegurar que lo mismo que se prueba en desarrollo funcionará exactamente igual en todos los entornos, hasta automatizar más fácilmente el despliegue del código en producción. 

Por ello, es importante conocer las herramientas para la administración y gestión de contenedores, algunas de estas herramientas incluyen: **Docker, Kubernetes, Docker Swarm, ECS y muchas más**. 

**Security Skills** 

Este es uno de los puntos que añaden más valor como profesional DevOps. Los ingenieros deben tener las habilidades para escribir código seguro para proteger las aplicaciones de ataques no deseados. Unos tiempos de desarrollo más rápidos conllevan un mayor riesgo de que se introduzcan más vulnerabilidades en el código.

**Servicios web**

Los servidores web se utilizan para satisfacer las solicitudes de contenidos de un sitio web por parte de los usuarios. Si estás interesado en el mundo DevOps seguramente hayas escuchado que existen diferentes tipos de servidores web, por ello os mencionamos los más conocidos: Nginx, Apache, IIS y Tomcat.

**Implementación de infraestructura como código** 

Independientemente del entorno o del sistema operativo, un buen DevOps debe tener conocimientos sólidos en la administración de infraestructura y sistemas operativos, y ser capaz de automatizar el despliegue y configuración de la misma usando herramientas de infraestructura como código. Las herramientas más relevantes en este sector son **Terraform y CloudFormation**, aunque esta última solo sirve para AWS.

**Automatización de configuración como código** 

Ya sea para aprovisionar aplicaciones y sus configuraciones, crear usuarios, recursos, automatizar las tareas propias de la administración de sistemas; las herramientas de automatización de configuración permiten mantener un estado consistente a lo largo del tiempo y de la infraestructura gestionada. Algunas de las herramientas más populares para esta automatización son Ansible, Chef, Puppet y Salt.

**Implementación de despliegues CI/CD** 

Para este puesto necesitarás un profundo conocimiento de la esencia de DevOps: la implementación de despliegues, conocido como CI/CD. Todo el código se fusiona y, finalmente, se ejecuta la construcción y las pruebas se automatizan. El despliegue de producción requerirá sobre todo la creación de nuevos contenedores, automatizando los procesos mediante scripts. Algunas herramientas que debe conocer son: **Gitlab CI, GitHub Actions, Bamboo, Azure DevOps, Jenkins, Travis CI, TeamCity y Circle CI**

**Cloud Computing** 

**La nube y los DevOps generalmente van juntos de la mano**. De un ingeniero DevOps se espera que sepa manejar las distintas plataformas cloud y las herramientas de las mismas para adaptarse mejor a las necesidades, y buscar soluciones para cada cliente o proyecto. Además, también deberá conocer las diferentes plataformas en la nube para sopesar los pros y los contras de utilizar servicios IaaS frente a PaaS, y otros servicios gestionados para diseñar y recomendar soluciones. Plataformas como **AWS, Azure, Google Cloud Platform**, etc deben ser herramientas conocidas por un ingeniero DevOps. 

**Monitorización de la infraestructura** 

Una de las partes fundamentales del trabajo de un DevOps es la de saber qué ocurre en todo momento en la aplicación una vez finaliza su etapa de desarrollo. 

Por ello, monitorizar la infraestructura es una tarea esencial, ya que permite visualizar los eventos y recibir alertas en tiempo real. Algunas de las herramientas DevOps para la monitorización, que ayudan a los equipos de desarrollo y operaciones a trabajar juntos de forma eficaz, son: **Prometheus, Grafana, Sensu, y New Relic Infrastructure**.

**Metodologías ágiles**

Un DevOps debe dominar las metodologías ágiles que le permitan realizar un desarrollo iterativo e incremental. Esta metodología tiene como eje central el desarrollo iterativo con enfoque incremental y evolutivo. Esto quiere decir que el desarrollo del software es dividido o fragmentado en sprints o tareas más pequeñas. Por ello, existen metodologías como Kanban o Scrum, y herramientas que las ofrecen o soportan, como Jira.

**Soft skills**

No basta con ser bueno en codificación y automatización. Un perfil DevOps implica también que debe tener soft skills como la comunicación, flexibilidad, aprendizaje, entre otras. Como ingeniero de DevOps, tienes que colaborar con los desarrolladores, el equipo de QA, los equipos de operaciones y las partes interesadas de alto nivel de la empresa. También puedes tener que involucrar a terceros y, por supuesto, tener en cuenta al cliente final. Por esa razón, las soft skills son igual de importantes que las habilidades técnicas.

**Colaboración y Comunicación** 

Dado la posición donde se encuentra, un ingeniero DevOps debe tener la capacidad de trabajar en equipo, por ello la colaboración y la comunicación son cruciales. Un ingeniero DevOps debe proporcionar una funcionalidad cruzada, es decir, romper las barreras entre las operaciones de TI y el desarrollo. Esto significa que los ingenieros DevOps tienen que trabajar estrechamente con los ingenieros de software. Esto requiere excelentes habilidades de comunicación y colaboración para cualquier persona que desee desempeñar esta función clave de un ingeniero de DevOps.

**Flexibilidad** 

Para un ingeniero DevOps una de las características más destacables es ser flexible. Tener la habilidad de desarrollar continuamente e integrar nuevos sistemas y operaciones adaptándose en todo momento a los cambios en el código. Además los ingenieros deben sentirse cómodos trabajando en diferentes áreas según el momento lo requiera en el proceso de desarrollo de la aplicación.


**En conclusión**, un perfil DevOps puede ser un desarrollador que se haya adentrado en el mundo de la administración de sistemas, obteniendo experiencia en la gestión de sistemas operativos, networking, aprovisionamiento de software y configuración, etc; o bien puede ser que parta de ser un sysadmin que se haya adentrado en el mundo del desarrollo conociendo al menos un par de lenguajes de programación y los requerimientos para hacer funcionar el software. Cómo ves, el perfil de ingeniero DevOps es muy polivalente. 

> “Considero que un buen DevOps es aquel que tiene conocimientos de ambos mundos independientemente de cual sea su origen” 

**Linkedin** [Link](https://www.linkedin.com/in/roxsross/)