Devops Realidad

¿Qué son los DevOps?

DevOps es un término que está tomando mucha fuerza en el mundo de TI, y por la variedad de definiciones existentes, tiende a generar confusión en el público. Gran parte de esta confusión se debe al mezclar los requisitos necesarios para su implementación y los benéficos que otorga, llevando a varias creencias como:
… DevOps es una cultura
… es un grupo de personas con vastos conocimientos en muchas cosas…
… es una profesión…
… es un estándar de calidad…
Pero estas definiciones están muy alejadas de su verdadero significado, pues DevOps realmente es una metodología de desarrollo de software, centrada a la colaboración, comunicación e integración de desarrolladores y los profesionales de operaciones TI, permitiendo entregas de desarrollos de forma más eficaz, con menos costos, menos tiempos de espera y mayor calidad.
Esta metodología está orientada al cambio cultural dirigido hacia las personas que conforman el equipo de TI, para que se planteen metas y objetivos comunes, fortalezcan su comunicación y aumente la colaboración entre ellos.
La base de los DevOps son los enfoques en integraciones continuas (CI) e implementaciones o despliegues continuos (CD).

¿Qué es Integración Continua?

La integración continua es un enfoque de combinación de cambios realizados por los desarrolladores ABAP a un código fuente, almacenado en un repositorio compartido de manera periódica, que a menudo suele ser un servidor Git (es un repositorio donde se encuentra instalado el software Git, software encargado de la administración de versiones con el propósito de monitorear los cambios que pueda tener una aplicación nueva y coordinar el trabajo de varias personas en proyectos compartidos); después de tener integrado el código este se compila y se realizan pruebas unitarias de forma automática.
La integración continua tiene como objetivo la detección temprana de errores, mejorando la calidad de los aplicativos y sus tiempos de entrega.

¿Qué es la implementación continua?

La implementación continua es la liberación automática de los cambios en el código fuente que realizan los desarrollador a las aplicaciones , pasando de un ambiente de desarrollo a uno de producción por medio de herramientas como Jenkins; luego el equipo de operaciones pueda usarlo, así solucionando el problema de la poca visibilidad y comunicación entre las operaciones y el desarrollo; dándole mayor independencia al desarrollador para el transporte de las versiones de las aplicaciones a otros ambientes.

Son muchas las mejoras que se pueden identificar al implementar la metodología de DevOps en las empresas, aquí citamos algunas:
Reducción el porcentaje de incidentes o problemas, que puede ocasionar aplicaciones nuevas en el ambiente de producción.
Aumento de producción de aplicaciones.
Reducción de gastos en desarrollo y operaciones.
Ciclos de desarrollo más cortos
Reducción del tiempo de recuperación en caso de fallo.
Para poder comprender a plenitud el funcionamiento de los DevOps se plantea un ejemplo practica donde observara la implementación de la metodología y el resultado que se obtiene.
Escenario: Mejorar la eficiencia del desarrollo.
Distribución de proyectos simultáneos mediante la implementación de un servidor Git.

Perfil del Cliente:

Grupo Empresarial, Ubicado en América del Sur, con diversas entidades y modelos de negocio que la componen, pero bajo la misma directriz.

El desafío:

Desarrollar una nueva aplicación que sea global para todas las entidades pertenecientes al grupo empresarial, y que permita que varios grupos de desarrollo trabajen en el proyecto de forma paralela.
El requerimiento del Grupo Empresarial es una aplicación única que se encargue del proceso de facturación electrónica para todas las entidades pertenecientes al grupo, pero cada una de las empresas asociadas manejan distintos procesos de facturación, y requieren funcionalidades diferentes; el incremento de requerimientos es imposible de evitar.
El sistema de administración de versiones centralizado, y el controlador de código fuente que el grupo empresarial posee, no podrá soportar la programación en paralelo y no posee la flexibilidad necesaria para aumentar el número de versiones. El resultado es: demoras en la entrega de la aplicación, revertir cambios y resolver conflictos de integración de código y presenta varias garantías por funcionamiento defectuoso.

