最近追觅宣布聚焦四大主营业务方向,调整部分探索阶段业务。这类战略调整在消费电子行业并不少见,但对技术团队来说,真正的变化往往从“方向确定”之后才开始:哪些业务继续投入,哪些业务收缩资源,哪些服务要安全下线,探索期的代码和技术方案如何沉淀。很多团队在遇到类似调整时,容易陷入两个极端:一是凭感觉“砍项目”,缺少可量化的评估依据;二是什么都舍不得停,导致资源被大量探索型需求蚕食,主营业务反而拿不到足够的技术资源。
本文想分享一套更工程化的处理方式,把“业务聚焦”这件事拆成评估模型、资源重配、服务下线、数据归档、周期复盘五个步骤。整套方法既可以用于小团队做业务取舍,也可以用于中大型技术部门在战略调整时快速对齐。内容会包含可复用的 Python 评估脚本、服务下线流程示例、自动化评审配置,以及常见问题的排查思路。
1. 背景:从“追觅聚焦四大主营业务”看业务聚焦
追觅宣布聚焦四大主营业务方向,调整部分探索阶段业务,这个动作背后有一套非常典型的企业逻辑:当组织进入规模化阶段后,资源会优先向确定性更高、协同更强的业务倾斜,探索型项目则会被更加严格地审视。这种策略不是否定创新,而是把“探索”和“聚焦”放在同一个管理框架下,避免资源过度碎片化。
1.1 这件事为什么值得技术人关注
很多技术同学看到这类新闻,第一反应是“这是管理层的事”。但从实际项目经验来看,每次业务聚焦调整都会带来一波技术侧连锁反应:
- 部分探索阶段业务会停止新需求开发,甚至进入维护模式。
- 原本投入在探索业务上的后端、前端、测试、运维资源需要重新分配。
- 已经上线的服务需要评估是否下线,涉及数据库、缓存、消息队列、对象存储等一系列资源。
- 探索过程中积累的代码、文档、数据资产需要整理归档,避免后续重复造轮子。
- 团队同学的项目经历和绩效评估也会受到影响,需要更清晰的交接记录。
所以,“聚焦主营业务”从来不只是商业选择题,它同时是技术管理题。如果技术侧没有一套标准化的评估与执行流程,很容易出现服务下线不干净、文档缺失、数据违规保留等问题。
1.2 探索阶段业务与技术团队的真实关系
在业务发展早期,探索阶段业务通常是技术团队的“试验田”。团队通过快速上线、灰度验证、快速迭代来验证市场需求。这个阶段的特点是:
- 需求变化快,代码结构可能不够规范;
- 依赖第三方服务较多,但缺少完备的监控告警;
- 数据模型可能反复调整,历史数据口径不统一;
- 文档往往滞后于代码,线上配置分散在多个平台。
这些特点决定了,探索阶段业务一旦需要收缩或下线,不能简单“关停服务器”了事。它比主营业务下线更复杂,因为代码质量、文档完整度、数据一致性都可能存在隐患。
1.3 聚焦决策落地的技术闭环
从追觅宣布聚焦四大主营业务方向,调整部分探索阶段业务这个案例出发,技术侧可以形成一个闭环:
- 评估:用统一指标给每个探索阶段业务打分,判断是“聚焦投入”“保留观察”还是“收缩下线”。
- 重配:对收缩和下线的业务,把人力、服务器、预算重新分配给主营业务。
- 执行:按规范完成服务下线、数据归档、用户通知、依赖清理。
- 复盘:定期回顾评估结果,确保资源分配与战略方向保持一致。
- 沉淀:把探索阶段的技术方案、踩坑记录、数据结论沉淀到组织知识库。
这套闭环并不依赖某一款商业工具,而是依赖流程规范与少量自动化脚本。下面从实际操作角度展开。
2. 环境准备与评估建模
在动手写评估脚本之前,需要先准备数据与运行环境。为了避免方向跑偏,建议先建立一个跨角色的评估小组,并明确每个人提供什么数据。
2.1 评估小组与角色分工
业务聚焦评估不是技术部门单独能完成的,建议至少包含以下角色:
| 角色 | 职责 | 输出物 |
|---|---|---|
| 业务负责人 | 说明业务战略价值、客户反馈、市场空间 | 战略协同度评分依据 |
| 产品经理 | 梳理功能清单、用户规模、活跃数据 | 产品现状报告 |
| 技术负责人 | 评估系统架构、代码质量、技术债 | 技术健康度报告 |
| 财务/运营 | 提供成本、收入、人力投入数据 | 资源效率数据 |
| 数据负责人 | 明确数据资产、合规要求、归档方案 | 数据归档与删除方案 |
如果团队规模较小,可以精简为“业务+技术”双角色,但数据维度和评估维度不要随意删减。
2.2 需要准备的数据
围绕探索阶段业务,需要收集以下四类数据:
- 业务数据:近 6 个月的活跃用户数、订单量/使用量、留存率、收入贡献。
- 成本数据:服务器成本、第三方服务费用、人力成本、推广费用。
- 技术数据:代码仓库规模、接口数量、依赖组件、线上事故次数、告警数量。
- 战略数据:该业务与主营业务方向的关联程度、可复用技术资产、未来潜在价值。
这些数据不需要非常精确,能够支撑横向对比即可。如果数据缺失,建议先标注“数据缺失”,不要把主观臆测当作真实数据。
2.3 运行环境与版本说明
本文后续示例使用 Python 编写评估脚本,环境要求如下:
- Python 3.10 及以上版本;
- 无需额外安装第三方依赖,使用标准库即可运行;
- 操作系统不限,Windows / macOS / Linux 均可;
- 自动化评审部分使用 GitHub Actions 示例,其他 CI/CD 平台可参考相同思路。
版本需要根据你的项目实际情况调整,本文示例以常见环境为例,重点演示配置思路。
3. 核心方法:探索阶段业务的“三维评估卡”
要给业务做评估,就要先定义标准。这里推荐一套“三维评估卡”,包含战略协同度、资源效率、技术债务与维护成本三个维度。每个维度按 0 到 100 分打分,再按权重计算总分。
3.1 维度一:战略协同度
战略协同度衡量的是“该探索业务与主营业务方向是否匹配”,权重建议设为 40%。判断标准包括:
- 能否复用主营业务的用户、渠道、供应链或品牌资产;
- 能否与主营业务形成互补,提升整体竞争力;
- 是否消耗主营业务的关键资源,且短期看不到回报;
- 是否有明确的市场验证结论,还是仍然停留在假设阶段。
例如,某探索业务与追觅四大主营业务方向中的核心业务共享用户群体和线下渠道,那么战略协同度得分就相对较高。如果业务依赖单独场景,且无法与主营业务形成协同,得分就会偏低。
3.2 维度二:资源效率
资源效率衡量的是“单位资源投入产生的业务价值”,权重建议设为 30%。判断标准包括:
- 人力投入:全职投入的人数、每月人天成本;
- 资金投入:服务器、云资源、第三方 API 费用;
- 产出价值:收入、用户增长、品牌曝光、数据积累;
- 增长趋势:近 3 个月业务指标是上升还是下降。
资源效率的目的不是单纯追求“赚钱”,而是判断业务是否值得继续投入。很多探索业务短期不赚钱,但可以带来关键用户反馈或技术验证,这类业务在资源效率维度会得到“业务价值”部分的一定补偿。
3.3 维度三:技术债务与维护成本
技术债务是探索阶段业务最容易忽略的隐性成本,权重建议设为 30%。判断标准包括:
- 代码质量:是否有单元测试、代码规范、模块拆分是否合理;
- 依赖风险:是否依赖大量无人维护的第三方库;
- 运维成本:是否已接入监控告警、日志系统、自动发布流水线;
- 数据风险:是否存在用户隐私数据、是否有完整的数据备份。
一个典型的例子是:探索业务 C 的接口只有 5 个,但代码没有测试,第三方支付 SDK 版本停留在两年前,线上日志缺失。虽然业务指标看起来不错,但技术债务极高。这类业务在聚焦评估时,技术维度得分会明显拉低总分。
3.4 用 Python 实现打分脚本
下面用一个 Python 脚本实现三维评估卡。脚本接收每个项目的三个维度得分,输出总分与决策建议。
# 文件路径:scripts/evaluate_business.py """ 探索阶段业务评估脚本 输入:项目名、战略协同度得分、资源效率得分、技术债务与维护成本得分 输出:总分与决策建议 决策阈值说明: 85 分及以上:聚焦投入 65 分至 84 分:保留观察,优化后聚焦 65 分以下:收缩或下线 """ def evaluate_business(project_name: str, strategy_score: float, efficiency_score: float, tech_debt_score: float) -> dict: """ 根据三维评估卡计算总分,并给出决策建议。 :param project_name: 项目名称 :param strategy_score: 战略协同度得分,范围 0-100 :param efficiency_score: 资源效率得分,范围 0-100 :param tech_debt_score: 技术债务与维护成本得分,范围 0-100 :return: 包含总分和决策建议的字典 """ weights = { "strategy": 0.4, "efficiency": 0.3, "tech_debt": 0.3, } total_score = ( strategy_score * weights["strategy"] + efficiency_score * weights["efficiency"] + tech_debt_score * weights["tech_debt"] ) if total_score >= 85: decision = "聚焦投入" elif total_score >= 65: decision = "保留观察" else: decision = "收缩或下线" return { "project": project_name, "total_score": round(total_score, 2), "decision": decision, } if __name__ == "__main__": # 模拟数据:来自评估小组的打分结果 project_list = [ {"name": "核心业务A", "strategy": 92, "efficiency": 88, "tech_debt": 76}, {"name": "探索业务B", "strategy": 58, "efficiency": 72, "tech_debt": 52}, {"name": "探索业务C", "strategy": 45, "efficiency": 50, "tech_debt": 38}, ] for p in project_list: result = evaluate_business( project_name=p["name"], strategy_score=p["strategy"], efficiency_score=p["efficiency"], tech_debt_score=p["tech_debt"], ) print(f"项目:{result['project']},总分:{result['total_score']},决策建议:{result['decision']}")运行方式:
python scripts/evaluate_business.py预期输出:
项目:核心业务A,总分:86.6,决策建议:聚焦投入 项目:探索业务B,总分:61.0,决策建议:收缩或下线 项目:探索业务C,总分:44.6,决策建议:收缩或下线这个脚本的核心价值在于把评估标准固化下来,避免每次评审都靠临时争论。权重可以根据公司实际情况调整,但建议调整前先经过评估小组确认,形成版本记录。
4. 实战案例:某探索业务从评估到下线
下面用一个虚拟案例串起整个流程。假设某公司有三块业务:核心业务 A、探索业务 B、探索业务 C。经过三维评估卡打分,探索业务 B 和探索业务 C 得分均低于 65 分,决定收缩或下线。以下操作以探索业务 B 为例。
4.1 案例背景
探索业务 B 是公司一年前启动的独立工具类产品,目标用户与主营业务重叠度低,但初期获得了一定增长。最近两个季度,用户活跃度持续下滑,服务器成本和第三方服务费用却居高不下。技术侧发现该产品缺少自动化测试,部分服务仍部署在人工维护的旧集群上。
评估后确认,业务 B 与主营业务协同度不足,且历史数据没有形成可复用的技术资产,因此进入“收缩或下线”范畴。
4.2 步骤一:生成评估结果
使用上一节的脚本,配置业务 B 的打分数据:
# 文件路径:scripts/run_evaluation_for_b.py from evaluate_business import evaluate_business result = evaluate_business( project_name="探索业务B", strategy_score=58, efficiency_score=72, tech_debt_score=52, ) print(result)运行后得到:
{'project': '探索业务B', 'total_score': 61.0, 'decision': '收缩或下线'}这个结果需要提交给评估小组复核。建议在会议上说明每个维度的依据,并留下会议纪要,方便后续追溯。
4.3 步骤二:制定资源重配方案
确认下线后,技术负责人需要制定资源重配方案。资源重配分三个层面:
- 人力:明确现有团队成员是转入主营业务、内部转岗,还是继续负责维护收尾工作;
- 基础设施:服务器、域名、云资源、第三方账号的关闭时间点;
- 预算:释放出的预算如何重新分配给主营业务。
一个比较稳妥的资源释放顺序如下:
第 1 周:停止新需求开发,仅保留服务稳定性维护 第 2 周:完成数据备份与归档方案评审 第 3 周:向用户发送服务停运通知 第 4 周:执行服务下线与资源释放如果你是技术负责人,建议把上述时间点写进项目排期,并在每周周会同步进度。
4.4 步骤三:服务安全下线
服务下线过程非常容易踩坑。直接删除服务进程很简单,但可能导致正在处理的请求中断、数据丢失、支付回调失败。推荐使用“优雅下线”流程。
下面是一个简化版的服务下线脚本,演示了排空流量、检查连接、切断服务的思路:
# 文件路径:scripts/graceful_offline.py """ 服务优雅下线示例脚本 用途:模拟将服务从注册中心摘除、等待存量请求结束、检查连接数、停止进程 说明:生产环境请根据实际微服务框架(如 Spring Cloud、Kubernetes、Nacos)调整 """ import logging import random import time from enum import Enum logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") class ServiceStatus(Enum): ONLINE = "online" DRAINING = "draining" OFFLINE = "offline" def get_active_connections(service_name: str) -> int: """ 模拟查询服务当前活跃连接数。 实际项目中可接入监控平台或直接查询注册中心/网关。 """ # 这里使用随机数模拟,不代表真实数据 return random.randint(0, 5) def graceful_offline(service_name: str, drain_seconds: int = 30) -> str: """ 优雅下线主流程 :param service_name: 服务名称 :param drain_seconds: 等待存量请求结束的时长(秒) :return: 最终状态 """ logging.info("[%s] 开始执行下线流程", service_name) # 1. 在服务注册中心摘除节点,停止接收新流量 logging.info("[%s] 第1步:从注册中心摘除节点", service_name) time.sleep(2) # 2. 等待存量请求处理完成 logging.info("[%s] 第2步:等待存量请求结束,等待 %s 秒", service_name, drain_seconds) time.sleep(drain_seconds) # 3. 检查活跃连接数 active_connections = get_active_connections(service_name) logging.info("[%s] 当前活跃连接数:%s", service_name, active_connections) if active_connections > 0: logging.warning("[%s] 仍有活跃连接,建议延长排空时间或检查是否存在长连接服务", service_name) # 4. 停止服务进程 logging.info("[%s] 第4步:停止服务进程", service_name) # 5. 更新服务状态 logging.info("[%s] 第5步:服务状态更新为 OFFLINE", service_name) return ServiceStatus.OFFLINE.value if __name__ == "__main__": status = graceful_offline("explore-service-b", drain_seconds=10) print(f"最终状态:{status}")运行方式:
python scripts/graceful_offline.py这个脚本的重点不是代码本身,而是体现了“先停止接收新流量、再等待存量请求处理、最后停止进程”的顺序。在 Kubernetes 环境中,Pod 终止前会先更新 Endpoints,再发送 SIGTERM 信号,之后等待 grace period。无论使用哪种平台,核心思路一致。
4.5 步骤四:数据归档与用户通知
业务下线后,数据并不是简单删除。建议按以下优先级处理:
- 合规要求:涉及用户个人信息的数据,先确认隐私政策要求,明确保存期限;
- 业务需要:如果后续可能重新上线,保留脱敏后的核心数据;
- 技术沉淀:有价值的数据分析结论、实验报告、代码片段可以归档到知识库;
- 无用数据:确认无保留价值的数据,在授权范围内安全删除。
用户通知模板可以包含以下内容:
尊敬的用户: 感谢您使用 XX 产品。由于业务战略调整,本产品将于 XXXX 年 XX 月 XX 日正式停止服务。 请在停止服务前及时导出您需要的数据。 若您对数据导出或服务停止有疑问,可联系客服邮箱:xxxx@xx.com。 再次感谢您一直以来的支持。注意:发送用户通知前,需要与法务、客服团队确认文案和数据导出流程。
4.6 步骤五:自动化周期评审
业务聚焦不是一次性动作。为了确保主营业务方向始终得到资源倾斜,建议将探索业务评审固化为周期性机制,例如每季度一次,并通过自动化工具提醒。
下面是一个 GitHub Actions 示例,每周一触发评审提醒,并执行评估脚本生成最新分数:
# 文件路径:.github/workflows/explore-review.yml name: Explore Business Review Reminder on: schedule: # 每周一上午 9 点触发 - cron: "0 9 * * 1" jobs: review: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.10" - name: Run evaluation script run: python scripts/evaluate_business.py - name: Send notification run: | curl -X POST -H "Content-Type: application/json" \ -d '{"msg": "本周探索业务评审提醒,请各技术负责人更新最新评估数据"}' \ "${{ secrets.NOTIFY_WEBHOOK }}"版本需要根据你的项目实际情况调整,GitHub Actions 的 action 版本以官方仓库为准。如果团队使用其他 CI/CD 平台,参照同样的“定时触发 + 运行脚本 + 发送通知”思路配置即可。
5. 常见问题与排查思路
在推进业务聚焦和探索业务调整时,技术团队经常遇到以下问题。这里整理成表格,并补充详细建议。
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 评估打分“政绩化”,业务方都打高分 | 缺少统一评分标准和数据支撑 | 强制要求每个维度填写具体依据,并做交叉复核 |
| 服务下线后仍有监控告警 | 有依赖服务没同步下线,或 DNS 缓存未清理 | 建立服务依赖清单,下线前进行全链路扫描 |
| 用户反馈无法访问旧功能 | 提前通知不足,或下线时间与预期不符 | 提前发送停运通知,提供数据导出入口 |
| 数据库超大,备份耗时很长 | 探索阶段积累了冗余数据 | 先做数据分类与清理,再执行备份归档 |
| 团队成员不知道该干什么 | 决策缺少明确执行计划 | 制定资源重配时间表,指定责任人 |
5.1 评估打分“政绩化”
这个问题的根源在于评估维度没有量化。战略协同度如果只说“有协同”但说不出具体场景,就容易变成主观打分。建议在评估小组会上要求三个维度分别填写“评分依据”,例如:
- 战略协同度依据:该业务是否与主营业务共享用户渠道?是否复用核心供应链?
- 资源效率依据:最近 3 个月用户增长曲线如何?单位获客成本是多少?
- 技术债务依据:单元测试覆盖率多少?依赖组件是否有高危漏洞?
有依据、有数据,评分才能横向可比。
5.2 服务下线后仍有告警
如果服务下线后监控平台还在报警,优先排查三处:
- 服务依赖关系:该服务调用方是否还继续请求?
- 注册中心:旧实例是否已经彻底摘除?
- 外部回调:支付回调、第三方通知是否回调到已下线地址?
建议人工下线前,先输出一张“服务依赖清单”,包含该服务调用方、被调用方、关联数据库、关联缓存、定时任务在内的完整拓扑,随后按逆序关闭依赖项。
5.3 数据合规风险
探索阶段业务往往缺少专门的数据合规评审,下线时特别容易出问题。处理原则如下:
- 用户主动产生的数据,如上传的图片、生成的内容,需支持导出;
- 对用户不可见的数据,如后台埋点日志,按内部数据保留策略执行;
- 涉及个人敏感信息的数据,停止服务后建议做脱敏处理;
- 删除数据前,先在测试环境演练恢复流程,再在生产环境操作。
如果团队没有专职法务,建议至少让客服负责人参与用户通知文案评审,避免出现数据权益纠纷。
6. 最佳实践与工程建议
在上述流程之外,结合团队落地经验,再补充一些实践建议。
6.1 先算账,再动手
业务聚焦最容易犯的错误是“先宣布结果,再补理由”。追觅宣布聚焦四大主营业务方向,调整部分探索阶段业务,看起来是一个决定,但支撑这个决定的,往往是业务数据、用户反馈、资源效率、未来空间等多方面的综合判断。
技术侧也一样。在推进探索业务收缩或下线时,先算清楚几笔账:
- 维持成本账:每月服务器、人力、第三方费用是多少?
- 技术债账:现有代码维护需要多少人天?
- 机会成本账:如果这些资源投入主营业务,能带来多大收益?
账算清楚了,决策才有说服力。
6.2 下线是“可恢复”的
探索阶段业务的特点是“可能重新启动”。有些业务虽然暂时收缩,但因为技术探索积累了大量数据和用户需求洞察,未来可能以新形式回归。因此,建议所有下线操作都遵循“可恢复”原则:
- 数据库完整备份,且备份存储在独立于业务服务器的位置;
- 代码仓库不删除,而是迁移到归档组织或新建 archive 标签;
- 核心配置、上线文档、排错记录整理成交接手册;
- 依赖的外部账号不需要一次性注销,可先降级为只读权限。
这样即使业务未来重新立项,也可以低成本恢复。
6.3 新探索业务的准入机制
在聚焦主营业务的背景下,新探索阶段的业务不能随意启动。建议建立“探索业务准入清单”,至少回答以下问题:
- 该业务是否与主营业务方向相关?
- 探索周期多长?预算上限是多少?
- 用什么指标判断“继续探索”还是“终止探索”?
- 探索结束后,技术资产如何沉淀?
- 由谁负责定期复盘?
如果这些问题无法回答,建议不要轻易开启新探索。探索阶段业务不是越多越好,而是越聚焦越好。
6.4 文档与沟通同步
业务聚焦过程中,文档和沟通往往被忽视。常见反面案例包括:服务下线了,但技术文档还是“已上线”状态;业务停运了,但客服人员没有收到同步话术;代码归档了,但团队内部没有留下任何复盘结论。
建议在下线执行计划中增加文档与沟通任务:
- 技术文档:在 README 或内部 Wiki 中标注“已下线”“归档”“维护模式”状态;
- 客服话术:提供停运通知答疑清单,减少客诉压力;
- 复盘文档:记录评估数据、执行过程、踩坑点,供未来探索业务参考。
6.5 用技术雷达持续观察
业务聚焦是一次性决策,但市场和技术环境一直在变化。建议建立三类雷达:
- 业务雷达:周期性关注用户需求变化、竞品动态;
- 技术雷达:周期评估新技术、新开源组件,识别可复用技术资产;
- 资源雷达:关注人力、预算、基础设施利用率。
雷达不一定需要复杂平台,一个共享表格,每季度更新一次,就能支撑大部分团队的需求。重点是形成习惯,而不是工具本身。
7. 给技术负责人的行动清单
如果你所在团队正在经历或即将经历“聚焦主营业务、调整探索阶段业务”的过程,可以按照以下清单推进落地:
- [ ] 建立跨角色评估小组,明确评估维度和数据责任人;
- [ ] 用三维评估卡对当前所有探索阶段业务进行打分;
- [ ] 对“保留观察”业务,明确观察周期和终止条件;
- [ ] 对“收缩或下线”业务,制定资源重配与下线计划;
- [ ] 执行服务下线前,输出依赖清单、备份方案、用户通知文案;
- [ ] 完成数据归档和文档标签更新;
- [ ] 在下线结束后 1 个月内进行复盘,记录经验教训;
- [ ] 将评估机制固化为周期性流程,避免类似决策再次“拍脑袋”。
这份清单的核心思路,是把商业战略层面的“聚焦”翻译成技术团队可以执行的具体动作。就像追觅宣布聚焦四大主营业务方向,调整部分探索阶段业务一样,高层只需要明确方向,但真正让方向落地的是每个技术负责人的排期、每个开发同学的文档、每个运维同学的备份。希望这份从评估到下线的完整流程,能为你提供可复制的参考。