Skip to content

nginxinc/bank-of-sirius

Continuous Integration

Bank of Sirius

Bank of Sirius is a open source fork of Bank of Anthos. This project improves upon Bank of Anthos by adding additional telemetry, instrumentation, performance tuning, upgraded libraries, and more. The intention is for it to be a more productionized example.

Project

Bank of Sirius is a sample HTTP-based web app that simulates a bank's payment processing network, allowing users to create artificial bank accounts and complete transactions.

If you’re using this app, please ★Star the repository to show your interest!

Important Note

This repository is intended to be used with the NGINX Modern Application Architecture (MARA) project kic-reference-architectures. This includes modifications to the deployment process, as well as the inclusion of OTEL elements that work with the above project.

If you wish to run this outside of the NGINX MARA project you may run into issues, so it is recommended in this case you either fork this project or the original Google Bank of Anthos project.

Release Process

This process is intended to be used for releases that are intended to be used with the NGINX Modern Application Architecture (MARA) project kic-reference-architectures. If you are using a forked version of MARA you will want to examine the GNUMakefile and adjust your repository or other targets as required.

  1. Set the version: make version-set.
  2. Update the maven files: make update-maven-versions
  3. Update the manifest files: make update-manifest-image-versions
  4. Build the docker images: make docker-all-images
  5. Push the resulting images to the container registry: make release

Screenshots

Sign in Home
Login User Transactions

Service Architecture

Architecture Diagram

Service Language Description
frontend Python Exposes an HTTP server to serve the website. Contains login page, signup page, and home page.
ledger-writer Java Accepts and validates incoming transactions before writing them to the ledger.
balance-reader Java Provides efficient readable cache of user balances, as read from ledger-db.
transaction-history Java Provides efficient readable cache of past transactions, as read from ledger-db.
ledger-db PostgreSQL Ledger of all transactions. Option to pre-populate with transactions for demo users.
user-service Python Manages user accounts and authentication. Signs JWTs used for authentication by other services.
contacts Python Stores list of other accounts associated with a user. Used for drop down in "Send Payment" and "Deposit" forms.
accounts-db PostgreSQL Database for user accounts and associated data. Option to pre-populate with demo users.
loadgenerator Python/Locust Continuously sends requests imitating users to the frontend. Periodically creates new accounts and simulates transactions between them.

Troubleshooting

See the Troubleshooting guide for resolving common problems.

Development

See the Development guide to learn how to run and develop this app locally.