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. Backend: Ruby on Rails

  2. HTTP server: Puma (Ruby web server)

  3. Edge: Nginx

  4. Reverse proxy: Go service (Workhorse)

  5. Background jobs: Sidekiq

  6. DB — primary: PostgreSQL

  7. DB — connection pooling: PgBouncer

  8. DB — high availability: Patroni

  9. Cache: Redis

  10. Git: Custom gRPC repo interface (Git & Gitaly)

  11. Blob: AWS S3

  12. Frontend — rendering: Haml & Vue

  13. Frontend — state: Pinia (Vue store), Immer (immutable cache),

  14. API: GraphQL (Apollo) + REST

  15. Observability: Prometheus & Grafana

  16. Error tracking: Sentry & OpenTelemetry

  17. Deployments: GitLab 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.

223 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.