Micro web-services is the new way for architecting software applications. These services are independent and autonomous and bring more scalability in the applications. As told by Martin Fawler in his book “micro services are used to compose complex applications by using small, independent (autonomous), replaceable processes that communicate by using lightweight APIs that do not depend on language.
This is an architectural approach to software development where a larger application is built by composing a suite of smaller services in modules. These are independently versioned , customer focused and scalable. Each independent micro-service is focused on a specific business goal or a set of related business goals and internal communication takes place through standard protocols. As the need may be, each micro service can be written independently also since there is a provision of modular boundaries. Hence, individual development, deployment and management becomes possible, albeit it may not be always required. Since this is scalable, it is most appropriate when the business needs to provide support for a large range of platforms or devices such as web, mobile or the internet through cloud computing.
Designing Micro Web-services
While designing micro web-services, certain basic elements should be kept in mind. To say a little – they should be oriented towards the business, should be easily adaptable to multiple related business areas. In order to do this they should be autonomous yet loosely coupled at the same time. These micro web services should have cross domain integration through experienced APIs. These APIs need to be effectively managed in order to decentralize the micro service which is essential for effective service delivery.
Following the below aspects would lead to an effective micro web service design.
1. Clearly define functionality expectations
Monolithic architecture has a lot of coding and hence differs in its functionality. The first thing therefore is to define what are our functionality expectations from a micro web-service in terms of its length and breadth of implementation. This can be defined in terms of logical functionality, organisation structure and the team capability. Careful breakup of a single application into multiple cooperating services should be done at the very beginning.
2. Build application connect through API protocol
Once the breakup is done, a connection needs to be built between each sub application to ensure reliable sending and receiving of data. This can be done with REST web services API calls or other similar transport mechanisms. However, an offline pen paper exercise is recommended before beginning the API coding exercise.
3. Assess and streamline expected load
Successful API Coding brings the next tasks of managing the expected and unexpected traffic load on the system. This can be done by designing effective communication mechanisms for underload, overload and request for backpressure such as redirecting the load elsewhere.
4. Monitor meticulously
Monitoring systems should be placed in a way that they can capture application-created log information and a monitoring agent should be placed on each service instance. It is ideal to use a monitoring system that can identify and display events based on a common timeline and can support root cause analysis.
Micro web-services Benefits
Independent freedom to develop and deploy a service through the web.
Since they are built independently, if one fails the other can continue to be operational.
The possibility to build the service in more than one languages.
Automatic deployment and easy integration through open source tools.
Its ability to provide continuous and almost seamless delivery.
Easy to understand, execute or modify, thus making it readily adaptable for new developers.
Possibility to spread the components of the service across multiple servers and data centres. This allows easy spread and reach.
The larger the application, the higher the number of codes and increased difficulty to manage.
Refactoring the code base is difficult since the end impact on the entire service is not clearly visible as each unit is developed and works in isolation in a way.
There is a need for coordination amongst multiple services which can be time consuming and have an impact on productivity.
There is a need to manage multiple databases and transactions. With the ever evolving application development trends web developers and firms must do appropriate due diligence to decide between the traditional monolithic architecture and the new age micro web-services. Speedy development cycles, software scale, performance, and flexibility are just some of the advantages of the new age architecture and hence must certainly be considered as an option. Many well known firms have deployed micro web-services successfully today. Some of them are Netflix, Amazon, Uber and eBay which are independent case studies in themselves.