PHP Laravel

Integración de Workable con Feature Flags en Laravel Pennant

Este post describe la implementación de una integración con Workable, un servicio de búsqueda de empleo, dentro del proyecto devlog-ist/landing. Este proyecto [Descripción del proyecto, si estuviera disponible en el contexto]. La integración se gestiona a través de Laravel Pennant, utilizando un feature flag para controlar su activación.

El Problema

Integrar servicios externos a menudo requiere un control preciso. En este caso, necesitábamos una forma de activar o desactivar la integración de Workable sin realizar despliegues, lo que permite probar y habilitar la funcionalidad de manera controlada. Además, debíamos asegurarnos de que la integración no interfiera con otras partes del sistema cuando está inactiva.

La Solución

Implementamos una integración con la API de Workable para buscar empleos y permitir la presentación de solicitudes. Para controlar esta integración, utilizamos Laravel Pennant, un paquete que facilita la gestión de feature flags. Los pasos clave fueron:

  1. Creación de un Feature Flag: Definimos un feature flag llamado workable-integration que actúa como interruptor principal para la integración.
  2. Servicio de Integración: Se creó un servicio WorkableJobBoardService para encapsular toda la lógica de interacción con la API de Workable. Este servicio maneja la obtención de empleos y el envío de solicitudes.
  3. Guardar la Integración: Se utiliza el feature flag para condicionalmente ejecutar el servicio WorkableJobBoardService
  4. Protección de la Orquestación: Se implementaron guardas en AutoApplyOrchestrator para evitar que se ejecuten las funciones fetchJobs y submitApplication de Workable cuando el feature flag está inactivo.
  5. Pruebas Exhaustivas: Se agregaron pruebas para verificar el comportamiento del feature flag y el funcionamiento del servicio Workable.
use Laravel\Pennant;

// Verificar si el feature flag está activo
if (Pennant::check('workable-integration')) {
    // Ejecutar la lógica de integración de Workable
    $jobs = app(WorkableJobBoardService::class)->getJobs();
}

Impacto

  • Control Total: Activación y desactivación de la integración sin necesidad de despliegues.
  • Aislamiento: La integración no afecta otras partes del sistema cuando está inactiva.
  • Flexibilidad: Facilita la experimentación y el lanzamiento gradual de la funcionalidad.
  • Testeo Robusto: Pruebas automatizadas garantizan el correcto funcionamiento del feature flag y la integración de Workable.
Gerardo Ruiz

Gerardo Ruiz

Author

Share: