|Image: dream designs / FreeDigitalPhotos.net|
A financial software that processes millions of transactions per hour or a mobile network monitoring system that tracks the quality of every single call for an entire country in real-time, now these are example of complex systems which raise serious challenges.
Updating software involve copying files, setting up application and system security parameters, upgrading database schema and possibly configuring startup/cron configurations; that's about it.
So where is this so called complexity? And why is it that, more often than not, it takes less time to develop, test and package a new software update than to upgrade a customer deployment?
Ok, I admit that I'm leaving out some details but the truth is that while it doesn't take a rocket scientist to do software deployment, there are difficulties of a different kind:
- It's a mind-bogglingly dull task: repetitiveness is an attention killer and increased release frequency resulting from agile development processes doesn't help.
- Some applications must be updated on tens of servers. This type of repetition has even worse consequences on the mental sanity of the deployers.
- Previous application configuration parameters must be re-applied to the new update. Since these are not always strictly documented, the safer procedure usually involves a careful and time-consuming inspection of the differences between old and new versions of all the files to copy changes over.
- Implicit knowledge: the documentation of installation procedures is often slim and riddled with unwritten assumptions, relying on the experience gathered by deployment engineers over time.
So don't go looking for rocket scientists. All you need is a bunch of mindless and unerring drudges or ... empower your IT team with good agile deployment software to make their work immensely more efficient and rewarding but that will be another story.