24
OFICINA CENTRAL, ARGENTINA: [email protected], Paraná 771 Piso 2, Buenos Aires, CP 1017AAO, (+5411) 5032-9157 PERÚ: [email protected], Dos de Mayo 516 Oficina 701, Miraflores, Lima, Perú (+511) 715-8976 / 8776 URUGUAY: [email protected], Convención 1343 Esc. 201, CP 11.100, Montevideo, Uruguay www.algeiba.com Ambientes de Dev/Test en la Nube El por qué, cómo y qué Pablo Ariel Di Loreto Última actualización: 28/07/2019 18:43 Páginas: 24

en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

OFICINA CENTRAL, ARGENTINA: [email protected], Paraná 771 Piso 2, Buenos Aires, CP 1017AAO, (+5411) 5032-9157

PERÚ: [email protected], Dos de Mayo 516 Oficina 701, Miraflores, Lima, Perú (+511) 715-8976 / 8776

URUGUAY: [email protected], Convención 1343 Esc. 201, CP 11.100, Montevideo, Uruguay

www.algeiba.com

Ambientes de Dev/Test en la Nube

El por qué, cómo y qué

Pablo Ariel Di Loreto

Última actualización: 28/07/2019 18:43

Páginas: 24

Page 2: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24

HISTORIAL DE VERSIONES

Fecha Versión Autor Comentario

28/05/2019 1.0 Pablo Ariel Di Loreto Aprobado para publicar asociado a nota

de ITSitio:

https://www.itsitio.com/ar/ambientes-

dev-test-la-nube-se-necesita/

28/07/2019 1.1 Pablo Ariel Di Loreto Correcciones menores de formato.

Page 3: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 3 de 24

TABLA DE CONTENIDOS

1. Introducción .......................................................................................................................................... 5

2. Computación en la Nube ....................................................................................................................... 6

2.1. 5 Características de una Nube ....................................................................................................... 6

2.2. 3 Métodos de Entrega ................................................................................................................... 7

2.3. 2 (¿o 3?) Modelos de Implementación ......................................................................................... 8

2.4. Conclusiones .................................................................................................................................. 9

3. ¿Por qué pensar en ambientes de Dev/Test en la Nube? ................................................................... 10

3.1. Características Propias de la Nube y necesidad de los equipos .................................................. 10

3.2. Beneficios en costos y retorno de inversión ............................................................................... 10

3.3. Conclusiones ................................................................................................................................ 12

4. Preparación del Equipo de Trabajo ..................................................................................................... 13

4.1. Infraestructura como Código (IaC) .............................................................................................. 13

4.2. Automatización ........................................................................................................................... 14

4.3. Set de Datos ................................................................................................................................ 14

4.4. Implementación de Metodologías Ágiles .................................................................................... 15

4.5. Implementación de Prácticas DevOps ......................................................................................... 16

4.6. Principales Desafíos ..................................................................................................................... 17

5. Partners y Proveedores de Dev/Test en la Nube ................................................................................ 19

5.1. Partners ....................................................................................................................................... 19

5.2. Microsoft Azure ........................................................................................................................... 19

5.3. Google Cloud Platform ................................................................................................................ 20

5.4. Amazon Web Services ................................................................................................................. 20

6. Conclusiones ........................................................................................................................................ 21

7. Referencias y Links .............................................................................................................................. 22

Page 4: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 4 de 24

8. Sobre el Autor...................................................................................................................................... 23

Page 5: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 5 de 24

1. INTRODUCCIÓN

¿Sabías que se estima que más del 50% de los gastos de TI suele estar orientado en infraestructuras que

no son productivas? ¿Y qué, durante algunos momentos, cerca del 80% de esa infraestructura está sin

usar? En esta publicación vamos a analizar pros y desafíos de tener estos ambientes no productivos en

la nube, su tendencia en el mercado y experiencias recogidas desde Algeiba con nuestros clientes.

Durante los últimos años, con el Equipo de Algeiba hemos construido diversas soluciones de dev/test en

clientes, muchas de las cuales han tenido base en la nube. En el contexto de desarrollo y pruebas, cada

