Open edX的容器化之路

前言

前边(Open edX 服务企业)提到

我们(Open edX中国社区)近期正在梳理今年会议的一些报告内容,对其中感兴趣的部分进行解读,之后会在国内不同城市举办一些meetup,具体安排可以关注edustack

我认领的主题中,有不少和Open edX社区在容器化方面的尝试有关,本文对此做个梳理

我将2018年与容器化相关的主题罗列如下:

本文在解读完今年会议的几个主题之后,将梳理近年Open edX社区在容器化方向所做的工作、跟进目前的社区进展,并讨论未来的可能方向

主题解读

Navigating the Docker Devstack

这是OpenCraft为我们带来的一个分享

我在盘点Open edX社区中拥抱开源的公司及值得关注的项目 中,将OpenCraft列为Open edX社区中积极拥抱开源的公司之一

如果你准备采用或迁移到open edx的最新版本(Hawthorn),而之前对docker有不甚熟悉,那么这个分享就是为你准备的。从官方放出的信息来看,Hawthorn之后:

Devstack is now based on Docker rather than Vagrant. See the Docker Devstack README

Hawthorn之后,Open edX的开发环境都将基于Docker,而不是Vagrant。OpenCraft为我们带来的这个分享中,涵盖如下部分:

  1. Docker Basics
  2. Docker vs. Vagrant
  3. The Docker Devstack under the hood
  4. Some tips and tricks

OpenCraft给出了非常友好的引导,帮助open edx的开发者从Vagrant过渡到Docker

docker有庞大的生态,如果从0开始自学docker,容易在知识网络里应接不暇、不知所措。我认为这个分享是Open edX开发者最佳的docker入门资料,它告诉你对于当前的开发所需要掌握的知识,以及这些知识与你已有的概念之间的关系

Running and Developing Open edX in Devstack - Docker Edition

这个分享可以视为Navigating the Docker Devstack的自然延续

当你掌握了docker的基本技能之后,如何在docker里开始open edx的开发呢?这个分享就是为此准备的

分享者是edX核心开发者,内容包含:

  • Offline devstack installer
  • Explain what devstack is (and isn’t)
  • Explain the installation process
  • Demo!
  • Audience choice:
    • Q&A
    • Tackle installation or usage issues in small groups
    • Deeper dive into particular topics

分享中,有几处我特别摘出,热爱容器化的小伙伴值得关注一下

Designed to work like Ansible-configured virtual machines (the current recommended production environment) Docker images for production would be built very differently Experimental production images have been created by the community Work to reduce the differences is being scheduled

尽管docker在H版之后会作为默认的开发环境,但官方团队认为生产环境和开发环境差异巨大,生产环境目前仍推荐使用Ansible

如果你比较激进,可以试试社区的方案(我们将在下文中谈及),社区已经有人完成了将docker用于生产环境的工作。此外官方也已将docker用于生产环境提上了日程。

对于关注数据分析的小伙伴来说,有条利好消息是

New services: Analytics Data API, Analytics Pipeline, Credentials, XQueue

edx的数据分析部分十分复杂,我相信容器化之后,这部分将变得简单易用

Running Open edX in production with Docker

算得上一个振奋人心的分享,社区里已经有人完成了docker用于open edx生产环境的工作

这是由open fun为我们带来的一个分享

我在盘点Open edX社区中拥抱开源的公司及值得关注的项目 中,将openfun 列为Open edX社区中积极拥抱开源的公司之一

这篇分享主要围绕openfunarnold项目

Arnold is a tool to deploy dockerized applications to OpenShift with Ansible.

它已经被openfun用于生产环境了,而openfun构建了法国最大的mooc平台

考虑到OpenShift在国内访问可能不畅,国内用户可以使用minishift做实验

如果你准备使用docker为用户提供SAAS服务,这个项目不容错过

其他进展

社区里还有个值得关注的项目是regisb为我们带来的openedx-docker

1-click universal Open edX install, for production and local development + Android app (based on Docker)

open edx的易用性一直为人诟病,docker能够解决这个问题,openedx-docker令人震惊地做到了一键安装

回顾

社区里很早就有尝试将docker引入opne edx中,印象中最早的努力来自appsembler

我在盘点Open edX社区中拥抱开源的公司及值得关注的项目 中,将appsembler 列为Open edX社区中积极拥抱开源的公司之一

我在2015年的时候基于appsembler已有的工作,做了些调整,发布了基于docker的edx birch-1国内版本,之后也陆续为这块写了些文章:

2015年的时候与核心团队成员做了一些沟通,建议将docker引入到open edx中,大家觉得要迁移到docker上,时间成本巨大且不可预估,似乎对此热情不大,我将edx_cypress_docker更新了10个版本之后,发现社区对此没太多热情,项目组件极多,力不从心,便放弃了这条路。到近期的H版本官方终于决定将开发环境迁移到docker

近年来社区在docker的探索其实不少,但成熟度似乎都不高,但多数限于公司内部使用,直到今年官方和社区才同时放出比较成熟的方案。官方的工作集中在devstack

未来

我相信docker对Open edX是至关重要的,Open edX的复杂性影响了它的流行,而docker能够应对这个问题。docker也让open edx一些潜在商业模式(SAAS服务之类的)变得容易。docker还将服务于open edx的未来架构(微服务化)。

如果社区之后都基于docker来开发、使用open edx,大家各自的开源项目也将变得易于组合,指不定某一天将出现应用市场,一键安装open edx的拓展也许已经不远:)




Fork me on GitHub