Mini Maxing - Part 2

The Backend

Intro

Honestly I love backend software development, but more with regards to modeling the data and working out how it should live, what transforms or systems are needed, etc. Never liked worrying about infrastructure nor networking but those are necessities right?

In any case, when starting out on Charoite, I had to see, ok if I wanted to support getting data securely and be able to share that data with my wife, how would I go about this?

The Options

AWS

I had a good amount of familiarity with AWS, but also enough to know how much of a pain in the ass permissioning & networking management is, let alone the price to get started, so this was a no go.

Supabase

Personally I hadn't used PostgreSQL, but it seemed like the right choice these days, and Supabase seemed like a nice out of the box solution. Pricing seemed reasonable and everything else, but I'd still need to host servers somewhere right? Would I want to be on Supabase's hosted service plan, run some Lambdas on AWS, or something else?

CloudKit

This seemed like a cool option, write to users' iCloud, completely federate out the storage and the costs but hrm... still need a backend server right?

The Aha

You probably see where this is going right now but I realized that, if I was content with being stuck in the Apple ecosystem and used SimpleFIN Bridge (the data provider from Part 1), that I could utilize CloudKit + Keychain for a completely serverless (from my perspective) and secure as Apple will make it method of storing and sharing data for users, across Apple devices and users.

With this, I wouldn't have to worry about server costs nor database costs. Nor would I have to worry about maintaining user credentials and securely handling them or sharing data across users. Apple had already handled all that for me (thanks Apple!). Additionally, this made it so that I myself couldn't see others data, unless a user gave me their Apple account login (please don't!).

As a person who loves federated, horizontally scaled compute, on device was about as good as it gets! Super simple, but sure made me excited! The only downside, whelp... now I'd have to pay $100 a year for an Apple Developer License, in order to sign an app to write to iCloud, but that's ok!

Conclusion

By choosing the Apple ecosystem, we're leveraging on device processing & iCloud + Keychain for multi-device & multi-user data sharing, while maintaining no backend servers for Charoite. Since my family has iPhones, it seemed acceptable.

If you're keeping track, currently on $15/yr (SimpleFIN Bridge) + $100/yr (Apple Developer License) in my attempt to avoid SaaS fees, but at least it's been fun!