cliente tiene sus particularidades, pero hemos encontrado algunas necesidades comunes en todas

nuestras experiencias:

• Contar con ambientes listos para desarrollar, reales en relación con el ambiente productivo en

el que el software se va a desplegar, listos en períodos cortos de tiempo (y en algunos casos

inmediatamente) y altamente repetibles.

• Regenerar ambientes de pruebas en forma recurrente para poder llevar adelante un proceso de

validación y detección de fallas (en lo posible) antes que lleguen a producción y, si llegaron,

trabajarlos sin poner en riesgo los datos del usuario.

• Minimizar los costos de software, hardware y operativos para los dos puntos anteriores,

teniendo en cuenta que una infraestructura no-productiva sin utilizar es altamente costosa.

Nos encontramos que estos puntos suelen estar presentes en muchas organizaciones que no son

necesariamente de IT, sino que requieren / construyen / usan software para sus operaciones base, y

utilizan ambientes no-productivos para mejorar la calidad de sus productos y servicios.

¿La Nube da respuesta a estas necesidades? ¿Qué consideraciones técnicas y metodológicas debo tener

antes de tomar una decisión? Vamos a analizar por qué la nube es una opción para dev/test, qué

consideraciones técnicas deberás tener en cuenta e incluso qué marco metodológico hemos trabajado

desde Algeiba para hacerlo exitosamente con nuestros clientes.

Si querés ampliar la información, contactanos a [email protected] así charlamos.

Page 6: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 6 de 24

2. COMPUTACIÓN EN LA NUBE

Notarás que esta publicación habla de “Computación en la Nube”. Es importante que podamos acordar

a qué nos referimos con este término, para no caer en zonas oscuras o errores de interpretación.

Cuando hablemos de Computación en la Nube (o Cloud Computing) nos vamos a estar refiriendo a un

modelo de servicios que permite el acceso ubicuo, simple y bajo demanda a un grupo compartido y

configurable de recursos de computación (por ejemplo: servidores, almacenamiento, aplicaciones, etc) y

que pueden ser rápidamente aprovisionados y liberados con el mínimo esfuerzo administrativo o

intervención de un proveedor (sea interno o externo).

Para “aterrizar” más este concepto, vamos a utilizar un “marco de mensaje” (message framework) y

simplificarlo. Vamos a hablar de la Computación en la Nube incluyendo a 5 características, 3 métodos de

entrega y 2 modelos de implementación. Vamos a hablar del “Principio 5-3-2” compartido por Yung

Chou hace varios años.

2.1. 5 CARACTERÍSTICAS DE UNA NUBE

Existen 5 características que vamos a destacar que, no importan donde la nube se aloje, deberíamos de

contar:

• Auto-servicio y bajo-demanda: permite a quién consume la nube aprovisionarse los recursos

que necesite (tiempo, almacenamiento, memoria) sin intervención humana. Nótese que el

término “sin intervención humana” ya nos delimita que no todos los servicios de virtualización

son una nube. Este punto será fundamental para entender el paradigma de los ambientes de

dev/test en la nube.

• Acceso amplio y ubicuo: permite utilizar los recursos desde cualquier lugar en todo momento, a

través de un web browser o algún método estándar de acceso. Por supuesto, la seguridad

siempre debe estar presente y cuidar por dichos recursos. Pero en concepto, lo podemos

acceder desde cualquier lugar en cualquier momento.

• Ubicación transparente y agrupación de recursos: quién consume la nube (el usuario

desarrollador, o tester en este caso) se abstrae de las complejidades de los recursos que lo

componen, dado que no tiene control (ni se entera) de donde están. No necesita conocimientos

de Infraestructura, y puede resolver sus necesidades a través de tareas simples de realizar, e

incluso a través de métodos repetibles para lograr sus resultados.

Page 7: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 7 de 24

• Elasticidad rápida: tanto para estirarse (si tengo picos de consumo) como para contraerse (si ya

no necesito tantos recursos para seguir operando un servicio o aplicación). Sabemos que los

recursos no son infinitos, y que toda elasticidad tiene un límite. Ese límite las dará el hardware

