Cloud Connected



"I have been searching for a product like Cloud CMS for over 10 years.

After false starts with some typical content management solutions, we were finally able to design the content repository that our business required."
James Baddiley
James Baddiley, CEO
ChilliSauce

More Ways to Run Cloud CMS On-Premise

We just released Cloud CMS version 3.1.315 which includes more sample configurations to help customers and prospects get started with on-premise Docker deployments. Our Docker distribution includes several “kits” that contain pre-built Docker Compose configurations that help customers to get up and running right away. These configurations can either be used as is or they may serve as a reference for building out new configurations that meet a customer’s exact needs.

Cloud CMS offers Docker as an option for customers who wish to run Cloud CMS on-premise on within their own data center. Customers often want to do this for security reasons - for example, they may wish to take advantage of custom volume encryption, custom port or DNS settings or transport configuration. Customers also may wish to run Cloud CMS via Docker so as to introduce custom extensions to the back end server or front-end user interface that run “in-process”. In-process code can include things like custom actions, rules, workflow triggers, mimetype transformers and more.

In most cases, the trick to getting things up and running lies not so much in the configuration of Cloud CMS, but much more in the inner workings and configuration of Docker. Docker is a very powerful container technology that makes it easy to orchestrate the different tiers that compose the Cloud CMS infrastructure. Cloud CMS is inherently multi-tiered and scalable, making use of a completely decoupled architecture that is flexible for the needs of high content demand.

Docker makes it easy to orchestrate all these containers. It makes everything easy to run. We love Docker and so do our customers.

With Cloud CMS version 3.1.315, we now ship with sample Docker configurations for the following scenarios:

Quick Start

The basic quickstart kit is still offered and has been updated to utilize local, container volumes instead of named volumes. This is a good kit to run for folks who are getting started with Cloud CMS as it launches the full infrastructure on a single host. You can run the Docker host on your laptop or in Amazon EC2. Instructions are provided with the kit so that you can get going quickly (hence the name “quick start”).

API Cluster

This configuration shows you how to launch Cloud CMS and cluster the API tier. Clustering the API tier allows you to scale out the request handling for your content API across many handlers and job workers. A load balancer runs ahead of the API containers, distributing requests across the cluster members. Cloud CMS maintains a distributed object cache and job queue so that runtime state is spread out evenly across the cluster. As new members join, runtime state rebalances automatically. This allows you to calibrate for performance, adjusting the number of API servers based on request throughput and job processing throughput.

OEM/Development

This configuration is provided primarily for our developer community and partners (OEM relationships, consultancy partners and integrators). It offers a sample configuration that lets you connect locally-developed Cloud CMS API and UI customizations. It is intended for scenarios where you run Cloud CMS locally and compile code changes that are then hot-linked into the running Docker infrastructure. Changes are picked up automatically so that you can connect your IDE debugger and walk through your code as it executes.

Roadmap

We have exciting plans for our Docker support in the near future. Among them is a plan to package Amazon Elastic Container Service (Amazon ECS) configuration files so that folks can work with ECS directly and independently of either Docker Machine or Docker Swarm. We would also like to provide sample configurations for Elastic Beanstalk as we’ve found that to be very effective. Finally, we’ve had requests for IBM BlueMix configurations and would like to provide a sample of that as well.

Customers have also asked for best practices around volume management (i.e. auto-mounting of EC2 volumes for persistent containers). This turns out to be an interesting area in the Docker world with all sorts of new innovations happening to address it. We will be provide sample configurations about how to do this as well.

Definitely watch this space as many exciting things are happening. If you’re an existing customer or a prospective customer who is interested in trying out Docker, please contact our sales team at sales@cloudcms.com.

The best way to enable content authoring with your JS framework

Now that you’ve built that beautiful application in Angular, Aurelia, Ember, React - or the next big JavaScript framework - how do make your content authors happy?  Easy:  Think Headless.

image

Never let a CMS dictate your presentation tier options.  The field is too crowded and is changing too rapidly for pre-ordained “templates” to suffice.  Instead, crank out that prototype in your desired framework(s) and

  • utilise REST calls to query content
    • a simple mockup will do
  • returning JSON for each node

Then go back and splice in actual CMS REST calls after-the-fact.  Or better yet, checkout their SDK.

