Infrastructure as Code (IaC) adalah metodologi untuk mengelola dan menyediakan infrastruktur komputasi. IaC mengandalkan file definisi yang dapat dibaca mesin untuk konfigurasi, bukan penyesuaian hardware fisik manual atau alat konfigurasi interaktif. Dengan memperlakukan penyiapan infrastruktur sama seperti developer memperlakukan kode aplikasi, tim dapat mengotomatiskan deployment jaringan, virtual machine, cluster Kubernetes, database, dan load balancer dengan cepat dan andal. IaC berfungsi sebagai komponen praktik DevOps modern, yang membantu organisasi melakukan penskalaan dengan konsistensi dan kecepatan.
IaC bekerja dengan mengotomatiskan proses penyediaan melalui kode, sehingga tidak perlu lagi melakukan setelan manual di konsol cloud. Pertama, developer menentukan spesifikasi infrastruktur yang diinginkan dalam file konfigurasi, yang biasanya disimpan dalam sistem kontrol versi. Alat otomatisasi, seperti Terraform, kemudian memproses file ini dan melakukan panggilan API yang diperlukan ke penyedia cloud untuk membuat, memperbarui, atau menghapus resource yang sebenarnya. Alur kerja ini biasanya mengikuti jalur dari kode (definisi) ke kontrol versi, melalui pipeline CI/CD, dan akhirnya ke penyediaan.