comprado, que dependiendo el proveedor de servicios de nube (si es mi propia empresa o una

externa) el techo estará más cerca o más lejos.

• Servicio medido (y a veces, pay-per-use): en la computación en la nube, todo se mide.

Dependiendo si la nube es privada o pública, a veces se puede pagar por ese uso (hablando de

términos monetarios, por supuesto, dado que siempre – de una u otra manera – pagamos por

los recursos informáticos).

Las 5 características de la “Computación en la Nube”.

2.2. 3 MÉTODOS DE ENTREGA

Vamos a recorrer los 3 métodos de entrega existentes según nuestro análisis, teniendo en cuenta que

una infraestructura que se haga llamar “nube” debería contar al menos con una e idealmente con dos:

• Software como Servicio (SaaS): no me preocupo, como usuario, por nada, simplemente me

conecto al software y lo uso.

• Plataforma como Servicio (PaaS): como usuario, tengo control sobre las aplicaciones y las

configuraciones (las proveo yo), pero no tengo responsabilidad ni control sobre el resto de la

infraestructura. Este es uno de los casos típicos de los ambientes dev/test. En este método de

entrega también debemos considerar opciones de gestión de dichas configuraciones que sean

ágiles y automatizables.

Page 8: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 8 de 24

• Infraestructura como Servicio (IaaS): en este caso, como usuario tengo control completo del

sistema operativo y componentes que lo integran, pero no tengo responsabilidad sobre todo lo

que está “por debajo”, ya sea la capa de virtualización, servidores físicos, almacenamiento, etc.

Este es otro caso típico para ambientes de dev/test, y si bien hablar hoy de IaaS parece

“olvidado”, sigue existiendo en las empresas y con un volumen que nos sorprendería.

Los 3 métodos de entrega de la “Computación en la Nube”.

2.3. 2 (¿O 3?) MODELOS DE IMPLEMENTACIÓN

Vamos a destacar los 2 modelos de implementación más básicos que, conceptualizaremos, podemos

encontrar para la Computación en la Nube. La tercera que vamos a nombrar es la resultante de la

combinación de estas dos:

• Nube Privada: en dicho caso, la nube está on-premises y bajo mi control (y alguien de IT la debe

mantener, desde las redes, almacenamiento, servidores y resto de componentes). No obstante,

el usuario que lo consume (sea de Desarrollo o Testing en nuestro análisis) lo verá como una

nube con todas las bondades anteriormente comentadas (5 características y algunos de los

métodos de entrega).

• Nube Pública: en dicho caso, la nube está alojada en un proveedor de servicios y no tengo

responsabilidad sobre componentes como virtualización, servidores, almacenamiento y redes.

Page 9: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 9 de 24

En dicho caso, normalmente los administradores y los usuarios lo ven como una Nube natural

con todas sus bondades.

• Nube Híbrida: es una combinación de las anteriores, dado que algunos recursos pueden estar

en mi datacenter (on-premises) y otros en un proveedor de servicios (on-cloud).

Los 2 modelos de implementación de la “Computación en la Nube”.

2.4. CONCLUSIONES

Nos parecía importante que todos tengamos en claro y acordado, antes de continuar con el análisis de

ambientes de dev/test en la nube, a qué llamamos nube y qué características tiene. Haremos mención,

en el resto del documento, a estas características.

Page 10: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 10 de 24

3. ¿POR QUÉ PENSAR EN AMBIENTES DE DEV/TEST EN LA NUBE?

Vamos a responder a esta pregunta en dos partes: una relacionada a las características propias de la

nube y necesidad de los equipos, y la otra en términos de beneficios en costos y retorno de inversión.

3.1. CARACTERÍSTICAS PROPIAS DE LA NUBE Y NECESIDAD DE LOS

EQUIPOS

La necesidad de los profesionales del desarrollo de software es que los ambientes (de desarrollo y de

pruebas) se aprovisionen en el momento que lo necesitan, de la manera más rápida posible y de la

forma que se necesita para el proyecto. Si a esto lo combinamos con las 5 características de la

computación en la nube anteriormente mencionados, vamos a empezar a entender por qué la “Nube”

