Arquitectura de la aplicación de Cymbal Bank

Last reviewed 2024-12-13 UTC

El plano incluye una aplicación de ejemplo llamada Cymbal Bank. Cymbal Bank muestra las prácticas recomendadas para aplicaciones contenedorizadas. La aplicación Cymbal Bank permite a los usuarios crear cuentas de inicio de sesión, iniciar sesión en sus cuentas, ver su historial de transacciones, hacer depósitos y transferir dinero a las cuentas de otros usuarios. Los servicios de Cymbal Bank se ejecutan como contenedores que se conectan entre sí a través de APIs REST y APIs gRPC.

En el siguiente diagrama se muestra la aplicación Cymbal Bank, que se ha implementado en la plataforma de desarrollo de Blueprint.

Arquitectura de Cymbal Bank.

Cada aplicación también es un servicio de red. Solo la aplicación frontend se expone externamente al clúster a través del controlador de GKE Gateway. Todas las aplicaciones se ejecutan como servicios distribuidos mediante Cloud Service Mesh.

Para obtener más información sobre los servicios que incluye la aplicación Cymbal Bank, consulta el repositorio de Cymbal Bank en GitHub.

Inquilinos de Cymbal Bank

Para separar a los arrendatarios, cada uno de ellos en la plataforma para desarrolladores tiene un ámbito de equipo y al menos un espacio de nombres de flota. Los inquilinos nunca comparten un espacio de nombres. Para implementar Cymbal Bank, cada arrendatario solo necesita un espacio de nombres. En situaciones más complejas, un arrendatario puede tener varios espacios de nombres.

Para ilustrar cómo se implementa Cymbal Bank en la plataforma para desarrolladores, en este ejemplo se presupone que había tres equipos de desarrollo de aplicaciones independientes con diferentes áreas de especialización. Terraform crea el siguiente inquilino de la plataforma para desarrolladores para cada uno de esos equipos:

  • frontendTenant: equipo de desarrollo que se centra en los back-ends de sitios web y aplicaciones móviles.
  • accountsTenant: equipo de desarrollo centrado en los datos de los clientes.
  • Inquilino de ledger: equipo que gestiona los servicios de libro de contabilidad.

Aplicaciones de Cymbal Bank

La aplicación Cymbal Bank consta de seis microservicios: frontend, ledgerwriter, balancereader, transactionhistory, userservice y contacts. Cada microservicio se asigna a una aplicación dentro del arrendatario al que pertenece.

En la siguiente tabla se describe la asignación de los equipos, el ámbito de los equipos, el espacio de nombres de la flota y los microservicios de Cymbal Bank. Para esta asignación, se presupone que Cymbal Bank está desarrollado por tres equipos de operadores de aplicaciones independientes. Los equipos gestionan un número variable de servicios. A cada equipo se le asigna un ámbito de equipo.

Equipo Ámbito de equipos Espacio de nombres de flota Aplicación - Microservicio Cuenta de servicio de Kubernetes

Equipo de frontend

frontend

frontend

frontend

ksa-frontend

Equipo de Ledger

ledger

ledger

ledgerwriter

ksa-ledgerwriter

balancereader

ksa-balancereader

transactionhistory

ksa-transactionhistory

Equipo de cuentas

accounts

accounts

userservice

ksa-userservice

contacts

ksa-contacts

Estructura de la base de datos de Cymbal Bank

Las bases de datos de Cymbal Bank se implementan con AlloyDB para PostgreSQL. Las bases de datos se configuran con una instancia principal de alta disponibilidad en una región con nodos redundantes en diferentes zonas, y se utilizan réplicas entre regiones para la recuperación tras desastres. Cymbal Bank usa la autenticación de bases de datos de gestión de identidades y accesos para permitir que los servicios accedan a las bases de datos. Las bases de datos se cifran con CMEK. Se usan dos bases de datos de PostgreSQL: ledger-db para el libro de contabilidad y accounts-db para las cuentas de usuario.

Siguientes pasos