申通快递双11云原生应用实践

本文涉及的产品
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 申通是目前国内最大的物流公司之一,为了解决“双11”的技术挑战,申通在物流场景引入IOT、大数据和AI等先进和创建的技术手段,通过不断的技术快速迭代,使得物流资源得到有效的配置,推动了物流行业的发展。

作者:溪恒、遥方

一年一度的“双11”大促中,交易额每年都在刷新,承接这些交易商品的快递包裹的数量也在成倍增长。这些快速的增长对物流系统带来了巨大的挑战,让物流管理更加敏捷来应对“双11”成为了必须解决的问题。

申通是目前国内最大的物流公司之一,为了解决“双11”的技术挑战,申通在物流场景引入IOT、大数据和AI等先进和创建的技术手段,通过不断的技术快速迭代,使得物流资源得到有效的配置,推动了物流行业的发展。

快速的技术迭代带来了对IT基础设施的挑战,申通近年来全面将传统应用切换使用云原生架构,通过云原生架构实现应用的快速迭代、稳定的高可用、资源的动态扩缩容来支撑起快速的技术创新。

上云前,申通使用线下机房作为计算及数据存储平台,一到双11资源需求就膨胀,大促之后则闲置浪费;上云和云原生化后,几乎全部的资源都是按量购买,使用云原生技术快速扩缩容,双十一前快速扩容,双11释放,真正做到了开箱即用,不产生一天浪费。与去年双11当天相比,今年11月1到3日,在业务量大幅提升的情况下,IT投入反而降低了30%。上云的成效显著。 

申通云原生化架构的背景

目前申通正在把业务从IDC机房往云上搬迁,核心业务系统目前已经在云上完成流量承接。原有IDC系统帮助申通早期业务快速发展,但也暴露了不少问题,传统IOE架构,各系统架构的不规范,稳定性,研发效率等都限制了业务发展需求。

随着云计算在国内的越发成熟,更多的企业在把自己核心系统往云上搬,享受云计算带来的技术红利。在跟阿里云多次技术交流之后最终确定阿里云为唯一合作伙伴,为申通提供稳定的计算、数据处理平台。

采用云原生应用架构的诉求/驱动力

快递公司是非常典型的云边一体架构,实操环节很重。大量的业务逻辑下沉到边缘,所以申通在上云改造过程中,也在尝试做云边一体化的架构升级。 通过云边一体,可以让开发在同一个平台上面完成云上业务及边缘侧的业务开发。同时快递公司还有典型的大数据处理场景,全网每天会新增几亿条扫描数据,需要对这些数据进行实时分析,对数据的处理要求非常高。

之前使用线下机房做为计算及数据存储平台的方式,使申通在业务增长过程中遇到了一些瓶颈,比如软件交付周期过长、大促保障对资源的要求、系统稳定性挑战等等。而云原生技术就是来解决传统应用升级缓慢、架构臃肿、不能快速迭代等方面的问题。正是看中了云原生技术能够给我们带来的价值才驱使我们转为使用公有云作为主要计算资源。

站在企业的角度来看,在这样一个快速多变的时代,云原生给我们带来的价值也正是企业最需要的:

唯快不破。这里的“快”有两层含义,一是业务应用快速上线,通过云原生技术可以做到快速上线部署;二是在业务爆发式增长的时候,对资源的需求要做到开箱即用。

稳中求变。业务稳定性永远是第一位。通过监控埋点,业务日志收集,链路监控等手段保证了在快速迭代过程中业务系统的稳定性。

节省资源。通过对计算资源的水位监测,结合业务的峰值情况,当发现资源利用率偏低采用降配规格及数量,降低整个资源的费用。相比于一次性投入租建机房及相应的维护费用,使用公有云成本投入更低。

开拓创新。采用微服务架构,将之前臃肿的架构进行合理拆分,再结合容器编排的能力做到持续交付。让企业成功转型成为一家DevOps驱动的公司。

申通云原生架构历程

云原生化技术改造:

