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.
Análisis de la cohesión y el acoplamiento para la descomposición de la base de datos
Esta sección le ayuda a analizar los patrones de acoplamiento y cohesión de su base de datos monolítica para guiar su descomposición. Comprender cómo los componentes de la base de datos interactúan y dependen unos de otros es crucial para identificar los puntos de ruptura naturales, evaluar la complejidad y planificar un enfoque de migración gradual. Este análisis revela las dependencias ocultas, resalta las áreas que son adecuadas para una separación inmediata y le ayuda a priorizar las iniciativas de descomposición y, al mismo tiempo, a minimizar los riesgos de transformación. Al examinar tanto el acoplamiento como la cohesión, puede tomar decisiones informadas sobre la secuencia de separación de los componentes a fin de mantener la estabilidad del sistema durante todo el proceso de transformación.
Esta sección contiene los siguientes temas:
Acerca de la cohesión y el acoplamiento
El acoplamiento mide el grado de interdependencia entre los componentes de la base de datos. En un sistema bien diseñado, se desea lograr un acoplamiento flexible, en el que los cambios en un componente tengan un impacto mínimo en los demás. La cohesión mide qué tan bien funcionan juntos los elementos de un componente de base de datos para cumplir un propósito único y bien definido. Una alta cohesión indica que los elementos de un componente están estrechamente relacionados y se centran en una función específica. Al descomponer una base de datos monolítica, debe analizar tanto la cohesión dentro de los componentes individuales como el acoplamiento entre ellos. Este análisis le ayuda a tomar decisiones informadas sobre cómo desglosar la base de datos y, al mismo tiempo, mantener la integridad y el rendimiento del sistema.
La siguiente imagen muestra un acoplamiento suelto con una alta cohesión. Los componentes de la base de datos trabajan juntos para realizar una función específica y se minimiza el impacto del cambio en un solo componente. Este es el estado ideal.
La siguiente imagen muestra un alto acoplamiento con baja cohesión. Los componentes de la base de datos están desconectados y es muy probable que los cambios afecten a otros componentes.
Patrones de acoplamiento comunes en bases de datos monolíticas
Existen varios patrones de acoplamiento que se encuentran comúnmente al descomponer una base de datos monolítica en bases de datos específicas para microservicios. Comprender estos patrones es crucial para el éxito de las iniciativas de modernización de bases de datos. En esta sección se describe cada patrón, sus desafíos y las mejores prácticas para reducir el acoplamiento.
Implementación: patrón de acoplamiento
Definición: Los componentes están estrechamente interconectados a nivel de código y esquema. Por ejemplo, la modificación de la estructura de una customer tabla afecta a orderinventory, y a billing los servicios.
Impacto de la modernización: cada microservicio requiere su propio esquema de base de datos y capa de acceso a los datos dedicados.
Desafíos:
-
Los cambios en las tablas compartidas afectan a varios servicios
-
Alto riesgo de efectos secundarios no deseados
-
Mayor complejidad de las pruebas
-
Es difícil modificar los componentes individuales
Mejores prácticas para reducir el acoplamiento:
-
Defina interfaces claras entre los componentes
-
Utilice capas de abstracción para ocultar los detalles de la implementación
-
Implemente esquemas específicos de dominio
Patrón de acoplamiento temporal
Definición: Las operaciones deben ejecutarse en una secuencia específica. Por ejemplo, el procesamiento de pedidos no puede continuar hasta que se hayan completado las actualizaciones de inventario.
Impacto de la modernización: cada microservicio necesita un control de datos autónomo.
Desafíos:
-
Romper las dependencias sincrónicas entre los servicios
-
Cuellos de botella en el rendimiento
-
Difícil de optimizar
-
Procesamiento paralelo limitado
Mejores prácticas para reducir el acoplamiento:
-
Implemente el procesamiento asíncrono siempre que sea posible
-
Utilice arquitecturas basadas en eventos
-
Diseñe para lograr una coherencia eventual cuando sea apropiado
Patrón de acoplamiento de despliegue
Definición: Los componentes del sistema se deben implementar como una sola unidad. Por ejemplo, un cambio menor en la lógica de procesamiento de pagos requiere la redistribución de toda la base de datos.
Impacto de la modernización: despliegues de bases de datos independientes por servicio
Desafíos:
-
Implementaciones de alto riesgo
-
Frecuencia de despliegue limitada
-
Procedimientos de reversión complejos
Mejores prácticas para reducir el acoplamiento:
-
Divídalos en componentes que se pueden implementar de forma independiente
-
Implemente estrategias de fragmentación de bases de datos
-
Utilice patrones de despliegue azul-verde
Patrón de acoplamiento de dominios
Definición: Los dominios empresariales comparten estructuras y lógica de bases de datos. Por ejemplo, los inventory dominios customerorder, y comparten tablas y procedimientos almacenados.
Impacto de la modernización: aislamiento de datos de dominios específicos
Desafíos:
-
Límites de dominio complejos
-
Es difícil escalar dominios individuales
-
Reglas comerciales complicadas
Mejores prácticas para reducir el acoplamiento:
-
Identifique límites de dominio claros
-
Separe los datos por contexto de dominio
-
Implemente servicios específicos de dominio
Patrones de cohesión comunes en bases de datos monolíticas
Hay varios patrones de cohesión que se encuentran comúnmente al evaluar los componentes de la base de datos para su descomposición. Comprender estos patrones es crucial para identificar los componentes de la base de datos bien estructurados. En esta sección se describe cada patrón, sus características y las mejores prácticas para fortalecer la cohesión.
Patrón de cohesión funcional
Definición: Todos los elementos apoyan y contribuyen directamente a la realización de una función única y bien definida. Por ejemplo, todos los procedimientos y tablas almacenados en un módulo de procesamiento de pagos solo gestionan las operaciones relacionadas con los pagos.
Impacto de la modernización: patrón ideal para el diseño de bases de datos de microservicios
Desafíos:
-
Identificar límites funcionales claros
-
Separar los componentes de uso mixto
-
Mantener una responsabilidad única
Mejores prácticas para reforzar la cohesión:
-
Agrupe las funciones relacionadas
-
Elimine la funcionalidad no relacionada
-
Defina límites claros de los componentes
Patrón de cohesión secuencial
Definición: La salida de un elemento se convierte en entrada para otro. Por ejemplo, los resultados de la validación de un pedido se incorporan al procesamiento del pedido.
Impacto de la modernización: requiere un análisis cuidadoso del flujo de trabajo y un mapeo del flujo de datos
Desafíos:
-
Gestionar las dependencias entre los pasos
-
Manejo de escenarios de falla
-
Mantener el orden del proceso
Mejores prácticas para reforzar la cohesión:
-
Documente flujos de datos claros
-
Implemente un manejo de errores adecuado
-
Diseñe interfaces claras entre los pasos
Patrón de cohesión comunicacional
Definición: Los elementos funcionan con los mismos datos. Por ejemplo, todas las funciones de gestión del perfil de los clientes funcionan con los datos de los clientes.
Impacto de la modernización: ayuda a identificar los límites de los datos para separar los servicios a fin de reducir el acoplamiento entre los módulos
Desafíos:
-
Determinar la propiedad de los datos
-
Administrar el acceso a los datos compartidos
-
Mantener la coherencia de los datos
Mejores prácticas para reforzar la cohesión:
-
Defina una propiedad clara de los datos
-
Implemente patrones de acceso a los datos adecuados
-
Diseñe un particionamiento de datos efectivo
Patrón de cohesión procedimental
Definición: Los elementos se agrupan porque deben ejecutarse en un orden específico, pero es posible que no estén relacionados funcionalmente. Por ejemplo, en el procesamiento de pedidos, un procedimiento almacenado que gestiona tanto la validación de los pedidos como la notificación al usuario se agrupa simplemente porque se producen de forma secuencial, aunque tienen diferentes propósitos y podrían ser gestionados por servicios independientes.
Impacto de la modernización: requiere una separación cuidadosa de los procedimientos y, al mismo tiempo, mantener el flujo del proceso
Desafíos:
-
Mantener el flujo correcto del proceso después de la descomposición
-
Identificar los verdaderos límites funcionales en comparación con las dependencias procedimentales
Mejores prácticas para reforzar la cohesión:
-
Separe los procedimientos en función de su propósito funcional y no de la orden de ejecución
-
Utilice patrones de orquestación para gestionar el flujo del proceso
-
Implemente sistemas de gestión del flujo de trabajo para secuencias complejas
-
Diseñe arquitecturas basadas en eventos para gestionar los pasos del proceso de forma independiente
Patrón de cohesión temporal
Definición: Los elementos están relacionados por requisitos de tiempo. Por ejemplo, cuando se realiza un pedido, se deben ejecutar varias operaciones al mismo tiempo: la comprobación del inventario, el procesamiento de pagos, la confirmación del pedido y la notificación de envío deben realizarse dentro de un período de tiempo específico para mantener un estado de pedido uniforme.
Impacto en la modernización: podría requerir un manejo especial en los sistemas distribuidos
Desafíos:
-
Coordinar las dependencias temporales en los servicios distribuidos
-
Gestión de transacciones distribuidas
-
Confirmar la finalización del proceso en varios componentes
Mejores prácticas para reforzar la cohesión:
-
Implemente los mecanismos de programación y los tiempos de espera adecuados
-
Utilice arquitecturas basadas en eventos con un manejo de secuencias claro
-
Diseñe para lograr una coherencia final con los patrones de compensación
-
Implemente patrones tipo saga para transacciones distribuidas
Patrón de cohesión lógico o coincidente
Definición: Los elementos se clasifican lógicamente para hacer las mismas cosas, aunque tengan relaciones débiles o nulas. Un ejemplo es almacenar los datos de los pedidos de los clientes, los recuentos del inventario del almacén y las plantillas de correo electrónico de marketing en el mismo esquema de base de datos, ya que todos se relacionan con las operaciones de ventas, a pesar de tener diferentes patrones de acceso, administración del ciclo de vida y requisitos de escalado diferentes. Otro ejemplo es combinar el procesamiento de pagos de pedidos y la gestión del catálogo de productos en el mismo componente de base de datos, ya que ambos forman parte del sistema de comercio electrónico, aunque desempeñan funciones empresariales distintas con necesidades operativas diferentes.
Impacto de la modernización: debería refactorizarse o reorganizarse
Desafíos:
-
Identificar mejores patrones de organización
-
Romper dependencias innecesarias
-
Reestructurar componentes que se agruparon arbitrariamente
Mejores prácticas para reforzar la cohesión:
-
Reorganícese en función de los verdaderos límites funcionales y dominios empresariales
-
Elimine las agrupaciones arbitrarias basadas en relaciones superficiales
-
Implemente una separación adecuada de los elementos en función de las capacidades empresariales
-
Alinee los componentes de la base de datos con sus requisitos operativos específicos
Implementación de bajo acoplamiento y alta cohesión
Prácticas recomendadas
Las siguientes prácticas recomendadas pueden ayudarle a lograr un bajo nivel de acoplamiento:
-
Minimice las dependencias entre los componentes de la base de datos
-
Utilice interfaces bien definidas para la interacción de los componentes
-
Evite las estructuras de datos globales y estatales compartidas
Las siguientes prácticas recomendadas pueden ayudarle a lograr una alta cohesión:
-
Agrupe los datos y las operaciones relacionados
-
Asegúrese de que cada componente tenga una responsabilidad única y clara
-
Mantenga límites claros entre los diferentes dominios empresariales
Fase 1: mapear las dependencias de los datos
Mapee las relaciones de los datos e identifique los límites naturales. Puede usar herramientas, por ejemplo SchemaSpy
También puede exportar los esquemas de la base de datos a una base de datos de gráficos o a un Jupiter bloc de notas. A continuación, puede aplicar algoritmos de agrupamiento o de componentes interconectados para identificar las dependencias y los límites naturales. Otras AWS Partner herramientas, como las siguientes CAST Imaging
Fase 2: Analice los límites de las transacciones y los patrones de acceso
Analice los patrones de transacciones para mantener las propiedades de atomicidad, coherencia, aislamiento y durabilidad (ACID) y comprenda cómo se accede a los datos y cómo se modifican. Puede utilizar herramientas de análisis y diagnóstico de bases de datos, como Oracle Automatic Workload Repository (AWR)
Las herramientas de IA, por ejemplo vFunction
Fase 3: Identificar tablas independientes
Busque tablas que demuestren dos características clave:
-
Alta cohesión: los contenidos de la tabla están estrechamente relacionados entre sí
-
Acoplamiento bajo: tienen una dependencia mínima con respecto a otras mesas.
La siguiente matriz de acoplamiento-cohesión puede ayudarle a identificar la dificultad de desacoplar cada tabla. Las tablas que aparecen en el cuadrante superior derecho de esta matriz son candidatas ideales para los esfuerzos iniciales de desacoplamiento porque son las más fáciles de separar. En un diagrama ER, estas tablas tienen pocas relaciones de clave externa u otras dependencias. Una vez desacopladas estas tablas, avance hacia tablas con relaciones más complejas.
nota
La estructura de la base de datos suele reflejar la arquitectura de la aplicación. Las tablas que son más fáciles de desacoplar a nivel de base de datos suelen corresponder a componentes que son más fáciles de convertir en microservicios a nivel de aplicación.