Outshift Logo

COLLABORATIONS

6 min read

Blog thumbnail
Published on 08/22/2023
Last updated on 03/21/2024

Introducing MartianBank - a microservice demo application for cloud-native products

Share

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.

Monolithic vs Microservice architecture
Image 1: Monolithic vs Microservice architecture [1]

In the dynamic realm of Outshift, a hub for many innovative cloud-native products such as KubeClarity [2], APIClarity [3], and Panoptica [4], 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.

1. Microservice Architecture:

As previously discussed, MartianBank embodies the microservices philosophy, enabling the application to be split into distinct services that focus on specific functionalities.

Architecture diagram of MartianBank
Image 2: Architecture diagram of MartianBank [5]

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.

2. Helm-Based Configurable Deployments:

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.

3. Docker, Kind, and EKS Installation:

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.

4. Swagger APIs and Comprehensive Documentation:

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.

Swagger UI for customer-auth microservice
Image 3: Swagger UI for customer-auth microservice

5. Performance Testing and Load Generation:

Our application equips users with performance testing and load generation capabilities. We have integrated Locust [6], 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.

Locust dashboard for atm-locator microservice
Image 4: Locust dashboard for atm-locator microservice

6. Integration with other Open-Source Projects:

MartianBank seamlessly integrates with other open-source projects, including Panoptica [4], APIClarity [3] and KubeClarity [2]. 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.

Future Roadmap:

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.

  • Coming soon - More blogs and videos to support developers
  • Coming soon - Unit and integration tests 
  • Coming soon - UI enhancements with exciting Martian features 

Getting Started with MartianBank:

To learn more about MartianBank, please take a look at our GitHub repository and documentation:
https://github.com/cisco-open/martian-bank-demo


If you would like to venture into the world of open-source development, you can start your journey by contributing to MartianBank!

Acknowledgements:

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.

References

[1] https://dev.to/alex_barashkov/microservices-vs-monolith-architecture-4l1m

[2] https://github.com/openclarity/kubeclarity

[3] https://github.com/openclarity/apiclarity

[4] https://www.panoptica.app/

[5] https://github.com/cisco-open/martian-bank-demo

[6] https://locust.io/

Subscribe card background
Subscribe
Subscribe to
the Shift!

Get emerging insights on emerging technology straight to your inbox.

Unlocking Multi-Cloud Security: Panoptica's Graph-Based Approach

Discover why security teams rely on Panoptica's graph-based technology to navigate and prioritize risks across multi-cloud landscapes, enhancing accuracy and resilience in safeguarding diverse ecosystems.

thumbnail
I
Subscribe
Subscribe
 to
the Shift
!
Get
emerging insights
on emerging technology straight to your inbox.

The Shift keeps you at the forefront of cloud native modern applications, application security, generative AI, quantum computing, and other groundbreaking innovations that are shaping the future of technology.

Outshift Background