Although there is no common definition for what a microservice is, there are a couple of common characteristics that definitions of microservices share. Those are:
1) Microservices are small, individual and independent components of software that, together, make an application.
2) Microservices are business-oriented, which means that the software architecture focuses on business purposes, such as a business capability, a particular product or service.
3) Every microservice provides a small piece of software to a greater purpose. Therefore, microservices regularly communicate with each other when in operation.
4) A major purpose of microservices is that they can be developed and deployed independently from each other. This leads to a decentralization of development teams in practice, which enables them to develop and deploy faster and with less dependencies and constraints.
5) Due to the modular architecture and the increased amount of communication interfaces between the microservices, errors and failures can be analyzed more precisely. In addition, microservice architectures are usually designed in such a way that they still function in the case that single microservices provide errors.
6) A microservices architecture is often used in areas that are continuously developed further. In such environments, the advantages of independent development and deployment, as well as failure tolerance is of highest importance.