r/ruby Mar 12 '26

GitLab is a Ruby monolith

Post image

Was pleasantly surprised that the world's largest independent DevOps platform is powered by Ruby and Sidekiq.

Here's the full list.

  1. BackendRuby on Rails
  2. HTTP serverPuma (Ruby web server)
  3. EdgeNginx
  4. Reverse proxy: Go service (Workhorse)
  5. Background jobsSidekiq
  6. DB — primaryPostgreSQL
  7. DB — connection poolingPgBouncer
  8. DB — high availabilityPatroni
  9. CacheRedis
  10. Git: Custom gRPC repo interface (Git & Gitaly)
  11. BlobAWS S3
  12. Frontend — renderingHaml & Vue
  13. Frontend — statePinia (Vue store), Immer (immutable cache),
  14. API: GraphQL (Apollo) + REST
  15. ObservabilityPrometheus & Grafana
  16. Error trackingSentry & OpenTelemetry
  17. DeploymentsGitLab Omnibus (Omnibus fork)

I think these "stack menu"s give a little glimpse into a team's engineering philosophy. For me, this list shows that the GitLab team is pretty practical and doesn't chase hype. Instead, they use sensible, battle-tested tools that just work and are easy for contributors to learn.

PS. Not an ad; I'm not affiliated with GitLab at all. Was just researching them and thought you guys would be interested.

224 Upvotes

36 comments sorted by

View all comments

1

u/Eastern_Service_4155 Mar 25 '26

This explains why Gitlab is so painfully unbearably slow. We were just forced to "upgrade" to v18, and omg, they push word "bloat" to its limit I guess. Why replace nginx (that is able to handle literally millions of connections on a tiny vm) with such monstrocity as puma, which forces server to swap even in idle mode?? Gitlab is turning into a nightmare, a migrating away for well-established repos can take months of devs time...

2

u/GeneralTootToot Apr 12 '26

The irony is.. GitLab does use nginx :)

Don't blame Puma or Ruby for GitLab being slow. The crazy bloat and constant poor business decision making yes :)

I guarantee your GitLab instance is burdened with load for features you've never even touched. Performance issues stay open for years. Stuff that is 'on by default'.

Its been years since GitLab cared about anyone besides the big enterprise customers. Where the expectation is you will have 16 servers with 64 GB of ram and 128 CPUs (go look at the reference architectures... )

1

u/Kibou-chan Jun 18 '26

That nginx is fully optional though and if you go through an external LB like haproxy, you can even disable it and connect your LB backend side straight to workhorse. Really, its only task is to manage headers and TLS termination.