La solución:

  • Implementación de un servidor Git; y los procesos de desarrollo agiles, permitirán:
  • Aumento de la productividad de los desarrollos mediante la automatización.
  • Flexibilidad en el código permitiendo integraciones sin conflictos.
  • Detección temprana de posibles erres que se presenten en la construcción de la aplicación.
  • Cumplimiento de tiempos de entrega de la aplicación.
  • Menos errores en implementación y devoluciones.

Implementación

Ahora hablaremos de cómo estos DevOps son implementados en el mundo SAP, como ya saben SAP es un sistema muy robusto, el cual cuenta con herramientas muy poderosas que nos permiten desarrollar diversas aplicaciones para los procesos que el cliente requiere.

DevOps para ABAP

Los DevOps aún se encuentran en una etapa inicial para ABAP. Actualmente SAP está generando nuevas herramientas como S/4HANNA, ADT (ABAP Development Tools), SAP Platform Cloud; que nos permite soñar con servicios de DevOps orientados a ABAP.
Implementar esta metodología en SAP es difícil, ABAP viene con su propia restricción, un cuello de botella que se ocasiona a la hora de construir el código fuente, y es…. ABAP no nos permite desarrollar en paralelo; esto se da porque tiene un solo administrador de versiones centralizado de código fuente, causando que un objeto ABAP sea intervenido por un desarrollador a la vez, lo que elimina el propósito de CI, el cual se logra con un sistema de administración de código distribuido.
Otro requerimiento importante para CI son las pruebas unitarias automatizadas, pero por esto no debemos preocuparnos, el motivo es que ABAP ya cuenta con una herramienta que realiza este test; ABAP Unit es una herramienta que permite automatizar las pruebas unitarias, por medio de métodos pertenecientes a clases especiales de ABAP, estos métodos funcionan como Scripts, los cuales son utilizados para ejecutar los desarrollos de aplicaciones a prueba, y analizar los resultados que arrojen. Lo triste es que esta herramienta es subutilizada y los desarrolladores no le dan la importancia que se merece.

¿Cómo podemos implementarlo?

La respuesta a esta pregunta es cumplir con los requerimientos que demanda la metodología. Lo primero es adecuar un sistema de administración de código fuente distribuido para ABAP.
La herramienta abapGit, es un servidor Git, que nos permite almacenar he integrar fragmentos de código, en un solo código fuente. AbapGit se puede ejecutar desde ABAP.
A continuación, hablaremos del desarrollo conducido por pruebas (TDD); para esta parte es necesario tener claro cuáles son las pruebas unitarias a realizar, con el fin de poder estandarizarlas y posteriormente proceder con su automatización por medio de la herramienta ABAP Unit. Después de codificar las pruebas unitarias, estas se pueden ejecutar de manera automática, lo que se logra con el llamado de APIs proporcionadas por SAP junto con el paquete ADT; el llamado de las APIs se puede realizar por medio de la herramienta Jenkins.
Se puede incluir en nuestro TEST, las validaciones como el Code Inspector y el ATC por medio de la herramienta Jenkins.
Luego estableceremos el ciclo de vida de la aplicación por medio de pipeline de entrega, en la herramienta Jenkins con todas las fases del ciclo de vida del desarrollo para implementar. Las algunas fases son:

  • Build
  • UnitTests
  • CodeCoverageCheck
  • CodeInspectorCheck
  • CodeMigrationToQA
  • IntegrationTest
  • AcceptanceTest
  • DeployToProduction
  • Ejemplo de pipeline programado en Jenkins.
Así vemos la industria

Extractor BW a partir de un reporte ALV

La creación de fuentes desde un SAP ECC a BW puede ser variada, desde una...

Más información

Evolución de la prestación de servicios desde la comunidad IT ALLIANCE

En aras de participar en la creación de nuevos modelos de trabajo para hacer más...

Más información

Consumo de servicio Web API REST

La intención de este contenido es compartir un recurso para consumir un servicio web desde...

Más información
Más artículos