Anatomy of Open edX - a modern online learning platforms... by Nate Aune

This video features Nate Aune at DjangoCon US 2018 in San Diego, California, USA.

Anatomy of Open edX - a modern online learning platforms... by Nate Aune
0:33:24
Published November 10, 2018
3,407 views

DjangoCon US 2018 - Anatomy of Open edX - a modern online learning platform serving over 35 million users by Nate Aune

What does it take to build a web application that can serve millions of concurrent users? This talk will dissect Open edX, the open source online learning platform that powers edX.org and hundreds of other sites around the world.

Open edX is written in Django but relies on a slew of other software to work at scale. We’ll break down the components of the entire software architecture, and explain how each component is used. This will give attendees some insights into how they might architect their web application if they’re building software to serve a large audience.

We’ll discuss how Open edX utilizes both MySQL and MongoDB as data stores and why it uses MySQL for student data and MongoDB for course data. We’ll describe the queing architecture of Celery and RabbitMQ to process background jobs, and Hadoop for processing terabytes of learner analytics data.

DevOps enthusiasts will not be disappointed as we’ll go into the use of Ansible and Terraform for deploying the entire suite of software in a consistent and repeatable way up to popular cloud providers such as AWS, Google Cloud and Azure.

What will attendees learn? The attendees will get a close look at a modern Django-based web application to see how it’s architected, and come away with a better understanding of design decisions when building a web application that needs to serve 35M users from every country in the world. Attendees will also be equipped with the knowledge to run Open edX on their laptop or in the cloud, if they want to explore the software further.

This talk was presented at: https://2018.djangocon.us/talk/anatomy-of-open-edx-a-modern-online-over/

LINKS:
Follow Nate Aune 👇
On Twitter: https://twitter.com/natea
Official homepage: https://appsembler.com/blog

Follow DjangCon US 👇
https://twitter.com/djangocon

Follow DEFNA 👇
https://twitter.com/defnado
https://www.defna.org/

Summary

Open edX is an open-source Django platform for creating, delivering, and analysing online courses at large scale. Nate Aune explains its growth, community, extensibility, architecture, data pipeline, and deployment model, including Django services, MongoDB, MySQL, Celery, Docker, Terraform, and Ansible. He argues that its complexity reflects the demands of serving tens of millions of learners, while its open-source ecosystem gives organisations and developers many ways to adopt, extend, and contribute to the platform.

Key takeaways

  • Open edX is a predominantly Python and Django-based platform used to build and operate large-scale online learning sites.
  • Its ecosystem supports custom assessments, embedded coding labs, mobile apps, analytics, plugins, and independently deployed services.
  • The platform combines MySQL, MongoDB, tracking logs, Hadoop-based processing, and Django Insights to analyse learner behaviour at scale.
  • Production deployments can use Terraform for infrastructure provisioning and Ansible for service configuration, while DevStack provides a Docker-based local environment.
  • Open edX has attracted contributions from universities, companies, governments, and individual developers, with translations, proposals, and extensions maintained across a broad community.
  • The platform's complexity can be daunting, but its open-source licence and active ecosystem make it a useful system to study, deploy, and extend.

Summarised automatically from the transcript.

Chapters

  1. 0:16 Introduction to Open edX The speaker explains why Open edX is relevant to Django developers and outlines the talk.
  2. 1:50 MOOCs and edX An overview of massive open online courses, edX, its nonprofit model, and its global learner base.
  3. 4:10 Open edX Use Cases Examples from MongoDB University and Redis University show how organizations use Open edX for technical education.
  4. 6:32 Hands-On Learning and Extensibility The talk demonstrates cloud-based coding labs, custom assessments, Studio, and the XBlock plugin architecture.
  5. 8:05 Community Growth and Adoption The speaker examines Open edX participation, contributors, sites, courses, national platforms, translations, and organizational adoption.
  6. 13:36 Codebase Composition A look at the size of the Open edX platform and its mix of Python, JavaScript, and other technologies.
  7. 15:06 Analytics at Scale The speaker explains how edX processes learner data through its analytics pipeline and visualizes it with edX Insights.
  8. 17:24 Open edX Architecture The platform is broken down into learner-facing applications, backend services, storage systems, tools, and independently deployed components.
  9. 18:56 Production Deployment An example deployment shows how Terraform, Ansible, and Axe provision and configure a scalable Open edX installation.
  10. 25:06 Local Development with DevStack The talk introduces DevStack and Docker Compose for running a multi-service Open edX environment locally.
  11. 26:39 Open edX Ecosystem The speaker closes by describing the plugin ecosystem, community resources, commercial offerings, and ways to get involved.
  12. 28:31 Questions The speaker answers audience questions about Open edX's history, databases, deployment, tooling, and open-source business models.

