Hosting edX in Production

Placeholder for details around installation alternatives and best-practices.

An Example of how a deployment might change as it grows can be found in Feanil's talk from Open edX's first conference:

As the talk suggests for any size production, in order to simplify scaling and updating, the first step is to spearate your persistance layers from your application layers.

The content below is in progress and playbooks mentioned may not exist yet!

Small Installations

For small installations, you should start off with one machine that has all the applications layers and one machine that has all you data.  The machine with you applications can change more easily and more often without having to worry about updates causing issues with your data. Furthermore, when you do updates to the databases you can be more deliberate with the changes.

Setting up App Layer Machine

The app layer consists of any of the front end or API servers that you need that can scale horizantally.  This includes any of the django apps(edx-platform, insights, ecommerce, xqueue), the ruby discussion app(forum/cs_comment_service).  To bring this up, you can run the edx-stateless.yml playbook against the machine that you want to use for serving all your apps.

Setting up the Persistance Layer Machine

To setup the use the edx-persistance.yml playbook.  This playbook will setup, mysql, memcache, rabbit, elasticsearch and other datastores that various applications need.

Related playbooks can be found here

Feanil's Stateless Deployment Playbooks

Large Installations

edX's Deployment