DevOps y Transformación Digital - Juan Carlos Abaunza
2174
post-template-default,single,single-post,postid-2174,single-format-standard,bridge-core-2.2.8,ajax_fade,page_not_loaded,,qode-title-hidden,qode_grid_1300,qode-theme-ver-21.5,qode-theme-bridge,disabled_footer_top,qode_header_in_grid,wpb-js-composer js-comp-ver-6.2.0,vc_responsive
DevOps

DevOps y Transformación Digital

A partir de la Tercera Plataforma, acelerado por la Cuarta Revolución Industrial e indispensable para la Transformación Digital, nace una práctica de ingeniería de software que tiene como objetivo unificar el desarrollo de software (Dev) y la operación del software (Ops). DevOps para los amigos.

Hace un momento alguien me preguntaba: -“…¿entonces qué producto, de qué proveedor, debo adquirir para tener DevOps en mi empresa?”- Me quedé pensativo un momento y mi respuesta casi automática fue: -“No. No existe un producto etiquetado como ” DevOps © V.x o cosa semejante.”- Cierto. No es un producto o una “suite” de productos. Es una práctica de ingeniería de software.

Antecedentes

El Desarrollo de aplicaciones es una actividad que ya se puede considerar como vieja. Desde que nace la Informática, los Sistemas de Cómputo, éstos vinieron aparejados de los Lenguajes de Programación. Fortran, Cobol, RPG los más antiguos. C, Basic, Java, PHP, etc. como los más “nuevos”. No están en orden cronológico pero simplemente quise incluirlos para tener una mejor idea.

Nacen pues los Desarrolladores. Una élite de profesionales especializados en convertir las necesidades del usuario, en código que al ser ejecutado en un equipo de cómputo, permitiendo resolver dichos requerimientos.

No es ajeno para nadie cómo estos seres de luz, estos amos y señores de la codificación, regularmente entraban en conflicto con otros seres cuasi mágicos, que sin ellos, el código que se ejecuta en los sistemas de cómputo, sería letra muerta (código muerto): Los Operadores.

En un cuasi eterno toma y daca, los sistemas de cómputo y los programas de cómputo provistos por los Desarrolladores, han sido blanco de inefables críticas y en ocasiones foco de ríspidas discusiones que llegaban a terminar (incluso) en ataques verbales o hasta físicos.

Ante toda esta vorágine, toda esta debacle que invariablemente quedaba en nada, nacen paradigmas, ideas y conceptos que pedían a gritos algo que permitiese a los “Shōgunes” del Desarrollo y los Señores de la Operación, trabajasen en sana paz, de manera ordenada, coordinada y útil.

Nace DevOps

Repitiendo el concepto que nos regala Wikipedia: DevOps es una práctica de ingeniería de software que tiene como objetivo unificar el desarrollo de software (Dev) y la operación del software (Ops).

Con lo mejor, lo más concreto y lo más relevante de ambos mundos, DevOps es un ciclo que más allá de un círculo virtuoso, su mejor representación viene en un interminable e infinito Anillo o Banda de Möbius, cual símbolo matemático de Infinito.

Este par de círculos entrelazados, el izquierdo con los pasos fundamentales del Desarrollo (Dev) y su contraparte izquierda con lo propio para la Operación (Ops), suma entonces los siguientes pasos o etapas:

Dev

  • Codificación
  • Construcción
  • Prueba

Ops

  • Aprovisionamiento
  • Operación
  • Monitoreo
DevOps

Como etapas conjuntas, quedan la Planeación (que es el paso que dispara todo este proceso sin fin) y la Liberación (que es la que entrelaza a ambas áreas, coronando un ciclo).

Evidentemente y desde el punto de vista de las Tecnologías de la Información, lo que más le atañe es la sección correspondiente al Desarrollo (Dev). Pero lo hermoso de DevOps es que Dev no tiene sentido sin Ops y este último, no puede acelerar el negocio sin el primero.

Para comenzar, todo producto y/o solución de TI requiere de una Infraestructura. ¿Física, Virtual, Contenedores, On-Premise, en La Nube, Nube Pública, Nube Privada? Esta es la Primera Decisión Crítica que se debe tomar. Sin entrar en detalles, recordemos que es necesario un Sistema Operativo (completo) o los Binarios y Bibliotecas correspondientes (dentro del contenedor).

Tomada la primera decisión crítica, ¿qué plataforma de desarrollo es la indicada? Java, .net, PHP, Ruby, Python, etc. Esto depende pues de los Desarrolladores. Recordemos que al final la Codificación deberá realizarse apegándonos a la sintaxis, semántica y reglas de la plataforma de ejecución. Esta es la Segunda Decisión Crítica.

Para comenzar, todo producto y/o solución de TI requiere de una Infraestructura. ¿Física, Virtual, Contenedores, On-Premise, en La Nube, Nube Pública, Nube Privada? Esta es la Primera Decisión Crítica que se debe tomar. Sin entrar en detalles, recordemos que es necesario un Sistema Operativo (completo) o los Binarios y Bibliotecas correspondientes (dentro del contenedor).

Tomada la primera decisión crítica, ¿qué plataforma de desarrollo es la indicada? Java, .net, PHP, Ruby, Python, etc. Esto depende pues de los Desarrolladores. Recordemos que al final la Codificación deberá realizarse apegándonos a la sintaxis, semántica y reglas de la plataforma de ejecución. Esta es la Segunda Decisión Crítica.

Ahora bien y aterrizando todo esto. ¿Qué es lo que los Proveedores de Productos y Soluciones para las Tecnologías de la Información (TI), tienen para DevOps?

Las actividades arriba descritas, que sólo incluyen a las que son responsabilidad del área de Desarrollo, pueden efectuarse de manera manual y utilizando herramientas tan humildes como papel y lápiz. Qué decir también de esas actividades que le tocan al área de Operaciones. Pero, ¿existen herramientas que permitan, siguiendo una metodología  bien definida, auxiliar a ambos actores en este ciclo? Open Source las tiene. En esta imagen se muestran las más características, que incluso se han convertido en estándares “de facto”.

¿Es necesario implementar todas? Depende de la metodología que se quiera implementar. Cada una de ellas (dentro de su misma área) tiene un ejército de desarrolladores, consultores y profesionales que pueden auxiliarnos (o no) en la implementación.

Muy importante a tomar en cuenta, en nuestra muy humilde opinión, es revisar con nuestros proveedores de productos para desarrollo, qué herramientas nos ofrecen, qué etapas de DevOps incluyen y con qué otras herramientas es necesario involucrar estos productos. Todo esto, apegado siempre a nuestra metodología predilecta.

¿Para la ejecución de los Desarrollos? Una buena plataforma de ejecución, sobre un excelente Sistema Operativo. Ambos deben de ser estables, seguros, escalables y confiables.

Entonces, ¿Contenedores o no Contenedores? Si en tu ambiente de DevOps requieres orientarte por Micro Arquitectura, el Contenedor es la mejor alternativa. “Contenedores no es Virtualización”. Recuerda siempre este “mantra” y repítelo en tu mente con toda la confianza y convencimiento. Esto depende mucho de la Primera Decisión Crítica (ver párrafos anteriores).

En conclusión, DevOps es una excelente práctica de ingeniería de software, que responde y con creces a las demandas y retos que exigen la Tercera Plataforma, la Cuarta Revolución Industrial y su hija (de ambas) la Transformación Digital.