Saat mengimplementasikan IaC, tim umumnya memilih antara dua pendekatan: deklaratif dan imperatif. Perbedaan utamanya terletak pada apakah Anda berfokus pada hasil akhir atau langkah-langkah untuk mencapainya.
Pendekatan | Deskripsi | Contoh |
Deklaratif (Declarative) | Anda menentukan tampilan status akhir yang Anda inginkan. Alat ini akan mencari tahu langkah-langkah yang diperlukan untuk mencapai status tersebut. Ini adalah standar modern untuk alat seperti Terraform dan Kubernetes. | "Saya ingin 3 virtual machine dengan RAM masing-masing 8GB." |
Imperatif | Anda menentukan cara mengubah infrastruktur dengan mencantumkan perintah atau skrip tertentu untuk dieksekusi secara berurutan. | "Jalankan skrip A untuk memulai server 1. Kemudian jalankan skrip B untuk mengonfigurasi jaringan. Lalu jalankan skrip C..." |
Pendekatan
Deskripsi
Contoh
Deklaratif (Declarative)
Anda menentukan tampilan status akhir yang Anda inginkan. Alat ini akan mencari tahu langkah-langkah yang diperlukan untuk mencapai status tersebut. Ini adalah standar modern untuk alat seperti Terraform dan Kubernetes.
"Saya ingin 3 virtual machine dengan RAM masing-masing 8GB."
Imperatif
Anda menentukan cara mengubah infrastruktur dengan mencantumkan perintah atau skrip tertentu untuk dieksekusi secara berurutan.
"Jalankan skrip A untuk memulai server 1. Kemudian jalankan skrip B untuk mengonfigurasi jaringan. Lalu jalankan skrip C..."
Seiring dengan berpindahnya definisi infrastruktur ke repositori kode, praktik keamanan harus beradaptasi untuk melindungi file-file ini. "Keamanan IaC" dan "pemindaian IaC" mengacu pada praktik menganalisis file konfigurasi untuk kerentanan sebelum infrastruktur di-deploy—konsep yang dikenal sebagai keamanan "Shift Left". Alat khusus memindai pipeline kode untuk mendeteksi kesalahan konfigurasi, seperti bucket Penyimpanan yang dibiarkan terbuka untuk publik atau database yang tidak terenkripsi, sehingga mencegah risiko keamanan mencapai lingkungan produksi.
Selain mendukung pola deployment umum, seperti aplikasi retrieval-augmented generation (RAG), IaC membantu menyelesaikan tantangan untuk deployment operasional yang kompleks.
Perusahaan sering kali perlu menjalankan workload di berbagai lingkungan. Dengan menggunakan alat seperti Terraform, tim dapat menggunakan alur kerja konfigurasi tunggal untuk men-deploy dan mengelola resource di Google Cloud, atau lingkungan cloud lainnya, dan pusat data lokal secara bersamaan. Hal ini mengurangi kompleksitas mempelajari berbagai alat eksklusif untuk setiap platform.
Developer sering kali memerlukan tempat yang aman untuk menguji fitur baru. Dengan IaC, tim dapat membuat lingkungan "staging" sementara yang mencerminkan produksi secara persis, menjalankan pengujian, lalu menghancurkan lingkungan tersebut segera setelahnya. Hal ini membantu memastikan akurasi pengujian sekaligus menghindari biaya untuk menjalankan server staging permanen 24/7.
Jika terjadi pemadaman layanan regional yang parah, pemulihan manual dapat memakan waktu berhari-hari. IaC memungkinkan "Disaster Recovery as Code", sehingga organisasi dapat dengan cepat menyediakan kembali seluruh infrastruktur mereka di region lain menggunakan definisi kode yang ada. Hal ini dapat mengurangi waktu non-operasional secara drastis dan memastikan kelangsungan bisnis.
Mengadopsi IaC dapat memberikan keuntungan signifikan bagi organisasi yang ingin memodernisasi operasi IT mereka.
Kecepatan
Otomatisasi memungkinkan Anda men-deploy lingkungan yang kompleks dalam hitungan menit, bukan hari atau minggu.
Konsistensi
Karena kode yang sama men-deploy lingkungan yang sama setiap kali, IaC menghilangkan "pergeseran konfigurasi"—saat server menjadi tidak konsisten karena perubahan ad-hoc manual.
Penghematan biaya
Tim dapat dengan mudah menghentikan resource yang tidak digunakan saat tidak diperlukan, seperti menonaktifkan lingkungan pengembangan pada akhir pekan, yang membantu mengelola pengeluaran cloud.
Kontrol versi
Karena infrastruktur ditentukan sebagai kode, seluruh histori perubahan infrastruktur Anda disimpan di satu tempat. Hal ini memudahkan untuk melacak siapa yang membuat perubahan dan apa yang diubah serta mengembalikan ke versi sebelumnya jika terjadi masalah.
Google Cloud menyediakan serangkaian alat komprehensif untuk mendukung perjalanan Infrastructure as Code Anda, mulai dari desain awal hingga deployment dan pengelolaan berkelanjutan. Titik awal yang bagus adalah Application Design Center, yang memungkinkan Anda menjelajahi, menyesuaikan, dan membangun arsitektur referensi bawaan. Hal ini membantu Anda merancang stack aplikasi berdasarkan praktik terbaik Google Cloud sebelum Anda menulis satu baris kode, sehingga memastikan infrastruktur Anda memiliki arsitektur yang baik sejak awal.
Setelah Anda memiliki desain, ekosistem terbuka Google Cloud memudahkan implementasinya sebagai kode. Platform ini memperlakukan standar open source seperti Terraform sebagai prioritas utama, bukan sekadar pertimbangan tambahan. Layanan seperti Infrastructure Manager memungkinkan Anda men-deploy dan mengelola resource Google Cloud menggunakan Terraform secara langsung, sementara Config Connector memungkinkan Anda mengelola resource Google Cloud melalui Kubernetes, sehingga membantu menjembatani kesenjangan antara infrastruktur cloud dan orkestrasi container.
Cloud Resource Manager berfungsi sebagai layanan untuk mengelola hierarki resource Google Cloud secara terprogram, termasuk organisasi, folder, dan project. Meskipun banyak tim menggunakan IaC untuk men-deploy resource seperti virtual machine, Cloud Resource Manager memungkinkan Anda menentukan struktur project itu sendiri sebagai kode. Hal ini membantu tim mengotomatiskan penyiapan lingkungan baru dengan kebijakan Identity and Access Management (IAM) dan batasan organisasi yang konsisten, sehingga memastikan tata kelola terintegrasi ke dalam infrastruktur sejak awal.
Salah satu cara paling berharga dalam menggunakan IaC adalah untuk menyelesaikan masalah umum developer: "Berfungsi di komputer saya, tapi mengapa tidak berfungsi dalam produksi?" Anda dapat mengatasi masalah ini dengan membuat lingkungan sementara.
Dalam alur kerja ini, saat developer membuka permintaan pull (PR), alat IaC akan otomatis menjalankan salinan aplikasi sementara yang terisolasi. Saat PR digabungkan, lingkungan tersebut akan dihapus secara otomatis.
Agar hal ini berfungsi, kode Terraform Anda tidak boleh memiliki nama yang di-hard code. Anda harus menggunakan variabel untuk membuat resource unik pada setiap PR.
main.tf (Cuplikan)
Di cloudbuild.yaml, Anda dapat memasukkan nomor PR ke Terraform menggunakan variabel substitusi _PR_NUMBER yang disediakan oleh Cloud Build.
cloudbuild.yaml (Cuplikan)
Alur kerja ini mengubah IaC dari tugas pemeliharaan statis menjadi alat produktivitas dinamis yang mempercepat siklus peninjauan.
Mulailah membangun solusi di Google Cloud dengan kredit gratis senilai $300 dan lebih dari 20 produk yang selalu gratis.