This is the fourth in a series of using git as part of interesting solutions to problems.
The first is here: Intro
Leveraging git to help enable automated IT
Doing IT for computers involves installing software, configuring things, doing backups, updates, etc.
The ultimate IT is one that ‘simply works’ and involves almost no human interaction
even in failure situations. Ideally IT should be equivalent to
a macro-level program that does everything that does not require touching
a physical machine.
This IT-as-program has become easier and easier over the last many years with
better and more standardized operating systems, free software that does not
require annoying human interaction during installation, and virtualization on top of physical
hardware that makes provisioning and reprovisioning easier. With cloud computing,
IT-as-program becomes almost a necessity as hundreds of virtual computers are created, updated, failed,
migrated, and decommissioned.
Git alone doesn’t enable IT-as-program but it can be a core component in many areas. Among these are:
- Easy ‘Live IT’ servers
- A Push-Me-Pull-You model for continual deployment
- Server presence
Having git as a core piece of IT infrastructure enables thousands of machines to very rapidly react (within a minute or two)
without needing a heavy infrastructure. You simply need one or two (for redundancy) git servers, of which one can be GitHub
or a similar free or inexpensive service. Other technologies in this space have significantly more complicated servers,
are more likely to be SPOFs (Single points of failures) or bottlenecks, and are much more expensive as a service.