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