Transcript

5,448 words · auto-generated Show

Automatically transcribed, so expect mistakes in names and technical terms.

0:16

Speaker 1: Why talk about OpenEdX at DjangoCon? Well there's three three main reasons. Number one, it's a Django app. Number two, it's a highly scalable app that's serving uh over 35 million Users, and number three, it's open source, which means it's an ideal project to study and to learn from So my name is Nate Ani. In a former life, I was a software engineer, using Python almost exclusively for most of my professional career. And nowadays I mostly wear a business hat. And I run AppSumbler, which is a small 20-person startup whose mission is to close the skills gap by making education more accessible and skillful. scalable. And no surprise, OpenEX plays a key role in how we do that.

1:04

Speaker 1: Okay, so here's what we're going to cover today. What we're not going to talk about is Open edicts from an end user perspective, so the student, instructor, author perspective. There simply wasn't enough time to do both that and to talk about the technology. So, my hope for you today is that by the end of this talk, you will want to go take an OpenEDX course. You'll consider OpenEX for your organization. And if you're really curious, you'll want to go download the code. And start learning for yourself how it's put together. Okay, so let's get started. So there's been a lot of buzz in the last few years about MOOCs , also known as massive open online courses. And some of the services you may have heard of are like Coursera, Udacity, Khan Academy.

1:50

Speaker 1: These are all examples of MOOC platforms, which deliver online courses for free. How many people here have taken a MOOC? Wow, we got a lot of MOOC lovers in the room. That's great. So edX is in the same camp as these other MOOC platforms. But unlike Coursera and Udacity, edX is a nonprofit foundation that is open source the code that powers edX. org. So we'll talk more about the open source project in a second, but first, why would you be interested in edX? Well, if you like to learn, then edX is a treasure trove. As of yesterday, there were 2,400 high-quality courses from top universities and companies that you can take completely free of charge. That's pretty cool. How many folks here have taken an edX

2:36

Speaker 1: course? Okay , fair number of you. So of those 2400, 600 of them, nearly a quarter of all the courses are computer science courses. And of those 600 computer science courses, almost 60 of them, nearly 10%, are courses about Python. And these courses are offered by 53 top universities, including MIT, Harvard, UC Berkeley. And it's not just universities who are offering these courses, but there's also 62 organizations from such companies as Amazon, IBM, Red Hat, Microsoft, MongoDB. as well as associations like the Linux Foundation, W3C, IEEE, uh, even Amnesty International.

3:22

Speaker 1: So who is taking these courses? Well, it's not just college students, but it's lifelong learners. So these are people who are going through a career change, they're learning new skills, or maybe just taking a course for fun And to date, edX has attracted more than 17 million students from every country in the world. So who's going to go home tonight and enroll in an edX class? All right. Okay, so now hopefully you know what edX is, if you didn't already know about it. Um so what is open edX? So the OpenEX platform is an open source web-based system for creating, delivering, and analyzing online courses at massive scale. So as I mentioned earlier, the entire code base is Django with this small sprinkling of Ruby thrown in for good measure.

4:10

