Arquitectura de la aplicación de Cymbal Bank

Last reviewed 2023-12-20 UTC

El plano incluye una aplicación de ejemplo llamada Cymbal Bank. Cymbal Bank demuestra las prácticas recomendadas que se recomiendan para las aplicaciones alojadas en contenedores. La aplicación de Cymbal Bank permite a los usuarios crear cuentas de acceso, acceder a sus cuentas, ver su historial de transacciones, realizar 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 las APIs de REST y las APIs de gRPC.

En el siguiente diagrama, se muestra la aplicación de Cymbal Bank que se implementa en la plataforma para desarrolladores de planos.

Arquitectura de Cymbal Bank.

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

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

Usuarios de Cymbal Bank

Para proporcionar separación entre usuarios, cada instancia de la plataforma del desarrollador tiene un permiso de equipo y al menos un espacio de nombres de flota. Los usuarios nunca comparten un espacio de nombres. Para implementar Cymbal Bank, cada usuario solo necesita un espacio de nombres. En situaciones más complejas, un usuario puede tener varios espacios de nombres.

Para ilustrar cómo se implementa Cymbal Bank en la plataforma de desarrolladores, en este ejemplo se supone que hubo tres equipos de desarrollo de aplicaciones con diferentes áreas de enfoque. Terraform crea el siguiente usuario de la plataforma para desarrolladores para cada uno de esos equipos:

  • Usuario frontend: Un equipo de desarrollo que se enfoca en los backends de la aplicación para dispositivos móviles y el sitio web.
  • Usuario de accounts: Un equipo de desarrollo que se enfoca en los datos de los clientes.
  • Usuario de transactions: Un equipo que administra los servicios de transacción.

Apps de Cymbal Bank

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

En la siguiente tabla, se describe la asignación de los equipos, el permiso del equipo, el espacio de nombres de la flota y los microservicios para Cymbal Bank. Para los fines de esta asignación, en este ejemplo se da por sentado que tres equipos de operadores de aplicaciones diferentes desarrollan Cymbal Bank. Los equipos administran una cantidad variable de servicios. A cada equipo se le asigna un permiso de equipo.

Team Permiso del equipo Espacio de nombres de la flota Aplicación: microservicio Cuenta de servicio de Kubernetes

Equipo de frontend

frontend

frontend

frontend

ksa-frontend

Equipo de transacciones

transactions

transactions

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 mediante AlloyDB para PostgreSQL. Las bases de datos se configuran con una instancia principal con alta disponibilidad en una región con nodos redundantes en diferentes zonas y se usan réplicas entre regiones para la recuperación ante desastres. Cymbal Bank usa la autenticación de bases de datos de IAM para permitir que los servicios accedan a las bases de datos. Las bases de datos se encriptan con CMEK. Se usan dos bases de datos de PostgreSQL: ledger-db para transacciones y accounts-db para cuentas de usuario.

Próximos pasos