Outshift by Cisco proudly presents MartianBank – an open-source microservices demo application designed to showcase cloud-native products.
In today’s era, the software engineering landscape is evolving rapidly. Traditional monolithic applications are giving way to a more agile and scalable approach known as microservices. In a microservice architecture, the application is broken down into a collection of small, independently deployable services, each focusing on different functionality. This modularization allows for greater flexibility, easier maintenance, and improved scalability, as each microservice can be developed, deployed, and updated independently.
In the dynamic realm of Outshift, a hub for many innovative cloud-native products such as KubeClarity , APIClarity , and Panoptica , a notable challenge has come to the forefront. This challenge revolves around the scarcity of demo applications meticulously designed to showcase the capabilities of these remarkable projects. Compounding this issue is the inherent reality that a one-size-fits-all application is unfeasible, given the unique limitations of each product. Additionally, there’s an apparent absence of demo applications catering to various industries like finance, entertainment, and education. To tackle these intricate challenges effectively, we are thrilled to introduce MartianBank! This pioneering solution not only addresses the existing gaps but also establishes a new standard for comprehensive, industry-specific applications.
Now, let’s dive deeper into the features that MartianBank offers.
As previously discussed, MartianBank embodies the microservices philosophy, enabling the application to be split into distinct services that focus on specific functionalities.
In the MartianBank microservices architecture, the UI has been built with React and Redux toolkits. An NGINX container acts as a reverse proxy for both UI and backend services. Among the six microservices, two (customer-auth and atm-locator) are implemented in Node.js, while the others use Flask (Python). The dashboard microservice communicates with accounts, transactions, and loan microservices either through gRPC or HTTP.
MartianBank offers Helm-based deployment options that allow seamless switching between communication protocols, such as HTTP and GRPC. Additionally, users can switch between local databases and cloud databases, as well as deploy with and without NGINX. All this can be done by configuring a couple of parameters at the time of deployment. This flexibility ensures adaptability to varying needs and uses cases.
For commands to use these deployment parameters, refer to our documentation here.
MartianBank simulates an app to allow customers to access and manage their bank accounts, perform financial transactions, locate ATMs, and apply for loans. All microservices are packaged in Docker containers.
We provide steps for easy installations through Docker Desktop (here), Kind (here), Minikube (here), and Amazon Elastic Kubernetes Service (EKS) (here). This facilitates quick setup and deployment, streamlining the adoption process.
MartianBank has been configured with Swagger UI and comprehensive API documentation to enhance usability. This empowers developers and users to interact with the application’s functionalities effectively and understand its inner workings.
Our application equips users with performance testing and load generation capabilities. We have integrated Locust , a load testing tool to generate a dummy load, as well as for stress testing the endpoints. This feature enables thorough assessments of the application’s responsiveness and stability under various conditions.
MartianBank seamlessly integrates with other open-source projects, including Panoptica , APIClarity  and KubeClarity . We also provide scripts for those installations. This interoperability extends the application’s capabilities and demonstrates compatibility with the broader cloud-native ecosystem.
With these highlights, MartianBank takes center stage as a resourceful demo application that addresses the scarcity of showcasing industry-specific solutions and sets a new standard for comprehensive cloud-native applications. By showcasing the power of microservices, adaptability, and seamless integration, MartianBank offers a tangible glimpse into the future of software engineering in the cloud-native era. Lastly, we had a lot of fun infusing the Martian elements and incorporating a touch of the Red Planet’s flair into the project! Stay tuned for updates on fun visuals that take you through Mars as we work through the licensing aspects.
The above features illustrate only a small fraction of what MartianBank can offer. With our open-source commitment, developers can build upon our application and integrate it with other cloud-native applications to showcase its efficacy.
In the coming weeks, we will work on enhancing the features and providing more comprehensive documentation for the wider adaptability of MartianBank.
To learn more about MartianBank, please take a look at our GitHub repository and documentation:
If you would like to venture into the world of open-source development, you can start your journey by contributing to MartianBank!
We worked hard to build MartianBank — our team started this project this summer, and we have meticulously worked to ensure a seamless experience for users wishing to harness the power of microservices.
MartianBank couldn’t have been possible without the support and guidance of Pallavi Kalapatapu, Shannon McFarland, Severin Neumann, and Michael Riskin, to whom we express our sincere thanks.