Any API first, or headless, content management system worth its salt will dovetail nicely into such a process.  You get to spin up your MVP quickly, and look like a hero when authors can revise their items with ease.

Content Management as a Microservice

One of the big ideas we pursued when we set out to build Cloud CMS was to design the product so that it was entirely decoupled. Our vision was to have a number of discrete tiers that would consist of either single servers or clusters of servers dedicated to a single class of problems.

For example, the Content API tier is dedicated to powering our JSON API. It does nothing else but receive requests, execute them and hand back JSON data responses. It had nothing to do with presentation or rendering of content for consumption.

On the other hand, our Application Server tier does nothing but take that JSON data and convert it into a format desired by the web site or mobile app. It might be HTML but it also might be alternative JSON, XML or binary formats.

There are several other tiers as well, including a DB tier, a Search Index tier, a tier for messaging, a tier for Job Queue management and tiers for Job executors for long running tasks like statistics map/reduce and even web page screenshot capture.

By separating things into different tiers, we created more work for ourselves initially, but we believed this would allow Cloud CMS to be more extensible and more testable from a deployment perspective. We also believed that it would enable the platform as a whole to perform better and in a more elastic fashion where individual tiers could scale out as demand grew.

For our customers, this meant consistent, steady performance on modern cloud platforms (like AWS). Pricing would not only be lower (since capacity of machines per tier would scale down with lower demand) but it would also be as close to a utility model as you could achieve (in terms of paying only for what you use).

The Arrival of Docker

What we didn’t anticipate, however, was the proliferation of container technologies circa 2013 and specifically the arrival of Docker. Docker provided Cloud CMS with a way to package up our tiers into services that could easily be deployed in all kinds of interesting configurations. It greatly reduced the heavy Dev/Ops and IT cycle involved with running a cloud infrastructure service.

With Docker, we suddenly found ourselves in a position where our customers could not only run Cloud CMS in a hosted capacity, but they could also run Cloud CMS on their own. They could run it on-premise, in their own data centers, and even on their own laptops.

Docker allowed us to express our tiers as services that could be launched into containers. Docker then allocates these containers (Docker Swarm) onto a single host or many different hosts (EC2 instances) on the fly.

Furthermore, the elastic architecture of Cloud CMS means that new containers can come online at any time and join the pack. Others can come offline at any time. It’s self-healing and largely automated.

Cloud CMS and Microservices

In bundling our tiers into container images, we realized that we had gone a long way toward packaging Cloud CMS up as a set of microservices. While “microservices” is an abstract description of “small autonomous services that work together, modeled around a business domain”, Docker turns this into a reality by providing a way to package service code and automate its testing and deployment.

This automation of testing and deployment is the critical piece. Once the descriptor files are in place to describe the deployment, Docker handles the instantiation of containers as well as the allocation of those containers onto hosts (EC2 instances). It solves for the software installation and configuration task, but it also tackles the far more complex Dev/Ops challenges of network configuration, port binding, volume mounting, log collection, fail case handling and more.

For us, this makes it easier for us to manage and deliver Cloud CMS as a Software as a Service offering. However, it also opens up a world of possibilities for our customers.

It makes it possible for our customers to drop Cloud CMS into their applications. Not as a remote API service, but as an integrated, low latency, same subnet and possibly in-process module. Their application may pull in many microservices this way, each deployed as a container, including perhaps:

  • Shipping API
  • Order Processing API
  • Inventory Management API
  • Invoicing API

If our customers need a Content Management API, they just drop in Cloud CMS and away they go.

Conclusion

At Cloud CMS, we’re seeing more customers transition to running Cloud CMS as a microservice. Docker puts the power of the cloud into the hands of the customer. The implication of this to traditional SaaS companies is very interesting.

While SaaS companies will continue for some time to provide real value in terms of hosting their offerings and handling all of the Dev/Ops tasks associated with running the underlying infrastructure (along with data migrations, upgrades and support), we expect to see customers pull more of this on-premise and handle their own infrastructure management tasks themselves.

Docker and other container technology companies make this easier and lower cost than ever before. This shift in customer preference may shift many traditional SaaS companies into offering a more conventional on-premise support model. We’ve certainly found this to be the case at Cloud CMS.