es el lugar ideal para estos ambientes.

Las características propias de una nube que los analistas, desarrolladores y testers pueden aprovechar

para tener sus ambientes lo más rápido posible y (en forma repetitiva) con la misma configuración es

diferencial.

De estas características, vamos a resaltar los siguientes puntos:

• Self-Service: XXXXXXX.

• Acceso Programático: XXXX.

• Repetibilidad: XXXX.

3.2. BENEFICIOS EN COSTOS Y RETORNO DE INVERSIÓN

Las necesidades de desarrollo y de pruebas no son lineales, y muchas veces presentan picos

(fundamentalmente las de pruebas) cuando se acercan entregas de producto. Estos picos impactan

directamente en los requerimientos de contratación por parte del Equipo de IT:

• Si pensamos en adquirir equipos y software para DEV/TEST en nuestra infraestructura local,

debemos siempre contratar la cantidad que se acerque al pico máximo.

• Si contratamos una cantidad de hardware y software por debajo de dicho pico, hay momentos

en que no vamos a poder atender la demanda.

Page 11: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 11 de 24

La necesidad de contratación por parte de TI se puede ver graficado de la siguiente manera:

Ejemplos de Líneas de Demanda y Tiempo para ambientes de DEV/TEST en una organización. El requerimiento de contratación de la infraestructura tradicional se encuentra en el pico máximo.

Dependiendo el negocio y de la madurez del software, se puede tener hasta un 80% de la capacidad

contratada sin utilizar en nuestro datacenter, debido a que no puede realocarse o simplemente no tiene

sentido desinstalar / reinstalar servidores para otro fin cuando en un tiempo vamos a tener que volver a

utilizarlos para DEV/TEST debido a otro pico.

Tener ambientes de DEV/TEST en una “Nube” (y pensando en una nube pública) nos permite hacer

frente a los picos sin pagar de más en los momentos de calma:

• En una Nube Pública esto es muy simple de entender: cuando tengo picos, contrato servicios y

pago por ellos; y cuando ya no necesito esos ambientes, los destruyo y dejo de pagarlos.

• En una Nube Privada puede resultar un poco más complicado de visualizar: ¿cómo obtengo esa

ventaja si, finalmente, el hardware y software lo debe contratar igual mi empresa para poder

brindarme elasticidad? Bueno, aquí es donde el concepto de centro de costos y realocación /

Page 12: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 12 de 24

subalquiler de recursos tiene sentido. En los casos de nubes privadas, debemos pensar esta

ventaja como la posibilidad que los recursos (gracias a las características de una nube) puedan

ser rápidamente liberados y alocados para otro fin.

La necesidad de contratación por parte de TI en caso de ambientes de nube se puede ver graficado

de la siguiente manera, donde la línea naranja representa la “contratación” requerida según

demanda:

Ejemplo de Líneas de Demanda y Tiempo para ambientes de DEV/TEST, con la línea de requerimientos de contratación en una nube (nótese la línea naranja).

3.3. CONCLUSIONES

XXXX.

Page 13: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 13 de 24

4. PREPARACIÓN DEL EQUIPO DE TRABAJO

Antes de tomar la decisión de elegir la nube como base para nuestros ambientes de dev/test, debemos

tener en cuenta qué preparación requiere el equipo de trabajo.

La experiencia generada desde Algeiba en los últimos años nos han permito identificar un conjunto de

prácticas, metodologías e incluso conocimientos que sería ideal tener para no morir en el intento ó

tener una mala experiencia debido a erradas expectativas.

Si bien existen muchas recomendaciones que podemos realizar, vamos a trabajar sobre 5 aspectos que

consideramos los más repetitivos en las organizaciones:

• Infraestructura como Código (IaC).

• Automatización.

• Set de Datos.

• Implementación de Metodologías Ágiles.

• Implementación de Prácticas DevOps.

4.1. INFRAESTRUCTURA COMO CÓDIGO (IAC)

La Infraestructura como Código (IaC para sus siglas en inglés de “Infrastructure as Code”) Nos permite

expresar en líneas de código la definición de la infraestructura: servidores, memoria, disco,

