A microservice architecture (MSA) is a logical structure for the design of a software program involving loosely-coupled modular components known as microservices.
A microservice is a discrete component of a larger service that supports a specific business goal and uses a simple, well-defined interface to communicate with other microservices. The modularity of microservices enables scalability for individual components of an application separately according to requirements and minimizes the likelihood that a change made to one program element will create unanticipated changes within other elements. Microservices may be added, removed, renamed, reconfigured, modified and rearranged without affecting each other or the program as a whole.
The microservices approach contrasts with the monolithic architecture, in which elements of the program are interwoven and interdependent, requiring that the whole program be addressed if any element is to be changed.
See Martin Fowler's presentation on microservices at the GOTO developers conference: