Apa yang Sebenarnya Dilakukan oleh Alat CI/CD Anda: Uraian Berdasarkan Fungsi
Anda memiliki pipeline yang membangun, menguji, dan menyebarkan aplikasi. Namun, ketika terjadi masalah, Anda menyadari bahwa Anda tidak yakin alat mana yang bertanggung jawab atas apa. Server CI mati, tetapi deployment tetap berjalan. Registry artefak memiliki tiga versi dari build yang sama, dan tidak ada yang tahu mana yang benar. Migrasi database berjalan dua kali, dan sekarang skema berada dalam keadaan yang tidak diketahui.
Kebingungan ini terjadi ketika tim memilih alat berdasarkan nama atau popularitas, alih-alih memahami apa yang seharusnya dilakukan oleh setiap alat. Server CI tidak dapat menggantikan alat deployment. Sistem feature flag bukanlah pengelola rahasia. Platform observability tidak melakukan change management.
Berikut adalah uraian fungsional dari sembilan kategori alat yang membentuk pipeline pengiriman modern. Setiap kategori memiliki tugas spesifik yang tidak dapat dilakukan oleh kategori lain.
CI Server: Otak Pipeline
CI server adalah mesin yang memantau repositori Anda dan menjalankan pipeline secara otomatis. Ketika seorang pengembang melakukan push kode, CI server menangkap perubahan tersebut, menjalankan langkah-langkah build, mengeksekusi pengujian, dan menghasilkan artefak.
Tanpa CI server, setiap perubahan kode mengharuskan pengembang untuk secara manual checkout kode, menjalankan build, dan memverifikasi hasilnya. Hal itu tidak akan berjalan jika lebih dari satu orang mengerjakan satu fitur.
CI server mengoordinasikan seluruh pipeline. Ia menentukan apa yang berjalan, dalam urutan apa, dan apa yang terjadi ketika sebuah langkah gagal. Ia adalah sistem saraf pusat dari proses pengiriman Anda.
Diagram di bawah menunjukkan bagaimana sembilan kategori alat saling terintegrasi dalam pipeline pengiriman yang tipikal:
Artifact Registry: Lapisan Penyimpanan
Setelah CI server selesai membangun, ia menghasilkan sebuah artefak. Artefak tersebut membutuhkan tempat penyimpanan permanen di mana alat deployment dapat menemukannya nanti.
Artifact registry menyimpan setiap versi build Anda beserta metadata: nomor versi, hash build, dependensi, dan terkadang hasil pemindaian keamanan. Tugasnya sederhana namun krusial: memastikan bahwa artefak yang lulus semua pengujian adalah artefak yang sama yang akan di-deploy.
Tanpa registry, tim akan membangun ulang dari sumber saat deployment, yang memperkenalkan risiko. Build yang berjalan satu jam yang lalu dapat menghasilkan output yang berbeda jika dependensi berubah atau jika lingkungan build tidak identik.
Deployment Tool: Mesin Penempatan
Deployment tool mengambil artefak dari registry dan menempatkannya ke lingkungan target. Ia membaca konfigurasi lingkungan, menarik artefak yang benar, dan menjalankan proses deployment.
Alat deployment menangani strategi seperti blue-green, canary, atau rolling update. Mereka mengelola transisi dari versi lama ke versi baru dengan gangguan yang minimal.
Perbedaan utamanya: alat deployment tidak membangun infrastruktur. Mereka menempatkan aplikasi ke dalam infrastruktur yang sudah ada. Jika Anda perlu membuat server, jaringan, atau sumber daya cloud terlebih dahulu, itu adalah tugas alat yang berbeda.
IaC Tool: Pembangun Infrastruktur
Alat Infrastructure as Code membuat dan mengelola infrastruktur Anda secara terprogram. Mereka mendefinisikan server, database, jaringan, load balancer, dan sumber daya cloud sebagai kode yang dapat di-versioning, ditinjau, dan diterapkan secara konsisten.
Alat IaC dan alat deployment sering bekerja secara berurutan. Alat IaC menyiapkan lingkungan. Alat deployment mengisi lingkungan tersebut dengan aplikasi. Mencampur kedua tanggung jawab ini akan menghasilkan pipeline yang rapuh di mana perubahan infrastruktur terkait erat dengan deployment aplikasi.
Database Migration Tool: Pengelola Skema
Migrasi database adalah jenis perubahan khusus. Mereka mengubah skema yang menjadi sandaran aplikasi Anda, dan harus dijalankan secara berurutan. Menjalankan skrip migrasi di luar urutan atau melewatkan satu saja dapat merusak data Anda.
Alat migrasi melacak versi skema mana yang sedang diterapkan. Ia hanya menjalankan migrasi yang belum dieksekusi. Ia tahu cara maju dan, dalam banyak kasus, cara mundur.
Tanpa alat migrasi, tim menjalankan skrip SQL secara manual atau menyematkan perubahan skema di dalam kode aplikasi. Kedua pendekatan tersebut rapuh dan rawan kesalahan, terutama ketika beberapa pengembang mengerjakan database yang sama.
Feature Flag System: Pemisah Rilis
Feature flags memisahkan deployment dari rilis. Anda dapat men-deploy kode dengan fitur yang dimatikan, lalu mengaktifkannya nanti untuk pengguna, wilayah, atau kondisi tertentu.
Ini memberi Anda kendali yang terperinci. Fitur baru dapat diuji oleh sekelompok kecil pengguna terlebih dahulu. Jika menyebabkan masalah, Anda mematikannya tanpa harus melakukan rollback seluruh deployment. Jika berhasil, Anda secara bertahap meningkatkan jumlah audiens.
Feature flags bukanlah file konfigurasi. Mereka adalah sistem kontrol runtime yang memungkinkan Anda mengubah perilaku aplikasi tanpa men-deploy ulang.
Secret Management: Brankas Kredensial
Secret adalah kata sandi, kunci API, sertifikat, dan token. Mereka harus disimpan dengan aman dan hanya tersedia untuk layanan yang membutuhkannya, pada saat mereka membutuhkannya.
Alat secret management mengenkripsi secret saat disimpan dan saat transit. Ia mengontrol akses berdasarkan identitas dan konteks. Ia memutar kredensial secara otomatis dan mencatat setiap upaya akses.
Hardcoding secret di file konfigurasi atau variabel lingkungan bukanlah secret management. Itu adalah insiden keamanan yang tinggal menunggu waktu.
Observability Platform: Lapisan Visibilitas
Observability mengumpulkan log, metrik, dan trace dari sistem yang sedang berjalan. Ia memberi Anda kemampuan untuk memahami apa yang dilakukan aplikasi Anda di production.
Ini berbeda dari monitoring tradisional. Monitoring memberi tahu Anda apakah suatu sistem aktif atau tidak. Observability memberi tahu Anda mengapa suatu sistem berperilaku seperti itu. Ia membantu Anda men-debug masalah, memahami kinerja, dan mendeteksi anomali sebelum menjadi insiden.
Change Management Tool: Jejak Audit
Setiap perubahan yang melalui pipeline Anda meninggalkan jejak. Alat change management mencatat siapa yang membuat perubahan, apa yang diubah, kapan itu terjadi, dan mengapa.
Ini penting untuk tata kelola dan kepatuhan. Ketika terjadi kesalahan, Anda perlu tahu persis apa yang berubah dan siapa yang menyetujuinya. Tanpa alat change management, Anda mengandalkan ingatan, log obrolan, atau spreadsheet.
Daftar Periksa Praktis
Sebelum menambahkan alat baru ke pipeline Anda, ajukan pertanyaan-pertanyaan ini:
- Termasuk dalam kategori manakah alat ini?
- Apakah saya sudah memiliki alat dalam kategori ini?
- Apakah alat baru ini tumpang tindih dengan fungsi alat yang sudah ada?
- Jika tumpang tindih, alat mana yang seharusnya memiliki fungsi tersebut?
Kesimpulan
Alat tidak dapat dipertukarkan. Server CI tidak dapat melakukan deployment. Alat deployment tidak dapat mengelola secret. Artifact registry tidak dapat menjalankan migrasi. Ketika Anda memahami fungsinya, bukan hanya namanya, Anda berhenti menebak-nebak alat mana yang melakukan apa. Anda membangun pipeline yang jelas, mudah dipelihara, dan benar-benar berfungsi ketika terjadi kesalahan.