If you are wondering what are some of the characteristics of micro-services, I hope you find the brief blog useful.
Microservices are decentralized by nature. A single unifying schema or data model is not required from them. They also do not have to reside close to each other geographically.
Microservices are independent of each other. They can be deployed, upgraded, maintained by independent teams and also on independent compute and storage. For instance one team may be responsible for front end and another may be responsible for backend.
Microservices are polygot in nature, they don’t follow “one size fits all” approach. They take independent approaches to programming tools, and also programming languages. For instance, one team may choose Java, and another team may choose Golang for programming.
Microservices are good at doing “one thing” well. They don’t have to do more than one thing. For instance, in case of a social network online application, a microservice may be responsible for just authentication, and nothing else.
Microservices are independently managed. They can be upgraded or changed independent of each other.
Microservices are ‘black boxes’, in the sense that they hide the implementation complexity from each other. Using a previously agreed communication method, such as REST API, they can avoid knowing details about how each other work.
Some of this material is credited to AWS whitepaper on microservices that can be found here.