Code Monkey home page Code Monkey logo

bank-demo's Introduction

Tanzu Banking Demo App

Alt text

This repo provides an example Spring microservice architecture and can be deployed via Tanzu Application Platform.

  • Fully functional trading app with:
    • User service creates user profiles
    • Account service creates accounts for users
    • Portfolio service holds trade information
    • Quote service fetches value of given trade symbol.
  • Utilizes several Spring ecosystem core components:
    • Config Server fetches application config from Git
    • Discovery Server (Eureka) allows each application to be register and fetch services.
  • Other capabilities
    • Quote service is inter changeable between Quote service developed with Spring or .Net-Core.
    • User service can provision PostgreSQL instance automatically and store it's data on PostgreSQL
    • Quote service can provision Redis instance automatically and store it's data on Redis
    • Integration with Open Telemetry allowing us to change observability tool easily, like Jaeger to Tanzu Observability
    • Integration with Tanzu Observability for distributed tracing
    • API endpoints generated automatically with Supply Chain and available at TAP-GUI
    • AirGapped (Internet-less) mode for POCs. That mode does not need connection to IEX-Trading-Cloud.

Deploy to Tanzu Application Platform (TAP)

Deploy App Accelerator:

kubectl apply -f accelerator-deploy.yaml -n accelerator-system

Create or explore the file through TAP GUI and deploy whichever microservice with workload.yaml

If you have chosen OpenTelemetry you need to setup the otel operator like below.

kubectl apply -f yaml/open-telemetry/open-telemetry/01-opentelemetry-operator.yaml

Then, depending on the observability tool chosen, use option-1 or option-2.

OpenTelemetry Option 1 - Tanzu Observability

kubectl apply -f yaml/open-telemetry/wavefront/01-wavefront-operator.yaml
kubectl apply -f yaml/open-telemetry/wavefront/02-wavefront-secret.yaml
kubectl apply -f yaml/open-telemetry/wavefront/03-wf-proxy.yaml
kubectl apply -f yaml/open-telemetry/open-telemetry/02-opentelemetry-instrumentation.yaml

OpenTelemetry Option 2 - Jaeger

kubectl apply -f yaml/open-telemetry/jaeger/01-jaeger-deploy.yaml
kubectl apply -f yaml/open-telemetry/open-telemetry/02-opentelemetry-instrumentation.yaml

After setting up the OpenTelemetry;

To set up whole environment, run the accelerator and run following workload.yaml files in consequent order.

kubectl apply -f config-server/config/workload.yaml
kubectl apply -f discovery-server/config/workload.yaml
kubectl apply -f account-service/config/workload.yaml
kubectl apply -f user-service/config/workload.yaml
kubectl apply -f quote-service/config/workload.yaml
kubectl apply -f portfolio-service/config/workload.yaml
kubectl apply -f web-ui/config/workload.yaml

Develop Apps and Deploy to TAP (Developer Persona)

Create file through TAP GUI and deploy whichever microservice with workload.yaml

First deploy spring components.

kubectl apply -f config-server/config/workload.yaml
kubectl apply -f discover-server/config/workload.yaml

Then, go to chosen app's dir and run tilt.

tilt up

After you complete the development, do git push .

Screenshots

Alt text

Alt text

Alt text

Alt text

Alt text

Alt text

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.