As stated in a previous blog-post, at the beginning of this year we started with the project of migrating the open-source application Zurmo CRM into the cloud. In this first blog-post on the progress of this process we will describe our initial plan, show the basic components of a cloud-optimized application and talk about whether to stick with the monolithic architecture style of Zurmo or migrate it to a microservices architecture. We’ll furthermore discuss the first steps we took in migrating Zurmo to the cloud and how we plan to continue.
- We use the term cloud-optimized to describe an application which has the same characteristics as a cloud-native applicaton but is the result of a migration process.
- The basic components of a cloud-optimized application are: Application Core, Enabling Systems, Monitoring- and Management-Systems. All of which have to be scalable and resilient.
- A monolithic architecture style is best suited for smaller applications (little functionality / low number of developers) resp. when starting to build a new application.
- A microservices architecture style is best suited for large applications (lots of functionality / high number of developers). Its benefits are less of a technical nature but more of the way it helps to manage the development and deployment of applications.
- We decided to stick with the monolithic architecture. The first change we did to the application was to horizontally scale the web server with the use of a load balancer and make the application core stateless.
Cloud-Native Applications is a new research initiative which was launched by the ICCLab a couple of months ago. The initial time was used to gather knowledge on this very interesting and broad topic. For a detailed description of the initiative and cloud-native applications in general head to the initiative overview page.
But all the knowledge in the world is not worth much without some actual experience. And therefore as of the beginning of this year we launched the Cloud-Native Applications Seed Project or CNA Seed Project for short. The goal of this project is to take a traditional business application which was not designed to run in the cloud and modify it so that it can be deployed and operated in a cloud-environment.