原架构是基于Vmware+Oracle数据库的架构,通过上阿里云全面转型基于Kubernetes的云原生架构体系。应用服务架构重构主要分两部分:

1、程序代码改造升级。

应用容器化
跟虚拟机比起来,容器能同时提供效率和速度的提升,让其更适合微服务场景。所以我们引入容器技术。通过应用容器化解决了环境不一致的问题,保证应用在开发、测试、生产环境的一致性。

微服务改造
原先很多业务是基于Oracle的存储过程及触发器完成的,系统之间的服务依赖也是走的数据库OGG同步完成。带来的问题就是系统非常难维护,也非常不稳定。通过引入Kubernetes的服务发现来做微服务方案,按业务域进行拆分,让整个系统更易于维护。

2、引入云原生数据库方案

通过引入OLTP跟OLAP型数据库,将在线数据与离线分析逻辑拆到两种数据库中,取代之前完全依赖Oracle。特别是在处理历史数据查询场景下解决了Oracle支持不了的业务需求。

云原生技术框架设计:

**整体架构:
**
image.png

架构阐述

1、基础设施
全部的计算资源取自阿里云的神龙裸金属服务器,Kubernetes搭配神龙服务器能够获得更佳性能及更合理的资源利用率,云上资源可以按量付费,特别适合大促场景,大促结束之后资源使用完释放。相比于线下自建机房和常备机器,云上资源操作更方便,管理成本也更低。

2、流量接入 
共有2套流量接入,一套是面向公网请求,另外一套是服务内部调用。域名解析采用云DNS及PrivateZone。借助Kubernetes的Ingress能力来做统一的域名转发,这样可以节省公网SLB的数量便于运维管理。

平台选择:

整体的云原生PaaS平台基于阿里云容器服务Kubernetes 版(ACK)打造:
image.png

平台特点:

1、测试、集成、预发、生产统一环境,打通DevOps闭环
2、天生资源隔离,机器资源利用率高
3、流量接入可实现精细化管理  
4、集成了日志、链路诊断、Metrics平台
5、统一APIServer接口和扩展,天生支持多云跟混合云部署

应用服务层设计

每个应用都在Kubernetes上面创建单独的一个NameSpace,应用跟应用之间是资源隔离。通过定义各个应用的配置Yaml模板,当应用在部署的时候直接编辑其中的镜像版本即可快速完成版本升级,当需要回滚的时候直接在本地启动历史版本的镜像快速回滚。

运维管理

线上Kubernetes集群都是采用了阿里云托管版容器服务,免去了运维Master节点的工作,只需要制定Worker节点上线及下线流程即可。同时上面跑的业务系统均通过我们的PaaS平台完成业务日志搜索,按照业务需求投交扩容任务,系统自动完成扩容操作。降低了直接操作Kubernetes集群带来的风险。

申通云原生应用服务特点

API接口:

我们的应用场景主要有2块:
1、封装Kubernetes管控API
包括创建StatefulSet、修改资源属性、创建Service资源等等,通过封装这些管控API方便通过一站式的PaaS平台来管理在线应用。

2、云原生业务系统
我们云上的业务系统封装了各类云资源的API,比如:封装SLS的API、将在线数据写入SLS再跟Maxcompute或Flink集成。封装OSS的API,方便在应用程序中将文件上传。

应用和数据迁移:

我们云上的业务系统及业务中间件都是通过镜像的方式部署,应用的服务通过Service发现,全部在线应用对应的Pod及Service配置均保存PaaS平台里面,每个应用历史版本对应的镜像版本都保存到系统中,可以基于这份配置快速构建一套业务生产环境。

数据迁移示意图:
image.png

通过DTS工具将业务系统的数据从IDC存储及增量迁移到云上。在线数据稳定地存储在云原生的数据库上面,如OLTP类型的RDS、PolarDB支撑高并发的实时处理,OLAP类型的ADB支持海量数据分析。同时对于小文件存储保存在OSS上面。引入NAS做共享存储介质,通过Volume直接挂载到神龙节点来实现应用数据共享。

