Home » Cómo empezar como DevOps – Parte 3
desarrollo profesional como devops

Cómo empezar como DevOps – Parte 3

Creí conveniente juntar el aprendizaje de Cloud e Infraestructura como Código en un único paso. ¿Por qué? Pues, hay una relación de dependencia muy fuerte entre ellas. Esto se debe a que...

Si ya leíste la primera y segunda parte de “Cómo empezar como DevOps”, pues te felicito. Se nota que estás realmente interesado en esta línea de carrera.

Paso 4 – Aprende Cloud e Infraestructura como Código

Creí conveniente juntar ambos temas en un único paso. ¿Por qué? Pues, hay una relación de dependencia muy fuerte entre ellas. Esto se debe a que las tecnologías de Cloud nacieron para dar agilidad, entre otros beneficios. Entonces, no tiene sentido aprender una tecnología moderna para gestionarla de forma manual como se hacía otras cosas hace 20 años.

Cloud Computing

La nube llegó para quedarse. Y eso es un hecho. Atrás quedaron los planes de implementar tu propio Data Center. También, la gestión y mantenimiento del diverso parque informático ya va siendo cosa del pasado. Entonces, ahora solo queda decidir y tomar acción sobre tu aprendizaje de la nube.

Amazon Web Services, Azure y Google Cloud Platform

Tres son los claros proveedores dominantes en el mercado: Amazon Web Services (AWS), Azure y Google Cloud Platform (GCP). Si escoges cualquiera de ellos para empezar, ya es una buena elección. Sin embargo, sugiero empezar con AWS y quizá especializarte más en esta plataforma. Esto se debe a que Amazon Web Services sigue siendo todavía la más usada en el mercado. Por lo tanto, más empresas demandan profesionales que conozcan dicha nube.

Cada proveedor de Cloud ofrece decenas de servicios diferentes. Por ello, es imposible pensar que uno puede aprender todo eso. Sin embargo, sí recomiendo enfocarse en IaaS (Infrastructure as a Service) y PaaS (Platform as a Service). Aún así, estas dos categorías pueden ser muy extensas. Por eso mismo, me parece mejor empezar por dominar los servicios de la lista siguiente:

  • Infraestructura base (Regiones, zonas de disponibilidad)
  • Redes (VPCs, VNets, subredes, routing, gateways)
  • Cómputo (Máquinas virtuales, Almacenamiento, Snapshots, Imágenes)
  • Balanceadores (De red y aplicación) y Autoscaling
  • Bases de datos PaaS (MySQL, SQL Server, Postgres)
  • DNS (Zonas y registros DNS)
  • Almacenamiento de objetos (Blob storage, S3 o Cloud Storage)

Si ya logras tener un dominio de estas primeras áreas, ya puedes estar mejor preparado para trabajar con otros servicios como CDN (Cloud Delivery Network), Serverless (Funciones y Bases de datos NoSQL), Caché (Redis y Memcached gestionados), Colas, WAFs, entre otros. La experiencia laboral te llevará a conocer más servicios en diversas plataformas de Cloud.

Infraestructura como Código y GitOps

Como mencionaba en Cómo comenzar como DevOps – Parte 1, el primer paso es aprender y acostumbrarse a programar. Eso incluye el estar familiarizado con editores de código y el uso de Git. Por esto, en este punto ya no debería ser una sorpresa el hablarte de más codificación.

La Infraestructura como Código, conocido como IaC (Infrastructure as Code), es una práctica que permite gestionar con código lo mismo que se hace manualmente de forma gráfica. A través de un lenguaje, uno define en texto los recursos a crear y sus atributos. Así, se reduce el tiempo usado para crear recursos en la nube y de forma consistente.

Si estás aprendiendo Cloud Computing, aprovecha en saber cómo automatizarlo. Por ejemplo, si aprendiste sobre Amazon S3, intenta ahora crear unos buckets usando IaC.

Herramientas comunes de Infraestructura como Código

Herramientas IaC son varias: Terraform, Ansible, Cloudformation, Chef, Puppet, Salt, Pulumi, entre otras. No obstante, recomiendo enfocarse en Terraform y Ansible. Ambas son muy usadas y demandadas en el mercado, gracias a su gran comunidad de usuarios y amplias funcionalidades.

