Death by a Thousand Microservices
I am one of the biggest proponents of microservices.  I helped build the platform at Netflix, I've literally traveled around the world extolling the virtues of microservices.<p>But I also advise a lot of startups, and you know what I tell them nearly every time?<p>Build a monolith.<p>It's so much easier to start out with one codebase and one database, and that will scale for a while.  Especially if you use a key/value store like DynamoDB (although you will lose relational functionality that can be helpful at the start).  And did you know that you can deploy a monolith to Lambda and still get all the benefits of Lambda without building services?<p>And then, when you start growing, that's when you break out an independently scalable part of the system into a microservice (with it's own data store!).  The one that may need to scale independently, or that you want to be able to deploy separately.<p>Microservices takes at least 25% of your engineering time just maintaining the platform.  It's not worth it unless you can recoup that 25% in efficiency.