sábado, 24 de abril de 2021

¿Que es un DevOp?

 DevOps es uno de los términos más mencionados en el actual entorno de IT. Normalmente asociado a estrategias de transformación digital, y a metodologías como Continuous Delivery o desarrollo ágil en programacion o desarrollo de software.

Se tiende a mezclar lo que es DevOps con los requisitos necesarios o beneficios obtenidos al implementar DevOps. Sin querer ser excesivamente fanáticos acerca de un término cuyas líneas de contorno aún no han acabado de asentarse del todo, intentaremos dar una luz sobre el concepto.



Según WikiPedia:

    "DevOps es un acrónimo inglés de development (desarrollo) y operations (operaciones), que se refiere a una metodología de desarrollo de software que se centra en la comunicación, colaboración e integración entre desarrolladores de software y los profesionales de sistemas en las tecnologías de la información (IT)". DevOps es una respuesta a la interdependencia del desarrollo de software y las operaciones IT. Su objetivo es ayudar a una organización a producir productos y servicios software más rápidamente, de mejor calidad y a un coste menor. Las empresas con entregas (releases) muy frecuentes podrían requerir conocimientos de DevOps. Flickr desarrolló un sistema DevOps para cumplir un requisito de negocio de diez despliegues diarios. A este tipo de sistemas se les conoce como despliegue continuo (continuous deployment) o entrega continua (continuous delivery), y suelen estar asociados a metodologías lean startup. Grupos de trabajo, asociaciones profesionales y blogs usan el término desde 2009.

A veces puede parecer que aun quedan dudas, o conceptos que se solapan entre sí, en un resumen podemos concluir:

   DevOps es una metodología para crear software.

    DevOps se basa en integrar entre desarrolladores de software y sysadmins.

    DevOps permite fabricar software rápidamente, con mayor calidad, menor coste.

¿Es DevOps una cultura?

DevOps no es en sí una cultura, pero requiere de un fuerte cambio cultural y organizativo para su implementación. Ccambio cultural hacia la colaboración, la comunicación, y como último término la completa integración entre antiguas áreas de desarrollo y sistemas.

El cambio cultural es tan complicado de conseguir, que son muchos los que lo identifican directamente con DevOps, se remarca: DevOps es una metodología de desarrollo de software, y cambio de cultura, no es en sí ...... una forma de desarrollar software.

¿Es DevOps una nueva raza de hombres orquesta?

Otro error común es confundir DevOps con modelos que algunas startups se ven abocadas a adoptar en sus inicios, en los que todos los miembros del equipo técnico saben de desarrollo, de sistemas, de tuning de rendimiento, de bases de datos... y hasta de cablear la oficina, comprar portátiles y hasta configurar el móvil de la gente de negocio. 

Ese modelo puede funcionar durante un tiempo, pero no escala. DevOps no consiste en aumentar la responsabilidad de los desarrolladores haciendo que lleven varias gorras (en particular dos, la de desarrollo y la de sistemas), sino en sustituir esas dos gorras por una sola: una nueva gorra DevOps.

Muchas veces una imagen vale mas que mil palabras o que una explicación y varios conceptos como en este caso, la imagen que esta a continuación, esta extraída de un blog llamado nubity, y puede aclarar algunos conceptos o ideas.



¿Es DevOps una profesión?

Según Rob Steward, vicepresidente de desarrollo de producto de Progress Software, “una buena práctica de DevOps liberará a los desarrolladores para que se centren en hacer lo que mejor saben hacer: escribir software. DevOps elimina el trabajo y las preocupaciones de la puesta en producción del software una vez que está escrito”.

Si esto es así, ¿qué es un ingeniero DevOps? ¿No hemos quedado en que DevOps permite que un desarrollador sólo desarrolle? ¿Entonces por qué se buscan en el mercado –y cada vez con mayor demanda- perfiles con habilidades específicas para montar equipos DevOps?

La respuesta es sencilla: para un desarrollador pasar a un modelo DevOps resulta inmediato, mientras que un ingeniero de sistemas necesita nuevas habilidades. Estas habilidades, según una investigación de Puppet Labs, son, por este orden: scripting, don de gentes, reingeniería de procesos, y en último lugar experiencia con herramientas específicas. Un perfil que no es fácil de encontrar.

Así que no, DevOps no es una profesión, y estrictamente no existen ni perfiles DevOps ni ingenieros DevOps, sino “ingenieros de sistemas con capacidades específicas para integrarse en equipos DevOps”.



DevOps: un modelo de desarrollo de productos digitales

Como conclusión, quedémonos con una definición simple de DevOps con la que todos podamos estar de acuerdo: DevOps es una metodología de desarrollo software basada en la integración entre desarrolladores y administradores de sistemas, que permite que los desarrolladores puedan enfocarse sólo en desarrollar y puedan desplegar su código en segundos. 

¿Que es un sysadmin?

 Un Sysadmin o su traducción al español «Administrador de Sistemas y/o Servidores», suele ser un experimentado Profesional IT todo en uno, cuyo actividad es el día a día, lleno de una gran cantidad de  actividades programadas o no, las cuales debemos llevar a cabo de forma ingeniosa para ayudar a resolver cualquier otra incidencia informática de último momento y garantizar el correcto funcionamiento, la disponibilidad de la informacion y de los equipos en una compañia.


