Let's first define architecture and then go into the details of microservices. Microservices architecture became a hot term, but there wasn't any formal definition. In fact, to date, there is no official consensus regarding its properties or definition. However, different people have tried to define it. I found a definition on Martin Fowler's blog very convincing. He and James Lewis defined it this way:
The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. -- James Lewis and Martin Fowler
It seems very formal...