configuraciones, todo es código. Escrito una vez, podemos reutilizarlo una y otra vez.

Si bien requiere algún esfuerzo inicial, IaC permitió a muchos de nuestros clientes mejorar sus procesos

y procedimientos para generar infraestructura y configuraciones estandarizadas, sumando

funcionalidades de pruebas a la infraestructura y reduciendo los incidentes por errores en su

gereneración.

La utilización de IaC cae fundamentalmente en el ámbito del equipo de Infraestructura y Operaciones de

la organización. IaC brindará la posibilidad de generar plantillas que los usuarios finales podrán reutilizar

ubicándolos por su nombre, un ícono e (inclusive) personalizándolos. Sumar los conocimientos y

prácticas necesarias a este respecto, nos van a allanar el camino de dev/test en la nube más fácilmente.

En una infraestructura pensada para aplicaciones, debemos pensar en IaC como una de las soluciones

ideales para poder lograr todo aquello que nuestros usuarios (desarrolladores y testers) necesitan, y

ponérselo a disposición. El auto-servicio, aquí, debe estar en todo momento como base de la charla.

Page 14: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 14 de 24

¿Qué tecnologías y herramientas puedo utilizar para IaC + Automatización? Bueno, hay muchas. Te

nombramos algunas variadas: Terraform, Chef, Puppet, Ansible, PowerShell, Vagrant, Docker, entre

otras. Verás que hay muchas, y cada una puede ser que te sirva para algún aspecto del objetivo a lograr:

IaC e incluso automatización (punto que nos sigue en este análisis).

4.2. AUTOMATIZACIÓN

La automatización es un aspecto fundamental a la hora de poder maximizar el aprovechamiento de

ambientes de desarrollo y pruebas en la nube. No tiene sentido contar con ambientes que se pueden

eliminar y volver a crear si dedicamos excesivas horas de nuestro día laboral a generarlos y esto no lo

automatizamos.

Los usuarios beneficiados por la automatización (que en nuestro caso serán los dev/tests encargados de

llevar adelante sus tareas) la verán como la gran oportunidad de generar repetidamente la creación de

ambientes sin tener que llamar a la mesa de soporte o generar un ticket para lograrlo. La

automatización, de la mano de IaC, es clave para el éxito.

Es importante mencionar que hablar de automatización significa, probablemente, que todos los scripts y

códigos que generemos deben ser reutilizables para diversos escenarios (y no solo para el mismo

proyecto). Por ello debemos considerar los siguientes puntos:

• El uso efectivo de variables. No generemos código dependiente de la infra que necesitemos en

este preciso momento. Utilizar variables de entrada al inicio del código nos facilita su

reutilización.

• El uso efectivo de plantillas. Muchas veces vamos a necesitar crear plantillas que nos describan

un comportamiento y configuración, y no necesariamente vamos a tener código. Identificar

claramente la plantilla, la versión y su relación con el software a desarrollar / probar es

fundamental.

4.3. SET DE DATOS

Contar con set de datos preparados y representativos es fundamental para todo proceso de desarrollo y

prueba. Si a la flexibilidad de la nube no la aprovechamos probando lo correcto vamos a estar

contrarrestando su potencialidad.

Page 15: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 15 de 24

No todas las organizaciones pueden realizar una copia de seguridad de la base de datos productiva para

llevar a los ambientes no productivos, ya sea por aspectos legales (los equipos de desarrollo y pruebas

no son los dueños de la información) o por imposibilidad técnica (se trabaja con millones de registros y

estos movimientos no se pueden hacer recurrentemente). Es por ello por lo que trabajar en un set de

datos modelo y de calidad es fundamental para maximizar las ventajas de la nube. Y, aunque no

hablemos de nube, ayudar a cualquier escenario de desarrollo / pruebas 😊.

¿Con qué herramientas tecnológicas nos podemos apoyar? Desde scripts de bases de datos hasta

generadores de datos en línea. ¿Qué servicios en línea? Hay varios, por ejemplo: Generate Data,

Mockaroo y Azure Open Datasets.

4.4. IMPLEMENTACIÓN DE METODOLOGÍAS ÁGILES

