Somos una compañía mexicana con presencia estratégica en tres Estados del país.
Creemos que la tecnología puede generar las oportunidades de desarrollo para nuestra región y país, es por ello que apostamos por generar soluciones de Ingeniería de Software que se adaptan a cualquier situación.
Imagina que mientras el equipo de desarrollo está probando una nueva funcionalidad para tu sitio de comercio electrónico, tú tienes una presentación de los resultados del último trimestre. Todo va de maravilla hasta que decides apoyarte en el sitio web para concluir con broche de oro y dejar a todos felices, entonces ¡sorpresa! La página web no puede mostrarte y tienes a todo el equipo administrativo nervioso. No sabes si apenarte contigo o enojarte con el equipo de desarrollos que seguramente ha roto algo en todo el sitio. Piensas que no fue buena idea y ahora confías menos en los chicos de tecnología.
Te sorprendería lo común que es esta historia en muchas organizaciones, y para estos casos, tenemos un plan de mitigación: los múltiples ambientes de desarrollo.
Ambientes de Desarrollo de Software
Podemos imaginar estos ambientes como una serie de copias del mismo software, cada una, almacenada y trabajando con datos independientes entre sí. Es decir, que si alguna de ellas es afectada por un error humano, las demás no deberían replicar ese error.
Justamente esa es la utilidad de tener más de un solo ambiente, porque la experiencia nos ha enseñado que los errores son cosas de todos los días, y si bien podemos mitigarlos de forma rápida, la idea no es que los usuarios finales interrumpan su navegación o proceso de compra. Mantener una plataforma o sistema funcionando y con el lanzamiento periódico de nuevas funcionalidades requiere de mucha capacidad y es ahí donde tener más de un ambiente puede ser la diferencia.
¿Cuántos ambientes de desarrollo necesita mi organización?
Primero es importante entender que no existe una estrategia única, y la que definamos para nuestra organización deberá contemplar los costos de esfuerzo para mantener y actualizar para cada ambiente con su propia base de datos, su propia instancia de servidores web, sus propias definiciones NFR y varias particularidades más para cada una de las aplicaciones elegidas para entrar en este estándar de desarrollo.
Así que lo común es encontrarnos desde dos y hasta más de 4 ambientes, en donde cada ambiente genera sus propios permisos y reglas de operación, normalmente de forma creciente hasta llegar al último escalón: el ambiente de producción, o sea, la versión funcional y disponible para nuestros usuarios.
¿Cuáles ambientes de desarrollo existen y para qué sirve cada uno?
Yendo desde el ambiente más volátil hacia el más estable, podemos encontrar primero el ambiente de desarrollo (comúnmente llamado dev, develop, etc), este suele ser el primer nivel en donde los desarrolladores realizan sus implementaciones y su importancia está en que ellos mismos pueden detectar errores en funcionalidades.
Después existen los ambientes intermedios que incluyen un mayor nivel de complejidad, aquí la misión no es desplegar nuevas funciones si no hacer pruebas de ellas para medir su impacto y relación con el resto del proyecto. Aquí será muy común que el equipo a cargo pueda generar pruebas de todo tipo, tomando distintos roles y comportamientos que puedan tener los usuarios finales, también ejecutarán pruebas más técnicas, muchas de ellas de forma automatizada. Todo esto terminará en reportes de incidencias de las que casi todas terminarán de nuevo en manos del equipo de desarrollo.
Finalmente existe el último ambiente, el ambiente de producción (prod, productivo, etc) que contiene el resultado refinado de todas las anteriores etapas. A estas versiones, enlaces y recursos tiene acceso el usuario final, contiene todas las funcionalidades disponibles para cada caso e incluso las configuraciones de accesibilidad, utilidades y demás cosas que pudieran no estar integradas en algún ambiente anterior.
Ahora entendemos que mantener distintos ambientes de desarrollo no significa ralentizar el proceso de entrega, si no que en realidad se trata de suavizar el proceso de mantenimiento y actualización de nuestros sistemas, así estamos un paso más cerca de brindar estabilidad y confianza a nuestros aplicativos de software.
Ingeniero de Software especializado en tecnologías web. Colaborador de base en empresas multiculturales como IBM, Century 21, Tecnológico de Monterrey e Instituciones de Gobierno como INE México
Luis