Speaker 1: So what are people doing with OpenEdicks? Well there are literally hundreds of OpenEdX sites offering training on every conceivable subject. But I'm just going to show a couple examples which I think are relevant for this audience. So as an open source company, MongoDB has placed a high value on fostering and giving back to the community. And early on they realized That's a great way to do this is by making expert MongoDB training easily and freely available to anyone, anywhere in the world. So they launched MongoDB University back in 2012. And today they have 18 free courses from introductory level to mastery level. And over 1 million learners have registered on the site, a site which is powered by Open Edics.

4:57

Speaker 1: And taking a page out of the MongoDB playbook, Redis Labs, also an open source company, launched the Redis University earlier this year, and they've already had thousands of learners enroll in these free courses. So you might be asking, well, what's in it for these companies? Why give away courses instead of charging money for them? Well, if you make an open source product, you often don't know who's using your software. So by offering training for free, it's a way to find out who these people are and see if they might be interested in other services that you offer. So one of the really unique aspects of the Redis University site is the focus on learning by doing. And to make this super easy, they're using our Virtual Labs tool to embed labs right within the course.

5:43

Speaker 1: So this means that each learner has their own personal sandbox in which to do these exercises. So all the learner has to do is click on this button that says click to launch your Python Workbench. And within seconds, they see a URL for their own personal cloud-based development environment. Which looks like this. So there's a file browser, there's a code editor, there's a Linux shell, everything the student needs to do the exercises. They don't need to download or install any software onto their computer because this environment is completely accessible using nothing but a web browser. And the actual environment is running in a Docker container on a server somewhere. So the ability to embed these labs is one example of how extensible the OpenEX

6:32

Speaker 1: platform is. Another example is this assessment in which the student input is evaluated against the Python expression. So here we can see the student is being asked to enter two numbers that should sum to 10. Very trivial example, but the way that you author this would be going going into uh Studio, which is this very powerful course authoring tool. Here we see the course outline showing all the sections of the course that can be edited. And if you're logged in as a course author, you can click on this section that says Custom Python Evaluated Input. And you 'll see something like this, which is a markup editor. And it looks like we're editing HTML, but lo and behold, right up there in that red box, what's that? Some Python code.

7:18

Speaker 1: So you can actually embed Python scripts right within the assessment editor that evaluate the student's input against the Python function. And OpenEDX has a plugin architecture called Xbox, which lets you create virtually any kind of assessment imaginable. All right, so looking at any software product, you want to see how it's growing, who's adopting it and at what pace. And it's no different with open source projects like OpenNX. So what do you look for in an open source project? Well one thing I look at is whether there's a healthy community of participants. These don't necessarily have to be developers. In fact, it's better if they're end users. So looking at edX, um the mailing list has over 4,000, uh almost 4,000 members

8:05

Speaker 1: and around 50 to 120 posts every month. Which has diminished in the last year because of the rising popularity of Slack, which now has close to 3,000 members and 150 to 350 members weekly active users. And there would there might even be a few people still chatting in the IRC channel. So the membership of users on the OpenX slack committee has grown consistently over the last two and a half years. Another thing that you can look at is how many contributors there are, and are those numbers going up? So according to GitHub, the number of individual contributors is around 400, and the repo has been forked over 2,000 times. And you can see that it's kind of flattening out. And one of the one reason I suspect that the number of commits per month has flattened is that the code base is getting more mature.

8:54

Speaker 1: And the rate of change is not as rapid as it was. Was in the earlier days. And the innovation is also happening in other repos. As they're breaking up this monolith code base, they're splitting it on into microservices. So a lot of the innovative components of OpenEX are actually happening in different repos. Well the the core platform is not seeing as many changes. So looking at this growth over the last four years, you can see some pretty incredible growth, especially in the last year, as the number of sites and And courses offered on OpenEDX have just shot up. And in this graph, the sites are red and the courses are blue. So to date, they've identified over 1,500 OpenEX sites and over 18,000 courses are offered. And of course, this doesn't count the

9:40