Terraform es una herramienta Open Source que principalmente se usa para el aprovisionamiento de infraestructura. Trabaja con múltiples proveedores de Cloud Computing (AWS, Azure, GCP, Oracle Cloud, etc.), y con otras varias plataformas como DataDog, MySQL, New Relic, Hashicorp Vault, y un largo etcétera. Puedes leer un poco más de Terraform aquí.

Ansible pertenece a la categoría de Configuration Management Tools. Si bien esta herramienta también puede usarse para aprovisionar recursos en la nube, su fortaleza está en gestionar configuraciones sobre plataformas variadas como Sistemas Operativos (Linux y Windows) o equipos de redes (F5, Aruba, Cisco, etc). Por ejemplo, la gestión de usuarios, software y configuración de aplicaciones es algo que Ansible sabe hacer muy bien.

Paso 5 – Aprende Contenedores y Kubernetes

Toda aplicación Web moderna no se escapa de la arquitectura de microservicios y ello conlleva el uso de contenedores. ¿Has escuchado sobre Docker? Pues sí, es indispensable saber trabajar con contenedores y Docker es la mejor alternativa para ello. Instálate Docker Desktop y empieza a experimentar en tu equipo.

Docker sigue siendo el rey

Aprende los conceptos de Docker, cómo construir tus propias imágenes para empaquetar tu aplicación y cómo parametrizar los contenedores. También, conoce qué es Docker Compose y por qué es también casi la herramienta de facto para desarrolladores.

Conforme avances en tu experiencia con contenedores, aprende a instalar aplicaciones de terceros basados en su versión para Docker. Por ejemplo, si necesitas desplegar un servidor MySQL para pruebas, ya no lo instales en tu máquina física o en una máquina virtual. En su lugar, descarga la imagen Docker de MySQL y familiarízate con esta forma de uso. Luego, crea tu propio archivo docker-compose.yml para levantar MySQL desde un contenedor.

Cuando ya necesites desplegar contenedores en Producción, usar Docker Compose ya no es una opción recomendable. En su lugar, debes pensar en soluciones de orquestación de contenedores como Docker Swarm, Kubernetes, Nomad, OpenShift, Apache Mesos, entre otros. Estas plataformas hacen una gestión integral de múltiples contenedores, réplicas (instancias) múltiples, monitoreo de rendimiento, escalamiento, gestión de almacenamiento, entre otros.

Es tiempo de Kubernetes

Kubernetes es la plataforma más completa y usada para la orquestación de contenedores. Es también medianamente compleja, pero vale la pena por los enormes beneficios que trae.

No te enfoques en querer comprender todo Kubernetes desde cero, pues puede ser arduo. Hazlo poco a poco y enfócate primero más en la práctica que en la teoría. Aprende los conceptos básicos mínimos como el cluster, sus nodos y los tipos de objetos más comunes (Pod, Deployment, Ingress, Service, ConfigMaps, Secrets, Persistent Volume y Persistent Volume Claim) y su gestión con la herramienta kubectl. Conforme ganes experiencia, procura revisar de nuevo los conceptos teóricos e ir más a fondo con ellos. Luego vuelve a la práctica con una mejor base teórica.

Arquitectura de Kubernetes

Para este punto, ya estarás trabajando con alguna plataforma de Cloud y seguramente puedes trabajar con servicios gestionados de Kubernetes. Entre ellos están EKS en AWS, AKS en Azure y GKE en Google Cloud. Sin embargo, date un tiempo en experimentar cómo desplegar tu propio cluster desde cero usando herramientas como kubeadm, KOps o Kubespray. Esto te dará un aprendizaje más completo y profundo de gran valor para tu carrera.

Finalmente, ve un paso más allá y busca familiarizarte con desplegar aplicaciones en Kubernetes, ya sea usando directamente los archivos de manifiesto en YAML, o usando una herramienta como Helm. Si te gusta Terraform, te informo que también hay un provider para Kubernetes.

Lo que viene próximamente

En un próximo post, publicaré la 4ta y última parte de esta serie de artículos sobre Cómo empezar como DevOps. Incluiré los 3 temas principales que aún no he mencionado: Monitoreo, Bases de datos y Pipelines CI/CD.

Post navigation

Deja un comentario

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *