-
Notifications
You must be signed in to change notification settings - Fork 131
Home
Create a microservices-based digital banking web-application
Build and deploy a digital bank capable of managing users accounts, transactions, transfers, and bills; composed of a set of microservices that communicate with each other.
Cloud
Development of cloud native apps that are broken down into a set of microservices has been praised and commended as best-practice in software development methodologies. Software stacks like Kubernetes, which enable cloud native computing, have therefore picked up quite a bit of popularity.
It’s a little (a lot) more fun, however, to try build a so-called cloud native app, than to talk about one.
So here's our attempt: We’ll take a use-case that has a bit of real-world familiarity to it — A digital bank. Naturally inspired by Monzo. Let’s call it Innovate.
By Amal Amine
https://github.com/amalamine/innovate-digital-bank
live demo: http://ibm.biz/digibank; demo video: https://ibm.box.com/s/fgpqiacn9ewaorgp8l97bnrk760s8rx3
- Youtube walkthrough: https://youtu.be/1F1EnnMrsZ8
This journey is meant to describe how a (somehow) real world application can be broken down into a set of microservices; where core functionality is delegated to the appropriate microservice, and the web-app portal is left as light-weight as possible.
Ideally, the pattern is meant to portray some of the 12-factor-app characteristics in use, and justify the use of microservices where appropriate. In this case, the microservices are independently deployable and independently scalable.
When the reader has completed this journey, they will understand how to:
- Break an application down to a set of microservices
- Create and manage a Kubernetes cluster on IBM Cloud
- Deploy to a Kubernetes cluster on IBM Cloud
- Deploy to IBM Cloud Private
- Portal: Loads the UI and takes care of user sessions. Relies on all other microservices for core functionality.
- Authentication: Handles user profile creation, as well as login & logout.
- Accounts: Handles creation, management, and retrieval of a user’s banking accounts.
- Transactions: Handles creation and retrieval of transactions made against users' bank accounts.
- Bills: Handles creation, payment, and retrieval of bills.
- Support: Handles communication with Watson Conversation to enable a support chat feature.
- IBM Cloud Container Service: IBM Bluemix Container Service manages highly available apps inside Docker containers and Kubernetes clusters on the IBM Cloud.
- Kubernetes Cluster: Create and manage your own cloud infrastructure and use Kubernetes as your container orchestration engine.
- Microservice Builder: Learn, build, run, and manage applications in a microservices framework.
- Watson Conversation: Create a chatbot with a program that conducts a conversation via auditory or textual methods.
- Microservices: Collection of fine-grained, loosely coupled services using a lightweight protocol to provide building blocks in modern application composition in the cloud.
- Node.js: An open-source JavaScript run-time environment for executing server-side JavaScript code.
- Containers: Virtual software objects that include all the elements that an app needs to run.
- Databases: Repository for storing and managing collections of data.
- Hybrid Integration: Enabling customers to draw on the capabilities of public cloud service providers while using private cloud deployment for sensitive applications and data.
Blog is posted on medium
- 12 Factor App: ideal practices for app development, paying particular attention to the dynamics of the organic growth of an app over time, the dynamics of collaboration between developers working on the app’s codebase, and avoiding the cost of software erosion.
- Martin Fowler's microservices blog: a comprehensive definition of the microservices-based architectural style.
- MonoLith First: A more sensible approach to microservices, monolith-first.