Speaker 1: sites that they don't know about. You might be asking, well, it's open source. How do they know how many people are using the software? Well, edX very cleverly included a logo in the footer of every open edX site that's being pulled from an S3 bucket. That they manage. And then they have a script that crawls all these uh sites to see how many courses they have. And that's how they were able to generate these statistics. Um and they've been running this script since 2014 and they just keep finding new ones popping up all over the all over the place. So with other over 17 million uh learners on edX. org. And 18 million on Open EdX. There's over 35 million on the up on the Open Edicks platform. And last year was a really exciting time because it was the first time that the number of Open EdX

10:30

Speaker 1: sites and learners eclipsed that of edX. org. And that number is just expected to keep growing as more organizations are adopting the platform. I think I heard that the the national government Um in China has something like 17 million just in itself. So what are some of these organizations? Well, some of the biggest companies are using OpenEdX, and some of the fastest growing technology companies have have adopted Open EdX. These are just a few of the ones. And the seventeen of the sorry, nine of the the 39 MOOC sites on Class Central are built on Open EdX. Which is pretty incredible considering that no other platform even comes close.

11:17

Speaker 1: We've also seen national platforms are choosing OpenEDX. There are platforms from at least 10 national governments. And because it's open source, anyone can contribute translation files to translate it into their native language. So to date there's been translation work done in 73 different languages. including over 97 % completed strings for French, Spanish, and Chinese. So where are all these contributions coming from? Well one of the great things about open source is the pace of innovation. And OpenEDX has attracted code contributions from many companies and individuals. And here you can see some of the top contributors include Stanford, Google, Microsoft, MIT. My company, AppSumbler, is

12:03

Speaker 1: also contributing enhancements to the native mobile apps and figures, which is a lightweight reporting app that sits on top of Open EdX. So looking over the last three years, the number of contributing organizations continues to grow, with over 50 who've signed the contributors agreement. And similar to the Python PEP process, whereby community members can propose improvements to the Python language, OpenEDX has adopted something similar with the OEP or OpenEDX proposal process. So there are 23 OEPs that have been adopted and many more that are under review. So what has been said about the Python community, I think, can be said for OpenEdX. You come for the code, you stay for the community.

12:49

Speaker 1: And I think this is one of those aspects of an open source project that cannot be underestimated. We all know the Python and Django community is wonderfully welcoming, diverse, and inclusive. This is a photo from the hack day at the OpenNX conference at Stanford a few years ago, and there's been five annual conferences so far. The last one was in Montreal, and the next one will be right here in San Diego in March. So who here is curious to take a look at OpenEX for their company or organization? We've got a few people. All right. So what is OpenEDX made of? Most of us in the room are developers. How many developers do we have? Raise your hand. Great. How many of you are Python Django developers? I would expect most of you.

13:36

Speaker 1: All right, so I mentioned earlier that OpenX is a Python application using the Django web framework. But it has a lot of code from other languages as well. So before we look at the breakdown of languages, does anyone want to guess how many Djangos will fit in the edX platform? So Django is roughly 228,000 lines of code. How many edXs do you think, or sorry, how many Django's would fit in edX platform? Anyone want to guess? Ten? One six. Six. Three? Who said three? All right, you're pretty close. It's 1. 87. So the edX platform has around 427

14:21

Speaker 1: ,000. lines of code. Um and that slide is actually old because there are now over one million lines of code uh just in the edX platform repository. Um but if you look at the the number of uh code lines and you subtract the number of comments and blank lines then it's it's roughly the same as that slide. Um so it's predominantly Python code, 65%, and the next highest language is JavaScript at 26%. All right, so you might be asking yourself, how does an application scale to serve that many users? Well, if you're like me, you like to take things apart and figure out how they're constructed. What are these parts and how do they fit together? So where do you start with a system as massive as OpenEdX? Well

15:06

Speaker 1: in the early days, this is around 2013, there wasn't much documentation on OpenX Open edX. He was still, you know, like a very it was a baby of an open source project. And this was the only known diagram describing the architecture. And it was really intimidating. You know, you look at this thing, you think, uh, ov over-engineered? Yes, no, maybe? But one thing to remember when you're doing things on a small scale, you can make certain design decisions that fall apart when you're operating at a large scale. So here's a good example. Once edX started collecting all this learner analytics data, they needed a way to analyze it, to figure out how learners learn. And as you can imagine, if you have 17 million learners, you're generating terabytes of data every day.

