Microservices is a software architecture approach which tries to decouple functionalities which will be served by very focused and small systems. When I say small I mean smaller. These systems will provide their functionalities through a known API.
Therefore this approach will help us to scale up our software systems by breaking them up (good bye to monolithic system problems !!) and having several independent systems very focused on their tasks (hello to distributed computing problems !!). It is important to say that any approach will have its advantages and disadvantages.
How is microservices very popular even for non-heavy systems if we have to be aware of more systems? In my opinion two factors: The Internet service providers and the container technology.
Internet Service Providers
Although was the Docker birth which opened the world of containers to everybody. Docker makes very easy the handling of images and containers and even they offer you an open images store, Docker Hub, by free. But we all agree that we need a private images store because all our code is not open source. In this case, we can install Docker registry in our private server.