In monolithic software, we mainly use a three-tier architecture:
Presentation layer
Business layer
Data access layer
Say a traditional web application client (a browser) posts a request. The business tier executes the business logic, the database collects/stores application specific persistence data, and the UI shows the data to the user.
However, there are several problems with this type of system. All code (presentation, business layer, and data access layer) is maintained within the same code base. Although logically we divide the services like JMS Service and Data-Access Service, they are on the same code base and runs under single process context.
Microservice architecture / Microservices tells us to break a product or project into independent services so that it can be deployed and managed solely at that level and doesn't depend on other services.
On what basis do I break down my project into independent services?
So If the project has Inventory, Order, Billing, Shipping, and UI shopping cart modules, we can break each service down as an independently deployable module. Each has its own maintenance, monitoring, application servers, and database. So with microservices, there is no centralized database — each module has its own database.
Benefits:-
Each module is independent so you can choose programming lang. which best fits for module.
Each module has it's own database so you free to choose Nosql or relational. So application is polygot in nature.
So, "The microservice architectural style is an approach to developing a single large 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."
Challenges:-
- hard to debug and trace the issues
- greater need for end to end testing
https://www.dineshonjava.com/microservices-with-spring-boot/
Presentation layer
Business layer
Data access layer
Say a traditional web application client (a browser) posts a request. The business tier executes the business logic, the database collects/stores application specific persistence data, and the UI shows the data to the user.
However, there are several problems with this type of system. All code (presentation, business layer, and data access layer) is maintained within the same code base. Although logically we divide the services like JMS Service and Data-Access Service, they are on the same code base and runs under single process context.
Microservice architecture / Microservices tells us to break a product or project into independent services so that it can be deployed and managed solely at that level and doesn't depend on other services.
On what basis do I break down my project into independent services?
So If the project has Inventory, Order, Billing, Shipping, and UI shopping cart modules, we can break each service down as an independently deployable module. Each has its own maintenance, monitoring, application servers, and database. So with microservices, there is no centralized database — each module has its own database.
Benefits:-
Each module is independent so you can choose programming lang. which best fits for module.
Each module has it's own database so you free to choose Nosql or relational. So application is polygot in nature.
So, "The microservice architectural style is an approach to developing a single large 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."
Challenges:-
- hard to debug and trace the issues
- greater need for end to end testing
https://www.dineshonjava.com/microservices-with-spring-boot/
No comments:
Post a Comment