0Pricing
Cloud & IT Cert Prep · Pelajaran

Penerapan Berkelanjutan ke Azure

Perluas alur dengan tahap penerapan yang mendorong artefak build ke slot App Service, menjalankan tes asap, lalu menukarkannya ke produksi setelah disetujui.

Penerapan Berkelanjutan ke Azure adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa Itu Deployment Berkelanjutan?

Deployment Berkelanjutan (CD) secara otomatis merilis setiap perubahan yang lulus pengujian CI ke Produksi tanpa intervensi manual. Pengiriman Berkelanjutan adalah versi yang lebih longgar—proses deployment diotomatisasi hingga lingkungan staging dan memerlukan persetujuan manusia sebelum masuk ke Produksi. Kedua praktik ini dibangun di atas infrastruktur pipeline yang sama. Di Azure Pipelines, CD diterapkan dengan menambahkan tahap deployment setelah tahap CI, yang menargetkan lingkungan Azure dengan gerbang persetujuan sesuai kebutuhan.

Pipeline Multi-Tahap: CI + CD

Pipeline CI/CD lengkap memiliki setidaknya tiga tahap: Build (mengompilasi, menguji, dan menerbitkan artefak), Deploy ke Staging (melakukan deployment artefak ke slot non-Produksi), dan Deploy ke Produksi (menukar slot atau melakukan deployment setelah persetujuan). Tahap meneruskan artefak melalui penyimpanan artefak pipeline. Tahap staging secara otomatis menjalankan pengujian integrasi atau smoke, sedangkan tahap Produksi menunggu persetujuan manual sebelum melanjutkan.

# azure-pipelines.yml: multi-stage CI/CD
trigger:
  branches:
    include: [main]

pool:
  vmImage: ubuntu-latest

stages:
- stage: Build
  jobs:
  - job: BuildApp
    steps:
    - script: npm ci && npm run build
    - task: PublishPipelineArtifact@1
      inputs: {targetPath: dist, artifactName: webapp}

- stage: DeployStaging
  dependsOn: Build
  jobs:
  - deployment: StagingDeploy
    environment: Staging
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs: {appName: myapp-staging, package: '$(Pipeline.Workspace)/webapp'}

- stage: DeployProduction
  dependsOn: DeployStaging
  jobs:
  - deployment: ProductionDeploy
    environment: Production   # Has manual approval gate
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs: {appName: myapp, package: '$(Pipeline.Workspace)/webapp'}

Pekerjaan Deployment dan Lingkungan

Gunakan pekerjaan deployment (bukan job biasa) untuk tahap deployment. Pekerjaan deployment mendukung strategi deployment (runOnce, rolling, canary), melacak riwayat deployment untuk setiap lingkungan, dan wajib merujuk ke Environments Azure DevOps. Lingkungan mencatat pipeline mana yang melakukan deployment ke lingkungan tersebut, versi yang sedang aktif, serta menyediakan gerbang persetujuan, pemeriksaan, dan status kesehatan sumber daya dalam satu dasbor.

# Deployment job with rolling strategy
- job: RollingDeploy
  strategy:
    rolling:
      maxParallel: 2     # Deploy to 2 targets at a time
      preDeploy:
        steps:
        - script: echo 'Pre-deploy checks'
      deploy:
        steps:
        - task: AzureWebApp@1
          inputs:
            appName: myapp
            package: '$(Pipeline.Workspace)/webapp'
      postRouteDeploy:
        steps:
        - script: curl -f https://myapp.azurewebsites.net/health

Melakukan Deployment ke Azure App Service

Tugas AzureWebApp@1 melakukan deployment aplikasi web ke Azure App Service. Tugas ini mendukung deployment ke slot tertentu (misalnya staging), serta deployment paket ZIP, citra Docker, atau file JAR/WAR. Setelah melakukan deployment ke slot staging, gunakan tugas AzureAppServiceManage@0 untuk menukar slot staging ke Produksi—pola deployment tanpa waktu henti yang lebih disarankan untuk App Service.

# Deploy to staging slot, then swap to production
steps:
- task: AzureWebApp@1
  displayName: 'Deploy to staging slot'
  inputs:
    azureSubscription: 'AzureProductionSC'
    appType: webAppLinux
    appName: myUniqueWebApp
    deployToSlotOrASE: true
    resourceGroupName: MyRG
    slotName: staging
    package: '$(Pipeline.Workspace)/webapp/app.zip'
    runtimeStack: 'NODE|18-lts'

