The Open edX platform is constantly growing in every aspect, something that’s desirable for every Open Source Software that proves to be useful and true to the name. In that sense, the ways of setting up the platform keep evolving, too. Unless you’re knowledgeable with the tools used for working with the platform in a local environment, there is no “simple” way to get started with an instance without help. That’s where we come in.

Focus on your work, leave the rest to us

Photo by Ken Suarez on Unsplash

Setting up any production-ready website requires some configuring, let alone an education platform with so many services, such as E-Commerce, forums, platform-wide annotations, analytics, and more.

Using the OpenCraft Instance Manager (OCIM) allows you to focus on what’s important: creating high-quality courses and increasing the possibilities of online education, based on one of the largest and most scalable Learning Management Systems (LMS).

However, we do have a specific way of setting up the platform for our clients, and like everything related to this massive project, it’s constantly changing for the better. The way we do deployments allows us to offer an easily-manageable installation for anyone who wants to try out what the Open edX platform has to offer. Like any other, our method has both advantages and drawbacks, but we’re constantly evaluating ways to improve it and keep contributing the ideas we come up with to the whole community.

Different paths for different purposes

There are two main ways for a developer to deploy the platform:

  • Setting up a DevStack: Requires a fair amount of technical knowledge and is not viable for commercial use because of its publicly-available configurations and its design to interact with system resources for development purposes. This remains the go-to for developers who wish to work on the platform and test its features. The DevStach as it’s Dockerized and it’s constantly improved in favor of stability and ease of use.
  • Native installation: Requires much more technical knowledge, as the user needs to manually configure various platform services. This is the intended method for production deployments, and it’s what providers like OpenCraft offer to their clients.

When we say “various platform services” we’re referring to the various services that are actively supported within Open edX. Nowadays, a DevStack has no trouble setting them up; it will boot containers for each one and keep each environment isolated, making only the necessary connections.

The edX services the DevStack sets up for you. This doesn’t include databases, message brokers, and other vital components.

Ideally, scalable software services should be deployed apart from each other to ensure availability, recovery from failures, and ease of escalation and maintenance, among other things. So, the best way to have the Open edX platform running is a distributed native installation— to not put everything into a single machine, but rather set up a server for the database, another for the LMS, another for Insights, and so on.

Distributing a system is costly and requires constant supervision and technical support, and while OpenCraft offers this as part of our hosting plans, it’s necessary to have an option that brings together the security, ease of development, and scalability of having isolated environments like in the DevStack, while providing a production-viable instance of the platform. This is the main purpose of OCIM.

How we provision the Open edX platform

OCIM sets up virtual machines (VMs) that encapsulate a native installation of supported versions of the platform. We do this by using Ansible Playbooks, adapted from those that the Open edX community has worked on, to facilitate our native deployments, and also our own playbooks for monitoring, protecting and managing our client’s instances.

This allows us to offer cost-effective and easy-to-maintain instances, fully isolated from each other, adding an attractive degree of flexibility and security. Additionally, this lets users and administrators customize their instances, leaving upgrades and updates for us to handle, something that’s always recommended if using this platform in a production setting.

Having said that, using VMs does have some limitations worth considering:

  • Hardware limitations:  Currently, the basic instances deployed by OCIM are hosted on a 40GB storage, 4GB RAM, single-core 2.4GHz processor, Ubuntu 16.04 VM for versions below Koa (which will require 20.04). The single-core CPU for the VMs makes all operations a tad slow. The platform also generates plenty of static assets and downloads loads of packages needed as dependencies, all of which contribute to this issue. The first deployment for basic users takes about 2 to 3 hours to complete. Setting up subsequent instances will be at least 1 hour faster, assuming that the first deployment was completed successfully because the initial database migrations only need to be run once, a process that takes up a significant amount of the deployment time.
  • Databases and other services are shared among VMs: As mentioned earlier, OCIM provisions the core Open edX services in the same virtual machine, but the servers for MySQL, MongoDB, and RabbitMQ are shared between instances. We’re currently working on improving this part of the process, as databases and other services should be isolated from one another. Provisioning these services implies many network requests to busy hosts, so setting up the database schemas makes deployments slower than they should. If this becomes a concern, we usually suggest a supervised installation instead.

While these aren’t game-changing issues for simply testing the plans we offer, we want to reduce the wait time as much as possible for all deployments, so our clients can get faster to the work that matters. For this, we’re considering different ways of provisioning the databases and other assets that are limited by some of our hardware, among other upgrades.

Also, we’re already working on newer OCIM features that will help platform administrators know the status of their instance and easily customize it to the greatest extent, all in one place.

Regardless of your subscription tier, we want to provide you with the most effective tools and the highest level of quality, so you can expand your opportunities in providing the best online education possible. Stay tuned for our upcoming updates! 🚀