As it stands, there is not an agreed upon formal definition of microservices architecture. The easiest way to think of the concept is that it is a method of developing software applications. The way it differs from other approaches is the software application developed is made up of independently deployable, modular services where each service serves a business goal by running a unique process. In short, the microservice architectural style is just another way to approach development of a single application. It's key differentiating factor is that it develops via a suite of small services, each running in its own process and communicating with lightweight mechanisms.
Often referred to as just microservices, this method of development has grown in popularity over the past few years and one company utilising it, is Codebots.
One of the benefits of microservices is scalability, which makes it particularly well suited for projects that require support for a range of platforms and devices. The way in which an application can be built with scalability in mind is to design with concurrency and partitioning in mind. At the end of the day, scalability is linked to the processing of tasks. It also is found to be useful for development where the final device that needs to be supported isn't known.
Monolith applications are built as an autonomous unit and singular in design. This doesn't ring true for microservices, in fact it is the polar opposite. This means there are issues surrounding change cycles in a monolithic architecture because they end up being tied to one another. This presents a big risk if or when any modifications need to be made. Say you want to modify just a small section of your application, with a microservices architecture this isn't a hassle. With a monolithic architecture, you might end up building and deploying a totally new version of your application.