了解 Cultured Code 团队如何将“Things”迁移到服务器端 Swift,以及为什么用户回应让人很有成就感。
͏
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
如何将“Things”迁移到服务器端 Swift
去年年初,个人任务管理器“Things”推出了一项更新,使用服务器端 Swift 对后端进行了全面重建,用户回应正如联合创始人 Werner Jainek 所期望的那样:
“或许一些人注意到它的运行速度变快了。”Cultured Code (“Things”的开发公司) 斯图加特办事处的 Jainek 说,“但除此之外,对用户几乎没有任何影响。”
对于一次开创性的升级而言,“毫无影响”正是最好的结果,这次升级让“Things”的平均计算成本降低至原来的三分之一,同时将平均响应速度提升至原来的四倍。
Things 3
兼容平台:iPhone、iPad、Mac、Apple Watch、Apple Vision Pro
团队规模:11 人
所在国家或地区:德国
所获奖项:Apple 设计大奖 (2009 年、2017 年)、App Store 编辑精选
作为 2008 年 App Store 推出时首批上架的 App 之一,两度斩获 Apple 设计大奖的“Things”有着辉煌的历史。到了 2020 年左右,Cultured Code 团队开始意识到,同步引擎需要优化。
“当时的技术堆栈效率低下、成本高昂,并且不符合现代标准。”负责 Cultured Code 后端开发和运营的 Vojtěch Rylko 说,“此外,它运行时所基于的平台就像是黑盒,我们要不断制定临时应对办法。”团队担心,老旧的后端会威胁到这款稳定可靠的实用工具十年来赢得的地位。“我们有可能失去这一声誉,”Jainek 说,“因此显然我们必须采取行动。容不得半点犹豫。”
于是,启动了引擎重建项目。Jainek 说,Cultured Code 对整个技术堆栈保持开放态度,重新审视了从编程语言到基础架构的方方面面。随着调查进入后端部分,他开始注意到一个意想不到的情况:服务器端 Swift 频频成为大家青睐的选项。“当然,我们在进行客户端开发时已经熟悉了它。”他说,“它有许多优点:性能强、内存效率高、符合现代技术标准。但问题在于:它是否足够成熟?它能否在生产环境中保持稳定?”
Rylko 说,当时服务器端 Swift 仍属新兴技术。“我们在会议上与朋友和同事讨论这个问题时,他们有些惊讶:这居然可行。”他说,“当时感觉非常冒险。”
“我们一点都不紧张,因为我们知道我们已经做好了准备。”
Werner Jainek,Cultured Code 首席执行官兼联合创始人
尽管如此,团队还是毅然投入其中。总之,Rylko 和他的团队花了大约三年时间来完成云同步功能的 Swift 重写、建立基础架构并完成测试 (这是特别关键的一步)。“从一开始,我们的要求就是在切换云时保证顺畅的用户体验。”Rylko 说。
因此,团队采用了双管齐下的方法:在不影响用户体验的情况下,使用来自用户的实时内容测试基于 Swift 的新后端。“我们构建了新云,然后让它与旧云并行运行。”Rylko 说,“旧云处理所有实时流量的同时,我们也会将相同的流量转发到新系统,让新系统并行执行,这样就能实时观察发生的情况。数据库是否处理了所有查询?我们是否存在性能问题?我们学会了如何在实际负载条件下,运营这个新的基础架构。”
进一步了解
在整个过程结束时,Cultured Code 已经积累了超过一年在生产环境中使用新云的经验。
这种方法还有额外的好处,包括能够提前迁移大部分不可变数据。“这使得我们能够在最终迁移期间将计划停机时间压缩至三小时,而非原本的四天。”Jainek 说。
到了正式切换的那天,团队齐聚斯图加特,共同见证这个时刻。“但那时我们一点都不紧张,”Jainek 说,“因为我们知道我们已经做好了准备。”
 |
