Software Development Architecture
Before Micro-services — Monolithic Architecture:
Monolithic architecture used as a big container where all the Software applications and components are connected and assembled together and each components depend on each other so if we change one component that infected or damage other components. It makes a development really easy in one direction and increase the security of software.
Why We Do Not Use To Monolithic Architecture:
- Large and complex application:
The large application is really complex to understand and modify such application. - Slow Development:
Because it can be difficult to understand, how to correctly implement a change and due to that the quality of code declines over time. - Blocks Continuous Development:
Large monolithic application is an obstacle to frequent deployments, in order to update one component you have to redeploy the entire application which interrupts the background task. - Unsalable:
Each copy of application instance will get access to all the data which makes caching less effective and increase memory consumption, so we cannot scale each component independence. - Unreliable:
Because of the tightly coupled components, if one of them goes down the entire system fail to run.
Micro-Services Architecture:
Micro-services are an architectural approach to building applications. As an architectural framework, micro services are distributed and loosely coupled, so one team’s changes won’t break the entire app.
The benefit to using micro services is that development teams are able to rapidly build new components of apps to meet changing business needs. One each micro service can focus on only one single business capability which definitely leads to a better quality.
Features of Micro-Services Architecture:
- Small Focused:
It can be re-written and maintained without any extra efforts by the development team. - Loosely Coupled:
Because each micro service is independent to each other and do not need to code, so if you have to update a particular service, it will only update that service, so a deployment becomes really quick. - Language Neutral:
It must be language nuisance, for example in an application few services can be written in python for fast development, whereas few might be written in java because its speed and extensive libraries, so depend on the micro services what kind of programming language we are using, so it does not really effect the other services. - Bounded Context:
Each micro service does not need to understand the implementation of other micro services.
Advantage of Micro-Services:
- Independent Development
- Independent Deployment
- Fault Isolation
- Mixed Technology Stack
- Granular Scaling
Companies Using Micro-Services: