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 lintatauvendor/bin/pint, validasi .env.example. - Unit/integration test: memastikan suite terintegrasi dengan database SQLite atau testing database sementara.
- Build aset: compiles
npm run productionbila menggunakan Vite/ Mix. - Check migrasi dan seed kunci:
php artisan migrate --pretendatau--dry-rununtuk 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:
- Setelah deploy, jalankan smoke test (API timeout, response 200).
- Jika indikator error meningkat, Envoy bisa menjalankan
php artisan envoy run rollbackyang mengembalikan symlink ke release sebelumnya. - Sertakan
--forceuntuk 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:rollbackyang 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:
- Deskripsikan apa yang terjadi, kapan mulai, dampak, dan sistem yang terkena.
- Jelaskan akar penyebab (misalnya migrasi yang gagal karena constraint, regresi query).
- Catat langkah mitigasi sementara (rollback, feature flag) dan rencana permanen.
- 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.
Komentar
0 komentar
Masuk ke akun kamu untuk ikut berkomentar.
Belum ada komentar
Jadilah yang pertama ikut berdiskusi!