Controlar el acceso con el patrón de servicio de empaquetado de bases de datos - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Controlar el acceso con el patrón de servicio de empaquetado de bases de datos

Un servicio contenedor es una capa de servicio que actúa como fachada de la base de datos. Este enfoque es particularmente valioso cuando se necesita mantener la funcionalidad existente y, al mismo tiempo, prepararse para una futura descomposición. Este patrón sigue un principio simple: cuando algo está demasiado desordenado, comience por contener el desorden. El servicio de empaquetado se convierte en la única forma autorizada de acceder a la base de datos, ya que proporciona una interfaz controlada y oculta la complejidad subyacente.

Utilice este patrón cuando la descomposición inmediata de la base de datos no sea factible debido a esquemas complejos o cuando varios servicios requieran un acceso continuo a los datos. Es especialmente valioso durante los períodos de transición porque proporciona tiempo para una refactorización cuidadosa y, al mismo tiempo, mantiene la estabilidad del sistema. Este patrón funciona bien cuando se consolida la propiedad de los datos en manos de equipos específicos o cuando las nuevas aplicaciones necesitan vistas agregadas en varias tablas.

Por ejemplo, aplique este patrón cuando:

  • La complejidad del esquema impide la separación inmediata

  • Varios equipos necesitan un acceso continuo a los datos

  • Se prefiere la modernización gradual

  • La reestructuración del equipo requiere una propiedad clara de los datos

  • Las nuevas aplicaciones necesitan vistas de datos consolidadas

Ventajas y limitaciones del patrón de servicio de empaquetado de bases de datos

Las siguientes son las ventajas del patrón de envoltura de bases de datos:

  • Crecimiento controlado: el servicio de contenedor evita nuevas adiciones incontroladas al esquema de la base de datos.

  • Límites claros: el proceso de implementación le ayuda a establecer límites claros de propiedad y responsabilidad.

  • Libertad de refactorización: un servicio de embalaje le permite realizar cambios internos sin afectar a los consumidores.

  • Observabilidad mejorada: un servicio de empaquetado es un punto único de monitoreo y registro.

  • Pruebas simplificadas: un servicio de empaquetado facilita a los servicios consumidores la creación de versiones simuladas y simplificadas para las pruebas.

Las siguientes son las limitaciones del patrón de empaquetado de la base de datos.

  • Acoplamiento tecnológico: un servicio de empaquetado funciona mejor cuando utiliza el mismo conjunto de tecnologías que los servicios consumidores.

  • Gastos generales iniciales: el servicio de empaquetado requiere una infraestructura adicional que podría afectar al rendimiento.

  • Esfuerzo de migración: para implementar el servicio de empaquetado, es necesario coordinar los equipos para evitar el acceso directo.

  • Rendimiento: si el servicio de empaquetado tiene mucho tráfico, un uso intensivo o un acceso frecuente, es posible que los servicios que consumen productos tengan un rendimiento deficiente. Además de la base de datos, el servicio de empaquetado debe gestionar la paginación, los cursores y las conexiones a la base de datos. Según el caso de uso, es posible que no se escale bien y que no sea adecuado para cargas de trabajo de extracción, transformación y carga (ETL).

Implementación del patrón de servicio de empaquetado de bases de datos

Hay dos fases para implementar el patrón de servicio de empaquetado de bases de datos. En primer lugar, se crea el servicio de empaquetado de bases de datos. Luego, dirige todos los accesos a través de él y documenta los patrones de acceso.

Fase 1: Creación del servicio de empaquetado de bases de datos

Cree una capa de servicio ligera que actúe como guardián de su base de datos. Inicialmente, debería reflejar todas las funcionalidades existentes. Este servicio contenedor se convierte en el punto de acceso obligatorio para todas las operaciones de la base de datos, lo que convierte las dependencias directas de la base de datos en dependencias de nivel de servicio. Implemente un registro y una supervisión detallados en esta capa para realizar un seguimiento de los patrones de uso, las métricas de rendimiento y las frecuencias de acceso. Mantenga sus procedimientos almacenados actuales, pero asegúrese de que solo se pueda acceder a ellos a través de esta nueva interfaz de servicio.

