Hey there, welcome back friends in this video we will talk about micro services. micro services is the modern approach of application development. And this is the way to go. So let's discuss about micro services. All right. So first of all, to start with how usually we develop application applications are developed using the monolithic approach as of now, where everything is in one place, we deployed the application into a single web server and the deployment is on a single system as a result, there could be issues now what are the issues is something which we'll discuss all right.
So as of now, when we have only a single application, there will be a high level of inter dependency right. So, for example, Class A calls Class B, Class B calls Class C and There could be a high level of interdependency. There is no categorization of stuff, right. So this could be very tedious. Now moving forward, there could be a solution for reducing the complexity, reducing the dependency. And that could be the modular approach.
For example, we create packages, we create modules in our application. And that could be like inter module communication and outer module communication. But still, all of the modules are inside the same application. And we deploy the application on the web server, or on the local server. This approach is a better approach where we create modules where we create packages, but distill all of these stuff is part of a single application and will deploy it in a single machine. As a result.
It could be little tedious to scale these kind of application and it could be little tedious to load balance. So take a note of it. We will discuss more about this thing in just a minute. All right. Now moving forward, for example, a user uses a application for the user, the web browser, or the interface of the application is the application. The user doesn't know how the application will work.
Internally. As a result, it doesn't matter for the user, whether we are making use of modular approach whether we are not categorizing stuff properly. Or it is based on microservices for user it is just an application or right now friends for example, there is a code update in one of the module in our entire application, what would be the outcome we need to test the functionality based on that module. Moreover, we have to also test functionality of other modules which are based on the module as a result in order to obtain predate monolithic application, we have to test it thoroughly in order to release in order to release updates. The reason why we have to test a monolithic application properly The reason is very simple that is an is dependency. When it comes to monolithic application, there is a high level of dependency when compared to micro services all right, and definitely the obvious.
Disadvantages also monolithic application are difficult to load balance, monolithic application is difficult to manage difficult to update difficult to scale. Alright. Now, let us quickly discuss about the disadvantage. First disadvantage is monolithic applications are difficult to maintain lack of scalability, we can scale micro services based applications further and further. There is no issue but when it comes to moral ethic application scalability is definitely a issue, then redeployment, the entire application on each update yet another issue as monolithic application is a single piece of code, we have to redeploy the entire application to see the changes to see the updates alright. Then the next very important disadvantage is reliability, there is an issue of reliability, because when we update a specific part of the application, it may break some other part in the application as a result, it is kind of little unreliable, unpredictable when it comes to working with a monolithic application.
And finally, it is a little difficult to adopt new technologies when we develop application using the monolithic approach All right. Now moving forward, let us discuss about micro services. What exactly is a micro services normally microservices are a web based application or a network based application where the communication is based on a network. And we also have a distributed deployment. We can like divide the application into small little micro services and deploy every micro services in different deployment and environment. And we simply use these small little apps and intercommunication is based on the network.
Very simple. Alright, so now let's discuss about micro services. For example, we have this monolithic application, we can divide this monolithic application into four micro services, namely, app one app to app three and four, and the communication will be based on the network. And these apps will be deployed into different system, the entire communication will be held, and for the user, the user will be using only one single application For the user, how the application is working is something the user will not bother the user will not understand how application is working for the user application will work as it is, but in the background there will be small micro services, which will be working with each other. Now, friends, the internal communication between these micro services are done on the network and how to create micro services, how the communication will take place and all those kind of stuff is something which we will discuss as of now, we need not to worry about the internal communication stuff as of now, let us quickly check the advantages of the micro services architecture, all right.
So, first of all complexity get reduced by decomposition. So, we can create micro services and micro services are independent. So for example, Team A works on microservice a, Team B works on micro service B and so on and so forth. As a result as we divided stuff and we conquer the complexity, the complexity definitely get reduced because there is a decomposition we decompose we distribute, we categorize the work and the team focuses on only one category, only one microservice. As a result complexity is much reduced when compared with monolithic application, then micro services to be developed independently, as I have already specified, microservices can be developed independently and micro services can be worked by an independent team. As a result micro services can be developed independently.
Micro services can be developed using any technology This is definitely a very important advantage. Now, it doesn't matter which technology is used to develop the micro service may be any technology for example, there is a micro service with the name a, there is a jet another micro service with the name B. Now, a micro service is developed using Java but be microservice as it developed using dotnet. But still, these two micro service will be able to communicate with each other, they'll be able to work with each other. So, when it comes to micro services, any technology can be used in the application infrastructure, which is nice, which is cool. As a result, it reduces the barrier of adopting new technology, we can use any technology in our entire application for developing different micro services.
Right, so this is cool. Now, each micro service to be deployed independently as a result, we can deploy a new micro service we can restart Micro service, we need not to worry about restarting or redeploying the entire application. So, yet another advantage where each micro service needs to be deployed independently alright. So, these were a couple of advantages. And based on these all advantages, we can say that micro service based application can be scaled can be scaled independently and micro service based architecture is more scalable infrastructure. Alright, so that's it for today.
I suppose you enjoyed this video. Thanks for watching. Have a nice day and take care