Foundations of software testing: dependability theory
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Computer science (5th ed.): an overview
Computer science (5th ed.): an overview
Fundamentals of the theory of computation: principles and practice
Fundamentals of the theory of computation: principles and practice
An encompassing life cycle centric survey of software inspection
Journal of Systems and Software
New Turing Omnibus
Computers and Intractability; A Guide to the Theory of NP-Completeness
Computers and Intractability; A Guide to the Theory of NP-Completeness
The Computer as von Neumann Planned It
IEEE Annals of the History of Computing
First Draft of a Report on the EDVAC
IEEE Annals of the History of Computing
Evolving Turing-Complete Programs for a Register Machine with Self-modifying Code
Proceedings of the 6th International Conference on Genetic Algorithms
The Impact of Software Evolution on Code Coverage Information
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Bootstrapping an Infrastructure
LISA '98 Proceedings of the 12th USENIX conference on System administration
LISA '98 Proceedings of the 12th USENIX conference on System administration
LISA '01 Proceedings of the 15th USENIX conference on System administration
The Maelstrom: Network Service Debugging via "Ineffective Procedures"
LISA '01 Proceedings of the 15th USENIX conference on System administration
TemplateTree II: The Post-Installation Setup Tool
LISA '01 Proceedings of the 15th USENIX conference on System administration
An Analysis of RPM Validation Drift
LISA '02 Proceedings of the 16th USENIX conference on System administration
On the theory of system administration
Science of Computer Programming
Configurable immunity for evolving human-computer systems
Science of Computer Programming - Methods of software design: Techniques and applications
An Analysis of RPM Validation Drift
LISA '02 Proceedings of the 16th USENIX conference on System administration
ISconf: Theory, Practice, and Beyond
LISA '03 Proceedings of the 17th USENIX conference on System administration
Seeking Closure in an Open World: A Behavioral Agent Approach to Configuration Management
LISA '03 Proceedings of the 17th USENIX conference on System administration
Auto-configuration by File Construction: Configuration Management with newfig
LISA '04 Proceedings of the 18th USENIX conference on System administration
Experience in Implementing an HTTP Service Closure
LISA '04 Proceedings of the 18th USENIX conference on System administration
Nixos: A purely functional linux distribution
Journal of Functional Programming
Automated testing of chef automation scripts
Proceedings Demo & Poster Track of ACM/IFIP/USENIX International Middleware Conference
Hi-index | 0.01 |
Hosts in a well-architected enterprise infrastructure are self-administered; they perform their own maintenance and upgrades. By definition, self-administered hosts execute self-modifying code. They do not behave according to simple state machine rules, but can incorporate complex feedback loops and evolutionary recursion.The implications of this behavior are of immediate concern to the reliability, security, and ownership costs of enterprise and mission-critical computing. In retrospect, it appears that the same concerns also apply to manually-administered machines, in which administrators use tools that execute in the context of the target disk to change the contents of the same disk. The self-modifying behavior of both manual and automatic administration techniques helps explain the difficulty and expense of maintaining high availability and security in conventionally-administered infrastructures.The practice of infrastructure architecture tool design exists to bring order to this self-referential chaos. Conventional systems administration can be greatly improved upon through discipline, culture, and adoption of practices better fitted to enterprise needs. Creating a low-cost maintenance strategy largely remains an art. What can we do to put this art into the hands of relatively junior administrators? We think that part of the answer includes adopting a well-proven strategy for maintenance tools, based in part upon the theoretical properties of computing.In this paper, we equate self-administered hosts to Turing machines in order to help build a theoretical foundation for understanding this behavior. We discuss some tools that provide mechanisms for reliably managing self-administered hosts, using deterministic ordering techniques.Based on our findings, it appears that no tool, written in any language, can predictably administer an enterprise infrastructure without maintaining a deterministic, repeatable order of changes on each host. The runtime environment for any tool always executes in the context of the target operating system; changes can affect the behavior of the tool itself, creating circular dependencies. The behavior of these changes may be difficult to predict in advance, so testing is necessary to validate changed hosts. Once changes have been validated in testing they must be replicated in production in the same order in which they were tested, due to these same circular dependencies.The least-cost method of managing multiple hosts also appears to be deterministic ordering. All other known management methods seem to include either more testing or higher risk for each host managed.This paper is a living document; revisions and discussion can be found at Infrastructures.Org, a project of TerraLuna, LLC.