这不是我想要的Serverless

本文讲的是这不是我想要的Serverless【译者的话】本文作者就serverless阐述了一些自己的想法,以及对标准的诉求。

【深入浅出学习 etcd】etcd为分布式系统提供可靠、高效的配置管理服务,在Docker、Kubernetes、Mesos等平台中扮演了越来越重要的角色。作为2013年开始的项目,它还很年轻,官方文档中缺乏实现上全面、系统的介绍,本课程深入浅出地介绍了etcd的实现,并为运维和二次开发提供了系统的指导和建议。

最近,我们在Container Solution平台上探讨了serverless的适用面,更重要的是,我们讨论了它可能的走向。之前玩过Lambda,我发现讨论远比实际执行更加有趣,因为它始于我们想要的以及我们所得到的。

我拒绝接受由供应商执掌“serverless”发展轨迹的现状,大家需要一个标准。我有一个目标,一个基于个人想法的目标。最后一个纯粹出于个人嗜好,接受它或是提出你的建议。

供应商

在AWS推出Lambda时,我认为这将会造成业界的兴奋以及许多情况下的困惑。我不太确定是否每个人都能理解它是如何工作的以及这是否会为大家带来帮助。此后,Lambda证明了它是一款非常酷的工具,毫无疑问它能够削减运维的开销。它同样助长了我们正在经历的serverless热潮。

坦白说,我个人并不喜欢AWS,Azure和GCE对于serverless的描述。我喜欢这些供应商,我认为它们的平台是令人叹为观止的,但我是一个发自内心的纯粹主义者。我认为要落实serverless,必须为其开发一个开放标准。

我也认为这些供应商正在寻求能够满足顾客需求的最廉价的解决方案。但这通常并不会成为最佳解决方案。

开放标准

开发标准会拉近大家距离,让大家说同样的术语,使工具更具兼容性,这一切完全说得通。

当前的FaaS(Function as a Service)根本没有做到这些。它们都在其生态中提供了框架,你只需要在此完成工作。

我们需要一个开放标准,但是它应该是怎样的呢?好吧,首先,我们需要建立关于其如何工作的基本准则。
  • 在支持多任务处理时,它必须是安全的
  • 它需要足够快
  • 对于数据格式需要一致认同
  • 它必须是语言无关的
  • 它需要在任何地方运行

在现有的产品中,上述内容得不到任何保证。我需要想象一个拥有上述一切的世界。

未来

因此我需要从未来借调一些内容,并且在最后我会带大家回到过去。

容器

容器是我们将会在Serverless系统中尝试,并用以实现安全性和速度的技术。当我们谈及容器,大多数人马上就会想到Docker。Docker其实并不能很好地适配Serverless功能,它慢、臃肿且需要一个守护进程。这并不是在挖苦Docker,但他确实并不算是Serverless的一个好选择。毕竟我们需要一把外科手术刀,而Docker是一把瑞士军刀。Docker和Rkt均非容器,它们只是用来促进容器化的工具罢了。

这并不意味着我们无法开发一个工具以使我们的工具容器化,使之得以在数毫秒内启动,并使所有的功能遵循相同的隔离。

或许unikernel才是答案,而非容器,或许仅需一台经过调整的Linux服务器,使其高效地隔离每个进程,不赋予它们文件访问权,仅允许向外的TCP连接。

STDIN/STDOUT

在这个议题上,我想我会让我的同事不厌其烦,但是至少就使用标准输入和输出而言,我成为了一名坚定的信徒。自使用诸如AWS KCL之类的工具之初,我便震惊了,它们提供了一个守护进程,并使用其包装你的进程,如此你便可以在任意语言中提取Kinesis消息了。我便在Lambda上使用NodeJS的包装器包装了我的第一个Go程序。我们可以用不同的语言,使用不同的协议进行通讯,但是STDIN/STDOUT则是普适的。

Serverless方法的理念就是生成、执行和销毁,对我而言,这是一种获取数据的好规范。

如果你深究云供应商的FaaS实现,你会发现它们仅提供2个变量。其一是“event”,它们不关心内部有什么。其二便是“context”,它将请求置于上下文中。与可执行程序中通过STDIN发送标记和环境变量相比,这并没有什么不同。

考虑更加简单的STDIN/STDOUT确实给了我们很大的自由。它允许我们的方法是语言无关的,并且通过Linux强大的管道命令,我们便可构建非常健壮的功能链了。

数据格式

JSON看起来像是一个事实上的标准,使大家回到通信,但是在云的世界里,我认为需要更进一步。且在道别前花点时间。

当前市场中,我认为存在2种相对理想的格式,Cap'n Proto和Protobuf。前者允许快速传送大量数据,后者则允许向现存载荷拼接数据。从目前来看,我无法确定哪一个才是更加理想的选择,抑或是可能会出现更加优秀的方案。但有一点我很清楚,如果我们建立了进程间共享数据的标准,那么完全可以在之后构建可替换的部分(标准)。

未完待续

我并不认为我们当前拥有的“Serverless”基础设施,就是我们想要的供应商无关的那种。尽管我们拥有能够很好工作的工具,但是它们仅为服务提供商的利益而工作,这完全能够理解,然而常止于进一步的开发工作无法为它们带来利润时。是时候开始考虑一个开放的框架了,这使我们能够开发强大而开放的工具。如果我们可以开发一个符合开放标准的平台,那么第三方服务就可以围绕我们的标准开发工具。标准开发的目的并不在于锁定供应商或为迎合你的最高消费顾客。

这是一个正在进行中的思想性项目,我期望收到建议。下一篇文章和一个假想的系统相关,它能够实现理想的serverless生态系统。

原文链接:This is not the Serverless I Ordered(翻译:孙科)

原文发布时间为:2017-05-23

本文作者:孙科

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:这不是我想要的Serverless

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/224936

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。