【摘要】云原生应用所影响的领域正逐渐从互联网走向非互联网,从传统应用升级走向云原生。当下,云原生技术的成熟正极大地影响着个人、企业乃至整个社会的生产生活方式。
“未来的软件一定是生长于云上的”
云原生时代的应用
云原生时代,随着容器技术、微服务架构思想、产品研发运营模式不断地推陈出新和迅速发展,应用的设计和开发落地门槛已经降低到了历史低点。根据国际知名数据咨询公司 IDC(国际数据公司)的调查研究表明,从 2018 年到 2023 年将有超过 500,000,000 个应用被创建,这个数字是过去 40 年所有创建应用的总和。
另外,在 IDC 于 2020 年 2 月发布的《IDC FutureScape: 全球云计算 2020 年预测——中国启示》中显示,云原生应用所影响的领域正逐渐从互联网走向非互联网,从传统应用升级走向云原生。当下,云原生技术的成熟正极大地影响着个人、企业乃至整个社会的生产生活方式。
下面是几条与云原生应用强相关的预测内容:
- 分布式云:到 2021 年,中国 90% 以上的企业将依赖于本地 / 专属私有云、多个公有云和遗留平台的组合,以满足其基础设施需求。
- API 生态:到 2023 年,90% 的新数字服务将使用公有云和内部 API 提供的服务构建复合型应用程序;其中一半将利用人工智能(AI)和机器学习(ML)。
- 多云管理:到 2022 年,50% 的企业将部署统一的 VMs、Kubernetes 和多云管理流程和工具,以支持跨本地和公有云部署的多云管理和治理。
- 云堆栈扩展:到 2024 年,10% 的企业内部工作负载将由公有云服务商数据中心以外的、位于客户数据中心和边缘位置的公有云堆栈提供支持。
- 超敏捷 APP:到 2023 年,50% 的中国企业应用将部署在容器化的混合云 / 多云环境中,以提供敏捷的,无缝的部署和管理体验。
在这场应用的变革中,越来越多的应用所有方会将应用基础设施交由更加专业的公有云 / 混合云服务商进行管理,通过 API 的方式对基础设施进行管理,由服务商提供更加敏捷和无缝的部署管理功能。如此,应用所有方可以将更多的投资及人力投入聚焦到应用本身的业务逻辑设计、开发、运维和体验优化,大大减少了产品上市的时间并得到了更高的可伸缩性,使应用开发的 ROI(投资回报率)最大化。
使用微服务架构构建云原生应用
云原生应用的定义有多种版本,最早为 2015 年 pivital 提出了云原生应用的定义,随后 CNCF 在 2015 年也对云原生应用进行了定义,2018 年进行了重定义,具体定义可以参考 kubernetes-handbook。可以发现自从云原生的概念出现,微服务架构就是云原生应用中浓墨重彩的一部分。
这一节里会讲到微服务架构使用场景,微服务应用在整个应用技术栈中的位置,和开发一个微服务你需要做的事情。
使用微服务的场景
构建云原生应用,首先一定是企业或者个人想要最大程度将自己的时间和精力从复杂的底层依赖开发维护中解放出来,集中在业务场景的设计和实现上,并且能够独立解耦的自动化完成应用各个模块的开发落地。这意味着独立开发的某一模块或负责某一单独业务的开发者,会最大程度的利用云厂商提供地 DevOps 工具链完成整个应用开发运维的共同目标,这样大家可以轻松地将应用作为一个松耦合的服务集合快速发布和更新,降低成本的同时也更容易避免单点故障。
微服务应用在技术栈中的位置
假设应用所有者已经做好了微服务的业务设计,我们来看看在落地阶段,微服务应用在产品研发和运行中的位置:
红色部分 为微服务应用的核心模块,是由应用所有者开发和维护地运行时微服务应用。随着业务的增长,受系统能力影响,为了提高微服务的高可用、可靠性以及韧性,需要对微服务进行治理。常见的治理手段有:负载均衡、熔断、限流、降级、容错和隔离等,篇幅有限这里不加赘述。
黄色部分 从左到右代表从 Dev 到 Ops 的技术栈。首先,应用开发者需要根据应用类型,选择依赖的微服务开发框架(chassis),使用框架时可以通过添加注解的方式,处理微服务运行时面临的横切面问题(crosscutting concern),比如:日志框架(log4j/logback)、健康检查、metrics、分布式追踪等。其次,编码完成后,可使用云服务厂商提供的 DevOps 工具链能力实现代码的归档、编译构建、发布部署等能力,将微服务部署在运行环境中。最后,还可以利用云服务厂商提供的运维能力对微服务进行运维监控。一般来说,云服务厂商提供的应用平台能力也是独立而解耦的,应用所有者可根据自己的需求和预算来自定义选择自己需要的服务。
紫色部分 是运行时技术栈,蓝色箭头代表流量的流向。当微服务部署运行起来后,流量会从各种客户端首先连接到入口(比如服务网关 /ELB),同时,流量在这里会根据请求特征分发到各个对应的业务处理微服务,随后对请求进行一系列的处理,返回结果。微服务的运行还依赖了很多中间件,比如:缓存、消息等;还有一些微服务的功能特性,比如:服务网格、服务注册发现等,这些中间件或特性也都由框架或者云服务厂商提供。微服务和中间件等其实都是上层服务部署在基础设施上,比如:虚机、容器或 CCI 实例。
综上所述,一个应用的落地其实涉及到很多技术和场景,使用微服务架构开发应用可以最大程度的简化应用所有者对底层设施和中间件的管理运维,通过自定义使用云服务厂商提供地全场景、端到端的应用平台能力,将资源聚焦在业务创新和落地上(红框部分)。
实践 – 一元体验 all above
最后,华为云 CSE 微服务平台提供了以 ServiceComb 开源框架拖底的配置中心和服务中心,提供动态配置和可靠的服务中心服务。ServiceComb 服务中心在华为内部的大规模生产实践(支撑华为商城运行),支撑起数十万级别的 tps 的服务集群,可靠性得到了充分的验证。
开发者可以在云上享受开箱即用的微服务中间件,通过 CSE 微服务平台既可以学习实践又能作为生产实践,学习微服务可以跟进当下最新技术潮流。
华为云回馈活动指路↓
一元体验原价 500 元包周期引擎(100 实例),快点击这里体验吧!
点击关注,第一时间了解华为云新鲜技术~