Microservices Overview
A modern architectural style and an approach to software development
Craig Pilkenton

Microservices is a modern architectural style and approach to software development where applications are built as a suite of modular services that are kept as small, scalable, and customer-focused endpoints with specific business goals.  Being independently deployed and scaled, each service provides a firm boundary of what business case they are solving for.  They are also designed to be independently scalable for reuse by many other applications.

The primary goal behind this type of development methodology is so that applications become easier to build and maintain when broken down into smaller, composable components.  They can then work together in an application to become the sum of its constituent components.  Responsible for highly defined and discrete tasks, these separate modules communicate with each other through universally accessible APIs, running independently of other services and consuming applications.  This focus on decoupled services also allows for increased fault tolerance in our applications.

This whitepaper lays out the case for organizations to increase the maturity of their development methodologies from legacy n-tier design patterns, also known as monolithic systems, to the more modern microservice architectures.  Moving to smaller, focused services within your development groups allows for increased scalability and is considered particularly ideal when supporting a range of platforms such as cloud, web, mobile, and Internet of Things (IoT).