Sunday, August 23, 2015

Microservices and Spring Boot


A typical architecture would be a WAR file where everything is packaged all in one. This file can be as big as 50 MB to more than 300MB.

Problems with a monolith architecture like this is :

  • High Budget,
  • Long release cycles
  •  Difficult to understand a large code base which means it is relatively expensive to change and difficult to scale


The solution for the above is a Microservices architecture, where instead of you building one big large app, you build separate smaller apps, each handling its own business domain.



Benefits of the above architecture is that

  • Small budget - Smaller teams needed.
  • shorter release cycles
  • cheap to change or rewrite, as the apps you work on a sufficiently smaller
  • Easier to scale, - depending on high load, only the required modules can be deployed to more servers, unlike in a monolith app, the whole app gets impacted. Therefore in a micro-service architecture you can make use of your infrastructure wisely.
  • Faster return on investment as it is easier and faster to deploy smaller apps into production
  • Easier to understand a smaller code base.


To achieve the above benefits you need a light weight framework and deployment infrastructure.

Spring Boot makes it easier to create standalone production-grade spring based application that you can simply "just run" , and there is no need to deploy WAR files. The spring boot framework automatically configures a server for you. It has embedded Tomcat or Jetty. 

It also has production ready features for monitoring like metrics, health checks and externalized configuration. You can even ssh to your spring boot app and also has easy connectivity to open source PAAS cloud foundry.

For more information: http://projects.spring.io/spring-boot/