From Agile to DevOps, thinking about microservices
Most software companies are moving to agile processes, towards automating software delivery, testing and thinking about extreme modularization with the use of microservices.
Agile and DevOps
Agile and DevOps methodologies are very closely linked; without adopting an agile process, you can’t do DevOps.
The DevOps methodology is very much linked to the concept of silo removal at various stages of software implementation. In particular, the breaking down of barriers between the developers, the testers, up to the people responsible for the release and installation.
It is crystal clear that to break down these barriers you have to have teams that are responsible for the entire supply chain: from the requirement gathering to the development, testing, release and installation.
While the DevOps methodology leverages test and installation automation, you always need people to automate testing and modify and improve release and installation processes.
How Agile Helps
Fortunately, Agile methodologies, especially Scrum and SAFe (for large projects) meet these needs.
Scrum in particular, prescribes to have self-consistent teams that are able to handle a requirement from begin to end.
Product Owner is responsible for managing the business initiative, taking charge of the requirement and dividing it into Capabilities, Features and User Stories.
The Product Owner will later share the User Stories with the Scrum team.
Scrum Master together with the team will be responsible for splitting the User Stories into tasks that the team will take charge of.
While splitting the User Stories in tasks, the Scrum Master with the team will estimate the time needed to complete each task.
Scrum team is made up of the Product Owner, Scrum Master and team members who include both developers and quality assurance professionals.
In this way, the team is able to complete the realization of the business initiative, from the requirement gathering to the release and installation.
The frameworks created for DevOps come in handy, allowing to automate the build, test, and release processes as much as possible.
About Microservices
To be able to properly handle the whole process, it is necessary that the software base has been built in a modular manner and that it has been properly documented.
Dividing the software architecture into functional modules and creating a feature model is a good way to document the software.
Functional modules do not necessarily correspond to microservices, a good microservices architecture usually is inherited from a good modular architecture.
The extreme modularization of microservices leads to software management problems that if not addressed correctly will fall on us putting the entire software platform at risk.
Being ready to migrate to a microservices architecture means you have the infrastructure ready for automated testing, build, and automatic releases.
It should be taken into account that with the proliferation of independent software modules some operations that could be managed manually (test, build and release) will have to be automated.
Many times the use of microservice architecture is considered the solution to all the problems, indeed it is the last thing to try after: properly modularize the software in functional domains and try to run more instancies of the software in load balancing to try to solve performance issues.
Final thoughts
Agile, DevOps and Microservices are all very popular concepts and very valid management and architectural methodologies, you just have to be careful not to try to adopt them just because they are trendy but to have a good understanding and evaluate the real benefits for the organization.