idea of atomic administration
In the Beginning
One of my first projects at my first SysAdmin job was to create a bunch of Perl scripts. These scripts interacted with the filesystem to add, edit, and delete users and email addresses.
The next project was to do a complete overhaul of the Freeside web application by incorporating those Perl scripts I wrote. This way, when a customer was added to Freeside, it would trigger the Perl script to add the user to the system. Likewise, when the customer left, their user account would be deleted from the system as well.
Atomic-ness
The cool thing about the Perl scripts was that I did not have to use Freeside to run them. I could simply trigger them from the command line and they would still add, edit, or delete the user. However, in conjunction with Freeside, an entry into our Customer Database was also made and it gave us further information about the user.
Corporate people call this Synergy. Programmers can think of this as Decoupling. Two items that can work separate but can also work together.
When I mentioned this to my boss, he replied back with something about it being Atomic. I realize now that I misheard him. He was talking about the Database being Atomic. Regardless, from then on, I viewed such a method as being Atomic.
I visualized it by thinking of each individual part as an atom. When the atoms combined, they created something totally different.
Atomic Administration
Since then, I've always tried applying the same method in any other project I've worked on. For example, my home backup script performs a series of steps:
- Connect to the remote host via
SSH - Trigger the
backup.shscript backup.shtriggerstarbackup.shtriggersbzip2- Use
SCPto pull the backup back
Instead of writing one massive program that creates its own socket to connect to the remote host, uses its own library to combine and compress the files, and transfers the file back on its own, I've chosen to use a series of smaller commands that do one job and do it well.
Each step in the above example can be thought of as an Atom. And the completed script is something bigger and more compound.
Atomic Administration in the Future
In my upcoming series on Python Web Programming, Atomic Administration is also used. Several different Python tools will be used to create a web page. Each tool could be used on its own, but when combined with other tools, it helps create something more.
Also planned is the Second Edition of my Virtual Hosting tutorial. Several new features will be added -- each building on the last in an Atomic manner.
As I'm also a Windows administrator, I've tried thinking about Windows in an Atomic way. Unfortunately, Windows usually provides just one massive application to take care of a whole task. PowerShell might be the start of something more Atomic for Windows. I'll also be playing with IronPython soon, too.
Feedback
If anyone has some more ideas on Atomic Administration or examples of how they use it in their work, please share!
