
No hay mejor momento en la vida para aprender que hoy.
Estamos en 2019, y el tema de DevOps es más relevante que nunca. Se dice que los días de los administradores de sistemas han pasado, así como la era de los mainframes. Pero, ¿es realmente así?
Como suele suceder en IT, la situación ha cambiado. Ha surgido la metodología DevOps, pero no puede existir sin una persona con habilidades de administrador de sistemas, es decir, sin Ops.
Antes de que el enfoque DevOps adquiriera su forma moderna, me consideraba parte de la categoría Ops. Y sé muy bien lo que siente un sysadmin al darse cuenta de cuánto le falta por aprender y cuánto tiempo tiene para hacerlo.

Pero, ¿es realmente tan aterrador? Diría que no hay que ver la falta de conocimientos como un gran problema. Más bien, es un desafío profesional.
Los productos a escala web se basan en Linux o en otro software de código abierto, y en el mercado hay cada vez menos especialistas capaces de mantenerlos. La demanda ya ha superado la cantidad de profesionales en este campo. Un administrador de sistemas ya no puede simplemente seguir trabajando sin elevar su nivel de calificación. Debe tener habilidades de automatización para gestionar múltiples servidores/nodos y comprender bien los principios de su funcionamiento para resolver los problemas que surgen.
Antes de convertirse en miembro del equipo de DevOps, usted tendrá que recorrer un camino bastante largo pero interesante, aprendiendo nuevas tecnologías y diversas herramientas necesarias para mantener el sistema según los estándares de DevOps.
Entonces, ¿cómo puede un administrador de sistemas pasar del enfoque tradicional de trabajo a la nueva conceptuación de DevOps? Como siempre: primero, es necesario cambiar la mentalidad. No es fácil abandonar un enfoque que has seguido durante los últimos diez o veinte años y comenzar a hacer todo de nuevo, pero es necesario.
En primer lugar, es importante entender que DevOps no es un puesto específico en la empresa, sino un conjunto de prácticas definidas. Estas prácticas implican la distribución de sistemas aislados, la reducción del daño causado por errores y fallos, la actualización frecuente y oportuna del software, la interacción fluida entre desarrolladores (Dev) y administradores (Ops), así como una prueba constante no solo del código, sino de toda la estructura dentro del proceso. .
Junto con el cambio de mentalidad, es necesario aprender a mantener la infraestructura y garantizar su operación estable, fiabilidad y disponibilidad para la integración y entrega continua de aplicaciones, servicios y software.
Lo que puede faltar como especialista en Ops son habilidades de programación. Actualmente, escribir scripts que los administradores de sistemas utilizan para la instalación automatizada de parches en servidores, la gestión de archivos y cuentas, así como para solucionar problemas y elaborar documentación, se considera obsoleto. En casos relativamente simples, los scripts todavía se utilizan, pero el concepto de DevOps implica la resolución de tareas a gran escala, ya sea implementación, pruebas, trabajo con compilaciones o despliegue.
Así, si quieres aprender automatización, necesitas dominar al menos un poco de programación, aunque no seas desarrollador, dado que en esta etapa de tu desarrollo en DevOps requiere esta habilidad.
¿Qué hacer? Para seguir siendo un profesional demandado, necesitas adquirir habilidades relevantes: dominar al menos un lenguaje de programación, como Python. A alguien que se dedica profesionalmente a la administración le puede parecer complicado, ya que está acostumbrado a pensar que solo los desarrolladores programan. No es necesario convertirse en un experto, pero conocer uno de los lenguajes de programación (puede ser Python, Bash o incluso ), definitivamente será una ventaja.
Para aprender a programar, se necesita tiempo. Sea paciente y cuidadoso: esto le ayudará a mantener una comprensión de la situación al comunicarse con los desarrolladores del equipo de DevOps y con los clientes. Media hora al día, una hora o más: aprender un lenguaje de programación debe ser su principal objetivo.
Los administradores de sistemas y los especialistas en DevOps enfrentan tareas similares, sin embargo, hay diferencias significativas. Se considera que un administrador de sistemas no puede hacer todo lo que puede hacer un ingeniero de DevOps. Se dice que el administrador se enfoca más en la configuración, mantenimiento y aseguramiento del funcionamiento de los sistemas de servidores, mientras que el ingeniero de DevOps se encarga de todo eso y algo más.
¿Pero cuán veraz es esta afirmación?
Administrador de sistemas: uno en el campo es un guerrero
A pesar de las diferencias y similitudes señaladas en este artículo, sigo creyendo que no hay una diferencia sustancial entre la administración de sistemas y DevOps. Los administradores de sistemas siempre han realizado las mismas funciones que los especialistas en DevOps, simplemente antes no se llamaba DevOps. Creo que no tiene sentido buscar diferencias específicamente, especialmente si no está relacionado con una tarea concreta. También es importante recordar que, a diferencia del administrador de sistemas, DevOps no es un puesto, sino un concepto.
Es importante señalar una cosa más, sin la cual la conversación sobre la administración y DevOps sería incompleta. La administración de sistemas, en su comprensión habitual, implica que el especialista posee un conjunto específico de habilidades y se orienta hacia el mantenimiento de diferentes tipos de infraestructura. No en el sentido de que sea un empleado universal, sino en el sentido de que hay una serie de tareas que realizan todos los administradores.
Por ejemplo, a veces tienen que actuar como una especie de trabajador técnico multifuncional, es decir, hacer literalmente de todo. Y si dicho administrador es el único en toda la organización, él realizará todo el trabajo técnico. Esto puede ser cualquier cosa, desde el mantenimiento de impresoras y fotocopiadoras hasta tareas relacionadas con la red, como la configuración y gestión de enrutadores y conmutadores o la configuración de un cortafuegos.
También será responsable de actualizar el hardware, revisar y analizar registros, realizar auditorías de seguridad, instalar parches en el servidor, solucionar problemas, analizar las causas raíz y automatizar, generalmente a través de scripts de PowerShell, Python o Bash. Un ejemplo de uso es la gestión de cuentas de usuario y grupos. La creación de cuentas de usuario y la asignación de permisos es una tarea extremadamente tediosa, ya que los usuarios aparecen y desaparecen casi a diario. La automatización a través de scripts permite liberar tiempo para abordar tareas de infraestructura más importantes, como la actualización de conmutadores y servidores y la realización de otros proyectos que afectan la rentabilidad de la empresa en la que trabaja el administrador (aunque se considera que el departamento de TI no genera ingresos directamente).
La tarea del administrador del sistema es no perder tiempo y ahorrar dinero a la empresa por todos los medios posibles. A veces, los administradores de sistemas trabajan como miembros de un gran equipo que une, por ejemplo, administradores de Linux, Windows, bases de datos, almacenamiento, etc. Los horarios laborales también pueden variar. Por ejemplo, un turno en una zona horaria al final del día transfiere los asuntos al siguiente turno en otra zona horaria, para que los procesos no se detengan (follow-the-sun); o los empleados tienen un horario laboral común de 9 a.m. a 5 p.m.; o se trabaja en un centro de datos 24/7.
Con el tiempo, los administradores de sistemas han aprendido a pensar estratégicamente y a combinar tareas importantes con actividades rutinarias. Los equipos y departamentos en los que trabajan suelen carecer de recursos, pero todos intentan llevar a cabo las tareas diarias en su totalidad.
DevOps: desarrollo y mantenimiento unificados
es una especie de filosofía de los procesos de desarrollo y mantenimiento. Este enfoque en el mundo de TI ha sido verdaderamente innovador.
Bajo la égida de DevOps, por un lado trabaja el equipo de desarrolladores de software y, por el otro, el equipo de especialistas en mantenimiento. A menudo se les unen especialistas en gestión de productos, testers y diseñadores de interfaces de usuario. Al unir esfuerzos, estos especialistas optimizan las operaciones para lanzar rápidamente nuevas aplicaciones y actualizar el código con el fin de mantener y mejorar la eficiencia de toda la empresa.
La base de DevOps es el control sobre el desarrollo y funcionamiento del software a lo largo de todo su ciclo de vida. Los especialistas en mantenimiento deben apoyar a los desarrolladores, y los desarrolladores tienen la tarea de comprender no solo las API utilizadas en los sistemas. Deben entender qué hay "bajo el capó" (es decir, cómo funciona el hardware y los sistemas operativos) para manejar mejor los errores, resolver problemas e interactuar con los especialistas en mantenimiento.
Los administradores de sistemas pueden unirse al equipo de DevOps si desean aprender tecnologías de vanguardia y están abiertos a ideas y soluciones innovadoras. Como ya mencioné, no es necesario que se conviertan en programadores completos, pero dominar lenguajes de programación como Ruby, Python o Go les ayudará a convertirse en miembros muy valiosos del equipo. Aunque tradicionalmente los administradores de sistemas realizan todo el trabajo de forma independiente y a menudo son percibidos como solitarios, en DevOps experimentarán un enfoque completamente opuesto, donde todos los participantes del proceso interactúan entre sí.
El tema de la automatización se vuelve cada vez más relevante. Tanto los administradores de sistemas como los especialistas en DevOps están interesados en la escalabilidad operativa, en reducir la cantidad de errores, así como en encontrar y solucionar rápidamente los errores existentes. Así, la automatización es un concepto donde ambas áreas convergen. Los administradores de sistemas son responsables de servicios en la nube como AWS, Azure y Google Cloud Platform. Deben entender los principios de integración y entrega continua y cómo utilizar herramientas de este tipo. .
Además, los administradores de sistemas deben aplicar herramientas de configuración y gestión como , necesarios para el despliegue paralelo de diez o veinte servidores.
El concepto principal es . El software lo es todo. En esencia, para que la profesión de administrador de sistemas no pierda relevancia, solo es necesario cambiar un poco el enfoque. Los administradores de sistemas se ocupan del mantenimiento y deben saber interactuar eficazmente con los desarrolladores y viceversa. Como se dice, una cabeza piensa bien, pero dos piensan mejor.
Y el último detalle en este mecanismo es . Trabajar con Git es una de las obligaciones diarias tradicionales de un administrador de sistemas. Este sistema de control de versiones es ampliamente utilizado por desarrolladores, especialistas en DevOps, equipos Agile y muchos otros. Si su trabajo está relacionado con el ciclo de vida del software, definitivamente trabajará con Git.
Git tiene muchas funcionalidades. Probablemente, nunca aprenderá todos los comandos de Git, pero entenderá por qué esta herramienta se considera clave en la comunicación y colaboración en el desarrollo de software. Un conocimiento sólido de Git es muy importante si trabaja en un equipo de DevOps.
Si usted es un administrador de sistemas, necesita aprender más sobre Git, entender cómo se gestiona el control de versiones y recordar los comandos más comunes: git status, git commit -m, git add, git pull, git push, git rebase, git branch, git diff y otros. Hay muchos cursos en línea y libros que pueden ayudar a aprender este tema desde cero y convertirse en un profesional con habilidades específicas. También hay excelentes , por lo que no es necesario memorizarlos todos, pero cuanto más utilice Git, más fácil le resultará.
Conclusión
Al final, usted mismo decide si necesita convertirse en un especialista en DevOps o si es mejor quedarse como administrador de sistemas. Como puede ver, se requiere formación para la transición, pero cuanto antes comience, mejor será. Elija un lenguaje de programación y estudie simultáneamente herramientas como (control de versiones), (CI/CD, integración continua) y (configuración y automatización). Cualquiera que sea la opción que elija, no olvide que debe seguir aprendiendo y mejorando sus habilidades.
Fuente: habr.com
