The term “Microservice Architecture” has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around evolutionary design, decentralization, deployment automation, and a smart-endpoints / dumb pipes approach to networking.