This is a microservice and event driven based banking application.
- NodeJs (Javascript runtime engine for backend)
- Vue (Javascript library for frontend)
- MongoDB (A NoSQL database that is highly scalable, highly consistent(strong & eventual) and partition tolerant)
- Nginx (Web server that can be use as a reverse proxy, load balancer, HTTP cache, mail proxy, API gateway)
- Kafka (An open-source distributed event streaming platform)
- Docker (Software platform for building, testing & deploying applications quickly in form of containers)
- Docker Compose (Multi container orchestration tool in a single machine or computer)
- Kubernetes (Production grade container orchestration tool)
- Minikube (Local cluster for testing kubernetes deployment)
- AWS (Cloud provider)
This application makes use of the microservice architecture where each part of the application is broken into a separate service. Each service is tested and deployed using a container software which is Docker.
- Each service can be scaled differently thus reducing down time & cost
- Each service is isolated from each other thus services can be built using different programming languages.
- 😁😁 Add your own to the list 😁😁
- It's a complex architecture to work with thus suitable for medium to large scale projects
- 😁😁 Add your own to the list 😁😁
An alternative architecture is the monolithic architecture which involves everything (services) been build and deploy as a single(mono) unit.
- It's easy to work with and deploy
- 😁😁 Add your own to the list 😁😁
- Suitable for small projects
- Each part of the project cannot be scaled separately
- Usually tied to a particular language
- 😁😁 Add your own to the list 😁😁
This project can be setup using a couple of ways viz:
- Using docker compose: docker compose is use to build,run & manage multiple containers in a single machine or in ones computer.
- Using docker swamp: docker swamp is a container orchestration tool to run & manage containers in multiple machines.
- Using Kubernetes: Kubernetes is a production grade tool for orchestrating multiple containers in cloud environment like AWS, GCP, Azure etc.
- Using Minikube: Minikube enables the use of kubernetes in ones computer, making ones computer a node in a cluster.
NB: Using docker swamp will not be documented in this project
- Docker Destop (For building, runing multiple containers in a single machine)
- Kubectl (A command line tool for managing kubernetes clusters)
- Minikube (Local cluster for testing kubernetes deployment)
-
Fork/clone/download this repo
-
Open folder in a terminal
-
Enter and run the following command
docker-compose up
- Access the project in your browser through http://localhost:4000