开发者故事
|
如何将“Things”迁移到服务器端 Swift
|
去年年初,个人任务管理器“Things”推出了一项更新,使用服务器端 Swift 对后端进行了全面重建,用户回应正如联合创始人 Werner Jainek 所期望的那样:
|
几乎无人察觉。
|
“或许一些人注意到它的运行速度变快了。”Cultured Code (“Things”的开发公司) 斯图加特办事处的 Jainek 说,“但除此之外,对用户几乎没有任何影响。”
|
对于一次开创性的升级而言,“毫无影响”正是最好的结果,这次升级让“Things”的平均计算成本降低至原来的三分之一,同时将平均响应速度提升至原来的四倍。
|
|
Things 3
|
兼容平台:iPhone、iPad、Mac、Apple Watch、Apple Vision Pro 团队规模:11 人 所在国家或地区:德国 所获奖项:Apple 设计大奖 (2009 年、2017 年)、App Store 编辑精选
|
下载 Mac 版 Things 3
|
下载 iPhone 版 Things 3
|
|
作为 2008 年 App Store 推出时首批上架的 App 之一,两度斩获 Apple 设计大奖的“Things”有着辉煌的历史。到了 2020 年左右,Cultured Code 团队开始意识到,同步引擎需要优化。
|
“当时的技术堆栈效率低下、成本高昂,并且不符合现代标准。”负责 Cultured Code 后端开发和运营的 Vojtěch Rylko 说,“此外,它运行时所基于的平台就像是黑盒,我们要不断制定临时应对办法。”团队担心,老旧的后端会威胁到这款稳定可靠的实用工具十年来赢得的地位。“我们有可能失去这一声誉,”Jainek 说,“因此显然我们必须采取行动。容不得半点犹豫。”
|
 |
于是,启动了引擎重建项目。Jainek 说,Cultured Code 对整个技术堆栈保持开放态度,重新审视了从编程语言到基础架构的方方面面。随着调查进入后端部分,他开始注意到一个意想不到的情况:服务器端 Swift 频频成为大家青睐的选项。“当然,我们在进行客户端开发时已经熟悉了它。”他说,“它有许多优点:性能强、内存效率高、符合现代技术标准。但问题在于:它是否足够成熟?它能否在生产环境中保持稳定?”
|
Rylko 说,当时服务器端 Swift 仍属新兴技术。“我们在会议上与朋友和同事讨论这个问题时,他们有些惊讶:这居然可行。”他说,“当时感觉非常冒险。”
|
|
“我们一点都不紧张,因为我们知道我们已经做好了准备。”
|
Werner Jainek,Cultured Code 首席执行官兼联合创始人
|
|
尽管如此,团队还是毅然投入其中。总之,Rylko 和他的团队花了大约三年时间来完成云同步功能的 Swift 重写、建立基础架构并完成测试 (这是特别关键的一步)。“从一开始,我们的要求就是在切换云时保证顺畅的用户体验。”Rylko 说。
|
因此,团队采用了双管齐下的方法:在不影响用户体验的情况下,使用来自用户的实时内容测试基于 Swift 的新后端。“我们构建了新云,然后让它与旧云并行运行。”Rylko 说,“旧云处理所有实时流量的同时,我们也会将相同的流量转发到新系统,让新系统并行执行,这样就能实时观察发生的情况。数据库是否处理了所有查询?我们是否存在性能问题?我们学会了如何在实际负载条件下,运营这个新的基础架构。”
|
进一步了解
|
Swift.org:Swift 的服务器支持如何为 Things Cloud 提供动力支撑 (英文) |
在整个过程结束时,Cultured Code 已经积累了超过一年在生产环境中使用新云的经验。
|
这种方法还有额外的好处,包括能够提前迁移大部分不可变数据。“这使得我们能够在最终迁移期间将计划停机时间压缩至三小时,而非原本的四天。”Jainek 说。
|
到了正式切换的那天,团队齐聚斯图加特,共同见证这个时刻。“但那时我们一点都不紧张,”Jainek 说,“因为我们知道我们已经做好了准备。”
|
|
最初发布于 2025 年 6 月 9 日
|
|
|
|
|
|
|
|