A menudo quieres usar estas cosas en parte de tu aplicación, no todo. Pero volvamos a esta definición. Y si observamos esta definición, habla de consultas y también comandos, pero dice que los comandos también se llaman modificadores o mutadores, lo que me da una excelente idea, o tal vez no excelente, pero una idea.
Si tenemos consultas y mutadores o comandos en CQRS y suscripciones de consulta y mutaciones en GraphQL, tal vez estén relacionados de alguna manera que pueda simplemente usar las consultas de GraphQL como consultas y las mutaciones de GraphQL como comandos.
Permíteme contarte sobre lo que estábamos construyendo. Y nuevamente, gracias a GPT por ayudar con estas diapositivas. Esto es lo que queremos construir. Queremos tener algún tipo de API de GraphQL que tenga un comando aquí con algún tipo de resolutor o reductor, lo que sea, que almacene algunos eventos en esa base de datos de eventos, donde básicamente cada evento se almacena tal como se envía.
Lo enviamos y luego queremos tener consultas, que básicamente nos permite básicamente, oh, hay un error tipográfico aquí, pero lo siento por eso. Estas cosas en la parte inferior son consultas donde queremos leer los datos de la base de datos como un estado, no como una serie de eventos. Entonces, lo que podemos hacer, básicamente, es enviar una mutación de GraphQL, esa mutación puede ir a ese resolutor o reductor o lo que sea. Luego almacenar algo dentro de esa base de datos de eventos, algún evento ocurrió. Y luego puede crear una proyección o reducir eso a un estado actual y almacenar ese estado actual en alguna otra base de datos. Cada vez que un usuario quiera leer algo de mi aplicación, simplemente puede ir y leerlo desde esa tabla de caché básicamente. Si elimino esta tabla en la parte inferior, simplemente puedo reproducir todos los eventos y obtener el mismo valor. Entonces, el punto extra aquí son las suscripciones porque esta no es una aplicación síncrona, básicamente el usuario en el front-end no sabe cuándo termina el proceso. Lo bueno de GraphQL es que define suscripciones, lo que básicamente nos permite enviar un mensaje en tiempo real de vuelta a nuestro front-end y decirle al usuario: `hey, esto ha terminado`. Así que intentemos construir esto con AWS. Lo haré rápidamente porque puedes implementarlo con muchas cosas diferentes. Pero permíteme guiarte a través de este proceso.
Intentemos hacerlo sin servidor para que esté completamente administrado, no necesitamos hacer nada por nosotros mismos. Primero, necesitamos una capa de GraphQL. Usaremos algo llamado AWS AppSync para eso. AppSync es un GraphQL completamente administrado y escalable por AWS. Te brinda suscripciones listas para usar. Se integra con muchos servicios diferentes, por lo que solo necesitas escribir una pequeña pieza de integración llamada Resolutor. Con JavaScript ahora, había un lenguaje extraño llamado BTL antes de eso, y escala muy bien. No pagas nada al principio hasta que tienes muchos usuarios y cosas así. Luego queremos almacenar estos eventos y estos estados actuales en algún lugar, podemos usar algo llamado DynamoDB, que es una base de datos NoSQL administrada y escalable por AWS. Es algo así como Mongo, pero ligeramente diferente.
Comments