Cree una aplicación moderna con bases de datos de AWS especialmente diseñadas

Proporcionado por Servicios web de Amazon





Los días de las bases de datos monolíticas de talla única han quedado atrás. Como Werner Vogels, CTO y vicepresidente de Amazon.com, dicho, Rara vez una base de datos puede satisfacer las necesidades de múltiples casos de uso distintos. En el pasado, las aplicaciones web se construían usando la pila LAMP (Linux, Apache, MySQL y PHP), donde se usaba una sola base de datos para muchas experiencias diferentes. Por el contrario, las aplicaciones web actuales de clientes como Expedia, Airbnb y Capital One no utilizan una sola base de datos, utilizan varios tipos diferentes de bases de datos.

De hecho, los desarrolladores hoy construyen aplicaciones altamente distribuidas usando una multitud de bases de datos especialmente diseñadas . En cierto sentido, los desarrolladores están haciendo lo que mejor saben hacer: dividir aplicaciones complejas en partes más pequeñas, lo que les permite elegir la herramienta adecuada para el trabajo correcto.



En esta publicación de blog, analizamos las bases de datos especialmente diseñadas de AWS y cómo usarlas para crear experiencias ricas para sus clientes. También analizamos un ejemplo detallado de estas bases de datos que impulsan diferentes experiencias en una aplicación y proporcionamos las herramientas que necesita para poner en marcha la aplicación en cuestión de minutos.

Los clientes de AWS nos dicen que quieren crear aplicaciones escalables, funcionales y de alto rendimiento que tengan necesidades empresariales y de rendimiento específicas. En los últimos años, hemos respondido a las necesidades de estos clientes introduciendo nuevos servicios como amazonas neptuno para bases de datos de grafos, Amazonas-Aurora para bases de datos relacionales de grado comercial totalmente administradas, así como un conjunto de funciones en constante mejora, como Amazon Aurora sin servidor . En AWS re:Invent 2018, AWS Anunciado varias adiciones y características nuevas a nuestra familia de bases de datos especialmente diseñadas:

En enero de 2019, AWS anunció Amazon DocumentDB (con compatibilidad con MongoDB). Con estas adiciones, los desarrolladores Tener elección de bases de datos relacionales, de clave-valor, de documentos, en memoria, de búsqueda, gráficas, de series temporales y de contabilidad para adaptarse a sus casos de uso individuales. Cada una de estas bases de datos está diseñada para ser la herramienta adecuada para el trabajo adecuado.



Cómo utilizan los clientes de AWS las bases de datos especialmente diseñadas

¿Cómo aprovechan los clientes de AWS todas estas bases de datos especialmente diseñadas? En AWS re:Invent 2018, presentamos Bases de datos en AWS: la herramienta adecuada para el trabajo adecuado . En esta sesión, discutimos cómo los clientes de AWS usan diferentes bases de datos juntas para brindar experiencias ricas e integrales a sus clientes.

Mostramos una demostración en la sesión que proporciona un ejemplo del mundo real de cómo los clientes crean aplicaciones mediante el uso de una arquitectura especialmente diseñada en AWS. La demostración describe cómo se construye una tienda web (en este caso, una librería) sobre múltiples bases de datos, cada una de las cuales aborda un caso de uso diferente. A continuación, se muestra un clip de la demostración, que comienza a las 21:43.

Cómo abordar diferentes casos de uso con diferentes bases de datos especialmente diseñadas

El clip anterior mostraba una aplicación de demostración de una librería en línea (vea la siguiente captura de pantalla). Al igual que con cualquier aplicación web moderna de pila completa, esta aplicación tiene múltiples casos de uso diferentes, que incluyen un catálogo de productos, búsqueda de productos, lista de los más vendidos y recomendaciones sociales.



imagen 1

Figura 1: Una captura de pantalla de la aplicación de demostración de AWS Bookstore

Comencemos con el caso de uso del catálogo de productos. Cuando un usuario accede a la tienda web de la librería, es posible que espere ver una lista de productos. Los productos suelen contener identificadores y atributos únicos, como descripciones, cantidades, ubicaciones y precios. En un sentido técnico, el método para recuperar este tipo de atributos suele ser una búsqueda de clave-valor basada en el identificador único del producto. Esto significa que una aplicación puede recuperar estos otros atributos cuando se proporciona el identificador único de un producto. Este caso de uso hace Amazon DynamoDB encaja perfectamente como el sistema de registro duradero para el catálogo de productos de la librería porque DynamoDB proporciona un rendimiento rápido y predecible a cualquier escala para las búsquedas de valores clave. Con DynamoDB, el catálogo de productos puede comenzar con unos pocos cientos de productos y escalar a miles de millones de productos sin tener que rediseñar o cambiar las bases de datos.

