咱们软件工具行业为开发者提供的支持还很不到位,没法帮助他们构建更好的软件。git
尽管在过去 30 年中,咱们开发软件的方式已经发生了巨大变化。就可用的技术和工具而言,咱们确实已经取得了巨大进步。github
但这些发展对开发者的生产效率实际上有什么做用呢?
使构建软件变得更容易了吗?
更便宜了吗?
更迅速了吗?数组
在过去 6 年的职业生涯中,我一直在尝试构建能提升开发者生产效率的工具(先是在一家初创公司,后来在 CircleCI,现在在 Serverless)。在寻找这些问题答案的过程当中,我发现答案基本上是 否认 的。服务器
虽然既有的一些工具确实有助于咱们开发更强大的软件,但它们只是在渐进式地提升生产效率。做为一个行业,咱们仍然面临着一样的基本问题:软件开发极其困难,成本高昂。架构
一个典型的例子就是「云」。「云」的一个重要特色是让其余人管理咱们的服务器,而让开发人员可以更加专一于代码。less
这是一个很是好的想法。正是因为该价值主张,过去十年间涌现了大量的云服务,而 Amazon 的市值也已达到 1.19 万亿美圆(截至 2020.04)。函数
然而,尽管云服务将软件开发人员从处理物理服务器的工做中解放了出来,却没有消除处理服务器中使人头疼的许多根本因素,例如预配、缩放、维护和调试等。微服务
对于咱们这个行业(包括我本身)所创造的许多技术,一样如此。工具
虽然 CI/CD 平台有助于简化软件的测试和部署(尤为是对于团队协做的状况),可是它们仍然须要编写测试、配置环境以及处理出错的生成容器。GitHub 为咱们提供了更好的软件协做开发用户体验,但它并无从根本上消除团队在复杂代码基础上进行协做时所面临的问题。开发工具
总之,咱们行业取得的大多数进步都是渐进式的。 咱们未能显著地让软件开发变得更容易、更便宜和更迅速,而这是咱们但愿实现的最终状态。
答案很简单,即 Serverless(无服务器);或者更确切地说,在 Serverless 技术的稳健性方面继续投入。
Serverless 是在应用开发过程当中尽量将底层结构抽象出来,当前主要的体现形式是云函数 等函数即服务 (FaaS) 产品/服务。
这些产品/服务以及更普遍的 Serverless 服务很是有趣,由于它们能显著地提升生产效率。
也就是,使建立高度自定义式工具的能力大众化、经过代码复用消除工做冗余、使数据访问更加容易。
就软件开发工具而言,咱们和任何潜在的 SaaS 客户都面临着相同的问题:自行构建仍是购买?
投资构建彻底知足咱们需求的工具,而后再花大量精力进行维护?或者采用第三方产品/服务,但不可避免地会包含一些并不是咱们指望的附带工做流?这两种办法都不理想;两种方案都会致使脆弱、昂贵且易出错的问题,而且不能帮助咱们高效地开发高质量软件。
最理想的状况是,咱们可以采用一种有强大开放源代码社区或者商业公司提供支持的工具,并且这种工具能够轻松实现高度自定义。
该答案彷佛显而易见,但咱们现阶段仍然没法作到。不断增加的开放式 API 虽然打下了必定的基础,但距轻松自定义大多数工具还很是遥远。
不过,Serverless 具备让这种理想状态变成现实的潜力。
若是您的源管理、CI/CD 和项目管理系统全都能统一地公开事件,使您可以经过部署到任何所选平台的 Serverless 函数轻松处理这些事件,那真的是一种很是理想的状况。
虽然距离这一目标还很遥远,但 Auth0 Extend 和 CNCF CloudEvents 等项目正在朝着这个目标努力。
做为开发人员,最使人沮丧的事莫过于日复一日地编写重复代码。
要是咱们可以重复利用一条条代码来构建不一样的应用,而后将编码的时间集中到能够带来独特价值的业务逻辑上,那该有多好啊!
现在,Serverless 架构本质上是微服务架构:具备常见功能的函数组。这些函数组一块儿部署,并共享 API 网关等基础结构资源。
我相信,随着 Serverless 工具的发展,这些服务将变得更小更具体,而且涵盖更普遍的用例(例如,一个函数可用于部署和配置特定基础结构,或执行负载测试)。随着这些服务变得更小更具体,除原始开发人员之外的其余人也能够更容易地共享、配置和使用这些服务。
这最终将使咱们步入一个新的时代:那时,公开和在组织内部私下共享、部署和复用微服务将变得十分容易。
这会大大下降咱们重复工做的时间,使咱们可以更专一于独特的功能和业务价值。
当前已有一些项目向这方面努力,例如 Standard Lib。将来这方面的发展值得期待!
现在,全部数字业务都会产生和收集海量的数据。这些数据是很是宝贵的资源。尤为值得注意的是,咱们可使用这些数据来为用户构建更强大的功能。
这种海量数据伴随着一个问题:这些数据以各类不一样的格式存放在各类不一样的地方,难以获得利用。
事件驱动架构(Serverless 架构一般构建于该类架构之上)可以以事件形式公开全部数据。而这些事件能够直接经过 Serverless 函数获得利用。
尽管这种通用架构模式还不成熟,但若是全部数据都能以事件的形式存在,且可以经过托管在任意位置的函数进行处理,咱们就可以解决现在面临的数据可移植性和访问方面的诸多挑战。
最终,咱们的开发效率将显著提升。
对于开发人员来讲,当下是一个激动人心的时代。咱们颇有可能会见证到咱们目前可用的工具实现史无前例的根本改进。
咱们每一个人都有责任继续追求并推进这一改变。
传送门:
- GitHub: github.com/serverless
- 官网:serverless.com
欢迎访问:Serverless 中文网,您能够在 最佳实践 里体验更多关于 Serverless 应用的开发!