software master at the intersection of technology, science and art




There is no precise defintion for a "microservice" - perhaps best described as an independently deployable light weight software process. Independent is the key word. The microservice is internally complete - including its own datasource - not shared with anotehr dataservice. The microservice is usually a Bounded Context - as thought of in Domain Driven Design (DDD) A microservice should not be confused with a component used in an in-memory function call. As a Bounded Context, each microservice is organized around a business capability - a singluar business process.

A microservice architecture is an application contining a suite of microservices, communicating with lightweight mechanisms and often publishing as an Http resource API. This architecure is an example of loose-coupling. It is a response to the problems assoicated with monolithic applications and tight coupling. Each microservice within the application my be written in different languages - exposing a REST interface to the world. In summary :

  • Communicate using technology-agmostic protocols such as HTTP
  • Independantly deployable
  • Organized around business capabilites - Bound Context
  • Implementation may use different programming languages, database, hardware and software environment, depending on what fits best.
  • Small in size, message-enabled, autonomously developed, indendently deployed, decentralized and build and released with automated processes.