Monolithic , Microservice Architecture
In this article,we will talk about Monolithic , Microservice Architecture and the difference between them .
Monolith Architecture (Traditional Web Application Architecture) means composed all in one piece. The Monolithic application describes a single tiered software application in which different components combined into a single program from a single platform. Components can be:
- Presentation —> responsible for handling HTTP requests and responding with either JSON/XML (for web services APIs).
- Business logic —> the application’s business logic.
- Database layer —> data access objects for accessing the database.
- Application integration —> integration with other services (Ex . via messaging or REST API). Or integration with any other Data sources.
- Notification module —> responsible for sending email notifications whenever needed.
the application is built and deployed as one Application for all platforms ( desktop, mobile and tablet) using RDBMS as a data source. Benefits and Drawbacks of Monolithic Architecture.
Benefits:
- Simple to develop — At the beginning of a project it is much easier to go with Monolithic Architecture.
- Simple to test. For example, you can implement end-to-end testing by simply launching the application .
- Simple to deploy. You have to copy the packaged application to a server.
Drawbacks:
- Maintenance — If Application is too large and complex to understand entirely, it is challenging to make changes fast and correctly.
- The size of the application can slow down the start-up time.
- You must redeploy the entire application on each update.
- Monolithic applications have difficulty to adopting new and advance technologies. Since changes in languages or frameworks affect an entire application, it requires efforts to thoroughly work with the app details, hence it is costly considering both time and efforts.
Microservice Architecture are an approach to application development in which a large application is built as a suite of modular services . Each module supports a specific business goal and uses a simple, well defined interface to communicate with other sets of services.
Instead of sharing a single database as in Monolithic application, each microservice has its own database. Having a database per service is essential if you want to benefit from microservices, because it ensures loose coupling. Each of the services has its own database. Moreover, a service can use a type of database that is best suited to its needs.
Benefits:
- Microservices Enables the continuous delivery and deployment of large, complex applications.
- Better in testing because services are smaller and faster to test.
- Better in deployment because services can be deployed independently.
- It enables you to organize the development effort around multiple teams. Each team is responsible for one or more single service. Each team can develop, deploy and scale their services independently of all of the other teams.
- The application starts faster, which makes developers more productive, and speeds up deployments
- Microservices Eliminates any long-term commitment to a technology stack. When developing a new service you can pick a new technology stack. Similarly, when making major changes to an existing service you can rewrite it using a new technology stack.
Drawbacks:
- Developers must deal with the additional complexity of creating a distributed system.
- Developer tools/IDEs are oriented on building monolithic applications and don’t provide explicit support for developing distributed applications.
- Developers must implement the inter service communication mechanism.
- Deployment complexity. In production, there is also the operational complexity of deploying and managing a system comprised of many different service types.
Now The Difference between Them is explained so we will in the next Article that will explain example on Microservice Architecture by using one Of the best framework in microservice (springBoot) .
Thanks .