METODOLOGÍA TWELVE FACTOR


 

DEPENDENCIAS


RESUMEN

La metodología twelve factor consiste en un enfoque de trabajo considerando doce principios para el desarrollo de aplicaciones en la nube; entres estos factores se tiene las dependencias, el cual consiste en el uso de librerías, módulos o paquetes de forma correcta, con el fin de incurrir en las buenas prácticas y garantizar el correcto funcionamiento de la aplicación en diferentes sistemas operativos.

INTRODUCCIÓN

En el presente artículo trataremos la metodología twelve factor para construir aplicaciones de software (laaS,PaaS,SaaS); también nos enfocaremos en el factor de dependencias, concretamente enfocado a la declaración y ventajas de esta, con sus respectivos ejemplos.

METODOLOGÍA TWELVE FACTOR

La metodología de doce factores fue creada en el año 2012 por varios desarrolladores de aplicaciones en Heroku y consiste en un enfoque o filosofía de trabajo en la que se deben considerar doce principios para desarrollar aplicaciones en la nube. A través de estos 12 puntos clave se facilita la construcción correcta y el desarrollo óptimo de un servicio en la nube.

Los 12 Factores es principalmente un marco para construir aplicaciones de software como servicio SaaS (en la nube). Para entender su enfoque y su aplicación es necesario conocer los tipos de soluciones para la computación en la nube como IaaS, PaaS, SaaS.

Infraestructura como servicio (IaaS):

Ofrece el acceso a infraestructura (servidores, redes, almacenamiento, balanceadores de carga, etc) con total control para el usuario. En este servicio están incluidos adicionalmente el almacenamiento y los firewalls.

Ejemplos: los servicios base de Amazon Web Services y Microsoft Azure.

Plataforma como servicio (PaaS):

Usando una plataforma administrada, podemos ejecutar aplicaciones bajo un entorno de infraestructura administrado, el usuario aprovecha entornos de ejecución proporcionados por un proveedor, sin tener control específico de la infraestructura subyacente.

Ejemplos: OpenShift, Google App Engine, Heroku.

Software como Servicio (SaaS):

Es el escenario de mayor abstracción para el usuario. Se entrega un software completamente funcional, delegando la administración de plataforma e infraestructura a un proveedor.

Ejemplos:  Facebook, Gmail, Google Drive y Flickr.

DEPENDENCIAS

Para el desarrollo de software nos vemos en la necesidad de usar librerías, módulos o paquetes, es necesario que las dependencias sean explícitas y en caso de que no existan en la aplicación, debe haber un sistema automático que las instale.

Declarar dependencias explícitamente:

La mayoría de los lenguajes de programación ofrecen un sistema de empaquetado para distribuir bibliotecas de soporte, como CPAN para Perl o Rubygems para Ruby. Las bibliotecas instaladas a través de un sistema de empaquetado se pueden instalar en todo el sistema (conocidas como "paquetes de sitio") o en el directorio que contiene la aplicación.

Una aplicación de doce factores nunca se basa en la existencia implícita de paquetes en todo el sistema. Declara todas las dependencias, completa y exactamente, a través de un manifiesto de declaración de dependencia. Además, utiliza una herramienta de aislamiento de dependencias durante la ejecución para garantizar que no se "filtren" dependencias implícitas del sistema circundante. La especificación de dependencia completa y explícita se aplica de manera uniforme tanto a la producción como al desarrollo.

Ejemplos:

-          Ruby ofrece el formato de manifiesto Gemfile para la declaración de dependencia y el paquete exec para el aislamiento de dependencias.

-          En Python hay dos herramientas separadas para estos pasos: Pip se usa para la declaración y Virtualenv para el aislamiento.

-          C tiene Autoconf para la declaración de dependencia, y el enlace estático puede proporcionar aislamiento de dependencia.

No importa cuál sea la cadena de herramientas, la declaración de dependencia y el aislamiento siempre deben usarse juntos.

VENTAJAS DE LA DECLARACIÓN EXPLÍCITA:

-          Simplifica la configuración para los desarrolladores:

Por ejemplo: El nuevo desarrollador puede verificar la base de código de la aplicación en su máquina de desarrollo, requiriendo solo el tiempo de ejecución del lenguaje y el administrador de dependencias instalado como requisitos previos.

-          Podrán configurar todo lo necesario para ejecutar el código de la aplicación con un comando de compilación determinista:

Por ejemplo: El comando de compilación para Ruby / Bundler es instalación de paquete, mientras que para Clojure / Leiningen es lein deps.

Cabe destacar que los doce factores tampoco dependen de la existencia implícita de herramientas del sistema, si bien estas herramientas pueden existir en muchos o incluso en la mayoría de los sistemas, no hay garantía de que existan en todos los sistemas donde la aplicación pueda ejecutarse en el futuro. Por lo cual es necesaria para la el desarrollo de un sistema.

CONCLUSIONES

Las dependencias resultan realmente necesarias para la correcta implementación de una aplicación en la nube, las configuraciones deben ser automatizables y explícitas, también deben ser claras con el entorno para máxima compatibilidad. Las dependencias están enfocadas a la escalabilidad y al correcto funcionamiento en diferentes sistemas operativos.

REFERENCIAS

THE TWELVE-FACTOR APP. (2020, 08 12). Retrieved from https://12factor.net/dependencies

Bartocci , E. (2015). GPU Computing & Architectures.

Patterson, H. (2013). Computer Arquitecture.

 

 

1 comentario: