Published Sep 3, 2019

SE-Radio Episode 268: Kief Morris on Infrastructure as Code

Kief Morris explores the transformative impact of Infrastructure as Code on modern software development, detailing the evolution to cloud-based automation and dynamic infrastructure. He discusses the benefits of robust security practices within CI/CD pipelines and emphasizes the efficiencies gained through on-demand provisioning and treating servers as data-driven assets.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Defining IaC

    Infrastructure as Code (IaC) is a pivotal concept in modern software development, allowing teams to manage and provision infrastructure through code rather than manual processes. explains that IaC enables the application of software development practices, such as version control and automated testing, to infrastructure management 1. This approach reduces the risk of human error and ensures consistency across environments. He notes, "The idea of testing, and particularly automated testing in a test environment, isn't something that we necessarily do as rigorously in the systems administration world as we insist our developers do."

    The idea of testing, and particularly automated testing in a test environment, isn't something that we necessarily do as rigorously in the systems administration world as we insist our developers do.

    ---

    Morris also distinguishes between programmable infrastructure and IaC, emphasizing that IaC is more of a philosophy that involves defining infrastructure in version-controlled files and progressing them through environments 2.

       

    Iron vs. Cloud

    The transition from the "Iron Age" to the "Cloud Age" marks a significant shift in how infrastructure is managed. describes the Iron Age as a time when infrastructure was physical, requiring lengthy processes to provision servers, whereas the Cloud Age allows for rapid, virtual provisioning 3. This shift enhances efficiency and scalability, enabling organizations to quickly adapt to changing demands. He explains, "The feedback loop becomes very, very tight, very quick," highlighting the agility of cloud-based infrastructure.

    The feedback loop becomes very, very tight, very quick.

    ---

    Additionally, Morris points out that while some variability between machines is unavoidable, capturing these differences in code enhances traceability and auditability, crucial for compliance in sectors like healthcare 4.

       

    Version Control

    Version control is a cornerstone of Infrastructure as Code, ensuring that all infrastructure changes are tracked and managed systematically. emphasizes the importance of using version control to maintain code integrity and consistency across environments 5. By parameterizing configuration files, teams can use the same code across different environments, adjusting only the necessary parameters. He states, "The code is the same, but just the parameters I put into are different," underscoring the efficiency of this approach.

    The code is the same, but just the parameters I put into are different.

    ---

    This practice not only streamlines the deployment process but also ensures that any changes are thoroughly tested before reaching production, reducing the risk of errors and increasing reliability.

       

    Automating Setup

    Automating server setup is a key benefit of Infrastructure as Code, offering significant efficiency gains and reducing human error. explains that automation eliminates the need for repetitive manual tasks, allowing teams to focus on more strategic work 6. By documenting server configurations in code, organizations ensure transparency and consistency in their setups. He notes, "It's transparent that way because then anybody can look at that file," highlighting the clarity and accessibility of automated configurations.

    It's transparent that way because then anybody can look at that file.

    ---

    This approach not only saves time but also ensures that servers are set up correctly every time, minimizing discrepancies and enhancing reliability.

Related Episodes