I first heard the word “agile <something>” about 10 years ago, I do not have profound experience to what “agile <something>” really is, but I do know that the key of “agile <something>” is a breakup of the traditional way of doing <something> and this agile way is coming out of necessity because the traditional way simply cannot get <something> done as traditionally expected.
In recent years, there are many “agile” terms popping up, like agile development, agile project management, agile requirement management, and agile methodology etc, but I seldom hear “agile database administration” (I only see one blog using this term: Agile Database Administration, by Stuart Ainsworth). In my personal understanding, agile database administration is needed to answer the current challenges to DBAs.
To me, the biggest challenge to today’s DBA is the rapid changes in DBA’s responsibility domain due to the technology change. With each new version release, a DBA needs to learn something new/complex and be prepared to use it or even trouble-shoot it in real world very soon. For example, when replication is set up, we need to monitor the replication status. With mirroring setup, we need to worry about mirroring status. With service broker feature used, we need to debug service broker problems etc. Besides this, I see more sql server instances installed, and this leads to more workload and more new issues.
All these means DBAs need a new methodology to handle current challenges without compromising work quality, and this new methodology can be found/created in the philosophy context of the original Agile Manifesto, i.e. a nimble/quick-response way to handle complex, time-consuming challenges. However, for database administration, I’d modify the manifesto to the following:
Individuals and coordination over processes and tools
Working solution over comprehensive documentation
Stakeholder integration over service level agreement
Proactive maintenance over reactive response
In the spirit of the original twelve principles behind the agile manifesto, I’d also propose the following principles for agile database administration:
The highest priority is to ensure a stable, workable and secure database environment for the customer.
1. Collect just workable (not necessarily complete) requirements to plan the work
2. Acquire just needed (not necessarily all-round) knowledge to start the work
3. Develop just a usable (not necessarily perfect) solution to finish the work
4. Document just key (not necessarily comprehensive) information to wrap up the work
5. Conduct more face-to-face communication than emails to enhance collaboration
6. Work more on automation than manual clicks to reduce errors
7. Focus more on continuous improvements than revolutions to avoid disruption
8. Invest more on common issues than exceptions to maximize ROI
I do hope our DBA community can come up with a more sophisticated agile database administration manifesto and make it as a corner stone for an academic subject, say database administration engineering.