Saltar al contenido

9 habilidades esenciales para los ingenieros de AWS DevOps

Los ingenieros de AWS DevOps cubren mucho terreno. Los buenos mantienen un conjunto de habilidades interdisciplinarias que toca la nube, el desarrollo, las operaciones, la entrega continua, los datos, la seguridad y más.

Estas son las habilidades que los ingenieros de AWS DevOps deben dominar para poder hacer su papel.

9 habilidades esenciales para los ingenieros de AWS DevOps
9 habilidades esenciales para los ingenieros de AWS DevOps

1. Entrega continua

Para este papel, necesitarás una profunda comprensión de la teoría de la entrega continua (CD), los conceptos y la aplicación de los mismos en el mundo real. No sólo necesitarás experiencia con herramientas y sistemas de CD, sino que también necesitarás un conocimiento íntimo de su funcionamiento interno para que puedas integrar diferentes herramientas y sistemas para crear tuberías de entrega cohesivas y plenamente funcionales. Comprometerse, fusionar, construir, probar, empaquetar y desplegar el código, todo ello entra en juego dentro del proceso de lanzamiento de software.

Si utiliza los servicios nativos de AWS para sus tuberías de entrega continua, tendrá que estar familiarizado con AWS CodeDeploy, AWS CodeBuild y AWS CodePipeline. Otras herramientas y sistemas de CD con las que puede necesitar estar familiarizado incluyen GitHub, Jenkins, GitLab, Spinnaker, Travis u otros.

2. Nube

Se espera que un ingeniero de AWS DevOps sea un experto en servicios, herramientas y mejores prácticas de AWS. Los equipos de desarrollo de productos se dirigirán a usted con preguntas sobre los diversos servicios y para pedirle recomendaciones sobre qué servicio utilizar y cuándo. Como tal, deberá tener un conocimiento completo de los variados y numerosos servicios de AWS, sus limitaciones y las soluciones alternativas (no relacionadas con AWS) que podrían servir mejor en situaciones particulares.

Con su experiencia en la computación en nube, usted diseñará y construirá sistemas nativos en la nube, luchará contra la complejidad de los sistemas en la nube y se asegurará de que se sigan las mejores prácticas al utilizar una amplia variedad de ofertas de servicios en la nube. También sopesará los pros y los contras de la utilización de servicios IaaS frente a PaaS y otros servicios gestionados al diseñar y recomendar soluciones.

3. Observabilidad

Registrando, monitoreando y alertando, ¡oh Dios! Enviar una nueva aplicación a producción es genial, pero es aún mejor si sabes lo que está haciendo en realidad. La observabilidad es un área de trabajo crítica para este papel. Un ingeniero de AWS DevOps debe asegurarse de que una aplicación y los sistemas en los que se ejecuta implementen soluciones adecuadas de monitorización, registro y alerta. El APM (Application Performance Monitoring) puede ayudar a desvelar conocimientos críticos sobre el funcionamiento interno de una aplicación y facilitar la depuración del código personalizado. Las soluciones APM incluyen New Relic, AppDynamics, Dynatrace y otras. En el lado de AWS, usted debe tener un profundo conocimiento de Amazon CloudWatch (incluyendo CloudWatch Agent, CloudWatch Logs, CloudWatch Alarms y CloudWatch Events), AWS X-Ray, Amazon SNS, Amazon Elasticsearch Service y Kibana. Otras herramientas y sistemas que puede utilizar en este espacio incluyen syslog, logrotate, Logstash, Filebeat, Nagios, InfluxDB, Prometheus y Grafana.

4. Infraestructura como código

Un ingeniero de desarrollo de AWS se asegurará de que los sistemas bajo su responsabilidad se construyan de forma repetible, utilizando herramientas de Infraestructura como Código (IaC) como CloudFormation, Terraform, Pulumi, y AWS CDK (Cloud Development Kit). El uso de IaC asegura que los objetos de la nube se documenten como código, con control de versiones, y que puedan ser reemplazados de manera confiable usando una herramienta apropiada de aprovisionamiento de IaC.

