近年来开发的几乎所有新技术都是复杂的、分布式的,并且是为规模而构建的:Kubernetes、Ceph 和 OpenStack 就是几个例子。这些系统与几年前我们看到的系统截然不同。实际上,今天的任何重要的软件解决方案都具有松耦合、异步性和弹性——这些属性在过去的系统中通常是不存在的。
能够舒适地构建和运营如此复杂系统的人才非常稀缺且需求量很大。 这给那些努力采用新技术的组织带来了问题,正是因为他们缺乏了解这些技术的人员:我们面临的是技能差距,而不是技术差距。
这意味着我们需要新的方法来使专业人士熟悉这些技术。我们必须为专业学习者提供复杂的分布式系统,以用作真实的学习环境。我们必须使他们能够随时随地、按照自己的进度学习。
现在,让 Ceph 新手(例如)去享受下载数十 GB 虚拟镜像的乐趣——仅仅为了让他们能够启动一个参考 Ceph 集群——这不会带来出色的学习体验:你的笔记本电脑很可能不具备现代服务器的内存和 CPU 容量,更不用说模拟一个像样的 Ceph 集群所需的 10 台或更多服务器了。替代方案是什么? 替代方案是一个系统,该系统使学习者能够按需访问任意复杂的、真实的分布式环境。事实证明,将两个“开放”——Open edX 和 OpenStack——结合起来是提供这种环境的绝佳选择。
Open edX
Open edX 是一个学习管理平台,它于 2012 年在 哈佛大学 和 麻省理工学院 启动,随后 斯坦福大学 也加入了合作。 该平台于 2013 年在 AGPL 许可下发布,并迅速扩展到其他大学和公司,微软 在 2015 年成为当时不太可能出现的早期采用者。 如今,非营利组织 edX Inc. 推动了 Open edX 的大部分开发工作,并继续托管 edx.org 学习站点。 整个平台都是开源软件,并欢迎社区贡献。
截至 2018 年 5 月,edx.org 已通过其自身及其官方合作伙伴的站点为约 1600 万学习者提供了服务。与此同时,据估计全球还有 1800 万学习者在使用基于 Open edX 的独立平台。
一路 Django
Open edX 平台的核心,其学习管理系统 (LMS)——其创建者在突发奇想的情况下将其称为 lms——本质上是一个相当复杂的 Django 应用程序。或者更确切地说,是一整套集合的应用程序,这反映了一个主题,许多 Django 开发人员无疑会熟悉这个主题。任何学习者或学生都与 LMS 交互以访问课程内容、观看视频、参加实验和测验以及与共同学习者协作。

它的姊妹系统,课程管理系统(你猜对了,cms,虽然有一个稍微时髦的别名可用,Open edX Studio)是为教师、讲师和课程作者准备的。学习者不与 Studio 交互,即使对于作者来说,它的使用也是可选的。那些喜欢的人可以在外部内容存储或像 Git 这样的版本控制系统中管理课程内容,并从那里导入。与 LMS 一样,CMS 也是一个 Django 应用程序。

为了与机器(而不是人类)进行交互,Open edX 大量使用了 Django REST Framework (DRF)。例如,外部应用程序可以使用 REST API 接口来调用基于支付系统中课程席位的购买的自动课程注册。
XBlocks:灵活、可扩展的插件系统
XBlocks 是 Open edX 的插件系统,它允许作者显着扩展 Open edX 的功能。 XBlocks 出现在各种各样的学习目的中,例如构建化学分子模型或解决数学方程式。
XBlock SDK 和 API 采用 Apache 许可证,因此原则上,XBlock 作者可以编写与不使用开源许可证的系统接口的 XBlock。 实际上,大多数可用的 XBlock 都使用 开源促进会批准的许可证。
为了在 OpenStack 托管的资源上进行交互式学习,一个 XBlock 可用,它可以按需启动课程作者定义的 Heat 堆栈,并通过 Apache Guacamole 在学习者的浏览器中呈现终端会话或 RDP 会话。

OpenStack
OpenStack 是一个 基础设施即服务 平台,其编排组件 OpenStack Heat 在为学习者提供任意复杂的实验环境方面非常方便。 使用 Heat 模板,课程作者可以定义一个完全可重现的、独立的环境,该环境由例如 10 台服务器组成,分布在三个网络中,并与两个路由器连接,以及每台服务器的任意复杂配置。
Heat 具有一些有趣的功能,使其在其他云平台(如 AWS CloudFormation 或 Google Cloud Deployment Manager)上的同类产品中脱颖而出。 特别是,Heat 能够暂停整个堆栈(无论多么复杂,都在原地),然后在很久之后在完全相同的状态下恢复它。

这在培训实验室中非常方便:在自定进度的培训中,学习者通常在每节课上花费 30 到 45 分钟,并且可能每天或每隔一天进行一次这样的课程。 在一个月的时间里,学习者可能总共只使用他们的实验室 10 个小时。 如果让同一个实验室在整个月内运行,费用可能超过 1,000 美元,这将完全令人望而却步;但是,仅在需要时提供实验室可以将价格降至两位数,从而使整个工作完全负担得起。
总结
通过结合 Open edX 的功能(尤其是其 XBlock 插件系统)和 OpenStack,学习提供商可以让学习者有机会以完全自主和非常经济高效的方式探索任意复杂分布式系统的内部工作原理。 这样一个由完全开源组件组成的系统可以使组织和个人快速提高技术技能。
本文中的图片来自 City Cloud Academy 平台(该平台在 Open edX 上运行)上的 OpenStack 部署和操作 课程,由作者共同撰写。 每月有 25 个课程名额免费提供给开源软件社区,先到先得。
Florian Haas 将在 1 月 21 日至 25 日在新西兰基督城的 linux.conf.au 会议上介绍 随时随地学习复杂技能:结合 Django、Ansible 和 OpenStack 来教授任何技术技能。
评论已关闭。