[[Microservices MOC|Microservices]] are prevalent in discussions in the serverless community. Many of the tools assume the use of them. Some folks love them. Some folks assume that serverless applications are by definition, microservices. But do they add to the complexity? They're undoubtedly useful in large systems with multiple teams but do these benefits at scale help teams getting started on a new product? Some specific questions: - ==A huge benefit of serverless is [[Faster time to market]] and lowering the barrier of entry to highly scalable backend APIs & services. Do microservices make this easier?== - "https://twitter.com/dabit3/status/1255566923510800386?s=20" - Serverless already has a large learning curve. Adding "learning microservices" into the curve is yet another leap. - Do microservices architectures [[Prioritise scaling over shipping]]? - What are the benefits of using microservices to a small team (<5 developers) working on a new product? - Potential for re-use of cross-cutting services (e.g. an email service ). But could this simply be achieved by code-sharing of libraries? Or does it need to be explicitly deployed separately? Getting into need to define a microservice here. I think deployed - Should *any* greenfield product use microservices from day 1? Assuming a single team. - Are the boundaries clear enough while user requirements are in high flux? - Are there benefits of using microservices within traditional server-based architectures that are not as strong or no longer exist for serverless architectures? Possible examples: - Scalability of compute for a single operation. You already get this from single-purpose Lambdas which can easily exist within a monolithic serverless application. - When I'm starting a new project, do I need to decide what microservices my application will need? Currently due to the [[CloudFormation resource limit]] I need to do this otherwise I have pain coming down the road in 1–2 months. This is forcing me to split my deployments even if I don't want to. - The drawbacks of microservices are felt earlier in the development phase than their benefits. - Observation: [[Distributed Monoliths]] is an almost pejorative term, but does it deserve this? ## Potential objections: - Am I painting myself into a corner by building a monolith from the outset? What is the cost of microservice extraction down the line? ## See Also: - [Services, Microservices and Stacks](https://serverlessfirst.com/service-microservice-stack/) - [[How Big Should Microservices Be (video review)]] --- ## References - [Is a CloudFormation stack of Lambda functions a monolith?](https://twitter.com/brianleroux/status/1452778047430529032) - Twitter thread by [[@Brian LeRoux]] -