15:54

Speaker 1: And this is a treasure trove if you're a researcher, right? So how do you process all this data and glean meaningful insights out of it? So edX built this, what they call the edX Analytics Pipeline. Which takes student data from MySQL, it takes course data from MongoDB, and then it takes events data from the tracking logs, it aggregates them all, and it pushes them up to Do for processing. And then finally the results are pushed back into a MySQL database. And once all the results are in MySQL, another Django app called edX Insights visualizes all this data. and lots of pretty graphs showing student enrollment, engagement, performance. And here we're looking at the number of video views per unit in the course.

16:39

Speaker 1: And this one is the attention span on an individual video. So if this is a four-minute video, you can see that people's attention kind of wavers. Not surprisingly, we all have pretty short attention spans these days. So to give you a sense of how massive this OpenEDX suite of components is, that insights component that we were just looking at is just one of many components. It's that red box in the upper right hand corner. So this diagram shows a slightly less intimidating and more colorful interpretation of the OpenEDX architecture. So it's been divided into um different layers of the stack. So we have the learner and educator facing components along the top.

17:24

Speaker 1: This is the LMS, the learning management system. system, the studio, which is the course authoring environment, insights, which is that analytics service. And then we have the back-end services. So this is like the forums, student notes. um a back-end queuing service. And then we have these async processing. So this is uh you know celery workers and then on the bottom we have all the storage layers so MySQL Mongo S3, Elasticsearch, Memcache. Another way of looking at the architecture is to drill down a level deeper. and separate components into four areas. So we have the tools and clients across the top. So these are like the mobile apps, the API manager. Um

18:11

Speaker 1: UX toolkits. And then this bluish green area, this is the the edX platform code base. Over here we have independently deployed applications, which you can think of as like microservices. So these kind of sit alongside edX and expose an API that edX can talk to. And then you have the the persistent systems like on the last slide. And we don't have time to go into the details of each one and how it's used, but you can see that it's a pretty complex system with a lot of moving parts. Yet another way of looking at the components is by audience. So we have educators, learners, and business. And I like to call this one the Mickey Mouse taming the monolith. All right, so how the heck do you deploy this thing?

18:56

Speaker 1: Well, once you've dug into the code base a bit and understand these pieces, then you might start thinking like an implementer. Like how would I go about putting this thing into production for my company or organization? So while this setup is probably overkill for a small open edX site, this is what you'd be looking at if you were building a site like edX. org with scalability and high availability. So you'll notice that the app servers are running in two different availability zones. So if there's a problem in US East 1B zone, the traffic will still be routed to US East 1C and your site won't go down. So obviously setting all this up manually would be a huge pain. So we leverage uh a few open source tools to make deployments reliable and repeatable.

19:42

Speaker 1: So building the platform takes place in two phases. The first phase is infrastructure provisioning, and the second one is service configuration. And the provisioning phase stands up all the required resources and tags them with the role identifiers so that the configuration tool can come in and do the provisioning and configuration. of all the services. So we use a tool from HashiCorp called Terraform. How many people here use Terraform? Okay, we got a few people out here. Um and then for configuring the services we use the recommended Ansible, which is also what edX uses, which is written in Python by the way. And then we built this tool called Axe, uh, which is the the AppSembler edX tool um that's sort of a wrapper around Terraform and Ansible. uh to save keystrokes and ensure consistency.

20:29

Speaker 1: So basically one of our engineers got tired of typing everything. So he made this command line tool. So I'm going to show a simple example of using Axe with the helpers Terraform and in Ansible to provision server resources and deploy the OpenEX application. So this is an example directory layout for one of our customers, JFrog. And they're on the pro tier. And the hosting provider here called the platform is Google Cloud. It could be AWS, DigitalOcean, even Azure. Azure. Terraform is cloud provider agnostic, so you can use the same, most of the same code to deploy to different providers. We've also specified the Google Compute Engine project, JFrog Academy, that's right here.

