Slide 1

Slide 1 text

Powering the Push to Production A Multi-path, Live Action Adventure! Mark Heckler Principal Cloud Advocate, Java/JVM Languages markheckler@microsoft.com mark@thehecklers.com @mkheck

Slide 2

Slide 2 text

@mkheck Who am I? • Architect & Developer • Advocate • Author • Java Champion, Rockstar • Kotlin Developer Expert • Pilot

Slide 3

Slide 3 text

@mkheck The book https://bit.ly/springbootbook @springbootbook

Slide 4

Slide 4 text

@mkheck Why so serious?

Slide 5

Slide 5 text

@mkheck How to execute the Push to Production • “Throw it over the wall” is not an option • Manual deployment: it isn’t as fun as it sounds •Scripting deployment • CI/CD pipelines Disclaimer: Blurring of lines may will occur

Slide 6

Slide 6 text

@mkheck Scripting deployment: the logical next step • Platform-specific tools • ARM templates • BICEP • azd CLI • az CLI • “Platform agnostic” tools* • Ansible • Pulumi • Terraform NOTE: These are just a few options, there are many, many more…

Slide 7

Slide 7 text

@mkheck • Azure DevOps (ADO) • CircleCI • Jenkins • TravisCI • GitHub Actions NOTE: These are just a few options, there are many, many more… CI/CD pipelines

Slide 8

Slide 8 text

@mkheck Let’s do this!

Slide 9

Slide 9 text

@mkheck

Slide 10

Slide 10 text

@mkheck ARM template example "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2022-09-01", "name": "mystorageaccount", "location": "centralus", "sku": { "name": "Standard_LRS" }, "kind": "StorageV2" }, ]

Slide 11

Slide 11 text

@mkheck Bicep example param location string = resourceGroup().location param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } }

Slide 12

Slide 12 text

@mkheck Terraform template example terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "3.88.0" } } } provider "azurerm" { features {} } resource "azurerm_resource_group" "mkheck" { name = var.AZ_RESOURCE_GROUP location = var.AZ_LOCATION }

Slide 13

Slide 13 text

@mkheck Helpful resources • https://github.com/mkheck/ppp • @springbootbook • @mkheck