Los microservicios han surgido como un patrón de arquitectura común durante la última década.
En este enfoque, servicios pequeños, autónomos y de acoplamiento flexible trabajan juntos a través de una red distribuida. Cada microservicio suele estar delimitado a una función específica y a un límite de negocio, se ejecuta en su propio proceso y puede gestionarse e implementarse de forma independiente de los demás servicios.
Esta arquitectura da como resultado una mayor flexibilidad en comparación con una aplicación monolítica tradicional, pero al mismo tiempo requiere que cada microservicio individual proporcione resiliencia, escalabilidad y persistencia donde sea necesario.
En el siguiente artículo me gustaría centrarme en los aspectos de gestión de datos de una arquitectura de microservicios y cómo Couchbase proporciona baja latencia, resiliencia y escalabilidad para tu capa de datos.
Simplicidad con caché integrada y escalabilidad elástica
Los microservicios están vinculados a un dominio de negocio explícito.
Por ejemplo, su dominio podría ser el de los servicios de Producto, Campaña, Pago (Checkout) o Perfil de usuario de una aplicación de comercio electrónico. Los diferentes microservicios forman la aplicación de manera colaborativa, pero al mismo tiempo son totalmente independientes. A menudo, diferentes equipos desarrollan cada servicio de forma independiente y con su propio ciclo de lanzamiento y canalización de CI/CD. El resultado es un desarrollo más ágil y rápido.
En este escenario ilustrado arriba, cada microservicio es dueño de los datos de su dominio y pone estos datos a disposición de los otros servicios a través de API. Durante una transacción de pago, el servicio de Pago (Checkout) puede obtener los datos del cliente correspondientes del servicio de Perfil de Usuario. Este patrón de arquitectura de microservicios ofrece una gran flexibilidad y también permite la reutilización de microservicios en múltiples aplicaciones.
Crear servicios resilientes y escalables es fundamental. Para los microservicios sin estado, esto es bastante sencillo. Pero si es necesario persistir datos, en última instancia se necesita una arquitectura de base de datos resiliente que escale junto con el microservicio para respaldar el uso creciente del servicio.
Couchbase está construido sobre una arquitectura centrada en la memoria que ofrece no solo almacenamiento en caché integrado para un acceso de baja latencia a sus datos, sino también escalabilidad elástica. Esto le permite escalar individualmente los servicios de Couchbase sin interrumpir las operaciones de sus microservicios.
A medida que aumenta su volumen de datos, simplemente agrega más nodos de datos de Couchbase. Si necesita capacidad de consulta adicional, solo agregue nodos de consulta de Couchbase adicionales a su clúster.
Con este nivel de escalamiento multidimensional, sus diferentes servicios de Couchbase nunca necesitan competir por los recursos del sistema. En su lugar, la infraestructura subyacente se adapta a las necesidades específicas de cada servicio. Por ejemplo, el servicio de consulta de Couchbase utiliza una instancia de cómputo con mucha memoria para servir la mayor cantidad posible de datos desde la caché integrada, y utiliza un nodo con núcleos adicionales para admitir más consultas.