Para llegar a ser un buen Administrador de Sistemas y Servidores, es decir, un Sysadmin con todas la de la ley, es indispensable desarrollar y adquirir ciertas aptitudes y actitudes, que les permitan realizar eficiente y eficazmente su trabajo.




Un Sysadmin suele ser el responsable de garantizar el correcto funcionamiento de toda plataforma tecnológica e informática de donde trabaja, trabajando incansablemente para ejecutar las necesarias actividades (implementaciones, actualizaciones o cambios) y mantener la operatividad del negocio. Muchas veces con acciones que suelen afectar el trabajo de otros, lo que suele ocasionar muchas veces que lleguen a ser personas poco gratas por parte de trabajadores del área administrativa u operativa de bajo nivel en sus organizaciones.

Un administrador de sistemas o SysAdmin es un elemento fundamental en cualquier compañía en la que se utilice equipo tecnológico. El rol se encarga de que tanto hardware como software, funcionen de manera óptima. 

Su obligación es garantizar que los elementos uptime o tiempo de actividad, rendimiento de las herramientas, su uso y la seguridad, converjan de la manera más efectiva para que los procesos realizados a través de los equipos sean óptimos. 

Pero a pesar de cualquier cosa, ser un Sysadmin es un trabajo, una profesión, una pasión muy desafiante y gratificante, que suele desarrollarse en medio de un ambiente muy competitivo, que implica que él mismo se esfuerce por ser un personal  integral, multi-funcional y multi-disciplinario.

También realiza actividades de planificación acerca del número de elementos o cantidad de herramientas tecnológicas que son necesarias para que la compañía funcione de manera óptima.

Ser un Sysadmin es de mucha importancia tanto en lo personal como en lo profesional, ya que es una posición de gran peso dentro del ámbito de la Informática en las Organizaciones, tanto que tienen su propio día tienen, el «Día del Sysadmin» que internacionalmente suele celebrarse los 29 de julio de cada año.



Funciones y Deberes de un Sysadmin

En pocas palabras, las mismas pueden resumirse en las siguientes sobre un Sistema(s), Servidor(es) o Plataforma:

    Implementar nuevos o remover obsoletos.

    Realizar respaldos.

    Monitorizar el rendimiento.

    Administrar los cambios de configuración.

    Operar las Aplicaciones y los Sistemas Operativos.

    Gestionar las cuentas de usuarios.

    Vigilar la seguridad informática.

    Afrontar los fallos y las caídas.

    Atender los requerimientos de los usuarios.

    Reportar a los niveles directos responsables de la Organización.

    Documentar las actividades informáticas del Sistema y la Plataforma.

Conocimientos generales y extras

Aunque la tendencia actual, se dirige hacia el creciente uso de las Tecnologías en la Nube (Cloud Computing), está no elimina o amenaza el trabajo de los Sysadmin, sino que al contrario cambia sustancialmente la forma en la que los Sysadmin suele administrar los Sistemas, Servidores y Plataformas a cargo.

Y esto más que todo se debe porque por lo general un buen Sysadmin suele ser también o hacer funciones de un Administrador de:

    Bases de Datos

    Seguridad Informática

    Redes

    Sistemas Operativos (Privativos o Libres)

Los buenos Sysadmin suelen tener conocimientos básicos de programación o lógica de programación. Suelen comprender muy bien el comportamiento del algún dispositivo de interconexión de redes o telecomunicaciones y software relacionado con el fin de implementar y solucionar problemas. Suelen ser buenos en varios lenguajes de programación utilizados para las secuencias de comandos o la automatización de tareas rutinarias como Shell, AWK, Perl, Python, entre otros.

Visión del Trabajo

Un Sysadmin ya experimentado debe procurar afrontar los incidentes informáticos de manera tal de diagnosticarlos rápida y correctamente, detectar el problema (causa) y repararlo a la brevedad posible. Y algo muy fundamental para ahorrar tiempo y esfuerzos innecesarios: Automatizar todo lo que se pueda.

Pero para ser más específicos un Sysadmin debe:

    Automatizar lo más que se pueda, dominando lo mejor posible los lenguajes y comandos de scripting para lograr convertir frecuentes y tediosas labores en tareas automatizadas.

    Evitar pérdidas de información manteniendo copias de seguridad de todo lo esencial y vital, procurando que las mismas estén en varios medios a la vez, y si es posible ubicaciones diferentes

    Tener un plan de recuperación ante los desastres informáticos que puedan presentarse y así lograr una recuperación rápida y volver en la medida de lo posible a la normalidad.

    Procurar que la plataforma de trabajo se constituya en una arquitectura homogénea que permita la redundancia y facilite la clonación de los sistemas y servidores de forma eficaz y eficiente.

    Velar por que la plataforma de trabajo cuente con los suficientes recursos de CPU, RAM y Disco duro que le permitan a la organización crecer con naturalidad.

    Ser proactivo, no reactivo, es decir, deben anticiparse a los problemas y al crecimiento de la organización.

    Dominar eficientemente el teclado, sus combinaciones de teclas, los atajos de teclado para todas sus aplicaciones favoritas.

    Dominar eficientemente la línea de comandos de su respectivo Sistema Operativo.

    Documentar todo lo que sea necesario, dejando bitácoras, manuales, guías y tutoriales disponibles, para que en su ausencia las actividades pueda continuar o y los problemas ser corregidos

    Y entre otras cosas debe saber Admitir sus errores y fallas, Aprender de sus errores propios y ajenos, Investigar, aprender y aplicar lo aprendido.