Startup Life

co.brick meets Micronaut

Author

Lukasz Szymik: Software Architect, Team Leader at co.brick

Background

At co.brick we approach our partners with a commitment of speeding up their Cloud product development. Delivering such promise involves a few key components: overall competences of our staff, tried and tested practices backed by a firm track record of successful projects, unshakeable team spirit with a startup-like mindset and, last but not least, application of right technologies & tooling.

In this post, we would like to focus on the latter aspect and share our experience of how replacing Spring Boot with Micronaut improved our development velocity.

Our partners operate a commerce solution based on various microservices. Some of them use Spring Framework, others - Spring Boot. The particular company in question is Java oriented, so everyone onboard is well-acquainted with Java development.

Amongst the most significant requirements put forward there were:
Integration of the ERP system with partner Product Service, source product information from external databases: with product descriptions as well as associated images. It ought to be a very performant solution. It must be reliable. The team has to be able to maintain it. The costs of cloud solution are to be reasonable and we should in the first place resort to reusing existing components. It can be assumed they already use MongoDB and RabbitMQ.

Solution

Our primary concern was potential inability to achieve the required performance with Spring Boot and the rest of the current solutions. Following a brief investigation, we opted for the Micronaut framework: ​https://micronaut.io/
At the time, we’d already been somewhat familiar with Micronaut by means of Oracle Magazine and few other sources.. We knew it was a new kid on the block and were eager to give it a shot.

Along the way we also came across a very interesting blog about its performance:
https://piotrminkowski.com/2019/04/09/performance-comparison-between-spring-boot-and-micronaut/

One of the significant pros was its Java-based structure which would not burden the rest of the company with having to learn a completely new language. Actually, the striking similarity of the Micronaut approach to Spring Boot makes it easy for developers to pick up on this new framework.

First implementation

We started with the simple PoC for a new microservice. The PoC was developed much faster than we had anticipated it, hence we immediately started performance tests to validate our concept.

The basic investigation revealed it was indeed much faster than Spring Boot, both in terms of production as well as development. The reduced start-up time makes our developers' lives easier. Achieved performance in comparison to our Spring Boot services was far better. Please stay tuned as we are to publish a next blog post dedicated to the performance results.

Advantages

Our approach enabled us to discover a range of advantages Micronaut offers:

  • It is cloud-native;
  • The service is reactive, the Flowable is built-in and it is hard not to use it;
  • Deployment into the cloud is flawless. We have a MongoDB reactive client and RabbitMQ integration (required by our services); The memory footprint is low;
  • The learning curve is low (the documentation is of good quality with an active community ready and waiting to help out).

Summary

We will definitely stick to Micronaut for a while. If you are looking for an alternative to Spring Boot, make sure to familiarize yourself with Micronaut, for it is fast and reliable.

In the upcoming blog posts we plan to share more of our experience with Micronaut as well as our architecture. We also promise to be more reactive towards the RabbitMQ listeners, so make sure to stay tuned as we bring you more fresh know-how.

* photo form https://micronaut.io/