¿Es necesario implementar metodologías ágiles para poder maximizar las ventajas de los ambientes de

DEV/TEST en la nube? La respuesta es: “no, no es necesario”. Podemos aprovechar las ventajas de tener

estos ambientes en la nube en un proyecto en cascada.

No obstante, si tu solución de software no requiere metodologías en cascada, la respuesta cambia a:

“sería ideal”. Las metodologías de desarrollo ágil nos ayudan a que el análisis funcional y construcción

del software (al menos desde el código) tengan una mayor tendencia al alineamiento a las necesidades

de negocio gracias al concepto de repriorización, entregas cortas y constantes. Por otro lado, facilitan a

que la integración y prueba del código realizado por los desarrolladores apunte a entregas de software

(releases) de mayor calidad.

Desarrollo Ágil y su interacción con cada fase del proceso de desarrollo de software.

Page 16: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 16 de 24

En el circuito ágil entran los Analistas Funcionales (que entregan el requerimiento), los Desarrolladores

de Software (que construyen en base a estos requerimientos), y los Analistas de Pruebas (que deben

diseñar las pruebas a ejecutar). Por lo cual, su implementación en el proceso favorece la tarea de

quienes luego probarán y operarán el software.

¿Qué metodologías Ágiles puedo utilizar? Existen varias, y sus nombres te los mostramos en el siguiente

gráfico resultado del 13er informe “State of the Agile” realizado por VersionONE donde se muestra el

grado de utilización resultante de encuestas del año 2019 en empresas consultadas:

Metodologías Ágiles más usadas según 13th Annual State of the Agile Report de VersionONE.

4.5. IMPLEMENTACIÓN DE PRÁCTICAS DEVOPS

Entendiendo DevOps como un conjunto de prácticas y metodologías orientadas al desarrollo de

software (ya sea hablemos de Infra o de Desa): ¿es requisito tenerlo para tener mis ambientes de

DEV/TEST en la Nube? Nuestra respuesta debe estar desacoplada de modas y tendencias de mercado, y

es un “no, no es requisito, pero deberíamos tomar al menos algunas de sus prácticas”.

Implementar DevOps en una organización a veces requiere de cambios profundos en las personas, los

procesos y las herramientas que se utilizan, y muchas veces no puede hacerse de la noche a la mañana.

Lo que sí podemos hacer es tomar algunas de las prácticas DevOps que nos van a ayudan a maximizar

las ventajas de los ambientes de DEV/TEST en la nube.

Page 17: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 17 de 24

DevOps contextualizado y relacionado con el enfoque metodológico de Agile + conjunto de prácticas de desarrollo de Software.

¿Qué prácticas de DevOps son saludables comenzar a implementar en ambientes de DEV/TEST en la

nube? De todo el abanico, recomendamos empezar explorando las siguientes:

• Integración Continua (Continuous Integration). Podrás utilizar Jenkins, Travis CI, Azure

Pipelines, GitLab CI, TeamCity, entre otros.

• Entrega Continua (Continuous Delivery, hacia ambientes no productivos). Podrás utilizar

prácticamente las mismas herramientas que antes mencionamos para CI, para CD.

• Pruebas Automatizadas (en lo posible). Las Pruebas de Unidad (“Unit Tests”, práctica de

desarrollo de software) son más que recomendados implementar para poder apuntar a

software de calidad. En relación con el resto de las pruebas, podemos recomendar explorar

herramientas como: Selenium, Katalon Studio, Test Complete, etc.

4.6. PRINCIPALES DESAFÍOS

Un equipo que actualmente realiza pruebas en una infraestructura tradicional, puede hacerlo sin

cambios en la nube. Ahora bien, como la nube habilita nuevas posibilidades de dinamismo y

Page 18: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 18 de 24

automatización, es recomendable sumar conocimientos adicionales que nos permitan maximizar

aspectos relacionados fundamentalmente a la Infraestructura y sus operaciones.

Desde nuestra experiencia, los principales desafíos en los equipos de trabajo tienen que ver con el

conocimiento e implementación de Infraestructura como Código y Automatización. No estamos