La arquitectura resiliente y distribuida de Couchbase también garantiza alta disponibilidad al mantener copias de réplica de sus datos. En caso de una falla de nodo, Couchbase realiza una conmutación por error automáticamente y garantiza la continuidad de las operaciones.
Patrones comunes para microservicios en Couchbase
Una de las características clave de los microservicios es su acoplamiento flexible, de modo que puedan desarrollarse, implementarse, controlarse en su acceso y escalarse de forma individual.
El acoplamiento flojo requiere que la infraestructura de base de datos subyacente admita el aislamiento de los datos para los microservicios individuales. Eso podría lograrse ya sea ejecutando instancias de bases de datos individuales por microservicio o controlando el acceso a las partes relevantes de los datos.
Si bien las bases de datos relacionales tradicionales admiten el aislamiento mediante esquemas de bases de datos, a menudo son difíciles de escalar, carecen de la flexibilidad de un modelo de datos JSON y, lo que es más importante, se convierten en el único punto de falla en caso de una interrupción en su infraestructura de bases de datos. Este es un aspecto importante a considerar al diseñar su arquitectura de microservicios, ya que una interrupción tiene grave consecuencias de que todos los microservicios compartan la misma base de datos.
Couchbase está diseñado para microservicios. Es una base de datos distribuida, altamente escalable y resiliente. Ofrece una gran flexibilidad y proporciona múltiples niveles de aislamiento para admitir hasta mil microservicios en el mismo clúster de Couchbase.
Couchbase Server 7 introduce el concepto de alcances y colecciones.
Los ámbitos y colecciones son contenedores lógicos creados dentro de un depósito que organizan y aíslan sus datos. Un depósito es un espacio de claves que le permite configurar la cuota de memoria individual, el disco y la prioridad de E/S. Estas configuraciónes proporcionan un aislamiento parcial de los recursos. Los depósitos, ámbitos y colecciones proporcionan gestión independiente del ciclo de vida y del despliegue en todos los niveles, incluido el control de acceso basado en roles, la replicación entre centros de datos (XDCR) y las copias de seguridad y restauración.
Estas características brindan a sus equipos de desarrollo mayor flexibilidad y permiten múltiples patrones de microservicios. Analicemos más de cerca cuatro de esos patrones más comunes.
Patrón 1: Clúster de Couchbase dedicado por microservicio
El uso de un clúster de Couchbase dedicado proporciona un escalamiento independiente mediante el aislamiento físico. Si bien esta es una opción viable, puede no ser muy práctica al ejecutar cientos o incluso miles de microservicios.
Patrón 2: Aislamiento mediante depósitos
En este patrón, se utilizan cubetas para aislar los microservicios.
En comparación con los clústeres dedicados, los buckets proporcionan un aislamiento parcial de recursos que incluye la asignación de memoria, E/S de disco y réplicas. Sin embargo, la cantidad de buckets por clúster de Couchbase es limitada, por lo que el número de microservicios admitidos en un solo clúster no puede superar los treinta.
Si no tiene requisitos estrictos para aislar los datos entre servicios, o si existen otras medidas para garantizar que cada microservicio solo funcione con su propio conjunto de datos, entonces varios microscervicios pueden compartir el mismo bucket. Por lo general, el uso compartido de buckets se logra identificando el documento ya sea por la clave del documento o por un atributo de tipo adicional en el documento.
De hecho, este patrón se usaba comúnmente antes de la introducción de ámbitos y colecciones en Couchbase 7.
Patrón 3: Aislamiento mediante colecciones
Un patrón de implementación de microservicios más potente es aprovechar Colecciones.
Si bien un bucket envolvente aún proporciona aislamiento de recursos, las Colecciones aíslan lógicamente y controlan el acceso para sus microservicios. Esto le permite ejecutar hasta 1000 microservicios en un solo clúster de Couchbase. En la ilustración a continuación, cada microservicio utiliza una Colección dedicada. El control de acceso basado en roles de Couchbase garantiza que cada microservicio solo acceda a su propio conjunto de datos en la colección correspondiente.
Patrón 4: Aislamiento mediante contenedores y colecciones
Este patrón de microservicios es similar al patrón anterior, pero en lugar de colocar todas las colecciones en un solo depósito, se agrupan en varios depósitos.
Este patrón le permite configurar el bucket de acuerdo con las características de los microservicios y/o colecciones incluidos. Con este enfoque, logra un aislamiento físico como la asignación de memoria y el recuento de réplicas para cada bucket individual y sus colecciones contenidas.
No hay una única mejor solución para estructurar y aislar sus datos en Couchbase. Pero utilizando buckets, scopes y collections, usted tiene un sinfín de opciones para satisfacer fácilmente las necesidades específicas de su arquitectura de microservicios.
Despliegues en contenedores
No hay duda: los entornos de desarrollo actuales están migrando hacia los microservicios. Al mismo tiempo, la industria avanza hacia implementaciones en contenedores gestionadas a través de Kubernetes y OpenShift.
Con Couchbase, su aplicación de base de datos con estado, autónoma y totalmente administrada, se ejecuta junto a sus microservicios en la misma plataforma de Kubernetes. Este enfoque le brinda aislamiento completo y reduce su carga de trabajo de DevOps con conmutación por error automática e incluso escalado automático de su clúster.
Para más información, consulte el Couchbase Autonomous Operator.
Autor
2 respuestas
-
[...] 4 patrones para arquitectura de microservicios en Couchbase [...]







Deja un comentario
Lo siento, debes estar conectado para publicar un comentario.