What is Khan Academy's backend infrastructure and deployment process?

Quora Feeds

Active Member
Ben Alpert

Our entire website runs on Google App Engine; our site is written in Python and uses the webapp2 and Flask microframeworks. For our database we use App Engine's built-in "NoSQL" datastore which makes it easy to grow our site without worrying too much about database scaling. All web requests go to frontend machines, but we also have some backends for running map-reduce jobs for analytics and other periodic cron jobs.

We generally deploy once per day. We have a custom wrapper around the appcfg.py deployment script that…

  • checks App Engine to make sure there's room for a new version
  • runs lint and unit tests
  • creates translated versions of our JavaScript files for our international sites
  • compiles our Jinja2 and Handlebars templates and LESS and JSX files
  • combines and minifies our JS and CSS packages
  • chooses a version name based on the git commit hash
  • calls appcfg multiple times to deploys frontends and backends
  • notifies our internal chat room about the deploy


See Questions On Quora

Continue reading...
 
Top