The intent is to keep the articles simple to help you all understand the basics and ignite the necessary interest to get you looking for advanced topics in this space.
The word Monolith comes from rocks commonly a single piece of Rock, so term is normally used for object made from single large piece of material.
Application developed with Monolithic Architecture has single code base with multiple modules. Modules are divided as either for business features or technical features. It was also called Multi-Tier Architecture sometimes as they were divided into three or more layers.
Industry was using this approach since long to develop enterprise application. It did have it set of challenges like Large code base makes complicated to understand, especially for new developer, Scaling, Continuous integration/deployment become complex and time consuming and extremely difficult to change technology or language or framework because everything is tightly coupled and depend up on each other.
The paradigm shift from traditional browser/desktop to mobile/smart devices and the enterprise needing to serve data to different devices and form factors (smart phone, tablet, handheld, etc.) anytime, anywhere, on fingertips. To develop mobile application enterprise, need to expose data using Application Processing Interface(API) because legacy data exchange format was not compatible with mobile applications. This was a driver for the software architects to explore alternate techniques.
In 2011 at workshop of software Architects they started using the term “microservice” to describe what the participants saw as a common architectural style that many of them had been recently exploring and the same group decided on “microservices” as the most appropriate name in 2012.
In Microservice architectural style the approach is to build large enterprise application with multiple small unit called service, each service is developed, deployed and tested individually. Each service intercommunicates with a common communication protocol (API). Each service run individually either in single machine or different machine, but they execute its own separate process. Each service may have own database or storage system, or they can share common database or storage system. The benefit of decomposing an application into different smaller services is that it improves modularity as each microservice is small and can be focused on a specific feature/business requirement, microservice can be developed independently by small team of developers, deployments of the microservices can be independent so flexible.