El segundo caso de uso es permitir a los clientes buscar en el catálogo de productos. Cuando los clientes acuden a la librería, quieren localizar el producto que pretenden comprar o buscar en el catálogo para encontrar su próxima gran lectura. En el mundo actual, los usuarios están capacitados para ser eficientes con las búsquedas de palabras clave para encontrar lo que buscan. Servicio de búsqueda elástica de Amazon (Amazon ES) es una tecnología de base de datos que resuelve estas necesidades de los usuarios. Con capacidades de lenguaje natural, navegación por facetas y resultados clasificados, Amazon ES ayuda a los clientes a encontrar rápidamente los artículos que desean en el catálogo de productos.



La aplicación de la librería debe mantener el catálogo de productos (en DynamoDB) sincronizado con el índice de búsqueda en Amazon ES. Cada vez que se agrega, actualiza o elimina un producto de la tabla de productos del catálogo en DynamoDB, el cambio también debe reflejarse en el índice de búsqueda en Amazon ES. Una manera fácil de hacer esto es usar Flujos de Amazon DynamoDB con AWSLambda para actualizar de forma asíncrona el índice de Amazon ES cada vez que se realiza un cambio en el catálogo de productos en DynamoDB.

El tercer caso de uso es una lista de los más vendidos para el catálogo de productos que permitirá a los usuarios de la librería ver cuáles son los 20 libros más comprados. Para esta experiencia, la base de datos ideal permite que la librería mantenga una tabla de clasificación sin tener que realizar largas y costosas consultas de resumen de todas las compras cada vez que un usuario actualiza la página web. Amazon ElastiCache para Redis proporciona exactamente lo que se necesita, incluidas estructuras de datos integradas en la memoria, como conjuntos ordenados que permiten a la librería crear una lista de los más vendidos de forma rápida y eficaz. Para que funcione, la librería puede usar DynamoDB Streams (similar al caso de uso de búsqueda de productos) de la tabla de pedidos para actualizar el estado más reciente en ElastiCache cada vez que se compra un artículo nuevo. Con la lista de los más vendidos disponible, la librería también puede mostrar una parte de ella en la página de inicio de su sitio web. Además, debido a que los datos están en la memoria y están disponibles a través de los conjuntos ordenados incorporados, la librería experimentará latencias de lectura de microsegundos para las consultas en la lista de los más vendidos.

El cuarto caso de uso es proporcionar recomendaciones sociales para ayudar a los clientes de la librería a encontrar contenido contextualmente más apropiado; en este caso, contenido basado en lo que compraron sus amigos. Debido a que las recomendaciones sociales se encuentran en la página de inicio de la librería y en otras páginas del sitio, las recomendaciones deben ser rápidas. Además, a medida que crece el sitio web, la solución debe escalar con más productos, páginas y usuarios. Con estos requisitos, una base de datos gráfica especialmente diseñada como amazonas neptuno es un ajuste natural para navegar enlaces en los datos, lo que permite recomendaciones que se basan en las conexiones sociales y la actividad de compra relacionada. Neptune proporciona la funcionalidad y el rendimiento que necesitamos para crear y ejecutar rápidamente consultas para atravesar las relaciones de gráficos, y se escalará a medida que crezca el sitio web (y la aplicación) sin comprometer el rendimiento.

Para obtener y actualizar toda esta información, la tienda web realiza una serie de diferentes llamadas a la API. Aquí hay una vista de cómo se ve la aplicación en el backend, utilizando Amazon API Gateway y AWS Lambda:

imagen 2

Figura 2: Diagrama arquitectónico de la aplicación de demostración de AWS Bookstore

Para esta aplicación de librería, evaluamos los principales casos de uso de la aplicación y elegimos la mejor base de datos para cada caso de uso. Las bases de datos especialmente diseñadas le permiten crear infraestructuras back-end escalables, de alto rendimiento y funcionales para potenciar sus aplicaciones, abordando cada caso de uso con el componente más apropiado. Siguiendo este enfoque, puede construir una arquitectura similar con sus propios recursos.

