Gimbap — Real-time Microservice Clustering Recommendations

A developer tool to provide data-driven microservice clustering recommendations to aid engineers in assessing the benefits of transitioning their monolithic application to a microservice architecture.

gimbap
5 min readNov 11, 2021
Gimbap application, gimbap.io

What are Microservices?

As applications have grown in size, and DevOps tools have become more advanced, new software architecture has emerged: microservices. Recently popularized by large tech companies, microservices-based architectures break up a more traditional monolithic application by splitting it into individual services. Each individual service carries out a specific task or tasks. These independent services can then be integrated into one large application. By utilizing this architecture, an application can scale horizontally, providing developers with the ability to perform maintenance while expanding independent services, without worrying about breaking another service in the process.

Image provided by Laptrinhx

Let’s take a social media app as an example. Perhaps it has a multitude of features, such as video streaming, private messaging, photo sharing, and more. To reduce overall server use, the engineers could strive to build out these features into independently deployed services that are later integrated as a cohesive unit. If video-streaming is more popular during the evening, the servers’ load balancers can increase the specific services that are needed to drive this feature. Similarly, when video-streaming is no longer as heavily utilized, server usage can be reduced. This demonstrates how the application can scale horizontally on the server-side, depending on the needs of the clients at a particular time, thus reducing overall server usage.

A great real-world example is Netflix. Their team began transitioning to microservices in late 2008, and by 2015, Netflix utilized over 500 microservices hosted with AWS. (Source) Scaling and increasing the user base is essential to a business, especially if that business grows at the rate that Netflix has been growing.

We have eight times as many streaming members than we did in 2008, and they are much more engaged, with overall viewing growing by three orders of magnitude in eight years.

-Netflix 2016

(If you would like to delve more into microservices, check out this great article by the AWS team)

So, should everyone switch to Microservices?

Well, it can be challenging to know when — or if it’s feasible — to move your monolith over to a microservice setup. Maybe your traffic is fairly consistent, or maybe your application’s routing is already being hit at similar times. In these cases, it might be best to stick with a monolithic application structure. The cost to have your team of developers migrate to a microservice architecture could also be quite costly. That’s where Gimbap comes in.

Introducing, Gimbap

Gimbap is a developer tool to provide data-driven microservice clustering recommendations to aid engineers in assessing the benefits of transitioning their monolithic application to a microservice architecture. There are two main components to Gimbap:

  1. An NPM package that modifies the Express application object in order to track and store individual endpoint call times
  2. Client-facing React application that will visualize this data to monitor individual routes and make clustering recommendations based on similar covariant scores.

Below is our client-facing application, available in-browser or on the platform of your choice. Utilizing the power of the Visx/D3 Library created by Airbnb, we’re able to showcase a dendrogram that will display our clustering algorithms’ results from grouping endpoints based on similar covariant scores.

Gimbap application. data provided by the DePaul Center of Data Science

Developers can also dive into more in-depth metrics including the recommended clusters, and the call times of individual routes within their application.

Gimbap application. data provided by the DePaul Center of Data Science

Get Started

Our application is centered around the Express framework and can be set up within a few minutes. It’s as easy as installing our npm package and downloading our client-side application.

Visit us online at gimbap.io or on GitHub to get started.

Moving Forward

Gimbap is now available, and we’d love for you to check it out. On top of the current iteration, our team plans to build upon the core features in the future.

Support for SQL

Currently, Gimbap supports the addition of your own MongoDB platform. However, we know many developers prefer SQL, and we plan to incorporate that option in the near future.

Additional Testing

Our current setup includes testing with Jest, Supertest, and Enzyme to maintain and ensure that Gimbap is providing accurate and efficient results across a variety of applications. We’d love to continue testing as we iterate and add additional features to Gimbap.

Support Outside Express

Our current NPM package works to track endpoint call times by modifying the original application object that’s provided by Express. However, in the future, we plan to expand our project to support more applications outside of Express-based servers.

Input Validation for Visx Chip

All metrics have a baseline input validation technique to ensure that data is displayed properly, but we know that there is always a chance to catch results that might not have been inputted correctly in order to plot our Visx/D3 graphs. Moving forward our team will continue to validate data and work with our testing framework to ensure that Gimbap is always performing as expected.

Conclusion

The future of Gimbap is bright, and we’re excited to bring the product to developers around the world who are interested in assessing their server performance as they consider the move to a microservice architecture.

gimbap.io

The Gimbap Team

Parker Hutcheson | LinkedIn / GitHub

Miguel Hernandez | LinkedIn / GitHub

Angelynn Truong | LinkedIn / GitHub

Khandker Islam | LinkedIn / GitHub

Sebastien Fauque | LinkedIn / GitHub

--

--

gimbap

A developer tool to provide data-driven microservice clustering recommendations to aid engineers in assessing the benefits of transitioning their monolithic app