专栏名称: 大前端工程师
定期推送资深工程师的原创文章,话题以前端为主,当然也会涉及到后端以及其它话题,重要的是一定都是原创。
目录
相关文章推荐
前端早读课  ·  【早阅】David A. ... ·  昨天  
前端早读课  ·  【早阅】深入探索 JavaScript ... ·  2 天前  
前端早读课  ·  【第3417期】LangChain ... ·  3 天前  
光伏资讯  ·  来看看曲面屋顶的工商业光伏安装现场! ·  3 天前  
光伏资讯  ·  来看看曲面屋顶的工商业光伏安装现场! ·  3 天前  
前端早读课  ·  【第3416期】JavaScript的??= ... ·  4 天前  
51好读  ›  专栏  ›  大前端工程师

Serverless:万物皆为 HTTPS 接口

大前端工程师  · 公众号  · 前端  · 2017-08-12 22:52

正文

本文译自 Everything is an HTTPS interface欢迎在评论区留言,交流技术研发问题。首发于知乎专栏:大前端工程师,大家可以通过【阅读原文】查看和评论。

在 Linux 中,万物皆为文件;而在 Serverless 中,万物皆为 HTTPS 接口。

如其本性使然,Serverless 应用程序被分解为各种各样的服务,例如独立的函数,对象存储,鉴权服务,文档数据库,发布/订阅消息队列。这些服务间的接口都是典型的 HTTPS 。当你使用 AWS SDK 调用 AWS 服务时,所使用的接口在底层就是一个 HTTPS 接口。在绝大多数云平台都是如此,只有偶尔在一些特殊情况下,才会使用其他协议,比如 WebSockets 和 MQTT 。

在 Linux 中,你可以通过文件系统访问底层机器的所有资源;同理,在 Serverless 中,你可以通过 HTTPS 接口访问底层云平台的所有资源。

这种比较已经不仅仅只是上述这种通用接口的使用了, Severless 应用程序设计的最佳实践也越来越像 Unix 哲学了。( Linux 延伸自 Unix )

引用一下 Doug McIlroy 对 Unix 哲学精辟入里的总结:

一个程序只做一件事,并把这件事做好。 程序之间能协同工作。 程序要能处理文本流,因为文本流是最通用的接口。

将 Unix 哲学置身于 Serverless 的世界里,就只需改变一下接口:

一个程序只做一件事,并把这件事做好。 程序之间能协同工作。 程序要能处理 https ,因为 https 是最通用的接口。

Doug McIlory 用以下4点扩展定义了 Unix 哲学:

  1. 让每个程序做好一件事。如果有新任务,就重新开始,不要向原程序中加入新特性,从而把原程序搞复杂。

  2. 期望每个程序的输出都会是另一个程序的输入,哪怕那个程序是未知的。输出中不要有无关信息的干扰。避免使用严格的分栏或二进制格式输入。不要坚持使用交互式输入。

  3. 尽早地开始试用设计编译好的软件,最好能在几星期内,就算是操作系统,也要这么做。对于拙劣的代码,果断扔掉重写,坚决不能犹豫。

  4. 优先使用工具减轻编程负担,而不是毫无技巧的耗费体力。工欲善其事,必先利其器。

去年纽约的 ServerlessConf 大会上,Paul Johnston 在 《What I Wish I’d Known Last Year》中,提出了对 Serverless 应用程序设计非常有用的极简原则:

  1. 开始就要用部署管理

  2. 你可以承受尽早失败

  3. 在每个函数中,只有 0 或 1 的数据转换

  4. 不要让你的数据模型过分复杂

Paul Johnston的观点几乎都是可以从 Doug McIlory 的观点推论出来的。

Eric S. Raymond 在《expands on the Unix philosophy 》 (传说中的 Unix 编程艺术)中,提炼出 17 项简单实用的原则,助力 Serverless 应用程序设计:

  1. 模块原则:使用简洁的接口拼接简单的部件。

  2. 清晰原则:清晰胜于机巧。

  3. 组合原则:设计时考虑拼接组合。

  4. 分离原则:策略和机制分离,接口和引擎分离。

  5. 简洁原则:设计要简洁,复杂度能低就低。

  6. 吝啬原则:除非确无他法,不要编写庞大的程序。

  7. 透明原则:设计要可见,以便检查和调试。

  8. 健壮原则:健壮源于透明和简洁。

  9. 表示原则:把知识放在数据中,从而使程序逻辑蠢笨且健壮。

  10. 通俗原则:接口设计通俗化。

  11. 缄默原则:如果一个程序没什么好说的,就应该保持沉默。

  12. 补救原则:出现异常时,马上退出并给出足够的错误信息。

  13. 经济原则:宁花机器一分,不花程序员一秒。

  14. 生成原则:避免手工编程,尽可能编写程序去生成程序。

  15. 优化原则:雕琢前要先有原型,优化前要先能工作,俗称跑之前先学会走。

  16. 多样原则:决不相信所谓“不二法门”的断言。

  17. 扩展原则:面向未来设计,未来总比预想来的快。

这 17 点可以毫不犹豫地直接应用在 Serverless 设计中哦!遵循这 17 点,你将拥有一个可扩展的,可调试的,可维护的 Serverless 应用程序。

好的 Serverless 设计就是 Unix 哲学 在“云端”开发应用程序这个新领域的又一次绽放。

回顾我以前的文章:

mock系统接口

如对其他文章感兴趣,欢迎关注大前端工程师: