Empezar siempre es abrumador
De un tiempo para acá el término SRE ha ido sonando cada vez más en los círculos tecnológicos. Poco a poco, la gente que quiere incorporarse a este sector ( ya sea después de estudiar una carrera o un FP o porque quieren cambiar de rumbo laboral como lo hice yo) tiene mucho más conocimiento al alcance de su mano. Ya sabemos que tecnología no es solo desarrollo, que no todo es programación y que el sector acepta (y necesita) una gran variedad de roles.
A pesar de eso, puede ser muy abrumador intentar abrirte paso en este sector y a veces esa “sobredosis” de información y recursos puede ser contraproducente. En este artículo quiero poner un poco de orden y esbozar una suerte de learning path para aquellas personas que quieran acabar trabajando como Site Realiability Engineer.
Lo primero de todo, como ya comenté en mi anterior articulo SRE es un rol relativamente moderno y sobre todo híbrido. Empezó en Google con desarrolladores de software a los que les enseñaron sistemas pero desde entonces el panorama ha ido cambiando mucho. Hay que tener muy en cuenta que solo Google puede ser Google. En cualquier caso a grandes rasgos nos podemos encontrar dos tipos de perfiles de gente que quiere convertirse en SRE: personas con experiencia y base de conocimiento en desarrollo de software pero a las que les faltan conocimientos de sistemas o infraestructura y por otro lado personas con conocimientos y experiencia como Administradores de Sistemas o similar pero que no tienen conocimientos de la parte de desarrollo.
Aquí creo que es importante señalar que al tratarse de un rol transversal y complejo en mi opinión no es factible focalizarte en convertirte en SRE sin haber trabajando antes en el sector tecnologico en un rol que pueda servirte de trampolín. Hoy en día todavía hay muy pocas ofertas para SRE Jr e incluso las pocas empresas que buscan ese perfil, cuentan con encontrar candidatos que aunque puedan no tener experiencia como SRE, sí cuentan con cierta experiencia en el sector. Así que aqui va mi primer consejo: busca un primer puesto de entrada que te permita contar con una experiencia laboral en tu CV. Qué puesto será dependerá de tu situación personal.
En mi caso yo empecé estudiando Administración de Sistemas Linux (una de las patas importantes a la hora de convertirte en SRE) así que mis primeros trabajos fueron puestos bastante precarios en soporte y monitorización de sistemas, nada de glamour, muchas horas y muy mal pagadas. A partir de allí, a base de seguir formándome y ya con una idea más clara del sector y algo de experiencia laboral a mis espaldas, pude optar a puestos de DevOps Jr y SRE Jr que es lo que finalmente me permitió empezar en este rol.
Ordena tu aprendizaje
En cualquier caso vengas de donde vengas quiero traerte un poco de orden a la hora de focalizar tus esfuerzos. Hay muchas cosas que puedes aprender, muchas herramientas, muchos “palabros” y movimiento constante…pero al principio lo que más te tiene que importar es centrar un camino de conocimiento e intentar no apartarte de él por muchos colorinchis que veas por el camino.
Aqui te voy a resumir algunos de los conocimientos que yo he ido adquiriendo por el camino, siempre teniendo en cuenta que yo partía de un cero absoluto, un desconocimiento descarado de la tecnología y era una persona que ni siquiera sabía que Linux existía. En cualquier caso creo que si estás pensando en convertirte en SRE todos estos conocimientos van a ser muy útiles para ti.
Disclaimer: ni se te ocurra pensar que para ser SRE tienes que saber de todo esto nivel experto. Te tienen que sonar los términos y tienes que haber aprendido cosas sobre el tema pero todxs estamos aprendiendo todo el rato. Huye de los sitios en los que te digan que tienes que saberte todo esto de memoria. Es un Work In Progress constante con visitas muy frecuentes a Google y chatGPT.
Linux y administración de sistemas
Como ya he comentado antes, es una pata muy importante a la hora de convertirte en SRE. Debes saber cómo funciona un sistema operativo como Linux, cómo configurarlo y debes tener soltura a la hora de moverte por la consola. Esto último es esencial porque aunque como SRE ya no tengas que funcionar a un nivel tan bajo del sistema operativo (la nube y sus maravillas) sí que vas a trabajar en consola el 90% de tu tiempo asi que es importante que estés comodx con ella.
Muchos de esos conocimientos los puedes adquirir estudiando para la certificación más reconocida en cuanto a sistemas se refiere: LPIC. Puedes encontrar mucha información en internet y los materiales para prepararse la certificación en su página oficial. Un inciso importante: a no ser que ya vengas de administrar sistemas (en cuyo caso la mayoría de estos conocimientos ya los habrás adquirido), no te recomiendo meterte en mucha profundidad en este tema. Te recomendaria estudiar para el LPIC-1 (sin necesidad de sacarte la certificación) y quizá echarle un ojo al LPIC-2 pero siendo consciente de que baja a mucha mayor profundidad de la que vas a necesitar en tu día a día.
Relacionado con el conocimiento de Linux también está el conocimiento de cómo funcionan algunos de los servicios básicos y como interactuar con servidores. En cursos como este de Udemy puedes aprender las bases y de forma natural también acabarás aprendiendo conceptos de networking y redes cuando quieras comunicar un par de servicios entre sí, levantes una máquina virtual o quieras llegar al servidor que levantes en un proveedor externo.
Finalmente y no menos importante, deberás sentirte comodx con Bash. Te sorprendería cuántas veces te puede salvar el pellejo en tu carrera profesional, lo versátil que es y lo mucho que lo puedes usar en tu día a día. Además, en mi opinión es una forma interesante de aprender la lógica de la programación y empezar a “amueblar tu cerebro para pensar en tech”. Como con todo tienes muchísimos recursos en internet pero por poner algunos ejemplos tienes el manual Learn Bash The Hard Way de Ian Miell , la plataforma de Exercism donde puedes practicar no sólo Bash sino muchos otros lenguajes de forma gratuita y muchos cheatsheets como este para ayudarte por el camino.
La nube
Como ya he comentado en numerosas ocasiones, el rol de SRE no existe lejos de la nube asi que adquirir conocimientos de lo que es, lo que aporta y cómo podemos trabajar con ella es esencial.
El mayor problema a la hora de aprender sobre la nube cuando no estás trabajando en una empresa en la que puedas adquirir experiencia práctica es el tema económico. A todxs nos da reparo meter nuestra tarjeta de crédito para abrir una cuenta en cualquiera de los proveedores de nube pública porque sabemos que los gastos en los que podemos incurrir sin querer pueden ser importantes, sobre todo al principio cuando no sabemos muy bien lo que estamos haciendo.
En cualquier caso todos los grandes proveedores cuentan con ciertas ventajas que ofrecen para la gente que está aprendiendo asi que solo tienes que investigar un poco y/o preguntar en las comunidades donde participes.
En este punto mi consejo es que una vez más no te disperses. Que elijas un proveedor de nube e investigues sobre él. Hoy en día los mas grandes son : AWS, Azure y GCP. En su momento yo decidí centrarme en AWS porque tenía la grandísima mayoría de cuota del mercado (algo que en menor medida sigue vigente hoy en día) pero tú puedes optar por el proveedor que más te atraiga o donde veas que tienes mejor entrada.
Si hablamos de AWS tienen una documentación super extensa y más que decente y muchos recursos para aprender asi como plataformas como AWS Skill Builder en las que tienes contenido tanto gratuito como de pago y diferentes path para organizar tu aprendizaje. Aparte de eso la comunidad de AWS está creciendo mucho en los úitimos años y en España existen varios grupos oficiales de usuarios y usuarias. Son espacios gestionadas totalmente por la comunidad, con cierto apoyo por parte de AWS y que organizan charlas y workshops en la ciudad a la que pertenecen. Puedes encontrar la lista entera aqui y pasarte a saludar por el grupo de Sevilla que organizo yo :).
Infraestructura como código y contenedores
En el learning path de un SRE no pueden faltar la IaC y los conocimientos de contenedores. Por el lado de la infraestructura como código Terraform sigue siendo el estandar de facto aunque su reputación se ha visto bastante afectada por la polémica de cambio de licencia y la aparición de OpenTofu. En cualquier caso te recomiendo que eches un ojo a la documentacion y los recursos que tienen porque me parecen muy bien redactados y te suelen dar la mayoría de información que necesitas. Además de esto puedes prepararte con el material de las certificaciones que tienen. Yo siempre defiendo que lo mejor es estudiar para una certificación aunque luego no hagas el examen porque eso te da un marco teorico acotado y eso se agradece.
Al margen de Terraform hay muchas variables que puedes tener en cuenta como CloudFormation (la IaC nativa de AWS), Terragrunt (un wrapper por encima de Terraform), Pulumi etc…pero como ya he dicho en varias ocasiones, te recomiendo seguir la premisa de “work smart, not hard” y empezar por lo que más se suele usar como norma general.
Por el lado de contenedores vas a tener que aprender sobre Docker y el concepto de contenedores y qué aportan en general. Aquí te serán muy útiles los conocimientos de sistemas y servidores que hayas adquirido porque te ayudará ver el cambio de paradigma que supone el cnocepto de contenedores para la industria.
Para aprender sobre contenedores (y DevOps en general) no puedo no recomendar el canal de Nana porque tiene videos extensos, muy bien explicados e interesantes como este de “Docker for absolute beginners”.
Después de entender el funcionamiento de los contenedores y Docker en especial, podrás avanzar hacia conceptos de más alto nivel como lo es Kubernetes. En este aspecto recomiendo echarle un ojo a la certificación CKAD y sobre todo a la preparación para ella que hay en Udemy . Desde mi experiencia y si vas a trabajar con la nube no te recomiendo meterte en estudiar la certificación de Administrator ( CKA ) porque baja a un nivel más profundo del que vas a tener que manejar si trabajas con servicios gestionados como EKS en AWS. Pero si te gustan las tripas y las tuberías adelante, también hay un curso para la preparación de esa certificación en Udemy.
Monitorización
La monitorización es una parte muy importante del trabajo de un/a SRE asi que tienes que familiarizarte con los conceptos básicos como “log”, “métrica” y “traza” y conocer algunas de las herramientas más populares de monitorización como Grafana y Prometheus. En este apartado hay que tener claro que hay muchísimas herramientas diferentes y es normal incorporarse a una empresa que usa algún tipo de herramienta que tú no has tocado nunca asi que lo que hay que tener claras son las bases, como integrarlas en nuestra infraestructura, cómo plantear el tema de las alertas, saber qué queremos monitorizar etc.
Una vez que tengas soltura con los conceptos básicos y hayas podido trastear con alguna de las herramientas puedes subir las apuestas y empezar a informarte sobre la Observabilidad. En este sentido cada vez hay más contenido en internet pero a modo de resumen te puedo recomendar este libro de Charity Majors, Liz Fong-Jones y George Miranda. Tres pesos pesados y grandes referentes del sector.
CI/CD , git y programación
Si has llegado hasta aqui te mereces un premio. Prometo que estamos llegando al final. Parte de la dificultad de trabajar como SRE (aparte del enorme conocimiento técnico que hay que tener como ya has visto) es que se trata de un perfil transversal a toda la parte de ingeniería y por lo tanto también tiene que tener cierto conocimiento de la parte de desarrollo.
En este sentido tienes que ser capaz de manejarte con soltura con git (nada increíble pero sí entender cómo funciona, qué son las ramas, cómo se trabaja en un proyecto con mucha gente a la vez etc.). Hay muchos sitios de los que puedes tirar para aprender, incluidos proyectos como este e incluso hay proyectos en los que puedes aprender de forma gamificada como Oh my Git!
Respecto al CI/CD todavía hay herramientas más clásicas como Jenkins pero en general lo que se está abriendo paso es el uso de Gitlab CI y Github Actions para el tema de los despligues. En ambos casos tienes mucha información en sus respectivas páginas web y Github incluso ha sacado unas certificaciones este año enfocadas a Actions.
Finalmente sobre el tema de programación y si me has hecho caso y has aprendido algo de Bash, no vas a tener muchos problemas. Es cierto que dependiendo de la empresa necesitarás cierto conocimiento, sobre todo de lógica de programación para entender lo que estás leyendo y no para programar tú. Pero en cualquier caso el conocimiento de lenguajes como Python o Go puede ser interesante sobre todo para usarlos para el tema de las automatizaciones y tooling interno de infraestructura. Aqui de nuevo te recomiendo Exercism como una opción gratuita y muy completa.
Para aprender lógica de programación y amueblar tu cabeza tengo que recomendarte el curso gratuito de introducción a la Ciencia de la computación que ofrece Harvard. Son muchas horas y al principio es algo abrumador pero merece la pena.
Todavía no es el final
Te he esbozado un recorrido express a través de los conocimientos que he ido adquiriendo a lo largo de estos años pero ya te imaginarás que ni está todo ni todo aplica en todos casos. En mi experiencia sin embargo, estos conocimientos me han sido útiles no solo en todos los trabajos en los que he estado como SRE sino también en todos los procesos de selección en los que he participado. Hablaremos sobre procesos de selección y entrevistas en otro artículo, prometido.
Aquí te he dejado referencias sobre la parte más práctica / técnica. Ten en cuenta siempre que todos estos apartados tienen mucha más profundidad y hay muchas más cosas que no he comentado por razones obvias de optimización. En cualquier caso confío en que es un buen punto de partida.
Espero que esta información te haya sido útil y nos veremos en la próxima entrega de Road to SRE en la que hablaré sobre la parte más “filosófica” o teórica de los conocimientos que podemos adquirir.
Mucha suerte!