Checklist Deployment CodeIgniter 3 dengan Observability & Rollback membantu memastikan Anda tidak melewatkan langkah penting sebelum, selama, dan setelah rilis. Dalam dua paragraf ini langsung jawab: lakukan pemeriksaan dependensi, validasi konfigurasi, lalu siapkan observability dan rollback sebagai bagian dari proses deployment. Artikel ini memberi langkah konkret sehingga tim produksi bisa menerapkan CodeIgniter 3 dengan aman.

Checklist Pra-Deploy untuk CodeIgniter 3

Siapkan lingkungan produksi dengan struktur yang jelas dan pastikan perubahan sudah diuji di staging. Gunakan checklist berikut sebagai panduan final sebelum memicu deploy:

  1. Sinkronisasi kode: Tarik cabang rilis stabil, pastikan tidak ada cherry-pick yang belum diuji, dan jalankan git status untuk memastikan working tree bersih.
  2. Dependency validation: Jalankan composer install --no-dev (jika memakai Composer) lalu php -l pada file utama untuk memastikan tidak ada error sintaks.
  3. Sanity check konfigurasi: Verifikasi file application/config/config.php (base_url, enkripsi, session) dan database.php (hostname, charset). Hal ini mencegah perubahan environment tanpa disengaja.
  4. Migration/database script ready: Siapkan skrip migrasi dan seimbangkan rollback SQL. Simpan backup schema terbaru agar bisa digulirkan cepat.
  5. Service dependencies: Pastikan service eksternal (Redis, queue, SMTP) tersedia dan kredensial baru sudah di-deploy secara terkoordinasi.
  6. Sanity check otomatis: Jalankan endpoint internal sederhana, misalnya CURL http://localhost/health, untuk memastikan PHP-FPM/Apache dalam kondisi baik.

Catat status setiap langkah dalam tiket deploy agar tim dapat mengevaluasi kesiapan secara transparan.

Observability Dasar saat Deployment

Observability membantu mendeteksi masalah cepat tanpa menunggu laporan pengguna. Fokus pada tiga pilar: log, metrik, dan healthcheck.

Log Terpusat dan Monitoring

Gunakan log CodeIgniter (di application/logs) dengan level ERROR dan DEBUG minimal untuk deployment baru. Pastikan log diteruskan ke sistem terpusat (misalnya filebeat/rsyslog). Simpan konfigurasi logging di application/config/config.php dan tambahkan prefix waktu serta nama environment.

Metrik Kunci

Pantau metrik seperti waktu respon utama, error rate, dan status database. Jika belum memiliki stack (Prometheus/Grafana), setidaknya kirim output top atau vmstat sederhana via skrip cron ke channel tim. Fokus saja pada metrik yang membantu mendeteksi regressi performa.

Healthcheck dan Validasi Endpoint

Tambahkan endpoint /health yang mengecek koneksi database, write permission, dan queue broker. Contoh skrip:

function health_check()
{
    $this->load->database();
    if (!$this->db->conn_id) {
        show_error('DB gagal terhubung', 500);
    }
    echo 'OK';
}

Gunakan curl dari monitoring server setiap 30 detik. Jika respon bukan 200 dalam 3 percobaan berturut-turut, siapkan rollback.

Strategi Rollback Cepat

Rollback harus siap untuk kode dan database. Tujuannya mengembalikan kondisi stabil tanpa menunggu jam kerja berikutnya.

Rollback Kode

Gunakan script sederhana untuk revert dengan git reset --hard ke tag terakhir yang stabil.

#!/bin/bash
set -e
DEPLOY_DIR=/var/www/ci3
cd "$DEPLOY_DIR"
git fetch --tags
LAST_GOOD=$(git describe --tags --abbrev=0 --match "stable-*" )
git reset --hard "$LAST_GOOD"
pm install --production
php ./application/commands/cache_clear.php
service php8.2-fpm reload

Pastikan script ini diuji di staging. Kapan memicu rollback? Jika:

  • Healthcheck gagal lebih dari 3x berturut-turut.
  • Error rate meningkat drastis dan terjadi timeout terhadap service utama.
  • Migration database calon release merusak data (terdeteksi lewat integritas atau duplicate entry) dan belum bisa diperbaiki.

Rollback Database

Jika deploy menyertakan migration, siapkan skrip rollback SQL atau backup schema/ data. Langkahnya:

  1. Ambil dump terakhir sebelum deploy dengan mysqldump --single-transaction.
  2. Jika migrasi gagal, jalankan mysql untuk restore data.
  3. Pastikan kode rollback hanya dijalankan setelah downgrade schema selesai.

Kombinasikan rollback kode dan database dalam urutan: rollback kode & queue, lalu database, untuk meminimalisir state mismatch.

Postmortem dan Insiden Mendadak

Setelah insiden—apakah rollback dipicu atau tidak—lakukan postmortem ringan:

  • Catat trigger utama (misal: migration gagal, memory spike, loop tak terduga).
  • Dokumentasikan timeline: waktu deploy, healthcheck, rollback, dan estimasi waktu penyelesaian.
  • Identifikasi tindakan pencegahan seperti menambahkan validasi schema atau memperkuat observability.

Gunakan format jelas agar tim bisa belajar dari setiap deployment. Simpan catatan ini di repository knowledge base.

Ringkasan Checklist dan Praktik Baik

Deployment CodeIgniter 3 di produksi harus dimulai dengan checklist pra-deploy, dilanjutkan praktik observability, dan diakhiri strategi rollback siap pakai. Setiap langkah diuji melalui healthcheck dan sanity check. Postmortem memastikan tim tahu kapan rollback dimulai dan bagaimana menghindari masalah serupa.