云原生时代应用构建
云原生在CNCF官方有定义,这里不再赘述。简单来说云原生要求架构满足云原生的最佳实践,包括技术实践与管理实践。
应用从需求提出开始到使用云端的资源与服务,并最终通过持续交付的方式交付到云平台,交付之后具备足够的管控治理能力与可观测性。
云原生的判断标准是,服务部署在云端且持续使用云的能力。
做个类比,微服务的方式是SpringCloud的方式,具备框架、微服务开发、运行、服务治理与管控。而云原生开发方式是只是用SpringBoot,其他的资源使用都借助Mesh的边车思路来实现。
Serverless的定义包括:FaaS+BaaS。
Serverless期望FaaS开发足够轻,框架都不需要,最终就是函数直接调用后端能力。
大部分企业级场景下的系统比较难做到这点,因为你的架构中有大量业务流程类的逻辑,不太合适抽象成一个个Function,需要在效率与可读性之间找个平衡。
云原生的技术管理需要结合DevOps相关技术实践和管理实践,包括敏捷研发与CICD,将整个服务开发生命周期管理起来。
DevOps有个特点:一次构建,多环境发布(不同环境集成不同配置),多运行环境运行。
云原生的本质是:抽象与标准化。
抽象:关注重心不断上移,从资源到服务,彻底不再关注资源层和底层技术细节;
标准化:技术能力标准化,服务定义标准化,服务使用标准化;
以前你不关心虚拟机和容器,未来不需要关注DB、MQ、Cache,这些都藏在了PaaS之下,与上层服务层完全解耦。对应的高可用、高性能你也不需要关注了,你感知到的就是一个API。
每个业务平台系统都变成了:平台+应用的构建方式。
能力下沉到平台,平台层能通过开放API方式将能力外放出去,实现与外部的链接,形成一个个业务应用。
低代码在这个场景下具有很强的生命力,低代码其实可以和微服务很好的结合。结合Serverless,让运行态脱离于服务平台,具备足够的高可用与扩展性。