服务集成:

以云原生PaaS示意:
image.png

服务集成阐述
持续集成通过Git做版本控制,利用云效的持续集成功能实现了云原生应用的构建、编译及镜像上传,全部的业务镜像均保存在云端的镜像服务仓库。底层是Kubernetes集群作为整个业务的计算资源。其他集成的服务包括:

1> 日志服务,通过集成日志服务方便研发人员方便定位业务及异常日志。
2> 云监控,通过集成监控能力,方便运维研发人员快速发现故障
3> 服务接入,通过集成统一的接入,整个应用流量可做到精细化管理
4> 弹性伸缩,借助ESS的能力对资源进行动态编排,结合业务高低峰值做到资源利用率最大化。

服务高可用:

ACK集群多层级高可用示意图
image.png

架构说明:
•  支持多可用区部署架构,由用户自定义分配比例
•  容器集群内故障迁移
•  AZ故障整体容器迁移
Kubernetes集群通过控制应用的副本数来保证集群的高可用。当某个Pod节点出现当机故障时,通过副本数的保持可以快速在其他worker节点上再启新的Pod。

监控

主动发现业务故障,通过引入监控体系主动发现业务问题,快速解决故障。
监控采集示意图:
image.png

在同一个POD里面部署了两个容器,一个是业务容器,一个是Logtail容器。应用只需要按照运维定的目录将业务日志打进去,即可完成监控数据采集。

技术/应用服务创新点

从虚拟机到kubernetes

相比于通过虚拟机来运维应用, Kubernetes可以将各类资源定义成描述文件,整个应用环境通过容器的方式统一,避免环境不一致的风险。通过修改副本数即可轻松完成应用容器的扩缩容操作。

基于Terway让Pod和ECS网络处于同等地位

优势:
1> 不依赖VPC路由表,就能打通网络,节点规模不受路由表Quota限制
2> 不需要额外为Pod规划Overlay的网段
3> 混合云专线打通也无需额外配置路由
4> 可以直接将POD挂到SLB后端
5> 性能高,相比于社区的Flannel提升至少20%

定义三套接入环境及三套业务环境

架构示意图
image.png

三套接入环境

公网接入:适合于跟外部客户对接,通过统一的证书卸载,收敛公网IP
办公网接入:适合于有敏感接口的对接,只允许指定源IP的请求,通过网络ACL让整个应用访问更安全。
内网接入:适合于业务之间及混合云架构下IDC的业务调用云上应用,内部调用性能更高也更安全。

三套业务环境

测试环境:全部的云资源都是给测试环境使用,可以采用低配资源来满足功能回归测试
预发环境:准上线环境,连接生产环境的资源进行发布前最后一次功能验证
生产环境:实际运行环境,接收真实流量处理业务请求

应用效益

成本方面:

使用公有云作为计算平台,可以让企业不必因为业务突发增长的需求,而一次性投入大量资金成本用于采购服务器及扩充机柜。在公共云上可以做到随用随付,对于一些创新业务想做技术调研是非常方便。用完即销毁,按量付费。另外云产品都是免运维自行托管在云端,可以节省人工运维成本,让企业更专注于做核心业务。

稳定性方面:

云上产品都是提供至少5个9以上的SLA服务,而自建的话稳定性差不少。另外有些开源的软件可能还存在部分功能上的bug影响了业务。另外在数据安全方面云上数据可以做到异地备份,阿里云数据类产品的归档高可靠、低成本、安全性、存储无限等特点,让企业数据更安全。

效率方面:

借助跟云产品的深度集成,方便研发一站式完成研发、运维工作。从业务需求立项到拉分支开发,再到测试环境功能回归验证,再部署到预发验证及最后上线,整个持续集成可以做到分钟级。排查问题方面,研发直接选择所负责的应用通过集成的SLS日志控制台快速检索程序的异常日志,定位问题。免去了登录机器查日志的麻烦。

赋能业务:

云上组件有300多种,涵盖了计算、AI、大数据、IOT等等诸多领域,这样可以节省业务创新带来的技术成本。

