I'm developing a web app with a fairly standard technology stack (postgres, spring boot). While plugins and microservices will play an important role, my backend is currently monolithic.
Today I had an insight into cloud/container/kubernetes. Now I'm wondering if I should take the time up front, review my application against 12 factor, and invest time to redesign where necessary. Or if this is one of those "this is way cooler than adding functionality, let's refactor" temptations which can lead to spending way to much time on things which don't help to get the first paying customer.
And yet, if I leave it for now, won't I kicking myself for not having ascertained scalability? Has anyone already gone down one of the two roads?
No you probably shouldn't worry about it at this stage. Some stuff makes sense up front for every app. Just looking at what the 12 factors are again 1, 2, 3, 10 are fairly standard things you should almost always be doing and a good place to start. The rest of them often make sense but I wouldn't worry about working through a checklist for it.
Knowing that you can scale the front end horizontally across servers doesn't mean you know you can scale. You likely won't actually learn your issues until you need to scale so trying to optimise it upfront isn't worth it and short term you can always scale up like stackoverflow.
Thanks Shawn and Connor for your replies, it clearly tells me to take some notes for my backlog and move on. Greatly appreciated!
My experience (and one I just fell foul of) is that you should do pretty much whatever you can to get out of the door as quickly as possible. Code quality is great and all but if that's going to be a burden on you when you could be releasing, I'd opt for releasing and worry about scaling later.
I personally just tried to build an MVP in a new language I was excited about and spent so much time building tools I already had in my natural stack that I have finally switched back and I'm starting from scratch, knowing that getting something out the door that might be rough around the edges is the priority right now.
A beautiful, fast and scalable half-done product has exactly 0 customers and I'm painfully aware of this right now.