La regla: pon una preocupación en el paquete compartido cuando todos los servicios consumidores deban hacerla de forma idéntica y equivocarse en cualquiera de ellos sea un problema real, no una preferencia de estilo.
La autenticación es el caso más claro. Todas las aplicaciones actuales registran el provider del paquete compartido en lugar de escribir su propia pila de autenticación:
// bootstrap/providers.php
return [
ApiInfrastructureProvider::class,
ServerServiceProvider::class,
];
Dos líneas. Una es el provider fino de la propia aplicación. La otra trae todo lo que la flota ha acordado que cada API debe hacer igual. Nadie del equipo de esta aplicación escribió EnsureTokenIsValidMiddleware. Nadie necesita hacerlo. Llegó con la dependencia, igual que la paginación llegó con Eloquent.
Esa única línea le compra a un servicio cinco cosas que nunca tiene que volver a decidir:
- Autenticación por token Bearer: resuelve y cachea el token, comprueba la expiración y estampa el modelo resuelto en la petición, igual en todas las aplicaciones.
- Límite de frecuencia: un limitador con nombre, registrado una vez en el
boot()del provider en lugar de copiado en la configuración de cada aplicación. - Formas estándar de respuesta y error:
BaseResponsey sus subclases del capítulo 2, para que un cliente que golpea tres servicios distintos siga analizando un solo sobre. - Un cliente HTTP saliente resiliente: el trait
SendsRequests, para que un 429 de un proveedor se reintente con espera en lugar de tumbar el job entero, en cada integración que lo use y no sólo en aquellas cuyo autor se acordó de escribir la lógica de reintentos. - Un endpoint de salud: registrado desde el propio fichero de rutas del paquete, para que la ruta de salud signifique lo mismo en todas partes.
Esta es la lección uno del capítulo, dicha claramente: las preocupaciones transversales deberían ser una garantía estructural heredada, no un hábito que cada autor de servicio tenga que recordar. Una arista heredada —cada servicio se autentica igual porque el código de autenticación vive físicamente en aquello de lo que dependen— no se puede saltar. Una arista recordada —cada servicio debería autenticarse igual, y cada persona sabe que hay que copiar el patrón— se salta en algún sitio, tarde o temprano, por alguien nuevo, un viernes, con una fecha encima. No puedes elegir si alguien olvidará algo. Sólo puedes elegir si olvidarlo es posible.