Ask HN: How do you define the boundaries of your microservices? - avyfain
======
elperdido
I work as a contractor designing microservice arches on AWS. When I talk with
my clients' developers about splitting their app into microservices, I ask
them to use this abridged Unix Philosphy to draw borders:

1\. Make each service do one thing well. To do a new job, build afresh rather
than complicate old programs by adding new features.

2\. Expect the output of every service to become the input to another. Don't
clutter output with extraneous information.

3\. Data structures, not algorithms, are central to complicated systems. The
more universal you APIs, the easier to add new services later.

You can also compare this to functional programming: imagine each microservice
is a stateless function for manipulating you data and outputting the result.

