Skip to content

Commit 5570e42

Browse files
committed
Small tweaks
1 parent 33a3b9a commit 5570e42

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

_posts/2025-02-21-how-swift-on-server-powers-things-cloud.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
layout: post
33
published: true
44
date: 2025-02-21 10:00:00
5-
title: How Swift's Server Support powers Things Cloud
5+
title: How Swift's server support powers Things Cloud
66
author: [vrylko, wjainek]
77
---
88

9-
You might be familiar with [Things](https://culturedcode.com/things/), a powerful personal task manager that has won multiple Apple Design Awards and is available across Apple devices including iPhone, iPad, Mac, Apple Watch, and Apple Vision Pro. At Cultured Code, the team behind Things, we care about a great user experience across every aspect of the product. This extends to our server back end, and after a rewrite our Things Cloud service has transitioned entirely to Swift. Over the past year in production, Swift has consistently proven to be reliable, performant, and remarkably well-suited for our server-side need.
9+
You might be familiar with [Things](https://culturedcode.com/things/), a delightful personal task manager that has won two Apple Design Awards and is available across Apple devices including iPhone, iPad, Mac, Apple Watch, and Apple Vision Pro. At Cultured Code, the team behind Things, we care about a great user experience across every aspect of the product. This extends to our server back end, and after a rewrite our Things Cloud service has transitioned entirely to Swift. Over the past year in production, Swift has consistently proven to be reliable, performant, and remarkably well-suited for our server-side need.
1010

1111
<img
1212
alt="Things logo"
@@ -31,19 +31,19 @@ You might be familiar with [Things](https://culturedcode.com/things/), a powerfu
3131

3232
Our legacy Things Cloud service was built on Python 2 and Google App Engine. While it was stable, it suffered from a growing list of limitations. In particular, slow response times impacted the user experience, high memory usage drove up infrastructure costs, and Python’s lack of static typing made every change risky. For our push notification system to be fast, we even had to develop a custom C-based service. As these issues accumulated and several deprecations loomed, we realized we needed a change.
3333

34-
Rewrites are usually a last resort, but in our case, they were the only viable path for Things Cloud. We explored various programming languages including Java, Python 3, Go, and even C++. However, Swift – which was already a core part of our client apps – stood out for its potential and unique benefits. Swift promised excellent performance, predictable memory management through [ARC](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/automaticreferencecounting/), an expressive type system for reliability and maintainability, and seamless interoperability with C and C++.
34+
A full rewrite is usually a last resort, but in our case, it was the only viable path for Things Cloud. We explored various programming languages including Java, Python 3, Go, and even C++. However, Swift – which was already a core part of our client apps – stood out for its potential and unique benefits. Swift promised excellent performance, predictable memory management through [ARC](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/automaticreferencecounting/), an expressive type system for reliability and maintainability, and seamless interoperability with C and C++.
3535

3636
While we initially had concerns that Swift's server support wasn’t as mature as that found in other ecosystems, both Apple and the open-source community had shown strong commitment to its evolution. Swift had reliably compiled on Linux for a long time; the Swift Server workgroup had coordinated server efforts since 2016; the [SwiftNIO library](https://github.com/apple/swift-nio) gave us confidence in the foundational capabilities, and [Vapor](https://vapor.codes) provided all the tools to get us up and running quickly.
3737

38-
Convinced by these benefits and the opportunity to use the same language for client and server development, we embarked on a three-year journey to rewrite Things Cloud. We’ve been using it internally for the past two years, and it has now been live in production for almost a year.
38+
Convinced by these benefits and the opportunity to use the same language for client and server development, we embarked on a three-year journey to rewrite Things Cloud. We’ve been using it internally for the past two years, and it has now been live in production for over a year.
3939

40-
## The new Swift server architecture
40+
## The new Swift-based service architecture
4141

4242
We’ll outline the core components of our new service architecture, highlighting the Swift packages we use. We’ve found that these components work well together to provide reliability and stability, and we believe this serves as a valuable reference point for others considering a similar transition to Swift.
4343

4444
<div style="margin: 2em auto;">
4545
<img
46-
alt="Overview of our new Swift-based back end."
46+
alt="Overview of our new Swift-based service architecture."
4747
src="/assets/images/how-swift-on-server-powers-things-cloud-blog/new-backend-overview.png"
4848
width="840" height="525"
4949
style="max-width: 100%; width: 100%; height: auto; margin: auto; display: block;"
@@ -92,15 +92,15 @@ Now, with over a full year in production, we're pleased to report that Swift has
9292

9393
<div style="margin: 2em auto;">
9494
<img
95-
alt="Comparison between our legacy back end and new Swift-based one."
95+
alt="Comparison between our legacy service and new Swift-based one."
9696
src="/assets/images/how-swift-on-server-powers-things-cloud-blog/performance-comparison.png"
9797
width="540" height="270"
9898
style="max-width: 100%; width: 540px; height: auto; margin: auto; display: block;"
9999
/>
100-
<div style="text-align: center; font-size: smaller; margin-top: 1em;">Comparison between our legacy back end and new Swift-based one.</div>
100+
<div style="text-align: center; font-size: smaller; margin-top: 1em;">Comparison between our legacy service and new Swift-based one.</div>
101101
</div>
102102

103-
And one extra win: Swift’s performance was powerful enough that we were also able to replace the custom C-based push notification service we'd built with a Swift-based one; this significantly simplified our codebase and operations.
103+
And one extra win: Swift’s outstanding performance allowed us to replace our custom C-based push notification service with a Swift-based one; this significantly simplified our codebase and operations.
104104

105105
## Conclusions
106106

0 commit comments

Comments
 (0)