Microservices are independently deployable, have centralized management of services, and can use its own technology stack. Enterprises of all sizes are adopting the Microservice approach now. There are four major pillars of Microservices- Process, People, Platform and Practice.
In the upcoming blog series, we will discuss what each of the pillars means to Microservices based application and in this blog, we will talk about the first pillar, ‘Process’.
In a high level, Agile is the overarching methodology that fits Microservices well. There are a few key elements essential for Microservices. These elements are
- At the beginning of the Microservices development, at least 3-4 sprints dedicate for defining the software architecture, infrastructure architecture, DevOps architecture, standard guidelines and practices for the Microservices. This is very important to avoid massive reworks and failures later. A general naming, we follow for these sprints are Foundation sprints.
- Once the development has started, multiple parallel scrum teams need to run for the Microservice that are in development respectively. A scrum of scrums needs to run aligning the different delivery goals of the independent Microservices to an overall goal of the product release.
- The Testing strategy needs to be different for the Microservices application. Microservices should not rely on manual testing. Since Microservices are smaller in scope, the time required for this automation testing is generally small and it is simple.
Automation testing is the one that helps majorly in the faster release to market. Microservices without automation testing is a road to failure. The types of tests that each Microservices should develop are
- Unit Tests
- API Tests
- Even-driven Integration tests
- Saga automation tests
- Contract tests
- End to end tests
Again, like any other application, these tests should follow a pyramid with the highest number of unit test cases to lowest end-to-end tests.
- A standardized DevOpsprocess defines for all the Microservices. IAC and pipeline as a code need to adhere. It is highly anti-productive to define this process for each Microservices. IAC and Pipeline code library needs to be available from which each of the Microservices can choose from. If it is very much necessary, Microservices can alter it for their need. This indicates specifically as a task during scrum planning.
- Dependency management highlights explicitly during planning. Developers need the habit of tracking and ensure that their versioning strategy does not affect the dependents. It is highly recommended to use a specialized Microservice dependency tracking system to do this.
- Release process needs an end-to-end automated process for Microservice. The stages for the release pipeline and the approval authorities need to be set in place from the beginning.
- Periodic audits conduct to ensure that Microservices are adhering to the right guidelines.
We will explore other three pillars in the upcoming blogs. Stay connected with Techcello for more information.