21:14

Speaker 1: And then we're passing in the Google credentials using a JSON file that's stored securely in a shared key keybase directory. And then we're using Ansible Vault to store these secrets that Ansible needs, also in Keybase. And lastly, we're specifying here to use the Ansible playbook called Ficus Pro. YAML. And I'll walk through this file in a sec. But first, what do we mean when we say the Pro Tier? Well, we offer our customers three different tiers depending on how much traffic they're expecting. So basic is a single server, pro is application and database servers, and then enterprise is like a multiple app servers with load balancing and master slave replication. application for the database. So for this example we're just we're looking at the pro. So this ficus pro.

21:59

Speaker 1: yaml file might be a little bit hard for those of you in the background. But this is a generic Ansible playbook for all customers who are on the Pro Plan and running the Ficus release of OpenEDX. So I'm not going to walk through this entire file, but you can see there are multiple plays within this playbook. Each which can execute multiple roles. So there's a configure Mongo play at the top that installs the MongoDB server and some other services. like Elasticsearch and memcache. And then there's a configure stateless edX app instance play that configures a stateless edX app server. So that's a generic playbook, but how do you override the defaults with customer-specific values? Well, edX uses a file called server vars.

22:46

Speaker 1: To do that. So this is the server of ours YAML file specific to the OpenNX site for our customer JFrog. And you can see that we're overriding the site. So the name of the site, JFrog Academy. Um we're also overriding the backups directory definition and the theme and the URL. So all of that can be configured in this YAML file that it sort of extends that generic playbook. And then lastly we have the inventory file. And the inventory file tells Ansible which servers to connect to and run these playbooks. So obviously you would create this inventory file after Terraform is finished provisioning the servers because you don't necessarily know the IP addresses before you run Terraform. All right, so

23:32

Speaker 1: so that was kind of an overview of that process. So Terraform has a three-step process. Initialize, plan, and apply. So this is the command that we use to run the first step, initialize, which initializes the working, the Terraform working directory. And we're passing some parameters like the customer, the environment, the tier, the plan. You notice that we've also passed in this Terraform plugins directory. Um so Terraform is extensible, so you can build your own plugins for it. And these parameters are sort of optional because we've defined them in our axe. yaml file. So I'm just showing them kind of for education. Okay, so then we run the plan command. And this is sort of like a dry run. So it doesn't actually provision any servers for you, but it shows you what

24:21

Speaker 1: it's gonna do. And that way you can audit this plan and make sure it's gonna be to do things correctly before you execute it for real. And then we run the apply command to actually provision the resources. And I should mention here that Terraform is a very powerful tool and it can obliterate your production servers and all of your customer data if you're not careful. So before running Terraform, you should have a good understanding of how it works. um how it tracks the state of your infrastructure and how the plan and apply commands work. So lastly we run the Ansible using X as the wrapper to provision the application onto the newly created Created servers that Terraform just spun up for us. And when this command is finished, uh, we should have a fully production OpenEDX

25:06

Speaker 1: site running specific to our customer JPEG. Simple, right? Okay, so if you just want to get OpenEDX running on your laptop and you don't want to mess with Terraform and Ansible, edX has provided a local dev environment called DevStack. that can be built easily using Docker Compose. So I know, I know, just when you think I can't possibly throw any more technology at you, uh now there's Docker. Um but Docker Compose takes a lot of that complexity away because it automatically creates a working development environment for you. So how does it work? Well there's a provided make file and you run these series of commands to spin up an entire multi-node Open EdX. Stack with each service running in a separate container.

25:53

Speaker 1: So it's like a production environment, but without all the cost of spinning up servers on AWS. So you run these commands, go make a coffee, when you come back, you'll have the entire platform running on your laptop, which is pretty cool. And if you're intimidated by the command line, Docker for Mac ships with this GUI called kitematic, which you can use to inspect all the running containers. So you can see in this red box over here, we have eight different containers running a variety of services on different containers. ports. So we have Elasticsearch, Mongo, MySQL, Memcache, plus all the edX services like LMS, Studio, e-commerce, a lot of stuff. So who's going to go home tonight and try to get DevSAT running on their machine? Alright, we got a few takers, a few brave souls.