Fase 2: Implementación del control de acceso

Redirija sistemáticamente todo el acceso a la base de datos a través del servicio de empaquetado y, a continuación, revoque los permisos directos a la base de datos de los sistemas externos que accedan directamente a la base de datos. Documente cada patrón de acceso y cada dependencia a medida que se migran los servicios. Este acceso controlado permite la refactorización interna de los componentes de la base de datos sin interrumpir a los consumidores externos. Por ejemplo, comience con operaciones de solo lectura y bajo riesgo en lugar de flujos de trabajo transaccionales complejos.

Fase 3: Supervise el rendimiento de la base de datos

Utilice el servicio de encapsulado como punto de supervisión centralizado del rendimiento de la base de datos. Realice un seguimiento de las métricas clave, incluidos los tiempos de respuesta a las consultas, los patrones de uso, las tasas de error y la utilización de los recursos. Configure alertas para los umbrales de rendimiento y los patrones inusuales. Por ejemplo, supervise las consultas de ejecución lenta, la utilización del grupo de conexiones y el rendimiento de las transacciones para identificar de forma proactiva los posibles problemas.

Utilice esta vista consolidada para optimizar el rendimiento de la base de datos mediante el ajuste de las consultas, los ajustes de asignación de recursos y el análisis de los patrones de uso. La naturaleza centralizada del servicio de empaquetado facilita la implementación de mejoras y la validación de su impacto en todos los consumidores, al tiempo que mantiene estándares de rendimiento consistentes.

Mejores prácticas para implementar un servicio de empaquetado de bases de datos

Las siguientes prácticas recomendadas pueden ayudarle a implementar un servicio de empaquetado de bases de datos:

  • Comience de a poco: comience con un contenedor mínimo que simplemente represente la funcionalidad existente

  • Mantenga la estabilidad: mantenga estable la interfaz de servicio y, al mismo tiempo, realice mejoras internas

  • Supervise el uso: implemente una supervisión integral para comprender los patrones de acceso

  • Propiedad clara: asigne un equipo dedicado al mantenimiento tanto del contenedor como del esquema subyacente

  • Fomente el almacenamiento local: motive a los equipos a almacenar sus datos en sus propias bases de datos

Ejemplo basado en escenarios

En esta sección se describe un ejemplo de cómo una empresa ficticia, llamada AnyCompany Books, podría utilizar el patrón de envoltura de la base de datos para controlar el acceso a su monolítico sistema de bases de datos. En AnyCompany Books, hay tres servicios fundamentales: despacho, financiación y procesamiento de pedidos. Estos servicios comparten el acceso a una base de datos central. Cada servicio es mantenido por un equipo diferente. Con el tiempo, modifican de forma independiente el esquema de la base de datos para satisfacer sus necesidades específicas. Esto ha dado lugar a una intrincada red de dependencias y a una estructura de base de datos cada vez más compleja.

Tres aplicaciones que comparten el acceso a una base de datos central con varios esquemas modificados.

El arquitecto empresarial o de aplicaciones de la empresa reconoce la necesidad de descomponer esta base de datos monolítica. Su objetivo es dotar a cada servicio de su propia base de datos dedicada para mejorar la capacidad de mantenimiento y reducir las dependencias entre equipos. Sin embargo, se enfrentan a un desafío importante: es casi imposible descomponer la base de datos mientras los tres equipos siguen modificándola activamente para sus proyectos en curso. Los constantes cambios de esquema y la falta de coordinación entre los equipos hacen que sea extremadamente arriesgado intentar una reestructuración importante.

El arquitecto utiliza el patrón de servicio de empaquetado de bases de datos para empezar a controlar el acceso a la base de datos monolítica. En primer lugar, configuraron el servicio de empaquetado de bases de datos para un módulo en particular, denominado servicio de pedidos. A continuación, redirigen el servicio de procesamiento de pedidos para acceder al servicio empaquetador en lugar de acceder directamente a la base de datos. La siguiente imagen muestra la infraestructura modificada.

Acceso a la base de datos después de implementar el servicio de empaquetado.