03.Monolithic Architecture
Monolithic architecture
MONO
- single , LITHIC - stone
Monolithic architecture is like a big
container where in all the software components of an application are assembled
together and tightly packed (coupled).
All the component in monolithic application are inter connected and inter depended. It is deployed as single monolithic application. If you want to scale it, you have to create multiple instance(එකම war, ear file එකේ copies කිහිපයක්) and host them and through a load balancer should be mapped to one(Monolithic application වලදී, application එක scale කරන්න නම් එම application එකේ war, ear fileඑක අරන් එකම server එකේ different port වල host කිරීම හෝ විවිද server වල host කර load balancer එකක් though request ඒවාට map කිරීමයි).
.....................................................................................................................................................................
Advantage of monolithic application.
- Very simple to develop.
- It is easy to deploy because single file.
- It is easy to scale, if we want to scale we can create multiple instances and behind a load balancer those can be accessed.
Disadvantage of monolithic application.
- Large and complex application - if the application is very large, it is very difficult and complex to understand the project and it is very difficult to understand how to correctly implement a change. So quality of application is reduce.
- Slow development - Application and development team is grow, so difficult to understand and modify the project. Large code may cause to slow the IDE so it wastes the time.
- Blocks continuous development – when we change the small modification to the system, we have to redeploy the entire project. But changed is very small. When redeploy it there can be lost some dependencies and failed to start project etc... Redeploy the entire project is risky.
- Unsalable - Each instance of the application will get access to all the data. Which makes cashing less effective increase memory consumption. Different component have different resource requirement. One might be memory insensitive one may be CPU insensitive, but we cannot scale each component independently.
- Unreliable – All are tightly couple, so one component has a bug then entire application will fail.
- Inflexible – One application might have millions lines of codes. But if we want to adapt to a new technology then it is very hard to move it. Because entire application should be adapted to new technology.
Comments
Post a Comment