Upgrade to Pro — share decks privately, control downloads, hide ads and more …

T3CON23: Breaking the knot between Deployment a...

T3CON23: Breaking the knot between Deployment and Infrastructure

In this talk, I illustrate how the deployment processes of web applications and web infrastructures interact and depend on each other, and how the constant drive for automation has changed these fields over the years. I present a high-level view on different state-of-the-art methodologies and tools for defining your infrastructure requirements in a declarative way, and how to redesign your deployment processes to make infrastructure definition a part of them. You will also learn about the many new opportunities this unlocks for your software development process and how to make use of them.

Martin Helmich

October 13, 2023
Tweet

More Decks by Martin Helmich

Other Decks in Technology

Transcript

  1. MARTIN HELMICH Head of Architecture & Chief Tech Evangelist Lecturer,

    Software Engineering & Cloud Computing Sci-Fi-Nerd, Metalhead, Amateur Woodworker
  2. BORING THAT WAS TEN YEARS AGO! WHERE DO WE STAND

    NOW? Matthew Henry https://unsplash.com/photos/6x-hVXXiBxs
  3. PROD PREPROD ACCEPTANCE INTEGRATION TEST ONE APP MANY ENVIRONMENTS DEVELOPER

    ALICE DEVELOPER BOB DEVELOPER CHARLIE YOUR STUFF
  4. INFRASTRUCTURE AS CODE – Define the DESIRED STATE of your

    infrastructure in a declarative way – Put that code into your VERSION CONTROL, and apply your usual software development process (code reviews, static analysis, CI/CD/, …) – THE GOAL: Achieve the same AUTOMATION and REPEATABILITY that you'd have for your regular software deployments.
  5. DATA CENTER NETWORKING STORAGE VIRTUALIZATION OS RUNTIME APPLICATION DATA CENTER

    NETWORKING STORAGE VIRTUALIZATION OS RUNTIME APPLICATION DATA CENTER NETWORKING STORAGE VIRTUALIZATION OS RUNTIME APPLICATION ON PREMISE IaaS PaaS YOUR PROBLEM NOT YOUR PROBLEM MORE CONTROL MORE PROBLEMS LESS CONTROL LESS PROBLEMS
  6. > ID=$(mw app install typo3 --version=12.4.4 -q) > mw app

    dependency update $ID \ --set 'php=^8.2' \ --set 'graphicsmagick=*' \ --set 'nodejs=^20' UNRELATED: https://github.com/mittwald/cli
  7. SEE https://www.terraform.io or https://opentofu.org provider "aws" { region = "eu-central-1"

    } resource "aws_instance" "app_server" { ami = "ami-XYZ" instance_type = "t2.micro" tags = { Name = "MyProjectAppServer" } } TERRA FORM
  8. provider "mittwald" { api_key = "…" } resource "mittwald_project" "foobar"

    { server = var.server_id } resource "mittwald_db" "my_app_db" { kind = "mysql" version = "8" user { password = var.database_password } } resource "mittwald_app" "my_app" { project = mittwald_project.foobar.id database = mittwald_db.my_app_db.id dependency "php" { version = "^8.2" update_policy = "minor" } } SEE (EXPERIMENTAL!) https://github.com/mittwald/terraform-provider-mittwald
  9. DATA CENTER NETWORKING STORAGE VIRTUALIZATION OS RUNTIME APPLICATION ON PREMISE

    DATA CENTER NETWORKING STORAGE VIRTUALIZATION OS RUNTIME APPLICATION IaaS DATA CENTER NETWORKING STORAGE VIRTUALIZATION OS RUNTIME APPLICATION PaaS YOUR PROBLEM NOT YOUR PROBLEM CaaS DATA CENTER NETWORKING STORAGE VIRTUALIZATION OS CONTAINER RUNTIME CONTAINER OS RUNTIME APPLICATION MORE CONTROL MORE PROBLEMS LESS CONTROL LESS PROBLEMS
  10. FROM ubuntu:22.04 RUN apt-get update -y RUN apt-get install -y

    apache2 php-fpm USER www-data COPY . /app … DOCKERFILE version: "3" services: app: build: . ports: - 80:80 db: image: mysql:8 env: {…} DOCKER-COMPOSE.YML This is INFRASTRUCTURE AS CODE… THIS TOO
  11. PLAN & DESIGN DEVELOP & BUILD TEST DEPLOY & RELEASE

    OPERATE HOW MUCH ATTENTION YOU SHOULD PAY TO SECURITY SHIFT LEFT HOW MUCH IT COSTS YOU TO FIX A SECURITY ISSUE