云服务在不断发展,这会影响开发人员构建分布式应用程序的方式。在伦敦 QCon 大会上,Diagrid的产品经理Bilgin Ibryam讨论了Dapr等云原生技术与以开发人员为中心的云服务的交集。
Ibryam 从如何看待应用程序从整体转变为微服务以及接下来会发生什么开始。此外,他还将谈论基础设施如何以云服务的形式发展,以及它如何塑造架构。
从基础架构和应用程序趋势的角度来看,演讲中的叙述围绕着在云时代之前或早期、计算优先云和应用程序优先云时代构建应用程序的不同阶段(时间线)。
Ibryam 开始讨论早期或前云时代,这意味着应用程序是单体。这个时代是在云成为主流之前,微服务周围什么都没有。相反,开发人员必须使用围绕业务逻辑的一切,从消息传递等异步交互到打包和缓存。此外,应用层和由两个团队(开发人员和运营人员)管理的基础架构之间存在区别。
接下来,Ilryam 讨论了早期云时代之前的内部架构。2010 年之后,应用程序开发出现了复兴和新的兴趣,随后出现了一些主要的软件开发趋势,并且至今仍具有影响力。通过使用C4 模型或4+1 架构模型视图对架构进行可视化和描述,可以通过不同的方式来查看架构. Ibryam 采用更直接的方法,分为两个层次:内部和外部架构。内部应用程序架构是由开发人员创建并完全在他的控制之下的一切,就像应用程序中的不同层,或者如他所说,进入容器镜像的一切。从操作 (Ops) 的角度来看,它是一个黑盒子。外部应用程序架构是应用程序与之交互的所有内容的集合,例如消息代理、数据库,甚至云服务。Ops 使其变得可靠、可观察等。考虑到这一点,他讨论了一些影响单体应用程序开发的架构设计方法,例如领域驱动设计、六边形架构、洋葱架构和干净的建筑。12 因素应用程序和微服务原则遵循这些原则,导致单体应用程序几乎成为反模式。
在前云和早期云之后出现了计算优先的云,从单一应用程序到微服务的过渡开始了。内部应用程序架构的变化和云的出现导致应用程序与其基础架构之间的分离集成。
在讨论计算优先时,Ilbryam 详细介绍了应用程序的内部架构和云提供的计算。它是应用程序和计算机之间的契约(集成绑定),无论是容器、函数还是无服务器应用程序。它发生在双方的 API(资源需求、部署、配置和指标等操作调用)之间。运营团队通常对此负责。
接下来,Ilbryam 讨论了应用程序的外部架构如何随着云的出现而再次发生变化。再次讨论了应用程序绑定的概念;但是,现在云服务位于应用程序之上,而不是其下方的基础架构,这是开发人员的责任。
对云服务的集成绑定可以移动到另一层,如分布式应用程序运行时 (Dapr)。为了在这方面比较 Dapr,Ibryam 提到Google Cloud Event Arc、AWS EventBridge和Azure Event Grid是特定于云的,而Camel是与语言无关的。Dapr 两者兼而有之。
最后,Ibryam 谈到了应用程序优先的云,例如,网络服务变得越来越以应用程序为中心,以及集成云的诞生:首先为开发人员创建的托管服务的集合。
应用程序优先的生态系统将与 Azure Eventgrid 等事件处理服务进行异步绑定,与AWS Step Functions等服务进行有状态绑定,与Vercel Edge Middleware等服务进行同步绑定,与AWS ECS、Azure Container Apps和Google Cloud等计算服务进行计算绑定运行。通信将通过符合OpenAPI 规范的API 进行。
最后,Ibryam 提供了他演讲中的关键要点:
专注于差异化业务逻辑和重用未差异化的商品化能力。
使用基于支持可移植性的事实标准的开放计算和开放集成绑定。
可移植性与应用程序无关。它是关于模式、实践、工具和人的。