Published 30 June 2020
The launch of the Hey email platform was one of the largest application launches in 2020. It was reported that they had over 150k users signed up, so I thought it would be interesting to see what we could find about the tech stack. Luckily dhh shared some good information.
MySQL for the database, plus Vitess for DB sharding. Redis for caching and short lived data. ElasticSearch for searching and all on Kubernetes running on AWS. He doesn’t specify if they are running their own kubernetes cluster or using EKS
The overall architecture uses what he calls the Majestic Monolith pattern, which is the opposite of the micro services oriented architecture.
After reading several of his tweets it seems to me that the architecture is really more of a Citadel, which is also something he labeled.
His comments on GCP were very interesting, obviously a bad experience but doesn’t give more details around when this happened.
For email processing it’s just standard Postfix so nothing special there, but that’s the theme stick with battle tested technology.
Why MySQL over Postgresql? He made another comment, I didn’t capture that he is just used to MySQL.
They practice Dry principles and extract out common code.
After the battle they got in trying to release the update to their iPhone app, not being a fan of Big Tech is to be expected. They want to bring things on prem in the future, but was happy to have the cloud scaling during the launch.
The On-Prem costs he calculates are much smaller than the cloud. This is a huge point of contention and is debated in many circles, for small companies it may be easy to calculate on-prim costs but for large companies there are so many hidden costs it’s hard to say.
He’s a big fan of Kubernetes, and I agree with him! Kubernetes is one of the few pieces of infrastructure code I’ve ran that lives up to the hype.
The trend towards HTML over the wire instead of JSON apis is something to watch over the next couple of years. With Phoenix Liveview and Laravel Livewire gaining in popularity, I would not be suprised if the secret sauce is some type of DOM diffing on the server for Ruby on Rails.
© 2020 Mergate Solutions, LLC. All rights reserved.