restando importancia a las otras, pero hemos detectado que IaC y Automation son las primeras en

aparecer. Estas prácticas se llevan adelante, en ocasiones, desde el equipo de Infraestructura, y otras

veces se suman talentos de Operaciones a los equipos de Desarrollo (que en el mercado se podría

asociar al “perfil DevOps” que a veces algunas empresas solicitan) que complementan la construcción

del software.

Page 19: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 19 de 24

5. PARTNERS Y PROVEEDORES DE DEV/TEST EN LA NUBE

Ya hemos recorrido el “por qué” la nube es una gran alternativa para ambientes de DEV/TEST, y por otro

lado analizamos en alto nivel “cómo” preparar al equipo de trabajo para este nuevo paradigma. Ahora

llegó el momento de hacer un recap sobre las ofertas que se pueden aprovechar para implementar

DEV/TEST en la nube.

5.1. PARTNERS

Trabajar con Partners Especializados para acompañar la construcción y evolución de prácticas DEV/TEST

en la nube es fundamental para muchas organizaciones. Desde Algeiba, por ejemplo, venimos

evolucionando prácticas y metodologías que facilitan a nuestros clientes hacerlo posible.

5.2. MICROSOFT AZURE

Microsoft Azure tiene varios servicios orientados a ambientes de DEV/TEST en la nube en forma

específica, como los siguientes:

• Dev/Test Labs: https://azure.microsoft.com/en-us/services/devtest-lab/

• Enterprise Dev/Test: https://azure.microsoft.com/en-us/offers/ms-azr-0148p/

Por otro lado, tiene herramientas que ayudan a los desarrolladores a gestionar / administrar / desplegar

código:

• Azure DevOps: https://azure.microsoft.com/en-us/services/devops/

• Azure Repos: https://azure.microsoft.com/en-us/services/devops/repos/

• Azure Pipelines: https://azure.microsoft.com/en-us/services/devops/pipelines/

Por otro lado, existen herramientas adicionales de desarrollo para web / desktop / mobile que podrían

interesarte:

• App Center de Visual Studio: enfocada en Dev/Test de Mobile Apps -> https://appcenter.ms/

• Cloud-Hosted Developer Environments y Visual Studio Online:

https://devblogs.microsoft.com/visualstudio/intelligent-productivity-and-collaboration-from-

anywhere/

Page 20: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 20 de 24

Por último, el fabricante ofrece algunas guías de arquitectura de referencia para Dev y Test:

• Arquitectura de ejemplo Dev-Test para soluciones PaaS: https://azure.microsoft.com/en-

gb/solutions/architecture/dev-test-paas/

• Arquitectura de ejemplo Dev-Test para soluciones IaaS: https://azure.microsoft.com/en-

gb/solutions/architecture/dev-test-iaas/

• Arquitectura de ejemplo Dev-Test para soluciones basadas en Microservicios:

https://azure.microsoft.com/en-gb/solutions/architecture/dev-test-microservice/

5.3. GOOGLE CLOUD PLATFORM

Los servicios más importantes que tiene GCP para aprovechar Desarrollo y Pruebas en la nube son los

siguientes:

• Servicios de Compute Engine: https://cloud.google.com/compute/

• Firebase Test Lab: enfocada en Mobile Apps -> https://firebase.google.com/docs/test-lab/

5.4. AMAZON WEB SERVICES

AWS tiene algunos servicios y soluciones que ayudan a equipos de desarrollo y pruebas para tener sus

ambientes en la nube, entre los cuales se destacan:

• Amazon EC2 Instances from AMIs:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html#creating-an-ami

• AWS CloudFormation: https://s3.amazonaws.com/cloudformation-

examples/BoostrappingApplicationsWithAWSCloudFormation.pdf

Además, Amazon tiene una guía dedicada a analizar el tema de Dev/Test bajo sus servicios y

seguramente te será de utilidad:

• Development and Test on Amazon Web Services: https://aws.amazon.com/whitepapers/dev-

test-on-aws/

Page 21: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 21 de 24

6. CONCLUSIONES

Como hemos visto, la nube (entendida bajo el concepto de “Computación en la Nube”) tiene grandes

