Llegamos a ustedes gracias a:



Reportajes y análisis

8 claves para tener éxito con DynamoDB

Cómo asegurar que la base de datos de valor clave trabaje para usted y no en su contra.

[11/08/2017] DynamoDB, una base de datos completamente administrada por NoSQL, es una pieza impresionante de tecnología, y es increíble que AWS la haya abierto para que sea usada por todo el mundo. Lo que tomó millones de dólares en investigarse y desarrollarse -un producto que le brinda servicio a millones de consultas por segundo con un tiempo de espera bajo- puede ser rentado de manera efectiva mediante el pago de dólares por hora y se encuentra a disposición de cualquiera que tenga una tarjeta de crédito. Para aquellos que necesitan un almacén de valor fundamental que pueda almacenar confiablemente cantidades masivas de datos, no existen muchas mejores opciones.

Aunque DynamoDB generalmente funciona muy bien, es inevitable que todos nos topemos con algunos problemas. Hace unos cuantos meses en Segment, mis colegas escribieron una publicación de blog detallada sobre nuestros propios problemas con DynamoDB. Principalmente, estábamos llegando a los límites de nuestra tarifa debido a problemas con nuestra instalación de partición -una sola partición estaba limitando el rendimiento de una mesa completa. Resolver el problema requirió de un esfuerzo sobrehumano, pero valió la pena (300 mil dólares anuales para ser exacto).

Puede leer la historia completa aquí. Pero, para ahorrarle tiempo, he tamizado la experiencia de nuestro equipo de ingeniería en ocho piezas que deberían ayudarle a obtener el mayor provecho de DynamoDB y asegurarse de que realmente le funcione.

1. Pregúntese: ¿Realmente necesito DynamoDB?

Primero, debería saber si es que, efectivamente, DynamoDB es la herramienta correcta para el trabajo. Si tiene una cantidad pequeña de datos, requiere de agregaciones o de la habilidad detallada para reunir mucha información, DynamoDB probablemente no es la herramienta adecuada para usted. RDS o Aurora probablemente sean sus mejores opciones, o en el caso de que la durabilidad no importe y no necesite agregaciones, está Redis en ElastiCache.

2. Lea la documentación detallada de DynamoDB -¡por completo!

Aunque casi todos leen la documentación general de AWS (¿de qué otra forma podría lograr que las cosas funcionen?), las secciones que de hecho recomiendan cómo usar la herramienta y desplegar sus datos a escala, son fáciles de pasar por alto. Estas secciones usualmente son bastante densas. Dado que DynamoDB no es de fuente abierta, existe un poco menos de literatura sobre las pruebas de estrés y estándares para ésta. Sin embargo, es una necesidad leer estas secciones a cabalidad con el fin de dominar esta herramienta. Así que hágalo.

3. Acuda a Amazon cuando necesite ayuda

AWS tiene muchas herramientas a su favor para ayudar a diagnosticar partes de su cuenta. Hemos tenido la mejor suerte al contactar a nuestro representante de cuenta para todo, desde el incremento de límites hasta el soporte técnico detallado. Ellos han sido indispensables para ponernos en contacto con las personas adecuadas (incluyendo ingenieros del lado del producto, quienes han sido increíblemente serviciales) y hacer un seguimiento rápido de nuestras solicitudes de soporte.

4. Lectura antes de escritura, si es posible

En DynamoDB, el rendimiento de lectura es cinco veces más rápido que el de escritura. Si su carga de trabajo involucra muchas escrituras, vea si puede leer los datos antes para evitar la actualización in situ. Leer primero le ayudará a evitar tener que regular el control, y reducirá su cuenta en un ambiente de escritura pesada, donde puede que las llaves estén escritas múltiples veces.

5. Agrupe escrituras haciendo divisiones en el flujo superior

Si toda la información sobre una llave determinada es enviada al flujo superior de la máquina en Dynamo, puede agrupar datos y ahorrar en escribirles. En lugar de escribir cada vez que recibe una actualización importante, puede agrupar toda la información y después escribirla una vez por segundo, o una vez por minuto. La agrupación le permite ajustar sus requisitos de tiempo de latencia y balancearlos con el costo de Dynamo. Hacer divisiones (en un sistema como Kafka o Storm) le permite evadir cualquier clase de bloqueo o condiciones de carrera que podrían venir de múltiples escritores concurrentes.

6. Ajuste dinámicamente las alzas de su rendimiento

Si su tráfico está congestionado, puede lograr ahorros significativos haciendo "auto-escalas de su rendimiento de DynamoDB para que este se nivele con su carga real. De hecho, AWS acaba de lanzar esta función, sobre la que podrá leer en el blog de AWS (mí equipo ha estado usando una división del proyecto Dynamic DynamoDB por bastante tiempo, así que este desarrollo es muy bien recibido). Para ahorros adicionales de costos, puede ajustar cómo el rendimiento de DynamoDB es aprovisionado en comparación a qué tanto la usa con AWS Lambda y eventos CloudWatch.

7. Aproveche los Streams de DynamoDB

DynamoDB tiene una función que muy pocos conocen, capaz de publicar todos los cambios a lo que esencialmente es una fuente Kinesis. Los Streams son muy útiles para construir otras tuberías con el fin de evitar tener que estar operando SCANs o haciendo su propio eventing.

8. Registre todos sus fragmentos calientes

Cuando mi equipo enfrentó una regulación excesiva de control, desciframos un truco astuto: Siempre que cometíamos un error de regulación, registramos la llave particular que intentaba actualizarse. En agregación, esto nos otorgó una visión holística de qué estaba sucediendo, y nos permitió poner en una lista negra a ciertas "llaves calientes problemáticas.

DynamoDB se desempeñará de manera muy diferente dependiendo de cómo sus datos están organizados y cómo decide solicitarlos. Es importante entender sus patrones de solicitud, necesidades de indexación, y rendimiento. Aunque DynamoDB es un servicio de nube y es operado por ingenieros de AWS, no es a prueba de decisiones pobres de arquitectura. No existe "magia bajo el capot. DynamoDB es una gran pieza de tecnología. Usarla correctamente puede hacer la diferencia entre una cuenta de servicios de un millón de dólares y una que es una mera fracción de ese monto.