CMS Blog

How Kreatio platforms use a microservices architecture to improve performance and optimise costs

  • 11 February 2020 by
  • Arun Varghese
How Kreatio platforms use a microservices architecture to improve performance and optimise costs

All Kreatio platforms follow a modern microservices architecture. This makes our platforms agile, scalable and easily upgradeable. In this piece I will explain what our microservices architecture looks like and how you will benefit from it.

What are microservices?

We can define microservices as a way of breaking large software projects into loosely coupled modules, which communicate with each other through simple Application Programming Interfaces (APIs).These decoupled modules need not work as a cohesive unit. Each Microservice usually solves a set of business goals/functionality. Any application that is made up of a set of independent, small services, each having its own code-base can be said to be microservices based.

Benefits of microservices

The benefits of a microservices architecture are many. Each microservice can be scaled individually. This results inimproved performance and scalability. The code-base becomes much easier to maintain and you can upgrade functionality and technology stacks of individual services. Since each service can be individually scaled, your costs are optimized as only the parts that need more hardware can be separately scaled. The individual services which constitute the application can be independently deployed, tested and moved to production or upgraded, leading to faster deployment of the whole application. A good microservices based architecture also helps to isolate and resolve issues and bugs quickly. Microservices also helps to increase the robustness of the system, as you can cluster each service separately and finally, there is no single point of failure in the system as each microservice is an independent computing system!

Microservices and Kreatio platforms

Kreatio platforms are now fully microservices based. Some of the important services include Content service, web publishing service, authentication services, Image service, video service, asset service, NLP service, analytics service, messaging service and so on. Each of these services has an independent code base and has a separate and independent roadmap

How does this help Kreatio become the best in class digital publishing platform ?

In Kreatio platforms, front-end and backend applications are decoupled. The decoupled back-end is also based on a set of micro services. Content services in itself can act as a Headless CMS. This means content becomes a service and can be used by the mobile, website, smartwatch or any other service/platform. Continuous optimizations/deployments are carried out and hence each offering/service is easier to build, evolve and deploy and each one can be scaled separately.

Here are some examples of the benefits you get from our use of the microservices architecture.

Our analytics service is consumed by various services. Dashboards can give the editors information on how popular an article, tag or author are, and which geographies they are popular in. The same analytics service is consumed by content services in providing most read articles on the reader facing website! Reusing the service makes for more efficient code. And updating the service at one place updates the system in all the areas it is used.

NLP services are used by the Kreatio CMS to tell authors about the tone of their articles. It also identifies keywords to identify related articles. The same NLP service is used by Sindbad directories to associate directory entries and articles.

NLP services are memory bound jobs and the fleet runs on specialized memory optimized cloud instances, different from the rest of the installation.

Image services have some background jobs that are both CPU and memory bound and are run again on machines optimized for those jobs. The entire image service is behind a CDN thus guaranteeing faster image downloads.

Authors need not store/save multiple copies of an image in different dimensions. The image service picks up the user uploaded image and sends to the webpage, an optimised image of the required dimensions.

Conclusion

We are able to design, scale and deploy each part of the platform based on the specific use case or requirement of the service. It helps our developers understand the system better, identifying issues faster and be champions in delivering the best in class digital publishing platforms to our clients.