Running Google Cloud Functions in OpenShift

Have you created a highly popular and frequently used JavaScript (Node.js) functions for execution in Google Cloud Functions? In this case, the economics of FaaS turn against you due to the per-invocation pricing. You might want to have more options for both testing the same function locally and for deploying it into an environment with fixed monthly pricing. This blog post explains step-by-step how to migrate functions from FaaS environments into a fixed per-month pricing container environment. The running example will be Node.js functions running in Google Cloud Functions albeit the procedure is similarly applicable to other combinations.

Continue reading

Cloud-Native Applications Seed Project: Migration-Process Part 1

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.

TL;DR

  • 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.

Continue reading

Cloud-Native Applications: Seed Project Kickoff

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.

Continue reading