Saas: La metodología de 12 factores explicada

La metodología de doce-factores es una metodología para crear aplicaciones de software como servicio (Saas). Consta de algunas "mejores prácticas" diseñadas para permitir que las aplicaciones web se creen con portabilidad y resiliencia.
12-factores_img
Para comprender esta metodología podemos dividir los doce factores en 3 componentes clave:
12-factores-3-componentes
A continuación, veremos las mejores prácticas que se debe seguir en cada factor para que nuestra aplicación cumpla con esta metodología.

Factores de código:

Factor 1 - Código base:

  • Se debe hacer seguimiento a los cambios en el código desden un sistema de control de versiones (VCS) como Github, BitBucket, etc.
  • Relación uno a uno entre el código base y la aplicación.
  • Puede haber múltiples implementaciones de la aplicación.
  • Pueden haber diferentes versiones del código base en cada implementación.

Factor 5: Compila, publica y ejecuta:

  • Build (Compilación): transforma un código base en una unidad ejecutable llamada build.
  • Release (Lanzamiento): Combina el build con la configuración para que esté listo para ejecutarse.
  • Ejecución: ejecuta la aplicación.

Factor 10 - Paridad Dev/Prod:

  • Minimiza las diferencias entre los entornos de implementación y producción.
  • Los servicios de back-end deben ser los mismos en todos los entornos (dev/prod).

Factores de implementación:

Factor 2 - Dependencias:

  • Ten en cuenta que una aplicación solo es confiable como su dependencia menos confiable.
  • Asegúrate de que el código declare explícitamente cualquier dependencia.

Factor 3 - Configuración:

  • La configuración contiene todo lo que varía entre las implementaciones, como las credenciales y las ubicaciones de los servicios de respaldo.
  • Las configuraciones deben mantenerse separadas del código
  • Almacena la configuración en variables de entorno.

Factor 4 - Servicios de back-end:

  • Las aplicaciones no deben distinguir entre servicios de back-end locales y de terceros.
  • Se debe acceder a todos los servicios mediante URLs y credenciales para que puedan intercambiarse sin cambiar el código.

Factor 6 - Procesos:

  • "Stateless" y no comparten nada.
  • Los servicios de respaldo almacenan datos persistentes ya que la memoria y los sistemas de archivos no se comparten entre los procesos.
  • Los datos se almacenan de forma centralizada.

Factor 7 - Enlace a través de puertos:

  • Exportación de servicios designando un puerto. HTTP y otros servicios se exportan de esta manera.
  • Para vincular un puerto normalmente debe declarar una biblioteca de servidor web.
  • Las aplicaciones pueden ser servicios que sean llamadas por otras aplicaciones a través de la URL y el puerto.

Factor 9 - Desechabilidad:

  • Las aplicaciones deben tener un tiempo de inicio de proceso mínimo y un cierre o terminación de la applicación eficiente.
  • Implementar código y configurar cambios rápidamente.
  • Escale aplicaciones fácilmente.

Factor 11 - Registros (logs):

  • Las aplicaciones no deben preocuparse por almacenar registros (logs).
  • Las aplicaciones deben tener registros de tendencias en forma de un flujo de eventos escrito en stdout.
  • El entorno de ejecución captura el flujo de todas las aplicaciones, agrega los registros y enruta los registros a su destino.

Factores operativos:

Factor 8 - Simultaneidad:

  • Se pueden utilizar procesos concurrentes para escalar la aplicación.
  • Los procesos sin estado se pueden activar sin crear dependencias en otros procesos.

Factor 12 - Procesos de administración:

  • Habilite procesos únicos de administración de aplicaciones, como la migración de bases de datos.
  • Ejecutar contra una versión con la misma configuración del código base.
  • Están incluidos en el código de la aplicación.

Fuentes:

  • El sitio web de la Metodología de los Doce Factores: 12factor

41