Dalam tim Laravel, deployment yang andal memerlukan alur yang jelas untuk build, observability, dan rollback. Artikel ini langsung menjelaskan bagaimana menyusun pipeline terprediksi, memantau aplikasi, menangani rollback, dan melakukan postmortem ringan agar setiap rilis tetap stabil.

Checklist Pra-Deploy dan Pipeline Kontinu

Checklist sebelum menekan tombol deploy menghindarkan kejutan di produksi. Idealnya pipeline mencakup:

  • Lint kode dan konfigurasi: menjalankan php artisan lint atau vendor/bin/pint, validasi .env.example.
  • Unit/integration test: memastikan suite terintegrasi dengan database SQLite atau testing database sementara.
  • Build aset: compiles npm run production bila menggunakan Vite/ Mix.
  • Check migrasi dan seed kunci: php artisan migrate --pretend atau --dry-run untuk melihat dampak.

Sebagai contoh, GitHub Actions dapat dipakai untuk menyusun pipeline:

name: Deploy Laravel
on:
  push:
    branches: ["main"]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'
          extensions: mbstring, pdo_mysql
      - name: Install dependencies
        run: composer install --prefer-dist --no-progress --no-suggest
      - name: Run tests
        run: vendor/bin/pest
      - name: Build assets
        run: npm ci && npm run build
      - name: Deploy via Envoy
        run: php artisan envoy run deploy --branch=main
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}

Envoy memungkinkan orchestrasi release dengan langkah pintu seperti maintenance mode, migrasi, dan reload queue worker.

Observability Terintegrasi untuk Laravel

Observability bukan hanya logging, tapi insight pada latency, error, dan alert proaktif. Fokus pada metrik berikut:

  • Latency request: gunakan instrumentasi dengan Laravel Telescope atau OpenTelemetry agar internal middleware, DB query, dan external HTTP terekam.
  • Error rate: kirim exception ke Sentry/Datadog dan kombinasi dengan log channel agar alert bisa dipicu dari threshold tertentu.
  • Queue backlog: horizon atau supervisor metrics untuk memantau jumlah job tertunda, kecepatan worker, serta failure.
  • Migrasi/maintenance: peringatan jika deployment memakan waktu lebih lama dari ekspektasi.

Untuk visual dan alert, stack sederhana bisa berupa:

  • Laravel Telescope untuk trace lokal dan debugging.
  • Prometheus exporter dari Laravel command (custom middleware) mengirim metrics via StatsD.
  • Grafana dashboard latency + error count + backlog.
  • Alertmanager untuk notifikasi Slack/ops pager ketika error rate > 0.5% dalam 5 menit.

Observability terbaik menggabungkan tracing request Laravel (middleware custom menandai ID correlation), log structured, dan alert berbasis SLA Anda agar indikasi regressi terdeteksi lebih awal.

Rollback Otomatis dan Manual

1. Rollback Otomatis

Rollback otomatis diperlukan bila pipeline mendukung health check setelah release. Langkah dasar:

  1. Setelah deploy, jalankan smoke test (API timeout, response 200).
  2. Jika indikator error meningkat, Envoy bisa menjalankan php artisan envoy run rollback yang mengembalikan symlink ke release sebelumnya.
  3. Sertakan --force untuk migrasi jika rollback melibatkan database schema (dengan backup). Jika tidak memungkinkan, batasi rollback hanya pada kode.

Envoy script bisa menyimpan release_path dan symlink current agar rollback tidak mengganggu user.

2. Rollback Manual

Rollback manual diperlukan jika otomatis gagal atau perlu analisis mendalam. Best practice:

  • Buat command internal: php artisan deploy:rollback yang mencatat release log.
  • Gunakan Git revert untuk perubahan fatal lalu deploy ulang, tetapi pastikan migrasi database tetap konsisten.
  • Jika rollback database tidak bisa, lakukan hotfix/separate patch dengan feature flag untuk menonaktifkan fitur bermasalah.

Intinya: siapkan dokumentasi rollback, lacak commit/release, dan pastikan proses deployment mendukung switching ke versi aman.

Mitigasi Regresi dan Stabilitas Rilis

Untuk menghindari regresi yang muncul tiba-tiba:

  • Gunakan feature flag untuk mengaktifkan fitur baru secara bertahap dan rollback tanpa deploy-beberapa.
  • Integrasikan smoke test pasca deploy kepada endpoint kritis. Apabila gagal, trigger rollback otomatis.
  • Lakukan canary deploy bila platform mendukung, agar persentase trafik kecil terkena versi baru terlebih dahulu.

Monitoring juga harus termasuk:

  • Log query slow dari Laravel Debugbar di environment staging.
  • Deadlock detection: gunakan observability database (MySQL Performance Schema) agar deploy yang menambahkan query berat tidak membuat blocking.
  • Alert queue failure rate agar pekerjaan asynchronous tetap terkendali.

Postmortem Ringan dan Tindakan Pencegahan

Setelah insiden, lakukan postmortem ringan dalam format:

  1. Deskripsikan apa yang terjadi, kapan mulai, dampak, dan sistem yang terkena.
  2. Jelaskan akar penyebab (misalnya migrasi yang gagal karena constraint, regresi query).
  3. Catat langkah mitigasi sementara (rollback, feature flag) dan rencana permanen.
  4. Tentukan indikator pemantauan baru atau threshold yang harus ditingkatkan.

Postmortem yang baik juga mencantumkan siapa yang terlibat, bagaimana komunikasi dikelola, dan lessons learned agar proses deployment berikutnya lebih aman.

Kesimpulan

Tim Laravel harus menyatukan pipeline deployment yang ketat, observability yang jelas, rollback terotomasi/manual, dan postmortem sistematis. Dengan tooling seperti Envoy untuk deployment, GitHub Actions untuk CI/CD, dan observability stack berbasis Telescope/Grafana, risiko regresi bisa diminimalkan. Selalu sertakan mitigasi regresi berupa feature flag dan smoke test sehingga setiap release tetap stabil.