Many of us already know that Microservices are being adopted for every new enterprise application that is being designed to scale. Many existing monolithic applications are being migrated to Microservices to meet the new age business needs. In bird’s view, Microservices will appear like the simple set of REST services grouped by specific functionality, but when we dig deep, Microservices internally contains many intricate processes that we need to handle with care in order to get an effective output. Tools that we choose at each stage or for each process, will play a bigger role in defining the success of the overall ecosystem. This series of blogs will cover all those intricate processes and popular tools at each level and compares those tools on certain important attributes specific to that area. After reading these blogs, you will become familiar with many tools that are available in microsystems and knowledge to make a better decision on which tool to use for a given need.
Microservices Ecosystem:
In general, Microservices system contains following listed entities. Some of these entities are phases in standard software development and some of them are Microservices specific processes which will provide the backbone for efficient microservices system.
- Design
- Documentation
- Development
- Unit Testing
- Integration Testing
- Load Testing
- Continuous Delivery
- Containerization
- Monitoring
- Load Balancing
- Service Discovery
- Auto Scaling
- Inter Service communication
In this series, we will be starting with the microservices design and documentation tools with their specifications and comparison.
Design:
Design plays a vital role in Microservices. This is the phase in which we identify the bounded context for the microservice that you are going to develop. In this phase, we decide the contours of given microservice and different endpoints that a given microservices contains.
Tool | Swagger | Rapido |
Collaborative design | Collaboration option is there in commercial version(SwaggerHub). Open source does not have it. | Did not find any collaboration option |
Skeleton Code Generation | Support is there. It supports many languages | Did not find an option for Code Generation |
Sketch | Plain text in YAML format | Sketch option is there which in turn can generate text |
Open API 3.0 Support | It supports 3.0 and all lower versions | Support is there for 2.0, yet to upgrade for 3.0 |
In general, Swagger appears to be more equipped to handle the current needs and Rapido is yet to catch up on many fronts.
Documentation:
Documentation ensures common understanding across multiple stakeholders like Designer, Developer, and Integrator. All the endpoints will be documented with input, output along with possible error codes.
Tool | Swagger | API BluePrint | RAML |
Generated Documentation | Yes, it supports | Yes, it supports | Yes, it supports |
Format | YAML | MarkDown | YAML |
Stub Generators | Stubs can be generated for multiple languages and support multiple REST formats within a given language | Supports but not as extensive as Swagger | Supports. But need to use different tools to document APIs for different technologies. |
Web-Based Editor | Yes. It is there. You can document API at https://editor.swagger.io | You can document API at https://app.apiary.io. But sign-in is mandatory | Did not find pre hosted web editor |
In documentation also, Swagger is better equipped to handle the current user needs. If you have enterprise level need, SwaggerHub can help you in a big way.
Summary:
In this blog, we have covered different processes which are involved in the Microservices ecosystem, tools and their comparison for Design and Documentation. I hope now you became familiar with some of the tools that are available in microsystems and knowledge to make a better decision on which tool to use for a given need.
In the next blog, I will be covering Development and Testing phases.
At Walking Tree, we are excited about the possibilities that Microservices brings in. Subscribe today to our blog for more articles on this topic.