总结和后续展望:

目前申通已经使用云原生技术快速的将基础设施迁移到云上,使用云原生技术解决了双十一成本预算问题,服务监控问题,服务接入和负载均衡等问题,让双十一的快递高峰能够更低成本、更稳的方式应对。

对于类似于申通这样的传统企业数字化转型和上云来说,使用云原生技术内置的弹性、监控、负载均衡和服务发现等能力,可以大幅降低企业研发和运维人员的迁云的成本,让企业的研发和运维人员只需要关心业务研发和迁移,而无需管理大量的基础设施迁移成本。可以说是企业上云的最佳路径。

将来申通还在持续的利用最新的云原生技术继续优化基础设施和业务系统,下一步将会结合云原生技术进一步的降低成本和提升业务稳定性:

实时的弹性调度:

申通的快递业务是非常典型周期性业务,使用云原生技术的实时的弹性调度能力可以让每天的业务高低峰都能自动弹性伸缩。可能再节省一大笔的资源成本。

智能运维和安全生产:

结合云原生的细粒度的监控能力,结合AIOPS技术,对系统和业务的指标做到自动分析诊断,从而让异常事件做到及时发现和处理。

服务网格:

引入服务网格来优化目前的微服务架构,统一微服务调用的协议,实现全链路追踪和监控,提升研发和运维的效率。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
14天前
|
运维 Cloud Native 持续交付
云原生架构的演进与实践####
【10月更文挑战第16天】 云原生,这一概念自提出以来,便以其独特的魅力和无限的可能性,引领着现代软件开发与部署的新浪潮。本文旨在探讨云原生架构的核心理念、关键技术及其在实际项目中的应用实践,揭示其如何帮助企业实现更高效、更灵活、更可靠的IT系统构建与管理。通过深入剖析容器化、微服务、持续集成/持续部署(CI/CD)等核心技术,结合具体案例,本文将展现云原生架构如何赋能企业数字化转型,推动业务创新与发展。 ####
118 47
|
3天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
14天前
|
Kubernetes Cloud Native 持续交付
云计算的转型之路:云原生技术的崛起与实践####
【10月更文挑战第16天】 本文深入探讨了云原生技术在现代IT架构变革中的核心作用,不同于传统概述,本摘要将聚焦于云原生如何促进企业实现敏捷开发、弹性伸缩及高效运维,通过具体案例分析展现其在实际业务场景中的创新应用,揭示这一技术趋势对企业数字化转型的深远影响。 ####
37 2
|
3天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
18 4
|
8天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
9天前
|
监控 Cloud Native Java
云原生架构下微服务治理策略与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境下微服务架构的治理策略,通过分析当前技术趋势与挑战,提出了一系列高效、可扩展的微服务治理最佳实践方案。不同于传统摘要概述内容要点,本部分直接聚焦于治理核心——如何在动态多变的分布式系统中实现服务的自动发现、配置管理、流量控制及故障恢复,旨在为开发者提供一套系统性的方法论,助力企业在云端构建更加健壮、灵活的应用程序。 ####
52 10
|
4天前
|
Kubernetes Cloud Native API
云原生架构下微服务治理的深度探索与实践####
本文旨在深入剖析云原生环境下微服务治理的核心要素与最佳实践,通过实际案例分析,揭示高效、稳定的微服务架构设计原则及实施策略。在快速迭代的云计算领域,微服务架构以其高度解耦、灵活扩展的特性成为众多企业的首选。然而,伴随而来的服务间通信、故障隔离、配置管理等挑战亦不容忽视。本研究聚焦于云原生技术栈如何赋能微服务治理,涵盖容器编排(如Kubernetes)、服务网格(如Istio/Envoy)、API网关、分布式追踪系统等关键技术组件的应用与优化,为读者提供一套系统性的解决方案框架,助力企业在云端构建更加健壮、可维护的服务生态。 ####
|
4天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
21 3
|
9天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
4天前
|
监控 安全 Cloud Native
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
15 2