Development of cloud native apps that are broken down into a set of microservices has been praised and commended as best practices in software development methodologies. Software stacks like Kubernetes, which enable cloud native computing, have therefore picked up quite a bit of popularity. However, it’s a lot more fun to try and build a so-called cloud native app, than to talk about the logistics for one. So here’s our attempt: We’ll take a use-case scenario that has a bit of real-world familiarity to it — a digital bank. Inspired by Monzo, we have a demo bank called “Innovate.” Note: This is a demo site and will not collect any PII.
This code pattern is meant to describe how a hypothetical, 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 lightweight 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 you complete this journey, you’ll 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.
Ready to put this pattern to use? Complete details on how to get started running and using this application are in the README.md.