产品与平台设计
UX、原型、设计系统
定制应用开发
PWA、移动端、企业级
AI 工程
融入您的产品与研发流程
云架构与研发流程咨询
选型、部署、成本
- 能源与大宗商品
- 航空与交通
- 保险与支付
Waterloo BMath, 1997 · Waterloo MMath, Symbolic Computation, 1998 · Concordia MEng, Software Engineering, 2016 · ThoughtWorks Architect · CFA Level 2 candidate · SR&ED Approved engineering work
[ 02 / CASE STUDIES ]
精选案例研究。
一家加拿大综合能源生产商 · 2006–2016
十年间,在同一平台上完成原油调和、排产与结算。
- 每秒表达式求值次数
- 250K/sec
- 合作年限
- 10 yrs
- 已获 SR&ED 认证
- SR&ED
调和经济性、合同与实物平衡、关税与均衡结算,以及流量排产,都必须运行在同一个模型之上,与整个企业范围内的 SAP 系统集成,并且要在交互式排产会议中快速迭代到收敛。
- c#
- .net
- wcf
- asp.net mvc
- winforms
- oracle
- ibatis.net
- msil
- microsoft solver foundation
- quickgraph
- sap xi
- teamcity
- nunit
一家按需保险提供商 · 2016–2021
基于实时车辆遥测数据构建的按使用量计费保险。
- 合作年限
- 5 yrs
- 覆盖国家数
- 3
- 计费模式
- Event-driven
按需保险——包括购买、理赔、计费与事故管理——根据车辆的实时活动数据进行定价,并由一支分布在三个国家的团队交付。
- .net
- react
- typescript
- aws lambda
- dynamodb
- sqs
- sns
[ 03 / SCALE ]
从周末打造的 PWA,到运行十年的企业级平台。
同一家咨询实践,同样的严谨标准,贯穿五个真实项目:从四人在线对战网页应用,到与 SAP 集成的国家级结算系统。
MahjongSpot
4 名玩家 · 1 项服务
RIPER
3 个原型 · 2 种代币
车载保险
3 个国家 · 5 年
航空预订
2 渠道 · 主机集成
原油调和
10 年 · SAP 集成
[ 04 / ARCHITECTURE ]
同一个应用的两种构建方式
任何系统在成长过程中都会积累复杂性。真正的区别在于,这些复杂性有没有地方可去。
大泥球
控制器直接深入持久层,业务规则写在方便的地方,同时散落在三层代码中。
端口与适配器
黄铜色的领域核心,边缘是端口,外部是适配器:HTTP、持久层、消息总线、第三方数据源。
监管机构修改了关税计算公式。
| 维度 | 大泥球 | 端口与适配器 |
|---|---|---|
| 改动的文件 | 公式被复制到了哪里,不做一次全局搜索没人说得清 | 只改一个适配器,领域核心不动 |
| 如何测试 | 只能端到端手工测试,因为没有可以隔离改动的边界 | 针对端口的单元测试,与周围的适配器隔离 |
| 影响范围 | 出问题之前谁也说不准:公式、持久层和响应共用同一段代码 | 限定在被改动端口背后的那一个适配器 |
| 能否水平扩展 | 只是偶然可以:状态和逻辑散落在当初顺手放的地方 | 从设计上就可以:核心不携带任何特定于适配器的状态 |
[ 05 / AI ]
有护栏的 AI
LLM 很乐意用十倍的速度生成一个大泥球。瓶颈从来都不是打字速度。
AI 写出什么样的代码,取决于你的代码库教会它什么。
01
架构写在代码库里,覆盖每一个边界
系统跨越的每一个边界都记录在模型真正会读取的地方——代码库本身,而不是它从未见过的一份 wiki。
02
领域模型先行
在写代码之前先确立统一语言,让同一个概念在接口、服务和数据表之间生成的命名不会走样。
03
端口即契约
接口与生成的客户端,让边界成为构建会失败的东西,而不只是评审者可能注意到的东西。
04
测试作为准入门槛
单元测试、集成测试与端到端测试共同把关合并。在我们自己的 mahjong-api 上,最近一次功能改动与接口在同一次提交(
034dd81cd)中一并加入了两个新的测试夹具——而在整个仓库中,将近四分之一的文件都是测试文件。05
依赖规则由工具强制执行
架构测试与代码检查规则会在边界违规到达人工评审之前,先让构建失败。
06
小而可评审的单元
文件大小要能装进评审者的脑子——也要能装进模型的上下文窗口——这样生成的改动在合并前才读得完。
07
规格 → 计划 → 实现
每个阶段都以一次评审检查点收尾,让生成的计划先获批准,再变成生成的代码。
[ 06 / SCALING ]
扛得住,就是能水平扩展
计算从来不是瓶颈。
这里测量出的每一个上限都是边界问题,而不是硬件问题:单进程的状态设计、无法分摊的写入方式,以及无限增长的历史帧存储。再多的 CPU 也无法解决其中任何一个。
| 并发对局数 | 连接数 | 月度成本 |
|---|---|---|
| 10 | 40 | ~$85 |
| 100 | 400 | $150–200 |
| 1,000 | 4,000 | ~$1,000–1,150 |
[ 07 / CAPABILITIES ]
系统所需要的每一项能力
产品与平台设计
设计系统、原型及其背后的研究工作,并落地为可用于生产环境的组件。
Web 与 PWA 开发
响应式、可安装的网页应用,专为离线可用性与亚秒级交互而构建。
移动应用开发
为应用商店审核、设备碎片化与实地使用条件而打造的原生与跨平台应用。
企业业务应用
取代电子表格与老旧工具的业务系统,且不打断日常运营。
数据集成与企业应用集成 (EAI)
在 ERP、SCADA 与第三方系统之间近乎实时协调数据的管道与 API。
AI 工程
面向真实负载下的准确性、延迟与成本而设计的生产级机器学习与大语言模型系统。
云架构与部署
跨 AWS、Azure 与 GCP 的基础设施、部署流水线与成本工程。
研发流程与交付咨询
为团队规模超过初创阶段的组织提供交付审计、团队结构与流程设计。
[ 09 / THE PRACTICE ]
创始人主导,依托资深网络
Codebasis 由创始人亲自主导。每一次合作背后,都有二十七年的软件工程经验:滑铁卢大学的数学学士与数学硕士学位、康考迪亚大学的工程硕士学位、在 ThoughtWorks 担任架构师的经历,以及在能源行业系统中扎根十年——原油调和、管道运力分配、关税结算——这些系统要在生产环境中运行多年,必须一次做对。
这种严谨延伸到代码之外:CFA 二级候选人身份,以及一系列获 SR&ED 认证的工程工作,意味着客户真正关心的数字——成本、风险、回报——获得与架构同等的严谨对待。
这里没有待命的人力储备。每一次合作都从一个精心挑选的资深工程师网络中按需组建团队,依据眼前工作的形态来配置——绝不会用正在客户项目中学习的初级工程师来充数,也绝不会从一个项目间隙闲置的常设团队里抽调人手。无论合作规模大小,您聘用的、并直接对接的,始终是创立这家实践的那个人。
Waterloo
BMath, 1997
Waterloo
MMath, Symbolic Computation, 1998
Concordia
MEng, Software Engineering, 2016
ThoughtWorks
Architect
CFA
Level 2 candidate
SR&ED
Approved engineering work
[ 10 / CONTACT ]
聊聊您正在构建的系统
每一次合作都从一次对话开始:聊聊您面前系统的现状、历史与制约,以及一年后它必须做到的事情。预约咨询,或直接写信联系我们。