- task: AzureAppServiceManage@0
  displayName: 'Swap staging into production'
  inputs:
    azureSubscription: 'AzureProductionSC'
    action: Swap Slots
    webAppName: myUniqueWebApp
    resourceGroupName: MyRG
    sourceSlot: staging

Pengujian Smoke dalam Pipeline CD

Setelah melakukan deployment ke staging, jalankan pengujian smoke—serangkaian pengujian minimal untuk memastikan deployment berhasil dan aplikasi merespons dengan benar. Pengujian smoke biasanya memanggil titik akhir API utama dan memverifikasi kode status serta isi respons yang diharapkan. Jika pengujian smoke gagal, pipeline berhenti sebelum menukar slot ke Produksi atau meminta persetujuan, sehingga rilis yang rusak tidak sampai ke pengguna.

# Smoke test step after staging deployment
- script: |
    MAX_RETRY=10
    COUNT=0
    until curl -sf https://myUniqueWebApp-staging.azurewebsites.net/health; do
      COUNT=$((COUNT+1))
      if [ $COUNT -ge $MAX_RETRY ]; then
        echo 'Health check failed after $MAX_RETRY attempts'
        exit 1
      fi
      echo 'Waiting for app to start... attempt '$COUNT
      sleep 10
    done
    echo 'App is healthy'
  displayName: 'Smoke test: health endpoint'

Gerbang Persetujuan Lingkungan

Tambahkan gerbang persetujuan ke Environments Azure DevOps untuk mewajibkan persetujuan manual sebelum deployment dilanjutkan. Buka pengaturan lingkungan dan tambahkan Approvals—tentukan pengguna atau grup yang harus menyetujui. Saat pipeline mencapai pekerjaan deployment yang menargetkan lingkungan tersebut, pipeline berhenti sementara dan mengirimkan pemberitahuan email. Pemberi persetujuan dapat melihat detail deployment lalu menyetujui atau menolaknya di portal Azure DevOps atau melalui tautan dalam email pemberitahuan.

# Pipeline YAML: deployment to production environment
# (Approval configured in Azure DevOps portal on 'Production' environment)
- stage: DeployProduction
  displayName: 'Deploy to Production'
  dependsOn: DeployStaging
  condition: succeeded('DeployStaging')
  jobs:
  - deployment: ProdDeploy
    environment: Production   # <-- Triggers approval gate configured in portal
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs:
              appName: myapp-prod
              package: '$(Pipeline.Workspace)/webapp/app.zip'

Melakukan Deployment ke Azure Kubernetes Service

Deploy aplikasi dalam kontainer ke AKS menggunakan tugas KubernetesManifest@0. Tugas ini menerapkan manifes YAML Kubernetes ke klaster, dengan dukungan bawaan untuk imagePullSecrets dan deployment canary. Hubungkan ke klaster AKS menggunakan koneksi layanan Kubernetes yang dikonfigurasi di Azure DevOps. Di balik layar, tugas ini menggunakan kubectl apply dan menunggu rollout selesai sebelum menandai langkah sebagai berhasil.

# AKS deployment step in Azure Pipelines
- task: KubernetesManifest@0
  displayName: 'Deploy to AKS'
  inputs:
    action: deploy
    kubernetesServiceConnection: 'AKS-Production-SC'
    namespace: production
    manifests: |
      k8s/deployment.yaml
      k8s/service.yaml
    containers: 'mycontainerregistry.azurecr.io/myapp:$(Build.BuildId)'
    imagePullSecrets: acr-secret

Strategi Pemberian Tag Citra

Beri tag pada citra kontainer menggunakan ID build ($(Build.BuildId)) atau SHA commit Git ($(Build.SourceVersion)) agar Anda selalu dapat melacak kontainer yang sedang berjalan kembali ke revisi kode persis yang digunakan untuk membuatnya. Hindari penggunaan tag latest di Produksi—Kubernetes menyimpannya dalam cache dan mungkin tidak mengambil versi baru. Simpan tag citra tertentu sebagai variabel pipeline dan masukkan ke dalam manifes Kubernetes saat deployment menggunakan envsubst atau sed.

