<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>一个人的架构：技术选型、模块边界与演进（10 篇） on PlumePHP</title><link>https://plumephp.com/posts/indie/indie-solo-architecture/</link><description>Recent content in 一个人的架构：技术选型、模块边界与演进（10 篇） on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 26 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://plumephp.com/posts/indie/indie-solo-architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>架构验收：十二项检查、四维评分与一次演进复盘</title><link>https://plumephp.com/indie-arch-10-architecture-acceptance/</link><pubDate>Mon, 26 Oct 2026 10:50:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-10-architecture-acceptance/</guid><description>十二项检查、四个维度，加权总分 3.75 落在「紧」；补回滚脚本 6 小时到 3.90，还四条高危债 25 小时到 3.95，两项都做才 4.10。本文算清每小时换多少分，收束全组十篇的次序与验收口径，并给出一张可复用的季度复盘表。</description></item><item><title>后台任务与一致性：六个定时任务、幂等键与一次补偿</title><link>https://plumephp.com/indie-arch-09-background-jobs-consistency/</link><pubDate>Mon, 26 Oct 2026 10:45:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-09-background-jobs-consistency/</guid><description>六个定时任务每月执行一百八十次，按百分之零点四的失败率算出零点七二次；一次时区切换让续费跑了两遍，二十个用户被扣两次。本文把幂等键、三次退避重试、死信表、事务性发件箱与日终对账的成本逐项算清，并给出八条可判定的验收动作。</description></item><item><title>可替换性：七个外部服务与一层适配</title><link>https://plumephp.com/indie-arch-08-replaceability-adapters/</link><pubDate>Mon, 26 Oct 2026 10:40:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-08-replaceability-adapters/</guid><description>七个外部服务里只有两个在过去两年真换过，其余五个套上适配层只是多养一层代码。本文用 420 行适配层、0.67% 的代码占比、23 处调用点与 12 小时对 40 小时的迁移账，说明可替换性该给谁付钱、什么时候干脆不套一层。</description></item><item><title>重构还是重写：三张判据表与 160 小时对 48 小时</title><link>https://plumephp.com/indie-arch-07-refactor-or-rewrite/</link><pubDate>Mon, 26 Oct 2026 10:35:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-07-refactor-or-rewrite/</guid><description>陆远差点为一个 3,200 行的模块停发四周。本文给出三个必须同时成立的判据——改动频率、缺陷密度与理解时间，用 160 小时重写和 48 小时渐进重构逐项对账，并写下全库重写的 1.5 年、Strangler 的切换纪律与重写的三个前提。</description></item><item><title>抽象与复用：第三次重复才抽，一次抽错的代价</title><link>https://plumephp.com/indie-arch-06-abstraction-and-reuse/</link><pubDate>Mon, 26 Oct 2026 10:30:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-06-abstraction-and-reuse/</guid><description>陆远把三份相同的导出代码抽成一个函数，省下三十五行；九个月后一次需求分叉，让它变成七个调用点、十一个参数的负担。本文用三次规则、抽错后 140 分钟对 70 分钟的账与两年回本曲线，算出抽象该在哪一刻发生、又在哪一刻该拆掉。</description></item><item><title>技术债预算：十八条债、二十四分钟与 7.5% 的工程时间</title><link>https://plumephp.com/indie-arch-05-tech-debt-budget/</link><pubDate>Mon, 26 Oct 2026 10:25:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-05-tech-debt-budget/</guid><description>陆远按「看着最丑」排队还债，先修的那条一年只被改两次。本文把十八条债折成年利息与修复小时：六十点八小时的总利息、二十五小时的四条高危修复、零点四九年的回本周期，外加 7.5% 的预算口径，给出一人团队按比值排序的还债排队法。</description></item><item><title>依赖管理：四十一个直接依赖与四个升级窗口</title><link>https://plumephp.com/indie-arch-04-dependencies-and-upgrades/</link><pubDate>Mon, 26 Oct 2026 10:20:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-04-dependencies-and-upgrades/</guid><description>四十一个直接依赖、三百一十八个传递依赖，一共三百五十九个包、每月十四个升级 PR。本篇把升级压进每年四个窗口并按 patch、minor、major 三级处理，算清积压两年一次补九小时、分级后每年省十九点二小时这两笔账，附八条动作。</description></item><item><title>数据模型与迁移：三十四张表与一次只能动一处的改动</title><link>https://plumephp.com/indie-arch-03-data-model-migrations/</link><pubDate>Mon, 26 Oct 2026 10:15:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-03-data-model-migrations/</guid><description>三十四张表、六十二个迁移，其中十八次改动不可逆。本篇把迁移拆成 expand、migrate、contract 三步，一次只动一处：先加列双写，再分批回填校验，最后切读删旧，并给回滚脚本、停机成本与 14.2 小时的回滚节省算一笔账。</description></item><item><title>单体优先：九个模块、一条依赖方向与一次边界检查</title><link>https://plumephp.com/indie-arch-02-modular-monolith/</link><pubDate>Mon, 26 Oct 2026 10:10:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-02-modular-monolith/</guid><description>九个模块、五万四千四百行业务代码，一个人维护的单体为什么不该急着拆服务：一条从 ui 到 infra 的四层依赖方向、一次八秒跑完的边界检查、一条三选三的模块独立判据，把跨模块改动从六小时压到一点五小时，再按季度复算收益。</description></item><item><title>技术选型是排除题：八个判据、三个候选与一次返工账</title><link>https://plumephp.com/indie-arch-01-stack-selection/</link><pubDate>Mon, 26 Oct 2026 10:05:00 +0800</pubDate><guid>https://plumephp.com/indie-arch-01-stack-selection/</guid><description>一人 SaaS 的技术选型不是挑最强的框架，而是一道排除题：八个判据、三个候选、二十四格打分，先划掉不可逆的候选，再只比较未来十二个月会变的两项，最后用一次四小时 spike 验收，把六个模块共一百零八小时的返工挡在门外。</description></item></channel></rss>