- Mengelola lebih dari 165.000 resource cloud di 625 workspace Terraform dan 38 akun AWS
- Dari 170 engineer, 40 orang adalah spesialis infrastruktur
- Menjalankan 225 rilis infrastruktur (
terraform apply) dan 723 plan (terraform plan) setiap hari
- Untuk itu, mereka mengadopsi Terraform Cloud guna mengotomatiskan proses rilis infrastruktur, sekaligus mengurangi pekerjaan manual dan kesalahan dari para developer
Masalah sebelum mengadopsi Terraform Cloud
- Memerlukan hak akses AWS tingkat tinggi: tim infrastruktur harus memiliki hak akses AWS tingkat tinggi
- Pekerjaan yang memakan waktu: harus menjalankan
terraform apply di setiap direktori lalu mengulang proses review dan persetujuan, dan satu perubahan bisa berdampak pada lebih dari 120 workspace
- Terjadi infrastructure drift: perubahan tak terduga menumpuk sehingga saat diterapkan diperlukan review dan tindakan tambahan
Penerapan Terraform Cloud dan dampaknya
- Menghilangkan drift → menghapus infrastructure drift sehingga mengurangi risiko dan beban developer
- Menghemat waktu developer → menghemat sekitar 8.000 jam waktu developer per tahun (setara beban kerja 4 developer)
- Perubahan dapat dilacak → perubahan dapat ditelusuri melalui audit log dan lebih mudah di-debug
- Mendukung speculative plan → perubahan dapat diuji secara otomatis dan hasilnya bisa langsung dilihat di GitHub CI
Cara Terraform Cloud dioperasikan saat ini
- Self-hosted: menginstal Terraform Cloud for Business secara mandiri dan menjalankan agen TFC di cluster ECS dalam akun AWS
- Konfigurasi agent pool: mengoperasikan 120 agent yang dibagi ke dalam lingkungan development (40) dan lingkungan production (80) untuk mempertahankan konkurensi tinggi
Hal-hal yang dipantau secara utama
- Kehabisan agent dan batas konkurensi → jika agent kurang, notifikasi dikirim ke penanggung jawab on-call
- Waktu plan → jika waktu plan di lingkungan development melebihi 4 menit, tim akan diberi tahu
- Infrastructure drift → saat ini tidak diukur (karena drift hampir tidak terjadi)
Optimasi untuk meningkatkan kualitas
- Mengembangkan TFC CLI: agar perubahan di beberapa workspace bisa direview dan disetujui secara otomatis lewat CLI
- Membangun sistem notifikasi: mengotomatiskan notifikasi Slack agar tidak ada penerapan Terraform yang terlewat
- Manajemen workspace otomatis: mengelola 625 workspace menggunakan Terraform dan menerapkan tag untuk membedakan tim pemilik
- Analisis penggunaan Terraform Cloud: memanfaatkan TFC API untuk mengumpulkan data state version dan memahami penggunaan resource serta tren pertumbuhannya
- Backup Terraform State: mencadangkan file state secara otomatis ke bucket S3 agar dapat dipulihkan saat terjadi gangguan
- Mengelola dependensi workspace: membuat pohon dependensi modul untuk mengatur direktori yang harus dipantau oleh workspace secara otomatis
- Mengotomatiskan upgrade provider: menggunakan Dependabot untuk meng-upgrade provider setiap bulan dan mengurangi beban pengelolaan melalui otomatisasi
Perbaikan yang direncanakan ke depan
- Rollout bertahap: beralih dari rilis berbasis branch
main ke metode deployment multi-tahap (development → staging → production)
- Memecah workspace besar: memecah 625 workspace saat ini menjadi lebih dari 1500 agar waktu plan dan apply lebih singkat serta cakupan dampak perubahan lebih kecil
- Peningkatan fitur notifikasi: menambahkan fitur reassign pada notifikasi Slack dan memperkenalkan pembuatan otomatis perintah
tfc review
- Auto scaling agent: berencana mengadopsi sistem auto scaling berbasis EKS untuk menangani workload yang berubah-ubah secara efisien
- Open-source alat yang dikembangkan sendiri: berencana merilis berbagai alat internal sebagai open source agar dapat dimanfaatkan tim lain juga
Belum ada komentar.