What is Software Architecture ?
Architecture is the fundamental organization of a system embodied in its components (i.e. Web Server, Application Server, Databases,Storage, Communication layer, etc…), their relationships to each other, and to the environment (i.e. deployment environment shared server, dedicated server, cloud deployment, etc..), and the principles guiding its design and evolution.
What is microservice architecture ?
Microservice means developing a single, small, meaningful functional feature as single service, each service has it’s own process and communicate with lightweight mechanism, deployed in single or multiple servers.
Advantages of microservice architecture:
- Each microservice is small and focused on a specific feature / business requirement.
- Microservice can be developed independently by small team of developers (normally 2 to 5 developers).
- Microservice is loosely coupled, means services are independent, in terms of development and deployment both.
- Microservice can be developed using different programming language.
- Microservice allows easy and flexible way to integrate automatic deployment with Continuous Integration tools (for example:Jenkins, bamboo etc..).
- Microservice is easy to understand, modify and maintain for a developer because separation of code,small team and focused work.
- Microservice allows you to take advantage of emerging and latest technologies (framework, programming language , programming practice, etc.).
- Microservice has code for business logic only, No mix with HTML,CSS or other UI component.
- Microservice is easy to scale based on demand.
- Microservice can deploy on hardware or low / medium configuration servers.
- Easy to integrate 3rd party service.
Every microservice has it’s own storage capability but it depends on the project’s requirement, you can have common database like MySQL or Oracle for all services.
Disadvantages of microservice architecture:
- Microservice architecture brings a lot of operations overhead.
- DevOps Skill required.
- Duplication of Effort.
- Distributed System is complicated to manage .
- Default to trace problem because of distributed deployment.
- Complicated to manage whole products when number of services increases.
In which case / requirement microservice architecture best fit ?
When you need to support Desktop, web , mobile, Smart TVs, etc… or you don’t know in future which kind of devices you need to support.
Which products / companies are using Microservie architecture?
Most large scale web sites including Twitter, Netflix, Amazon and eBay have evolved from a monolithic architecture to a microservices architecture.
How independent micro services communicate with each other?
It’s depend upon requirement, normally developers use HTTP/REST with JSON but are free to use any communication protocol.
Why is it that everyone are talking about microservices now?
It’s been nearly 15 years since the concept of Service Oriented Architecture really took hold. With the improvement of RESTful web service and JSON as a data interchange format has made it easier than ever to build easily interconnectable services simply and quickly.