Future is Digging History
SOA and Microservices
In the continuation of last two blogs "IT security" and then "Renovation and Evolution of programming languages" under the concept of “Future is Digging History”, again we will look into an important concept in the software development which is “SOA and Microservices”.
SOA and Microservices (variant of SOA) are very important for Architects and Software designers as technology is changing rapidly, it is very essential to have the knowledge of this concepts to transform the existing applications into new design or even design the complete new application from scratch to adopt the latest technological changes (both hardware and hence programming paradigms).
First of all we will see what SOA is:
SOA stands for “Service Oriented Architecture”, the concept of breaking an application into the independent modules called services and have the way so that they can communicate with each other to accomplish the complicated task.
So, why this is done is to enhance the SDLC, and solve the organizational problems.
It tries to solve the organizational problems like, team is too large to work on shared or compact code base, teams working on different modules of the same application are blocked or can’t make progress due to other modules, and communication overhead becomes gigantic and hence lead to Product velocity stalled.
So, the idea of SOA is to divide the large application into the small modules and provide the way so that they can communicate, and the ways are socket, shred memory, pipes, disk files etc.
The benefit of doing this is it improves the maintenance, working and delivery of different modules simultaneously.
The main focus of this style is to have distributed systems rather than centralized ones.
The building blocks of SOA at broad level are:
1) Service Provider
2) Service broker
3) Service consumer
However, according to the need the application can have many more blocks designed.
Microservices
Microservice is again the variant of Service Oriented Architecture however, it focuses on minimizing the communication overhead and making different modules (services) fine-grained.
The main philosophy of SOA or rather Microservices is “Do one small thing but do it well”.
Services can be viewed as small fine-grained module like simple function in the procedural paradigm handling independent and single functionality.
The SOA and microservices offer above mentioned benefit of modularization, the important aspect of this system is to provide platform and programming language/technological flexibility.
This, means the different modules can be implemented using different programming languages according to the need and the problem particular service intended to solve.
The thumb rule should be kept in mind while adopting Microservice architecture is, it solves organizational problems but causes technical problems.
Some drawbacks are:
Though, this technique is widely used, however there is no universally accepted standard of implementation.
The problems caused by Microservice architecture includes addressability i.e. service discovery, monitoring and instrumentation, distributed tracing, communication overhead and the main aspect of security.
Conclusion:
So, the IT professionals have the great responsibility to correctly design the architecture and break down their product into modules to adopt SOA/Microservies with great caution, so that organization can balance between the Organizational problems can be solved and technical problems can be minimized.
Software Engineer | Programmer | Security Enthusiast
7 年Nice article! Thanks for throwing light on the concept.