26:39

Speaker 1: Alright, so I want to wrap up my talk by inviting you to come and explore this deep sea. That is OpenEDX. And like many open source projects, there's a whole ecosystem, not just the core platform. So what we've been talking about today is primarily this white circle over here. Which is the core. This is governed by edX. It's an AGPL licensed piece of software. But there are hundreds of plugins and extensions of and available for OpenEDX that are being developed by people like you. And there's also a growing community of companies that are adopting OpenEDX for their own use, as well as vendors who are providing commercial products based on OpenEDX. And it's still a young project. OpenEX just celebrated its five-year birthday this year. So there are a lot of opportunities to get involved.

27:27

Speaker 1: So if you haven't been scared away by the complexity of OpenEDX and you want to explore its labyrinth of code, I recommend joining the Slack community. It's the first URL up there. There's also a mailing list, and of course you can get all the code and playbooks on GitHub. And this talk would not have been possible without the contributions of Fanil, Regis, Numisha, and John Mark. So thank you all for letting me read this reuse your excellent materials. And if you're interested in trying out OpenEDX and you don't want to invest the time in figuring all this stuff out, my company, AppSembler, makes an all-in-one SaaS offering of Open EdX called Tahoe. And Tahoe lets you build a branded OpenEDX site in a matter of minutes. So come find me after the talk if you want to learn more, or you can just go to that URL.

28:14

Speaker 1: Oh, and if you're into stickers, I have these cool laptop stickers to give away. And with that, I want to thank you all for your attention, being a great audience, and I hope this piqued your interest in taking a closer look at OpenNX. Thank you.

28:31

Speaker 2: Thank you for that very nice talk. I'm a little uh curious about so Open edX came out of edX, correct. And how long has edX been around

28:40

Speaker 1: I think edX started in 2011, 2012, and then they open sourced the codec in 2013.

28:47

Speaker 3: Um I saw in the architecture diagram MongoDB and MySQL. Uh what uh why both?

28:52

Speaker 1: Great question. Yeah, I forgot to mention So edX looked at uh the different data store options and at the time they were using Amazon, so they chose MySQL because RDS was available. Postgres wasn't yet available on Amazon. So that was the reason for MySQL. The reason for Mongo is that um they found that MongoDB was a better uh storage layer for course data. So rather than using a relational database, um It's more like an object store.

29:21

Speaker 4: Hi.

29:26

Speaker 1: I knew someone was going to ask that question. We've been trying to open source Axe for like the last year and it's It's it's an internal only tool at this point, but we have every intention of open sourcing it.

29:37

Speaker 5: Have you uh come across any open edX courses on building and Open edicts course.

29:45

Speaker 1: Another great question. I actually gave a uh a tutorial at the last Open Edics conference. in Montreal and I delivered the training on OpenEDX. So it was a it's an open edicts course to teach people how to develop Open Edics.

30:02

Speaker 4: Are there any options currently for being able to install it on Kubernetes?

30:06

Speaker 1: Great question. Yes. uh we call them fun the f the French U uh Université Numérique and they have got OpenX deployed on OpenShift which is Kubernetes space, of course. So it's still a pretty nascent project. I think they're still kind of working out the kinks, but it looks really promising.

30:30

Speaker 6: So I was wondering you've got the um Ansible scripts and you've got uh Docker container. And I'm guessing that there are things going on in the Docker file that are also going on in the Ansible scripts. How do you keep those in sync or do you try to or

30:48

Speaker 1: Yeah you've You've touched on a very big point of contention within the community. There's a movement to make everything Docker file-based, but edX has a huge investment in Ansible. So currently that the dev stack that I showed kind of uses both. They have Docker files to kind of bootstrap the environment, and then Ansible kind of comes in and and does its thing. There is a uh an unofficial project called OpenEx -docker, which uses pure Docker files and it doesn't using the Ansible. And I found that it's actually kind of breath fresh air to use that because that's very easy to understand. Whereas Ansible is super powerful, but it also you can get kind of mired in the

