In the context of the Cloud-Native Applications (CNA) Initiative at SPLab, we kicked off a few months ago a seed project with the aim of getting practical experience of the most common problems and pitfalls of re-architecting a legacy web application for the cloud. Here, we report on our experiences with a specific focus on the thorny problem of realizing a scalable, distributed database backend for such an application.
The main characteristics of a cloud-native application is that it has to be resilient and elastic, and this has to be true for all the (micro)services and components that make up the application.
After choosing the Zurmo CRM application and making the Web server tier stateless, we concentrated on decomposing the application into containers, allowed multiple instances of Memcached to run concurrently, added a “dockerized” ELK stack for monitoring, and finally our own configurable auto-scaling engine (Dynamite).
Great news from the other side of the pond!
The ICCLab Cloud-Native Applications (CNA) initiative has been awarded an AWS Research Education grant for accessing cloud resources on the Amazon Web Services (AWS) platform. Congrats to Sandro and Giovanni (yours truly) for the achievement and a big thanks to Amazon for this.
The AWS Research education grant provides credit for using AWS services for education and research purposes. As a teacher or a researcher, you can experiment with all the current AWS services and grant access to your students and collaborators. You can find more information about it and the form to apply here: http://aws.amazon.com/grants/
Three ICCLab members were in sunny Würzburg for the ACROSS COST action meeting last week. ACROSS stands for “Autonomous Control for a Reliable Internet of Services” and our own TMB is a member of the management committee (MC) for Switzerland.
For those of you unfamiliar with COST actions, they are an instrument for research funding from the EU that provides networking opportunities for researchers.
The meeting was spread over three days with:
- The 1st ACROSS Open Workshop on Autonomous Control for the Internet of Services on Tuesday;
- Task forces and Management Committee on Wednesday;
- Plenary and work group meetings on Thursday.
The keynote speakers for the workshop gave motivating talks that spawned interesting discussions on autonomous control spanning multiple domains including mobile, compute, and application-level quality of experience (QoE). The keynote speakers were: Marco Hoffmann from Nokia Networks, Thomas Zinner from Würzburg University, and Maris van Sprang from IBM.
ICClab’s Giovanni Toffetti (that’s me!) gave a talk on the Mobile Cloud Networking (MCN) project motivation and architecture. Here are the slides I used for the talk: MCN-Vision-Scope-Architecture.
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.
At the beginning of this year the Cloud-Native Applications Seed Project (short: CNA Seed Project) was launched as described in this blog-post.
The goal of the CNA Seed Project is to gain experience in what it takes to migrate an application into the cloud. So at the heart of this project lies the application that will be migrated.
We set ourselves the following parameters in chosing a suitable application:
- Must be open source
- Should be a business application
- Should be a common used type of application
There were a lot of different types of business application types to choose from:
- Customer Relation Management (CRM)
- Enterprise Resource Planning (ERP)
- Document Management Systems (DMS)
- Ticketing Systems
- Content Management Software (CMS)
In the end we mainly focused on CRM applications because they are a common type of business application, is not too complex and a lot of open source solutions are available.