Lista de comprobación de preparación para tablas globales y preguntas frecuentes
Utilice la siguiente lista de comprobación para tomar decisiones y realizar tareas cuando despliegue tablas globales.
Determine cuántas y qué regiones deben participar en la tabla global.
Determine el modo de escritura de la aplicación. Para obtener más información, consulte Modos de escritura con tablas globales.
Planifique su estrategia de Solicitud de enrutamiento con tablas globales en función de su modo de escritura.
Defina su plan de evacuación, en función de su modo de escritura y de su estrategia de enrutamiento.
Capture métricas sobre el estado, la latencia y los errores de cada región. Para obtener una lista de las métricas de DynamoDB, consulte la entrada de blog de AWS Supervisión de Amazon DynamoDB para el reconocimiento operativo
, donde encontrará una lista de las métricas que debe examinar. También debe utilizar valores controlados sintéticos (solicitudes artificiales diseñadas para detectar errores; en inglés se llama “canary”, por el uso que se hacía de los canarios en las minas de carbón), así como la observación en directo del tráfico de los clientes. En las métricas de DynamoDB no aparecerán todas las incidencias. Establezca alarmas para cualquier aumento sostenido de
ReplicationLatency
. Un aumento podría indicar un error de configuración accidental en el que la tabla global tiene diferentes opciones de escritura en distintas regiones, lo que da lugar a solicitudes replicadas con errores y a un aumento de las latencias. También podría indicar que existe una interrupción regional. Un buen ejemplosería generar una alerta si el promedio reciente supera los 180 000 milisegundos. También puede vigilar si ReplicationLatency
cae a 0, lo que indica que la replicación se ha estancado. .Asigne una configuración máxima de lectura y escritura suficiente para cada tabla global.
Identifique con antelación las razones para evacuar una región. Si la decisión implica una evaluación manual, documente todas las consideraciones. Este trabajo debe realizarse cuidadosamente con antelación, no bajo estrés.
Mantenga un manual de procedimientos para cada acción que deba llevarse a cabo cuando evacúe una región. Normalmente se requiere muy poco trabajo para las tablas globales, pero trasladar el resto de la pila puede resultar complejo.
nota
Es una práctica recomendada confiar solo en las operaciones del plano de datos y no en las del plano de control porque algunas operaciones del plano de control pueden deteriorarse durante los errores de la región.
Para obtener más información, consulte la entrada del blog de AWS Crear aplicaciones resilientes con tablas globales de Amazon DynamoDB: parte 4
. Pruebe periódicamente todos los aspectos del manual de procedimientos, incluidas las evacuaciones de región. Un manual de procedimientos no probado es un manual poco fiable.
Considere la posibilidad de utilizar Resilience Hub para evaluar la resistencia de toda su aplicación (incluidas las tablas globales). Proporciona una visión completa del estado de resiliencia general de su cartera de aplicaciones a través de su panel.
Considere la posibilidad de utilizar las comprobaciones de preparación de Route 53 ARC para evaluar la configuración actual de su aplicación y realizar un seguimiento de cualquier desviación de las prácticas recomendadas.
Al escribir una comprobación de estado para utilizarla con Route 53 o Global Accelerator, no basta con hacer ping para comprobar que el punto de conexión de DynamoDB está activo. Con esto no cubrimos los numerosos modos de error, como los errores de configuración de IAM, los problemas de implementación del código, los errores en la pila fuera de DynamoDB, las latencias de lectura o escritura superiores al promedio, etc. Lo mejor es realizar un conjunto de llamadas que ejerciten un flujo de base de datos completo.
Preguntas frecuentes sobre el despliegue de tablas globales
¿Cuáles son algunos principios útiles para el uso general de las tablas globales de DynamoDB?
Las tablas globales de DynamoDB tienen muy pocas opciones de control, pero aún así requieren una serie de consideraciones. Debe determinar su modo de escritura, el modelo de enrutamiento y los procesos de evacuación. Debe instrumentar la aplicación en todas las regiones y estar preparado para ajustar el enrutamiento o realizar una evacuación para mantener el estado global. La recompensa es disponer de un conjunto de datos distribuidos globalmente con lecturas y escrituras de baja latencia y un acuerdo de nivel de servicio del 99,999 %.
¿Cuál es el precio de las tablas globales?
El precio de una escritura en una tabla de DynamoDB tradicional se calcula en unidades de capacidad de escritura (WCU, para tablas aprovisionadas) o unidades de solicitud de escritura (WRU, para tablas bajo demanda). Si escribe un elemento de 5 KB, se genera un cargo de 5 unidades. El precio de una escritura en una tabla global se calcula en unidades de capacidad de escritura replicada (rWCU, para tablas aprovisionadas) o unidades de solicitud de escritura replicada (rWRU, para tablas bajo demanda).
Las rWCU y las rWRU incluyen el costo de la infraestructura de streaming necesaria para administrar la replicación. Por ello, su precio es un 50 % superior al de las WCU y las WRU. Se aplican tarifas de transferencia de datos entre regiones.
Los cargos por unidad de escritura replicada se producen en cada región en la que el elemento se escribe directamente o se escribe replicado.
La escritura en un índice secundario global (GSI) se considera una escritura local y utiliza unidades de escritura normales.
En este momento no hay capacidad reservada disponible para las rWCU. Adquirir capacidad reservada puede seguir siendo beneficioso para las tablas con GSI que consumen unidades de escritura.
El arranque inicial al agregar una nueva región a una tabla global se cobra como una restauración por GB de datos restaurados, más los gastos de transferencia de datos entre regiones.
¿Qué regiones admiten las tablas globales?
La versión 2019.11.21 (actual) de las tablas globales está disponible en la mayoría de las regiones. Puede ver la lista más reciente en la lista desplegable Región de la consola de DynamoDB al agregar una réplica.
¿Cómo se gestionan los GSI con las tablas globales?
En la versión 2019.11.21 (actual) de las tablas globales, cuando se crea un GSI en una región, se crea automáticamente en otras regiones participantes y se repone de forma automática.
¿Cómo detengo la replicación de una tabla global?
Puede eliminar una tabla de réplica del mismo modo que eliminaría cualquier otra tabla. Al eliminar la tabla global se detiene la replicación en esa región y se elimina la copia de la tabla guardada en dicha región. No obstante, no se puede detener la replicación mientras se mantienen copias de la tabla como entidades independientes, ni tampoco se puede pausar.
¿Cómo interactúan los flujos de DynamoDB con las tablas globales?
Cada tabla global produce un flujo independiente basado en todas sus escrituras, independientemente de dónde hayan comenzado. Puede elegir consumir el flujo de DynamoDB en una región o en todas las regiones (de forma independiente). Si desea procesar operaciones de escritura locales pero no replicadas, puede agregar su propio atributo de región a cada elemento para identificar la región de escritura. A continuación, puede utilizar un filtro de eventos Lambda para llamar la función de Lambda solo para las operaciones de escritura en la región local. Esta acción ayuda en las operaciones de inserción y actualización, pero no en las de eliminación.
¿Cómo gestionan las transacciones las tablas globales?
Las operaciones transaccionales proporcionan garantías de atomicidad, uniformidad, aislamiento y durabilidad (ACID, por sus siglas en inglés) solo en la región en la que se creó la operación de escritura originalmente. No se admiten las transacciones entre regiones en las tablas globales. Por ejemplo, si tiene una tabla global con réplicas en las regiones Este de EE. UU. (Ohio) y Oeste de EE. UU. (Oregón) y realiza una operación TransactWriteItems
en la región Este de EE. UU. (Ohio), puede observar transacciones completadas parcialmente en la región Oeste de EE. UU. (Oregón) a medida que los cambios se replican. Los cambios se replican en otras regiones solo cuando se han confirmado en la región de origen.
¿Cómo interactúan las tablas globales con la memoria caché de DynamoDB Accelerator (DAX)?
Las tablas globales eluden DAX mediante la actualización directa de DynamoDB, por lo que DAX no tiene constancia de que está almacenando datos obsoletos. La memoria caché de DAX solo se actualiza cuando caduca el TTL de la memoria caché.
¿Se propagan las etiquetas de las tablas?
No, las etiquetas no se propagan automáticamente.
¿Debo hacer copias de seguridad de las tablas de todas las regiones o solo de una?
La respuesta depende de la finalidad de la copia de seguridad. Si desea garantizar la durabilidad de los datos, DynamoDB ya proporciona esa protección. El servicio garantiza la durabilidad. Si desea conservar una instantánea para los registros históricos (por ejemplo, para cumplir los requisitos normativos), la copia de seguridad en una región debería ser suficiente. Puede copiar la copia de seguridad a más regiones mediante AWS Backup. Si desea recuperar datos eliminados o modificados erróneamente, utilice la recuperación en un momento dado (PITR) de DynamoDB en una región.
¿Cómo puedo desplegar tablas globales con AWS CloudFormation?
CloudFormation representa una tabla de DynamoDB y una tabla global como dos recursos independientes: AWS::DynamoDB::Table
y AWS::DynamoDB::GlobalTable
. Un enfoque consiste en crear todas las tablas que puedan ser potencialmente globales mediante el constructo GlobalTable
. De este modo, podrá mantenerlas inicialmente como tablas independientes y agregar regiones más adelante si es necesario.
En CloudFormation, cada tabla global está controlada por una sola pila, en una sola región, independientemente del número de réplicas. Cuando implemente la plantilla, CloudFormation crea y actualiza todas las réplicas como parte de una sola operación de pila. No debe desplegar el mismo recurso AWS::DynamoDB::GlobalTable
en varias regiones. Se producirán errores y no se admite. Si despliega la plantilla de aplicación en varias regiones, puede usar condiciones para crear el recurso AWS::DynamoDB::GlobalTable
en una sola región. O bien, puede optar por definir recursos AWS::DynamoDB::GlobalTable
en una pila que sea independiente de la pila de aplicaciones y asegurarse de que despliega en una sola región.
Si tiene una tabla normal y desea convertirla en una tabla global sin que CloudFormation deje de administrarla, establezca la política de eliminación en Retener, elimine la tabla de la pila, conviértala en una tabla global en la consola y, a continuación, importe la tabla global como un nuevo recurso a la pila.
En este momento no se admite la replicación entre cuentas.