This article was written by Jeff Miller, a member of the OpenCraft marketing team.
We’ve consciously built OpenCraft on four values: Openness, quality, commitment and empathy. When it comes to quality, especially when it comes to ensuring the best privacy, security and flexibility for our users, we don’t do half-measures.
We work as hard as we can to ensure that our clients get the best possible Open edX development we can deliver. And that commitment doesn’t stop with custom code development. We also host instances of Open edX for our clients, and each of them is logically separate from all the others.
We only host "dedicated" instances of Open edX, which means that each instance that we deploy belongs to a single client. At the entry-level price range, other vendors offer hosting on Open edX sites, which are hosted on a shared instance along with other clients.
With a shared instance, multiple clients share the same resources, from the database to APIs. When you have a dedicated instance, the server belongs to you and you alone, and ownership confers many advantages. Let’s go through the most important of them: security, scalability and performance, data portability and control, and flexibility and customization.
Scalability, Performance and Security
Our instances are hosted on highly automated and robust cloud infrastructure, with a design and deployment strategy that has been optimized specifically for hosting Open edX, following industry-leading practices for performance and security.
With a dedicated instance, our clients never have to worry about performance lagging because another client is hosting a class with hundreds of simultaneous users and it’s hogging more than its fair share of resources.
If you need to scale up on a shared instance, it can be done, but it's impossible to predict when multiple users of the same site might have a lot of traffic at the same time, which means shared instances aren't scaled to handle the full load for each individual site they contain. In a nutshell, you end up with less available resources than you’ll probably need to handle traffic spikes. With a dedicated instance, you’ll always be able to scale to your own needs, so you can have as many courses and users as you like.
Security is also stronger with a dedicated instance. Security flaws or admin errors on one site on a shared instance can affect everyone else. For example, admins on a shared site could elevate their privileges on other sites from the same instance, which opens up all kinds of unpleasant possibilities. And if one XBlock on a shared instance has a security hole, everyone whose site is on that instance is vulnerable. By controlling your own instance, you don’t run the risk of suffering the consequences of your “roommates’” mistakes.
Data Portability and Control
If you’re on a dedicated instance, the data belongs to you, and it’s easy to extract or migrate it to another host. But that’s a very tricky task if you’re on a shared instance, because you share a database with every other site on that server. Your data is all mixed up with everyone else, and extricating yours from the shared database will require a ton of expensive, time-consuming work. It’s the ultimate form of vendor lock-in. Once your site is on a shared instance, it’s very unlikely you’ll be able to leave, and if you try, you’ll be in for a terrible case of sticker shock when the bill arrives.
On a dedicated instance, you have complete administrative control, which can save you a lot of headaches. You have direct access to the Django admin console and to the database and APIs, a level of access that’s very restricted on shared instances. If you want to make even minor changes to your site on a shared instance, often the only way to get it done is to make a support request. A task that could take five minutes for you to complete on a dedicated instance takes a day or two because your ticket has to wait in the queue for an available admin. More than once we’ve had clients come to us because they were tired of having to ask their vendor to handle issues they could have easily handled themselves.
Flexibility and Customization
At OpenCraft, customization is our bread and butter. We eat custom code for breakfast, so this advantage is close to our heart. When you’ve got a dedicated instance, you're in full control of your customizations. If you’re sharing an instance, however, the host has to be very careful about how customizations are done and the dependencies of components, because changes to one site can have repercussions for everyone else. So if you want further customization of optional functionality like XBlocks, ecommerce or single sign-on, you’re going to face some challenges in a shared instance.
This inflexibility carries over even into areas like localization. While it’s possible to install additional languages on a shared instance, it could have technical implications for other sites, especially if you’re dealing with languages such as Arabic or Hebrew that are read from right to left. For us, installing a new language on a dedicated instance is about one hour of work.
Finally, by providing dedicated instances, we’re able to ensure reliability. Maintenance and upgrades are included with all our hosting plans, and we have a track record of exceptional, 99% availability. We also create daily backups for every instance and can restore backups quickly and easily.
So, while it’s a bit more costly for us to provide our clients with dedicated instances, we think it’s worth it in the long run. Stronger security, fast performance, full control, scalability and as much customization as you want —these are important to anyone who’s running an Open edX instance. Besides, if you want to provide a high quality experience, you can’t take half measures.