InfoQ|开发运维配置繁杂,是时候给应用架构做减法了( 三 )


Fargate 不仅可以抽象出运行容器的服务器 , 还可以提供服务器编排的抽象 , 作为容器的免编排计算 。
这也意味着 , 当 K8s 等容器编排工具的使用度越来越高 , 乃至成为开发中的一项“基础设施”时 , 开发者们可以将创建和管理容器的事情交给云服务商(Fargate)来处理 , 就好像今天的服务器虚拟化一般 , 容器也越来越“隐形” 。
此外 , 相比于 Lambda 在自动伸缩、灵活定制资源等特征 , Fargate 还可以通过与其他 AWS 服务(包括 Amazon CloudWatch Container Insights)的内置集成获得开箱即用的可观测性 。 Fargate 可以让开发者通过具有开放式界面的大量第三方工具来收集指标和日志 , 从而监控应用程序 。
随后 2018 年的 AWS re:Invent 大会上 , AWS 又开源了 Firecracker——AWS 容器安全沙箱的基础组件 。 它是 AWS 针对无服务器计算设计的虚拟化技术(利用 KVM 的新虚拟化技术 , 专门用于创建和管理多租户容器以及基于函数的服务) 。 目前 , Firecracker 已为 Lambda 和 Fargate 在内的多个高容量 AWS 服务提供支持 。 Firecracker 诞生的内因 , 也是 Lambda 演进的结果 。
从 Lambda 到 Fargate , 再到 Firecracker , 显示了 AWS 在 Serverless 架构等"基础服务"方面的革新能力 。 对于用户而言 , 这些服务的提供 , 正在让开发者逐步对其带来的安全、高性能、低开销等特性感知更加明显 。
3更多服务及工具 , 帮助开发者更高效地上手 Serverless 当然 , 除了 Lambda、Fargate 这类计算类服务外 , AWS 可提供与之相关各个维度的一系列完全托管的服务 。 开发者可以使用这些托管服务构建和运行无服务器应用程序 , 从而解决一些特定问题 。 这里 , 我们列出了一份服务清单:
InfoQ|开发运维配置繁杂,是时候给应用架构做减法了
本文插图
以上分类及工具清单来源于 AWS 官网( https://aws.amazon.com/cn/serverless/ )有了 AWS 上述服务的支持 , 开发者无需为后端组件(如计算、数据库、存储、流处理、消息排队等)预置、维护和管理服务器 。 同时 , 应用程序的容错能力和可用性也可以变得更强 。
此外 , AWS 及合作伙伴生态系统也在开发者工具上提供了多样化使用组合 , 包括框架、软件开发工具包、IDE 插件和监控解决方案等 。
例如框架层面 , AWS 兼容了 AWS SAM(用简单方式定义 Lambda 函数、API、数据库以及事件源映射)、Apex、Chalice 等近十款 AWS 自研、开源或第三方的框架供开发者使用 。 持续集成和部署层面 , AWS CodePipeline、AWS Serverless Application Model、AWS CodeBuild 等一系列工具可以帮助开发者自动化构建、测试和部署无服务器应用程序 。 监控及日志记录与诊断层面 , 也有 Amazon CloudWatch 和 AWS X-Ray 等辅助进行函数性能监控或故障排除 。
归纳来看 , 无论是扩充提供不同的服务还是丰富的开发者工具 , AWS 都是尽可能地帮助开发者在应用 Serverless 架构的过程中 , 降低其遇到不同场景下处理复杂问题的难度 , 从而让为“高效”而生的 Serverless 技术能更高效的让开发者上手 , 更高效的解决问题 , 从而带来更高效地用户体验 。
最后要提的是 , Serverless 是利用云的要素帮助用户实现价值交付的颠覆式创新 。
因为用户价值交付涉及方法论、开发者工具、应用交付体系、商业模式设计等多个维度 , 所以 Serverless 是顶层设计的产物 。 它并不是任何企业在任何场景下都必须要“跟风”应用的时髦技术 , 毕竟它从真正诞生到至今应用 , 还只有短短 6 年而已 。 开发者们一定要选最合适 , 而非最流行的架构方式 。
而一旦当你下定决心全面应用 Serverless , 也一定要在这项新兴技术得到普及之前 , 学会借助实用的服务或工具来应对复杂问题 , 进而帮助你更快地创建高效、高性能的新架构及软件系统 , 让你的“酷想法”更快成真 。


推荐阅读