FeatureToggles o FeatureFlags en nuestras aplicaciones de .Net Core
Ayer comentaba en una entrada el uso de FeatureToggles o FeatureFlags en nuestras aplicaciones.
En esta entrada voy a presentar un pequeño Framework o librería de código abierto realizada en .Net Core 3 y que encontrarás en GitHub y en NuGet por si quieres adaptarlo o utilizarla directamente.
Podrás utilizar esta librería en tus aplicaciones de .Net Core 3 con el fin de utilizar FeatureToggles o FeatureFlags.
De esta forma, podremos poner en práctica el uso de FeatureToggles o FeatureFlags que comentaba en mi anterior entrada.
Aunque existen muchas alternativas en la red para llevar a cabo esta técnica o forma de trabajar, creo que la que propongo es bastante sencilla y rápida de implementar.
El diagrama de clases de la librería o proyecto que he creado es el que se indica en la siguiente imagen:
La clase ToggleSettings contiene los valores de cada Toggle.
Los valores de esta clase son los básicos de cualquier Toggle.
Cierto es que hay quien añade otros datos adicionales como fechas y horas de validez, etc., pero esto ya es a gusto del consumidor y de la sobreingeniería que queramos abordar.
Desde el consumidor de la librería, sólo tendremos que llamar a la clase Toggle que usará por debajo la clase ToggleService que implementará la interfaz IToggleService.
La única implementación que tendrás que hacer por lo tanto para utilizar esta librería es la de la interfaz IToggleService.
¡Nada más!.
Para demostrar esto, en el código de ejemplo que encontrarás en la carpeta Sample encontrarás dos proyectos.
En uno de ellos llamado MyToggleService encontrarás la implementación de la interfaz IToggleService.
En este caso y para hacerlo sencillo he recogido la información de los Toggles de la misma clase, pero podríamos recoger esa información de una Azure Table Storage, base de datos, fichero de configuración, fichero Json, servicio externo, etc.
Siguiendo el patrón SRP tampoco he añadido en la librería gestión de validación o caducidad de Toggles ni nada sofisticado, ya que dentro del propio servicio y «fontanería» podríamos crear esa gestión nosotros mismos.
También encontrarás dentro de la carpeta Sample un proyecto llamada ConsoleToggleApp que no es otra cosa que la ejecución de esta pequeña demostración del funcionamiento de FeatureToggles o FeatureFlags.
Lo que el ejemplo realiza en sí es la carga de los Toggles y recorrerlos para mostrarlos.
Después preguntamos por varios Toggles, dos existentes y dos inventados.
Lógicamente los inventados van a tener un valor deshabilitado IsEnabled = false.
También verás en el ejemplo que he ejecutado el método que se encarga de «limpiar» o vaciar todos los Toggles, por lo que si accedemos al único Toggle que estaba configurado como habilitado, aparecerá ahora deshabilitado.
Para finalizar, he recargado los Toggles y he vuelto a comprobar el estado del Toggle que debía aparecer habilitado.
Como podemos ver, la librería es muy ligera, con muy poca o nula sobreingeniería, y que delega la gestión de los Toggles en el servicio que deberemos crear.
Luego tan sólo nos tenemos que preocupar de llamar a la clase Toggle para hacer las correspondientes peticiones y llamadas para preguntar si un determinado Toggle está habilitado o deshabilitado.
Si quieres acceder al código del proyecto, podrás hacerlo en este enlace de GitHub.
Si quieres acceder al paquete NuGet para utilizarlo en tus desarrollos, podrás hacerlo en este enlace de NuGet.
Happy Coding!