Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
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
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.
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
Ambientes de Dev/Test en la Nube | El por qué, cómo y qué Página 4 de 24
8. Sobre el Autor...................................................................................................................................... 23
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.
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.
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.
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.
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.
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.
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 /
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.
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.
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.
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.
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.
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
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.
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/
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/
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.
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/
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
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.