上云这件事,团队多半已经过了“要不要用云原生”的阶段,接下来真正要想的是用到哪一层、哪些服务先上。容器和 Serverless 常被放在一起比较,但它们解决的问题并不一样,选错了往往是运维负担白白加重。下面结合阿里云原生的产品体系,讲讲这两者该怎么取舍。

阿里云原生到底包含什么
云原生强调应用从设计开始就借助云的弹性、分布式和自动化能力。按照 CNCF 的说法,它涵盖容器、服务网格、微服务、不可变基础设施和声明式 API 等要素。阿里云原生做的事,是把这些要素落到具体产品上,从底层资源一直覆盖到应用开发。
可以粗略分成三层来看:基础设施层管资源的弹性供给,平台层管应用的部署、治理和运维,应用层管业务逻辑的迭代。三层之间是配合关系,但不必一次全部引入,多数团队是按阶段一层一层往上加的。
常用产品各管什么
阿里云原生的产品不少,日常接触比较多的有下面几类:
- 容器服务 ACK:托管的 Kubernetes 集群,集群创建、升级和日常运维由平台承担。自建集群的人手紧张时,它能省下不少精力。
- Serverless 应用引擎 SAE:面向 Spring Cloud、Dubbo 这类传统微服务应用,不需要自己管理服务器和容器细节,适合已有 Java 微服务、又不想碰 K8s 的团队。
- 函数计算 FC:事件驱动,按调用付费。图片处理、消息消费、定时任务这类短时、突发的负载用它最合适,常驻的长服务反而不划算。
- 微服务引擎 MSE:托管 Nacos、Sentinel 等注册配置和流量治理组件,省掉自建注册中心的维护工作。
- 服务网格 ASM:基于 Istio 的托管服务网格,统一管理跨服务的流量、安全和可观测性。服务数量少的时候用不上,规模上来以后才能体现价值。
- 应用实时监控服务 ARMS:链路追踪、性能分析和告警,分布式系统出了问题,主要靠它定位。
这些产品之间能打通。比如一个微服务应用可以跑在 ACK 上,注册和限流交给 MSE,链路监控交给 ARMS。相比单独买几个工具,能力之间连起来用,省去大量对接工作,这一点在实际使用中比较明显。
容器还是 Serverless,看负载形态
两者的分界线主要在负载形态上,而不是技术先进程度。
长期运行、流量相对稳定、需要精细控制资源和网络的服务,放在 ACK 这类容器平台上更顺手。你可以自己定义副本数、资源配额、健康检查和发布策略,灵活度最高,代价是需要有人懂 Kubernetes。
流量忽高忽低、单次执行时间短、触发方式以事件为主的任务,放到函数计算上更合适。它没有闲置成本,突发时能自动扩出来,但冷启动延迟、执行时长上限、状态管理这些约束要提前想清楚。把一个长连接服务硬塞进函数里,最后通常会发现调试和超时处理比想象中费事。
SAE 处在两者之间。如果团队手里已经是 Spring Cloud 或 Dubbo 应用,不打算学 K8s,又希望摆脱服务器管理,它是比较直接的选择。
开源生态与迁移成本
阿里云原生和国内开源社区的关系比较紧。Dubbo 是国内用得很广的 RPC 框架,Nacos 负责服务发现和动态配置,Sentinel 提供限流、熔断和降级。这几个项目都经过了大规模业务的验证,社区也一直在更新。
对已经在用这些框架的团队来说,迁移成本通常不高。Java 团队可以先保留现有代码结构,把注册中心和配置中心换成托管服务,再把应用逐个搬到容器或 Serverless 环境里。这样做的好处是每一步都能回退,不用一次性推倒重来。
一个分阶段改造的例子
(以下为示意案例,实际使用时请替换为真实客户数据。)
设想一家中型零售企业,订单系统由十来个单体应用组成,跑在自有机房的虚拟机上。大促时流量能到平时的十几倍,扩容只能提前采购服务器,成本高,响应也慢。改造分三步走:
- 先做容器化。把核心交易服务迁到 ACK,统一镜像构建和发布流程。这一步做完,资源利用率通常会有明显变化,但要注意,发布流程统一之前不要急着拆服务。
- 再补服务治理。用 MSE 托管注册中心,给下单、支付接口配 Sentinel 限流规则。限流阈值不要拍脑袋定,最好先用压测数据估一个初值,再根据线上表现调整。
- 最后处理突发任务。优惠券发放、消息通知这类任务迁到函数计算,按调用量计费,大促结束后资源自动回收。
按这个路径走完,大促扩容可以从几天缩短到分钟级,非核心业务的闲置资源也会减少。不过这个结果建立在前期服务拆分和监控体系已经到位的基础上,不是把应用扔上云就能自动得到的。
几条落地前的提醒
- 先想清楚目标。是降本、提速,还是扛住大促峰值,目标不同,产品组合差别很大。目标没定,选型很容易变成堆产品。
- 从无状态服务开始。无状态应用容器化风险最低,适合当第一批迁移对象。有状态的数据库、缓存相关服务,留到后面再动。
- 监控先行。拆服务之前先把链路追踪和日志搭起来。服务一旦变多,出了问题再补监控,定位会非常慢。
- 评估团队能力。Kubernetes 和服务网格有一定学习曲线,托管服务能减轻负担,但团队至少要理解基本原理,否则线上出问题时只能干等。
云原生不是一次性项目,更像是一种需要持续打磨的工程方式。阿里云原生给的是一套可以按需组合的工具,选一个合适的切入点,边做边积累经验,通常比一开始就追求完整架构更有效。