CloudStack vs. OpenStack: Is There Really a Winner?
About two years ago, I wrote a blog post about my personal experience with the main differences between CloudStack and OpenStack. Since both technologies have evolved, I feel it’s time to take another stab at answering this commonly recurring question : “Should I deploy CloudStack or OpenStack in my organization?”
My first deployments of OpenStack were performed manually and it was really painful. The barrier to entry for deploying such a cloud solution probably discouraged many excellent sysadmins from trying it. Some automation bash scripts were available back then, but there were no turnkey solutions to automate the process. This has changed dramatically in recent years, with many open source and vendor tools for OpenStack deployment available today. With a now mature tool such as Mirantis Fuel, it’s easier to get the different OpenStack modules up and running. On the CloudStack side, nothing much has changed. It’s still one Java application and bunch of operating system packages to install. Then you have to configure your cloud, but Ansible playbooks or Chef recipes are available to help you out. The complexity of deploying a CloudStack based cloud hasn’t changed much in two years. It was simple, and it is still simple.
In terms of core feature sets, I would call it a tie. CloudStack works very well for compute and networking orchestration, while OpenStack has some PaaS features that are appealing, like DNSaaS or Docker support. Community wide, both have their challenges, so I would say it’s equal there too. OpenStack is a huge community with lots of talented people, but more people means it is harder to manage a clear vision, and you have to deal with some money-driven politics. CloudStack has a smaller community and the developer community is probably more cooperative, but it is faced with the challenge of how to attract more contributors and companies to help move the software to the next level.
OpenStack and CloudStack are fundamentally different even if they try to solve the same problems. To better illustrate this difference, our CEO came up with an excellent analogy during an informal chat and I’d like to share with you. He basically said, “it depends if you want to play with Lego or Playmobil”. In other words, one is a set of building blocks and the other one is a defined product.
OpenStack has always been a modular software. We can say OpenStack is composable, meaning you can select and combine each component in a different way. The beauty of this is the scaling capabilities and flexibility. You can take each module, and scale it independently of the others. Consequently, the physical footprint of the control plane will vary depending of the expected cloud scale. For a small cloud, you can probably survive very well with three nodes, but if you expect to build a large one, you may need around 10 physical nodes. CloudStack is much more monolithic, most modules are bundled inside one binary, with the exception of specific network controllers – Nicira or Contrail are good examples. To scale, you need to do it horizontally. In other words, you create new management servers, and add them to a load balanced pool. But in terms of complexity, CloudStack is very easy to implement and maintain.
So you are probably saying in your head right now: “This article didn’t help me at all, which platform is the best?” I think the right answer to this question should be… it depends! I don’t think any solution is outshining the other, if we stick to the fundamentals. Of course, if you factor in marketing and market visibility, you probably think only OpenStack exists. So my advice would be to evaluate both, and select the technologies that meet your business goals, your budget, your timeline, your scaling plans, and your level of in-house expertise. At cloud.ca, we actually ended up using both technologies together, but for different services. We chose what we think is the best of both worlds. It’s just one of many examples that proves both OpenStack and CloudStack can be used in the field, either alone or together, to power many kinds of workloads.