Open edX on Digital Ocean, The Basics (Part 1)
Digital Ocean DO is a public cloud service provider which is a good alternative to the more popular AWS, Azure and Google Cloud. I came across DO thanks to their excellent documentation which in my opinion, blows AWS out of the water. While AWS will try to sell you on getting their training and accreditation, DO assumes that you just want to learn straight away and start implementing.
Having said that I hadn’t really implemented anything on DO, just played around with something my friend Giles had put together for his shiny-server.
Giles and I have been working on Programming For Policy, an online programming course aimed at policy professionals and analysts from around the world. While I’m more partial to Python when it comes to data analytics, I do believe that R can be a great starting point for policy analysts who are new to programming and want to work on statistical analysis as opposed to programming for machine learning or even software engineering. The good news is that we have had a LOT of interest over the last couple of weeks, especially since the in-person/live short course at Microsoft Reactor, Sydney.
One of the key features of this course is that we plan to be data-driven from the get-go. This means that we need to monitor engagement and other metrics so that we can course-correct (no pun intended!) if required. We decided to evaluate a number of platforms, both proprietary and open-source that could potentially host our content. More importantly, we needed to monitor engagement and other data points in real-time. Finally, it came down to just two options Open edX and Moodle. As a user and student, I was super familiar with both platforms. Moodle is one of the pioneering open-source learning management (LMS) platforms and I had encountered Moodle back in my undergraduate days at the University of Moratuwa and edX through all the MOOC courses I had taken.
After a bit more reading we decided to trial Open edX since it had a bit of an edge over Moodle at this point in time in 2020.
It’s no secret that Open edX is notoriously challenging to set up and manage. Additionally, since our course would be offered free of charge, we had a bunch of budget constraints to consider. For us, this meant that we needed to make Open edX work on Digital Ocean! Not an easy task by any measure.
Given that Open edX is difficult to install and manage, a number of developers had come up with some great solutions. Bitnami’s AWS Image is a good example and Regis Behmo has developed a docker image that can make installing Open edX relatively painless.
The Docker option looked super promising and Regis is a very nice guy who’s always happy to help. Now, I’m pretty good at deploying docker images but I’ve always had a problem with how opaque the process can be, especially for complex applications that rely on multiple services (the irony!). After trying multiple times to get the image up and running on a DO droplet I had to call it quits. Most of the errors had to do with setting up the SQL database and I couldn’t figure out why the process failed. The whole installation was fairly opaque. Forums were helpful up-to a point. Honestly, I wouldn’t recommend this approach if you’re on DO.
The AWS image from Bitnami wasn’t going to work for us either because we don’t have AWS credits to run the server. Since DO had given us some credits I had to make Open edX work on it. I had to find an alternative between installing Open edX from scratch manually (a nightmare) and running a docker image (not enough control).