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

Powering the Push to Production

Powering the Push to Production

As developers, we continuously polish our development skills. But some of the most vital of developer abilities - delivering our carefully crafted software to production - is often left as an afterthought. Oftentimes we learn just enough to "get it there", but not enough to do it well or to make it happen reliably, repeatably, and effortlessly.

There are many ways to deliver your essential software to production, and each involves tradeoffs. In this session, we'll explore the pros and cons of various deployment mechanisms, including manual, scripted (using shell scripts, Terraform, etc.), and CI/CD pipelines like GitHub Actions. Then we'll put them to work! Examples of each approach will be demonstrated *live and in real time*!

Come to this session to take your production deployment game to the next level.

Mark Heckler

January 26, 2024
Tweet

More Decks by Mark Heckler

Other Decks in Programming

Transcript

  1. Powering the Push to Production A Multi-path, Live Action Adventure!

    Mark Heckler Principal Cloud Advocate, Java/JVM Languages [email protected] [email protected] @mkheck
  2. @mkheck Who am I? • Architect & Developer • Advocate

    • Author • Java Champion, Rockstar • Kotlin Developer Expert • Pilot
  3. @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
  4. @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…
  5. @mkheck • Azure DevOps (ADO) • CircleCI • Jenkins •

    TravisCI • GitHub Actions NOTE: These are just a few options, there are many, many more… CI/CD pipelines
  6. @mkheck ARM template example "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion":

    "2022-09-01", "name": "mystorageaccount", "location": "centralus", "sku": { "name": "Standard_LRS" }, "kind": "StorageV2" }, ]
  7. @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' } }
  8. @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 }