A microservice architecture takes a different approach to building software as compared to monolithic applications. In a microservice architecture, the tasks are distributed among multiple smaller software services, which are known as microservices. In a well-designed microservice architecture, each microservice should be self-contained, deployable, and scalable. Well-designed microservices also enjoy clean APIs that allow other microservices to communicate with them. The concept of independent software services working together to reach a common goal is not new; it existed in the past as service-oriented architectures (SOA). However, modern microservices architectures take the idea a bit further by insisting on the software services being relatively small, independent, and fully self-contained.
Let's go back to the online store example...