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.
Para comprender esta metodología podemos dividir los doce factores en 3 componentes clave:
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
Top comments (0)