ventajas en relación con la gestión de ambientes de desarrollo y pruebas para equipos de trabajo:

• A través de sus características, contamos con la posibilidad de tener ambientes de desarrollo y

pruebas en forma rápida y eficiente.

• Nos permite minimizar costos dado que solo pagamos (en términos de cliente o unidad de

negocio) por los picos de desarrollo y pruebas.

¿Nube pública o privada? Como conclusión podemos exponer lo siguiente:

• La Nube Pública ofrece la ventaja de solo pagar por los picos en los que requiero un ambiente,

no teniendo que adquirir infraestructura core para soportarla. Esto, sin lugar a duda, es la GRAN

ventaja que obtenemos cuando no tenemos una utilización constante de recursos, evitando el

tener recursos sin utilizar.

• La Nube Privada puede hacer uso de estos conceptos, en caso de empresas de mayor tamaño,

para pode re-alocar sus recursos a otros proyectos / sectores. Por supuesto, esto se debe

acompañar de automatización, para que estos ambientes puedan ser regenerados a demanda.

Es importante no perder de vista que debemos preparar al equipo de trabajo para este nuevo

paradigma de desarrollo y pruebas en la nube. No significa que tengamos cambios drásticos, los mismos

pueden ser iterativos e incrementales (como solemos decir en Algeiba) y están centrados

fundamentalmente en:

• Infraestructura como Código.

• Automatización de tareas.

• Utilización de Metodologías Ágiles.

• Mejora en las Prácticas de Desarrollo.

• Tendencia hacia DevOps.

Por último, no perder de vista que podemos facilitar la implementación de estos ambientes a través del

acompañamiento de un Partner estratégico, que nos ayude a elegir e implementar los servicios que

varios proveedores tienen a disposición. Y desde Algeiba estamos listos para acompañarte.

Page 22: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 22 de 24

7. REFERENCIAS Y LINKS

Además de los links que te proporcionamos en el desarrollo de esta publicación, te sumamos los

siguientes que te pueden resultar de interés:

• Informe “State of the Agile”: https://www.stateofagile.com/

• Chou’s Theories of Cloud Computing: The 5-3-2 Principle:

https://blogs.technet.microsoft.com/yungchou/2011/03/03/chous-theories-of-cloud-

computing-the-5-3-2-principle/

• Cloud Computing | Conceptos y Principios de la Computación en la Nube:

https://www.tectimes.net/articulo-cloud-computing-conceptos-y-principios-de-la-computacion-

en-la-nube/

• Microsoft Azure: https://azure.microsoft.com/

• Google Cloud Platform: https://cloud.google.com/

• Amazon Web Services: https://aws.amazon.com/

• Algeiba: https://www.algeiba.com/

Page 23: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 23 de 24

8. SOBRE EL AUTOR

Pablo Ariel Di Loreto es el Gerente de Arquitectura y Desarrollo de Algeiba.

Pablo Ariel Di Loreto | Gerente de Arquitectura y Desarrollo de Algeiba.

Profesor. Informático. Fanático del helado de dulce de leche. Su frase favorita: "Every day may not be

good... but there's something good in every day".

Es oriundo de la Ciudad de Berazategui, Buenos Aires, Argentina. Cuando tenía 16 años comenzó a

aprender sobre servidores Microsoft y desarrollos de software con (muy viejas) tecnologías. Comenzó a

trabajar en la administración de plataformas de IT y desarrollo de soluciones de software en forma

profesional extendiéndolo hasta la actualidad.

Actualmente se desarrolla como Architecture & Development Manager en Algeiba IT

(http://www.algeiba.com). Además es Chief Communications Officer en .NET Conf Global

(http://netconf.global), una iniciativa que conecta estudiantes, profesionales y expertos de tecnología

Page 24: en la Nube - Microsoft...Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 2 de 24 HISTORIAL DE VERSIONES Fecha Versión Autor Comentario 28/05/2019 1.0 Pablo Ariel

Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 24 de 24

alrededor del mundo y que hoy tiene presencia en varios países a través del conjunto de conferencias

.NET Conf.