5. Gestión de la configuración

En el lado de la IaaS (infraestructura como servicio) para las máquinas virtuales, una vez que se han lanzado las instancias ec2, su configuración y puesta en marcha debe ser codificada con una herramienta de gestión de la configuración. Algunas de las opciones más populares en este espacio incluyen Ansible, Chef, Puppet y SaltStack. Para las organizaciones que tienen la mayor parte de su infraestructura ejecutando Windows, puede encontrar la Configuración de estado deseado de Powershell (DSC) como la herramienta de elección en este espacio.

6. Contenedores

Muchas organizaciones modernas están migrando de los modelos tradicionales de despliegue de aplicaciones que se están empujando a las máquinas virtuales, a un paisaje de sistemas en contenedores. En el mundo contenedorizado, la administración de la configuración se vuelve mucho menos importante, pero también hay todo un nuevo mundo de herramientas relacionadas con los contenedores con las que tendrá que estar familiarizado. Algunas de estas herramientas incluyen Docker Engine, Docker Swarm, systemd-nspawn, LXC, registros de contenedores, Kubernetes (que incluye docenas de herramientas, aplicaciones y servicios dentro de su ecosistema) y muchas más.

7. Operaciones

Las operaciones informáticas se asocian más a menudo con el registro, la vigilancia y la alerta. Estas son las cosas que se necesitan para operar, ejecutar o administrar adecuadamente los sistemas de producción. Las hemos cubierto en nuestra sección de observabilidad anterior. Otra gran faceta del papel de las operaciones es responder, solucionar problemas y resolver los problemas a medida que se producen. Con el fin de responder eficazmente a los problemas y resolverlos rápidamente, usted necesitará tener experiencia trabajando y solucionando problemas con sistemas operativos como Ubuntu, CentOS, Amazon Linux, RedHat Enterprise Linux y Windows. También necesitarás estar familiarizado con software de middleware común como servidores web (Apache, nginx, Tomcat, Nodejs y otros), balanceadores de carga y otros entornos de aplicaciones y tiempos de ejecución.

La administración de la base de datos también puede ser una función importante de la función de (Dev)Ops. Para tener éxito aquí, necesitará tener conocimientos sobre almacenes de datos como PostgresQL y MySQL. También deberías ser capaz de leer y escribir algún código SQL. Y cada vez más, deberías estar familiarizado con almacenes de datos NoSQL como Cassandra, MongoDB, AWS DynamoDB y posiblemente incluso una base de datos de gráficos o dos!

8. Automatización

Eliminar el trabajo es la ética del ingeniero de fiabilidad del sitio, y esta misión es muy aplicable al papel de ingeniero de DevOps también. En su búsqueda de la automatización de todas las cosas, necesitará experiencia y conocimientos con lenguajes de scripting como bash, utilidades GNU, Python, JavaScript y PowerShell para el lado de Windows. Deberías estar familiarizado con cron, AWS Lambda (el servicio de funciones sin servidor), CloudWatch Events, SNS y otros.

9. Colaboración y comunicación

Por último (pero no menos importante) está el aspecto cultural de DevOps. Mientras que el término «DevOps» puede significar una docena de cosas diferentes para una docena de personas diferentes, uno de los mejores puntos de partida para hablar de este cambio en nuestra industria es CAMS: cultura, automatización, medición y compartir. DevOps se trata de romper las barreras entre las operaciones de IT y el desarrollo. En esta era moderna de DevOps, ya no tenemos a los desarrolladores tirando código «por encima del muro» a las operaciones. Ahora nos esforzamos por ser una gran familia feliz, con todos los papeles invertidos en el éxito del código, las aplicaciones y el valor que se entrega a los clientes. Esto significa que los ingenieros de (Dev)Ops necesitan trabajar muy de cerca con los ingenieros de software. Esto requiere excelentes habilidades de comunicación y colaboración para cualquier persona que desee desempeñar este papel clave de un ingeniero de (DevOps).

Averigua cómo te comparas con otros en el rol de ingeniero de DevOps obteniendo tu Coeficiente Intelectual de Rol.