I have been involved in early stage teams where on day one it's decided to have a seperate frontend app ( usually React ) with a seperate API / Backend ( usually Rails ).<p>When it comes to team size, if you're building a team and a SaaS app, what size team would you want a generic SaaS app as a Monolith vs team size for SPA + API backend? What impact would available team size have on architecture decisions? E.g. a team of 2-3 vs a team of 12 vs 30.<p>I think the Google/Facebook/AirBnB/etc way of doing things isn't suitable for a lot of small teams, however it is the latest hot tech that always seems to get implemented in early stage startups. How should available team size impact technology choices? Any rules of thumb here?
Focus on how you wish to share your code, and what features you need to deliver. If you're developing multiple small applications, it might make sense to build some re-useable core libraries after you've assembled the first one (do it too early and you'll be trying to 'bake an apple pie from scratch').<p>Need variations and reuseble front-end components? Package em up and take advantage of es modules.<p>Need to share common business logic? Package it up and share ruby modules.<p>At a certain point, you'll find domain boundaries within these, and be able to split them based on their use (delegate authN/Z to an sso "service").<p>Microservices (when not taken to an extreme) help build a pathway to re-useable code, much like TDD helps you write code that doesn't abuse side-effects, static classes, etc.<p>Don't split them out too early or you'll spend all your time keeping all these dependencies in parity - don't want to serve a raw steak or a burnt one.