A project I have been working on for the past couple of months has suffered from a critical planning error that early on has resulted in time and budget overruns as well as a product that has performance and stability issues. It’s all because the decision makers at the top decided to take on risky technology and design choices anticipating scalability problems before they even have scale.
One thing that I have learned over the years is that you can go a long way on the basics. MySQL or PostgreSQL will scale very well for almost all use cases you are likely to be developing for. In very few cases is the horizontal scalability of NoSQL options worth the complexity it brings. Building out a distributed clustered environment from the start is a sure way to add unnecessary complexity to every subsequent technical decision.
Now the project is over budget and behind schedule. Any work that needs to be done has to deal with an architecture that adds complexity to every software decision and makes deployments more error prone and time consuming.
Lesson learned I guess.. An MVP release should really focus on the keeping things as simple as possible for as long as possible. For a $1M project, a 50% cost/time overrun is a lot of money. Especially when a simpler architecture might have been 50% below the initial budgeted amount.