When working with cloud and IP systems we often hear the word “agile” liberally used and sometimes even the term “agile mindsets”, but what does agile really mean and why is it so powerful?
It’s difficult to know which came first, the agile mindset or the microservice. In all likelihood, they emerged simultaneously, and in my view, they are two sides of the same coin. Microservices have some synergy with object-oriented code as they have both tried to provide well defined interfaces and operational independence from the main application. The principal difference is that microservices have achieved this with much greater effect, especially when we look at them in the context of containers.
Although object-oriented design went someway to help developer collaboration, software maintenance was difficult to achieve especially as programs grew and hundreds and thousands of sub modules were created that needed to be linked into the final code causing interface and compatibility challenges. And as I remember correctly, a heart stopping moment always occurred whenever the code was deployed to the production servers.
Microservices run as relatively small stand-alone applications in their own container environment away from the main application. If a microservice crashes, then it won’t take down the rest of the well-designed calling application with it.
The main application becomes more of an orchestration system calling microservices to meet the needs of the specific workflow. Furthermore, as a workflow becomes busier, microservices can manage themselves to create extra resource to meet the needs of the workflow in question.
For me, this microservice approach is key to understanding what we mean by agile as we can develop small parts of the system bit by bit and do the least amount of work necessary proving the system along the way. The agile term for this is Minimum Viable Product (MVP) and combined with the speed with which microservices can be programmed and deployed, MVPs release massive potential for broadcasters who are building and transitioning to cloud and IP systems.
Often contrasted with the waterfall method of project management, where the Gant chart seems to be obsolete seconds after its published, agile project management allows us to look at a particular function in isolation. This helps us focus on the detail of its activity without having to be too concerned about the detail of the “bigger picture”. Obviously, the bigger picture is incredibly important, but how many projects have you worked on where the user requirements quickly change as new information becomes available? MVPs and agile allows us to gain and use new information as it emerges.
Although we must always have one eye on the result, the here-and-now philosophy of agile development and mindsets encourages and helps us focus on the functionality we must deliver today. In this fast-paced world of continuous change agile provides the methods that empower us to deliver quickly and accurately instead of getting bogged down in meetings and reports. In other words, write the minimum code necessary, test it, deploy, gather feedback from users, and repeat. Or more succinctly, just do the work!