Ponlo en funcionamiento

Cada cliente que crea una aplicación web tiene que pasar casi exactamente por el mismo proceso de elección de componentes, pero eso es solo la mitad de la batalla. Quizás lo más importante, después de elegir la arquitectura deseada, tienen que construir la pila desde cero, cada vez. Esto nos hizo pensar: ¿por qué no hacer que la arquitectura sea más fácil de construir? Con tantos clientes pasando por un proceso muy similar, ¿cómo podemos simplificar esto? Para los clientes que aún se encuentran en las fases de aprendizaje o exploración, ¿cómo podemos ayudarlos a poner en funcionamiento una aplicación completa en minutos utilizando estas bases de datos especialmente diseñadas?

Para responder a estas preguntas, creamos un único Formación en la nube de AWS plantilla para automatizar la creación de toda esta pila de aplicaciones de demostración de librería, de extremo a extremo, en solo unos minutos. Además, pusimos a disposición todo el código fuente, las imágenes y los datos de muestra en GitHub para que usted implemente, explore, modifique y amplíe.

Imagen 3

Figura 3: El repositorio de aplicaciones de demostración de AWS Bookstore en GitHub

Como demostramos en la sesión de re:Invent, la aplicación de demostración de AWS Bookstore es una aplicación funcional que utiliza cuatro bases de datos especialmente diseñadas para brindar una experiencia de usuario potente y funcional. Puede implementar la aplicación en su cuenta de AWS con unos pocos clics utilizando AWS CloudFormation (para obtener más información, consulte el archivo readme.md en GitHub ). Una vez implementado en su cuenta, puede explorar los conjuntos de datos en Amazon DynamoDB, Amazon Elasticsearch, Amazon ElastiCache for Redis y Amazon Neptune. El archivo readme.md incluye pasos adicionales que lo guían paso a paso sobre cómo hacer esto, junto con comentarios sobre cómo encaja todo. Puede usar la aplicación como una caja de arena o una herramienta de aprendizaje para explorar cómo encaja una arquitectura como esta, o como una plantilla inicial para crear su propia aplicación.

¿Qué sucede si los requisitos de mi solicitud son diferentes?

La aplicación de demostración de AWS Bookstore es solo un ejemplo de cómo puede utilizar bases de datos especialmente diseñadas para crear una aplicación de pila completa escalable y de alto rendimiento, como una tienda web. Si desea comenzar con esta pila como referencia, pero su caso de uso es más adecuado para una base de datos relacional (como Amazon RDS), puede modificar la aplicación para que la use. Si desea aprovechar ElastiCache para el almacenamiento en caché frente a algunos de los otros componentes de la base de datos para mejorar el rendimiento, también puede agregarlo. De hecho, le animamos a bifurcar nuestro repositorio y modifique la aplicación de demostración para explorar las áreas sobre las que desea obtener más información. Puede intercambiar tipos de bases de datos, probar diferentes componentes y cargar sus propios recursos y datos. Si desarrolla algo interesante que cree que sería valioso para que otros lo usen, envíe una solicitud de extracción para que podamos extender la demostración.

Si su aplicación es bastante diferente, pero aún está buscando una aplicación básica de pila completa para construir sobre ella, la aplicación de demostración de AWS Bookstore está construida sobre Plantilla de pila completa de AWS (también disponible en GitHub ). AWS Full-Stack Template proporciona los servicios básicos, los componentes y la plomería necesarios para poner en marcha una aplicación web básica, ahorrándole tiempo y ayudándole a centrarse en los diferenciadores de su aplicación. Puede construir sobre la plantilla de pila completa de AWS para crear cualquier aplicación que imagine, ya sea una herramienta de reserva de viajes, un blog u otra aplicación web. La aplicación de demostración de AWS Bookstore es solo un ejemplo de lo que puede crear utilizando Plantilla de pila completa de AWS .

La próxima vez que use una aplicación, intente imaginar qué base de datos se encuentra detrás de las cortinas. Lo más probable es que haya varias bases de datos (y otros servicios) trabajando en conjunto para potenciar su experiencia. Si desea obtener más información y comenzar a crear, pruebe una de estas aplicaciones completas. ¡Esperamos ver lo que construyes!

esconder