github.com/nanovazquez
An approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.
There's a desire to build systems by plugging together components, units of software that are independently replaceable and upgradeable.
...splitting up into services organized around business capability.
...preferring the notion that a team should own a product over its full lifetime ("you build it, you run it")
...aimed to be as decoupled and as cohesive as possible, receiving a request, applying logic as appropriate and producing a response.
...using the right tool for each job, instead of the same language/technology every time
...letting each service manage its own database, either different instances of the same database technology, or entirely different database systems (polyglot persistency)
..but also be designed so that they can tolerate the failure of any service at any time
...and the ability to make frequent, fast, and well-controlled changes to software.
(a little bit of)
(what we learned)