31:34

Speaker 1: complexity of it.

31:36

Speaker 7: Um I was wondering if um for this project and I guess projects of this ilk like and maybe this is too complicated question like a process of it starting closed source, having funding, being a a growing business that then gets to a point that it can transition to releasing the whole project as open source.

31:59

Speaker 1: Let's see if I understand the the question.

32:07

Speaker 7: Yeah, and also how much that was the plan and if that's the plan how a business like pitches that to people to fund them. We're totally gonna make what we're building free and easy for other people to edit.

32:19

Speaker 1: Yeah.

32:20

Speaker 7: How do you get people to fund you doing that?

32:22

Speaker 1: Yeah. Well I think it helps that edX is a non profit organization. So they don't have a profit motive in the way that like a VC back startup, you know, would have a hard time making that case. edX also has backing from MIT and Harvard so they can kind of you know get by for a while without having to make a lot of revenue. Um but I think it's it's an interesting question around how what's the trade-off, right? If if you're making an open source product and your competitors can take that product and then compete with you, is that a good thing? I guess you have to differentiate in other ways. First, let's thank Nate again

33:08

Speaker 1: for the fascinating talk.

Questions this talk answers

What is Open edX?

Open edX is an open-source, web-based platform for creating, delivering, and analyzing online courses at massive scale. It is primarily a Django application, with some Ruby and other components.

Discussed at 3:22

What can companies use Open edX for?

Organizations use Open edX to offer free or paid training, including technical education and product-specific courses. The talk gives MongoDB University and Redis University as examples of companies using it to educate users and identify potential customers.

Discussed at 4:17

How does Open edX evaluate custom student assessments?

Course authors can use Studio to embed Python scripts in assessment components, allowing a learner’s input to be evaluated against a Python expression. The XBlock plugin architecture can be used to create many other kinds of assessments.

Discussed at 6:32

What technologies make up the Open edX platform?

The platform is predominantly Python, with JavaScript as the next largest language, and it uses Django alongside services and storage such as MySQL, MongoDB, S3, Elasticsearch, and Memcached. Its architecture also includes mobile apps, APIs, independently deployed services, and asynchronous processing.

Discussed at 13:36

How does Open edX scale to millions of learners and large volumes of analytics data?

Open edX separates learner-facing applications, backend services, asynchronous workers, and storage systems. Its Analytics Pipeline combines data from MySQL, MongoDB, and tracking logs, processes it with Hadoop, and writes results back for visualization in the Django-based Insights service.

Discussed at 15:34

How do you deploy Open edX in a scalable production environment?

Terraform provisions the infrastructure, Ansible configures the services, and Appsembler’s Axe tool wraps both to make deployments repeatable. A high-availability setup can use multiple availability zones, application servers, database servers, load balancing, and database replication.

Discussed at 18:56

How can I run Open edX locally for development?

Open edX provides DevStack, a local development environment that uses Docker Compose to start the platform’s services in separate containers. This lets developers run a multi-service Open edX stack on a laptop without provisioning cloud servers.

Discussed at 25:06

Why does Open edX use both MySQL and MongoDB?

MySQL was chosen partly because Amazon RDS supported it when edX made the decision, while PostgreSQL was not yet available there. MongoDB was selected because it suited course data better as an object-oriented storage layer than a relational database.

Discussed at 28:52

Can Open edX be deployed on Kubernetes?

Yes. The French Université Numérique project has deployed Open edX on OpenShift, which is based on Kubernetes. The Kubernetes-based deployment was still described as a young project with some issues being worked out.

Discussed at 30:06

How do Open edX’s Docker and Ansible deployment approaches fit together?

The official DevStack uses Docker files to bootstrap the environment and Ansible to perform additional configuration. The community also has an unofficial Open edX Docker project that uses Docker files without Ansible, which the speaker found easier to understand.

Discussed at 30:48

Presenters

Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.

More videos from DjangoCon US