The State of Infrastructure As Code (IAC) Whitepaper V0.1 Q3 2020 The State of IAC: Infrastructure As Code ____________________________________________________________ “ The enabling idea of Infrastructure as Code is that systems and devices used to run software can be treated as if they, themselves, are software. ” – Kief Morris ______________________________________________________________________________________________ WhitePaper v0.1 The State of IAC: Infrastructure As Code ____________________________________________________________ ~ Abstract ~ With the evolving landscape of human interaction, driven by global digitization, the Infrastructure underpinning social and professional interactions is taking on an entirely new identity. As software became the de facto standard for new technological breakthroughs and enterprise grade entities adopted automation, tremendous operational inefficiencies in the fundamental systems architecture came to light. The greatest promise of software is the automation of redundant processes with the minimization of error. The offloading of intellectually draining tasks to machines. In order to make these automation processes a reality, there is a need for some kind of architectural design to sustain the automation itself. Traditional automation processes involve overly complicated systems that do not address the needs of an increasingly digitizing world. Every aspect of human life is undergoing an evolution to autonomous automation, finance via cryptocurrency, logistics to self driving AI, and even the human thought process to GPT-3. The new world is being built from code. Xentaurs has been intimately studying the infrastructure of global communication and automation systems. After identifying the points of failure in existing solutions, Xentaurs was able to derive design primitives that impact workflow to optimize, and in turn create an operational framework for IT automation processes that streamlines DevOps, from the first line of code to it’s 100th iteration. ______________________________________________________________________________________________ WhitePaper v0.1 The State of IAC: Infrastructure As Code ____________________________________________________________ ~ Infrastructure As Code ~ The IT industry was borne of machine to machine communication; on what is known as a master-slave / client-server information architecture. This scheme of operations is built on an infrastructure that demands the presence of system administrators and complex multi-level hierarchies. Communication & Information technology, by the nature of its design, reflects the physical reality of human interaction, where there is a point that requests and a point that provides. Servers are the providers, an inseparable element of computer systems. IAC is a re-hypothecation of the traditional server models. Simply put, Infrastructure as Code (IAC) is programmable computer/networking infrastructure. A practice that results in the removal of the server management burden while enabling a robust configuration & deployment environment for IT professionals. At the highest level, the management of systems is detached from a predominantly physical one and translated into a software one. One where virtual instances of physical servers are deployed by code rather than by circuit. What this means for the industry as a whole is a paradigm shift in producer behavior. Entities that are involved in the provisioning of informational services have a higher degree of control. By removing the added systems administration layer in systems architecture, the power they had transfers over to the next line of command, the developers. The granularity & modularity that accompanies developers having this control of the administrative role allowing for faster testing & deployment, as well as, Enhanced Quality Assurance & Version Control System management. ______________________________________________________________________________________________ WhitePaper v0.1 The State of IAC: Infrastructure As Code ____________________________________________________________ Having an IAC enabled environment results in a redefinition of computation. By adding a layer of abstractions between DevOps and the cloud hardware, Infrastructure as Code provides a framework that addresses the greatest computational conundrums; Automation Scalability Multi-level authority can hinder the flow of operations. If a process is running in automation and the systems administrator of a server location acts maliciously, the system can halt. By removing bottlenecks (manual interventions of systems administrators), DevOps processes can be streamlined without the worry of 3rd party intervention. In turn, this allows for greater freedom in automation testing and deployment. IT infrastructure traditionally scales linearly; if more operations are required then more machines must be incorporated. With each machine comes its own nuances and vulnerabilities that require more overhead in terms of maintenance and management. IAC allows for the instantiation, deletion and re-instantiation of servers remotely ad hoc. If more server space is needed during peaks of operation or less space is needed during downtime, it is possible to configure servers to act intelligently. Interoperability Visibility Databases are notorious for their inability to communicate between one another. With all databases existing under a unified framework, siloed data becomes a thing of the past and new opportunities surrounding data storage & computation. Having code define server configuration directly translates to greater consistency between servers. Code is king. The vast majority of code is kept in a “black box”. Auditing code is all but impossible. With Infrastructure as Code all under-the-hood processes become auditable. In turn leveling the playing field, creating a more robust and fair environment from the standpoint of competition and cooperation. Quality is typically thought of as a separate abstraction that happens to code after it has been deployed. Kief Morris, a leading figure in cloud computing, outlines in his O'reilly publication “Infrastructure as Code”, 8 principles that underpin the development of quality code & infrastructure. He argues that these principles are not separate from development, rather they bake Quality Assurance (QA) into the production process itself. They are as follows: ______________________________________________________________________________________________ WhitePaper v0.1 The State of IAC: Infrastructure As Code ____________________________________________________________ 1 Start delivering working, useful code early 2 Continue to deliver in small, useful increments 3 Build only what is necessary at the moment 4 Build each increment as simply as possible 5 Ensure each change is well designed and implemented 6 Get feedback on every change as early as possible 7 Expect requirements to change as you and your users learn 8 Assume everything you deliver will need to change as the system evolves These 8 principle can be understood better whenever they are condensed into the 6 core practices of Infrastructure as Code development: 1. Use Definition Files Configuration is broken down into executable definition files (scripts/recipes). There should/must not be manual intervention during run-time. 2. Self-documented systems and processes When measuring reliability between humans and code, code will always win. Rather than relying on human-readable documentation, op-code/bytecode instructions automate the process. 3. Version all the things It is good practice to keep all code in source control. Having all activity available for auditing will allow for reproducible builds and diagnostics/debugging. 4. Continuously test systems and processes Testing is everything. Infrastructure as code responds to errors as does any other kind of software, early detection can be the difference between success and failure. 5. Small changes rather than batches Frequency reduces difficulty. Bigger updates are more likely to contain errors and more likely to cause difficulty in resolving those errors. Smaller updates make for easier inspection and detection. 6. Keep services available continuously Downtime is the ultimate destroyer of products. Having to stop operations for small updates/fixes is unacceptable; techniques for availability must alway be followed (such as Blue-Green deployment). With technology (more specifically software) eating the world DevOps is becoming all the more fundamental to healthy business operations. If your business is ready to upgrade its operations, increase efficiencies, and take control of its direction; Xentaurs is here to help make that happen. ______________________________________________________________________________________________ WhitePaper v0.1 The State of IAC: Infrastructure As Code ____________________________________________________________ A United Stated based Technology Infrastructure service provider X entaurs 5151 California Ave, Suite 100 Irvine, CA 92617 Trust * Excellence * Camaraderie * Humanity IAC | SDI | Cloud A+ | DevOps | Security+ Symantec Partner Services Phone: +1-949-668-0320 Visit: https://xentaurs.com | Email: info@xentaurs.com General Inquiries and contact form can be found here Introductory videos to Xentaurs can be found here Xentaurs Academy can be found here The Xentaur Blog can be found here ______________________________________________________________________________________________ WhitePaper v0.1 The State of IAC: Infrastructure As Code ____________________________________________________________ ~ References & Citations ~ [1] Kief Morris, June 2016, “Infrastructure as Code”, ISBN: 9781491924358 O’Reilly Media Inc. https://www.oreilly.com/library/view/infrastructure-as-code/9781491924334/ch10.html#:~:text=T he%20enabling%20idea%20of%20Infrastructure,in%20the%20software%20development%20w orld. [2] Martin Fowler, March 1, 2016, “InfrastructureAsCode”, MartinFowler.com, ThoughtWorks INC. https://martinfowler.com/bliki/InfrastructureAsCode.html [3] Jafari Sitakange, March 14, 2016, “Infrastructure as Code: A Reason To Smile”, ThoughtWorks INC https://www.thoughtworks.com/insights/blog/infrastructure-code-reason-smile [4] Archives, accessed July 25, 2020 “Journey To Innovation”, Xentaurs https://resources.xentaurs.com/51z4rm3dvx3e/ ______________________________________________________________________________________________ WhitePaper v0.1