2. Run into inevitable performance problems
3. Decide that your database is at fault, rewrite in NoSQL
4. Buy into NoSQL hype, push 5x resources on your NoSQL solution
5. Profit?
There are NoSQL options that are great for lots of things. It takes some significant expertise to know if your thing is one of those things. Expertise you probably don't have if you don't even have a moderately deep knowledge of RDBMS-es.
> Buy into NoSQL hype, push 5x resources on your NoSQL solution
NoSQL is so last year, NewSQL is the future!Is easy to overlook how much you can do with a decent RDBMS. And for the small data that gitlab use, I believe still exist a lot of big wins on performance.
Is just that the new generation not pay much attention to Sql databases...
P.D: I don't mean the gitlab developers, just on general
Edit: I would also add that most projects I've seen tend to undergo one or more large refactors / redesigns before growing to a size where complex DB scaling is needed. This is, of course, speaking from the perspective of a small startup or pet project. If you're writing a new feature for an existing product where you can assume that it'll have lots of users, then you would obviously build scaling right from the start.
And the cost of building the solution from the onset is hardly a killer. The pain usually comes from operational complexity.
You never actually know where your bottlenecks are going to be until they arrive and by designing everything with a "super scalable" architecture you will be making development ten times as painful and expensive as it needs to be while throwing away nice things that come "for free" and "just work" at the mid-low end like transactions.
Amazon and Netflix don't want to have to use their hideously complex and inefficient service architectures - they're forced to because of their scale.
Most people who engineer their systems for hyper-scale from the get-go never see a whiff of anything that looks remotely like high traffic. Often they go out of business before they get anywhere near that.
And once you get to serious scale, you really shouldn't still be running the code from back when you didn't really know what your business/product was.