FastRuby.io, a consultancy specializing in Ruby and Rails upgrades, writes about Ruby performance, gem upgrades, and dependency maintenance.
HN commenters cite its Ruby performance charts and benchmarks, and discuss its Rails upgrade experience, with Ruby 3 speed compared to Python.
I've never read such a ridiculous article. I really wanted to give them the benefit of the doubt but good lord. How is any of this simpler or better? It's like they prefer the pain of 2004 mixed with the worst parts of modern infrastructure. The dream of the 2000s really is alive in DHH's head, isn't it?
TFA links to their cloud spend for 2022[0], wherein lies the rub:
> In total, we spent $3,201,564 on all these cloud services in 2022. That comes out to $266,797 per month. Whew!
> For HEY, the yearly bill was $1,066,150 ($88,846/month) for production workloads only. That one service breaks down into big buckets as follows:
What the actual fuck? THREE MILLION DOLLARS? A million for their email service?? I have seen bills much larger, but for what 37signals does I am shocked. There is surely a ton of low hanging fruit to drop the bill despite the claim that it's as optimized as it can get. No way.
Even then, Hey is $99/year, and they claimed to have 25k users in the first month or so as of 2020, that's nearly $2.5MM. I presume they've grown since then. Another 2020 article[2] mentions 3/4 of their users have the iOS app, and the Android app currently shows "50k+ installs" so let's assume we're talking 200-400k users as a ceiling, ignoring attrition, which would pull $20-40MM. Even if it's half that, the cost doesn't seem unreasonable.
They're spending nearly $90k/mo on Hey. Of that the majority is RDS and OpenSearch. TFA makes it clear they know how to run MySQL, why on…
Thank you for replying to give more context.
You have some courage to go to a Ruby project and try to upgrade Rails from 4 to 7. I hope it will go as smoothly as possible. Props to you!
I am not sure if it helps and maybe you know these, but just in case here are 3 URLs I keep at hand when I upgrade Rails:
1. https://railsdiff.org (where it shows diff from sources)
2. https://www.fastruby.io/blog/tags/upgrades (they have some great articles in cases of some upgrades)
3. https://guides.rubyonrails.org/v6.1/upgrading_ruby_on_rails.html (there is page for each version just replace v6.1 with the major version that you need)
And also if you have not already started may I suggest you don't go directly from Rails 4 to Rails 7 but just try to go to each major(ish) version:
Rails 4.0 -> 4.1.x
Rails 4.1 -> 5.0.x
Rails 5.0 -> 5.1.x
Rails 5.1 -> 5.2.x
Rails 5.2 -> 6.0.x
Rails 6.0 -> 6.1.6.1
Rails 6.1 -> 7.0.x
For each version there is an upgrade page. Eg:
- https://guides.rubyonrails.org/v4.1/upgrading_ruby_on_rails.html
- https://guides.rubyonrails.org/v5.0/upgrading_ruby_on_rails.html
- https://guides.rubyonrails.org/v5.1/upgrading_ruby_on_rails.html
You might want to give a try to this gem: https://github.com/fastruby/next_rails. I did not used it so far but I would have a Rails 4 app I will probably try to use it.
So with the promised 3x speed improvement (hooray!), where does Ruby stand with regard to performance, compared to say Python? According to [this benchmark][1], it seems (the 3.0.0-preview1 version was) on average about 2x slower than Python. Are there other benchmarks to compare with?
Looking into it, this other benchmark [2] of 3.0.0-preview1 vs Ruby 2.7 actually concludes there's no real performance improvement there. So I guess an additional question is, is there actually a 3x speed increase in realistic benchmarks?
[1] https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/yarv-python3.html
[2] https://www.fastruby.io/blog/rails/performance/ruby/hows-the-performance-of-ruby-3.0.0-preview1.html
Since they left ruby (2.0) raw rails performance improved by 75% (3.0)
https://www.fastruby.io/blog/assets/images/RRBPerfHistory_720.png
Then in 3.2, ruby released YJIT which improved median rails response time by about 100%
https://raw.githubusercontent.com/easydatawarehousing/ruby_measure_responsetime/main/data/rails_devise/plots/rails_devise_0_overview.png
It's kind of a golden era for rubyists that stuck it out. Beautiful maintainable code that hits C performance for many tasks.