freeCodeCamp如何使用JAMstack帮助数百万人学习编码?


freeCodeCamp.org现在每个月都在帮助数百万人学习编码,而我们正在使用单个API服务器进行编码。该平台的其余部分由CDN和其他服务处理。这是一个名为JAMstack的新架构,代表JavaScript,API,Markup。
尽管有1,368人同时使用freeCodeCamp.org,但我们的Node.js / Loopback服务器几乎没有什么问题。

freeCodeCamp.org是一个小型的非营利组织,预算更加薄弱,因此我们希望最大限度地提高基础设施的性价比。我们主要提供静态页面。即使我们的编码挑战 - 所有的交互性 - 完全在客户端运行,不需要服务器调用。所以JAMstack对我们来说非常有意义。

步骤1:开源贡献者打开拉取请求,更改freeCodeCamp.org的6,000多个交互式编码挑战和参考文章之一 - 所有这些都存储为易于编辑的降价文件。

步骤2:我们的持续集成工具确认构建通过,Git确认没有任何合并冲突。

步骤#3:一个开源维护者QA并在GitHub上合并拉取请求。

步骤#4:Gatsby - 一个静态站点构建器 - 将这些6,000多个markdown文件转换为单页React应用程序。

步骤5:Netlify将新构建的应用程序推送到全球数据中心的CDN端点。

第6步:想要练习编码访问的人https://www.freecodecamp.org。

步骤#7:他们的浏览器从最近的Netlify CDN端点下拉文件并呈现Gatsby应用程序。

步骤#8:Auth0检查他们是否登录到freeCodeCamp.org。如果是,它给了他们对我们的公共API的读写访问 - 一个Node.js / Loopback服务器。

步骤9:API服务器然后从我们在mLab上托管的MongoDB集群中读取和写入数据。

步骤#10:浏览器现在可以获取用户的完整freeCodeCamp配置文件和进度。当他们完成编码编码挑战时,他们的浏览器可以将数据写回他们的个人资料。

JAMstack好处
JAMstack有几个好处使我们远离更传统的以网络服务器为中心的架构。

好处#1:JAMstack非常便宜!
我们是一个非常小的非营利组织。我们希望将尽可能多的稀缺资金用于帮助人们学习编码 - 而不是为不必要的服务器和带宽付费。
自从我们开始将服务转移到JAMstack以来,我们的基础设施成本急剧下降。

好处#2:它更简单。
当你的筹码很简单并且移动部件很少时,你会得到很好的理解。那些可以在半夜破碎的东西更少。

好处#3:它更安全,更可靠。
我们现在依靠一篮子专业的API来做正确的事情。这意味着我们自己可以搞砸的东西更少。
Auth0团队花了很多时间考虑如何使身份验证更安全。Algolia花了很多时间思考如何防范恶意查询。

我们可以专注于保护我们的单一API,而不是泡在影响以Web服务器为中心的应用程序的所有其他安全注意事项中。