# Tag and push image with build ID in CI stage
- script: |
    IMAGE='mycontainerregistry.azurecr.io/myapp'
    TAG='$(Build.BuildId)'
    docker build -t $IMAGE:$TAG -t $IMAGE:latest .
    az acr login --name mycontainerregistry
    docker push $IMAGE:$TAG
    docker push $IMAGE:latest
    echo "##vso[task.setvariable variable=imageTag;isOutput=true]$TAG"
  name: BuildImage
  displayName: 'Build and push container image'

Strategi Pembatalan Penerapan

Tentukan strategi pembatalan penerapan untuk penerapan ke Production agar Anda dapat pulih dengan cepat dari rilis yang bermasalah. Untuk App Service, pembatalan penerapan berarti menukar slot Production kembali ke versi penahapan sebelumnya. Untuk AKS, gunakan kubectl rollout undo. Buat pipeline pembatalan khusus atau tambahkan pekerjaan pembatalan manual yang dapat dipicu dari portal Azure DevOps. Dokumentasikan prosedur pembatalan dan latih secara berkala — pembatalan yang belum diuji bukanlah pembatalan yang dapat diandalkan.

# Rollback job triggered manually
- job: Rollback
  condition: and(failed(), eq(variables['Build.Reason'], 'Manual'))
  steps:
  # App Service rollback: swap production back to previous
  - task: AzureAppServiceManage@0
    inputs:
      azureSubscription: 'AzureProductionSC'
      action: Swap Slots
      webAppName: myUniqueWebApp
      resourceGroupName: MyRG
      sourceSlot: production  # Swap production back to staging version
      targetSlot: staging

Notifikasi dan Pemantauan Penerapan

Setelah setiap penerapan ke Production, jalankan pemeriksaan pemantauan secara otomatis untuk memastikan versi baru berfungsi dengan baik. Gunakan pemeriksaan pipeline AzureMonitor@1 untuk meminta metrik Azure Monitor — jika tingkat kesalahan meningkat setelah penerapan, hentikan kemajuan pipeline berikutnya dan picu pembatalan penerapan. Kirim notifikasi penerapan ke Microsoft Teams atau Slack melalui tugas webhook agar tim mengetahui kapan penerapan selesai dan versi apa yang sedang aktif.

# Send Teams notification on deployment completion
- task: InvokeRestAPI@1
  displayName: 'Notify Teams channel'
  inputs:
    connectionType: connectedServiceName
    serviceConnection: 'TeamsWebhookSC'
    method: POST
    body: '{
      "text": "Deployed **$(Build.BuildId)** to Production. Committed by $(Build.RequestedFor). <br>View: https://myapp.contoso.com"
    }'
    waitForCompletion: false

Praktik Terbaik CD

Ikuti praktik terbaik continuous deployment berikut: lakukan penerapan secara sering (batch kecil mengurangi risiko), gunakan penanda fitur untuk memisahkan penerapan dari rilis, otomatisasikan semua gerbang kualitas sebelum Production, gunakan penahapan yang menyerupai Production agar perbedaan tidak menyamarkan bug, pantau jendela penerapan dengan pemeriksaan kesehatan otomatis, dan selalu siapkan rencana pembatalan penerapan yang telah diuji. Pipeline CD yang matang menjadikan penerapan sebagai hal rutin, bukan operasi yang penuh tekanan.

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep Microsoft Azure Fundamentals (AZ-900) dari pelajaran ini.

Rangkuman Pelajaran

Dalam pelajaran ini Anda mempelajari bahwa: pipeline YAML multi-tahap menghubungkan tahap Build, penahapan, dan Production dengan penerusan artefak, pekerjaan penerapan dengan Environments memungkinkan gerbang persetujuan dan pelacakan penerapan, serta pengujian asap setelah penerapan ke lingkungan penahapan mencegah rilis yang bermasalah mencapai Production. Selanjutnya kita akan membahas GitHub Actions di Azure.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penerapan Berkelanjutan ke Azure” gratis?

Ya — teks lengkap “Penerapan Berkelanjutan ke Azure” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Penerapan Berkelanjutan ke Azure”?

Perluas alur dengan tahap penerapan yang mendorong artefak build ke slot App Service, menjalankan tes asap, lalu menukarkannya ke produksi setelah disetujui. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?

Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Penerapan Berkelanjutan ke Azure” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Ikhtisar Azure DevOps Services
  2. Membangun Alur CI dengan Azure Pipelines
  3. Penerapan Berkelanjutan ke Azure
  4. GitHub Actions di Azure
← Kembali ke Cloud & IT Cert Prep