Apa itu infrastruktur sebagai kode (IaC)?

Infrastruktur sebagai kode (IaC) menggunakan metodologi dan penerapan versi DevOps dengan model deskriptif untuk menentukan dan menyebarkan infrastruktur, seperti jaringan, komputer virtual, load balancer, dan topologi koneksi. Sama seperti kode sumber yang sama selalu menghasilkan biner yang sama, model IaC menghasilkan lingkungan yang sama setiap kali disebarkan.

Diagram of infrastructure as code defining the environment in a versioned file.

IaC adalah praktik DevOps utama dan komponen pengiriman berkelanjutan. Dengan IaC, tim DevOps dapat bekerja sama dengan serangkaian praktik dan alat terpadu untuk mengirimkan aplikasi dan infrastruktur pendukungnya dengan cepat dan andal dalam skala besar.

Hindari konfigurasi manual untuk menerapkan konsistensi

IaC berevolusi untuk menyelesaikan masalah penyimpangan lingkungan dalam alur rilis. Tanpa IaC, tim harus mempertahankan pengaturan lingkungan penyebaran satu per satu. Seiring waktu, setiap lingkungan menjadi "snowflake", konfigurasi unik yang tidak dapat direproduseri secara otomatis. Ketidakkonsistensian di antara lingkungan dapat menyebabkan masalah penyebaran. Administrasi dan pemeliharaan infrastruktur melibatkan proses manual yang rawan kesalahan dan sulit dilacak.

IaC menghindari konfigurasi manual dan memberlakukan konsistensi dengan mewakili status lingkungan yang diinginkan melalui kode yang didokumenkan dengan baik dalam format seperti JSON. Penyebaran infrastruktur dengan IaC dapat diulang dan mencegah masalah runtime yang disebabkan oleh pergeseran konfigurasi atau dependensi yang hilang. Alur rilis menjalankan deskripsi lingkungan dan model konfigurasi versi untuk mengonfigurasi lingkungan target. Untuk membuat perubahan, tim mengedit sumber, bukan target.

Idempotensi, kemampuan operasi tertentu untuk selalu menghasilkan hasil yang sama, adalah prinsip IaC yang penting. Perintah penyebaran selalu menetapkan lingkungan target ke dalam konfigurasi yang sama, terlepas dari status awal lingkungan. Idempotency dicapai dengan mengonfigurasi target yang ada secara otomatis, atau dengan membuang target yang ada dan membuat ulang lingkungan baru.

Alat yang bermanfaat

Memberikan lingkungan pengujian yang stabil dengan cepat dalam skala besar

IaC membantu tim DevOps menguji aplikasi di lingkungan seperti produksi di awal siklus pengembangan. Teams dapat menyediakan beberapa lingkungan pengujian dengan andal sesuai permintaan. Cloud secara dinamis menyediakan dan merobek lingkungan berdasarkan definisi IaC. Kode infrastruktur itu sendiri dapat divalidasi dan diuji untuk mencegah masalah penyebaran umum.

Menggunakan file definisi deklaratif

IaC harus menggunakan file definisi deklaratif jika memungkinkan. File definisi menjelaskan komponen dan konfigurasi yang diperlukan lingkungan, tetapi belum tentu cara mencapai konfigurasi tersebut. Misalnya, file mungkin menentukan versi dan konfigurasi server yang diperlukan, tetapi tidak menentukan proses penginstalan dan konfigurasi server. Abstraksi ini memungkinkan fleksibilitas yang lebih besar untuk menggunakan teknik yang dioptimalkan yang disediakan penyedia infrastruktur. Definisi deklaratif juga membantu mengurangi utang teknis mempertahankan kode imperatif, seperti skrip penyebaran, yang dapat bertambah dari waktu ke waktu.

Tidak ada sintaks standar untuk IaC deklaratif. Sintaks untuk menjelaskan IaC biasanya tergantung pada persyaratan platform target. Platform yang berbeda mendukung format file seperti YAML, JSON, dan XML.

Menyebarkan IaC di Azure

Azure menyediakan dukungan asli untuk IaC melalui model Azure Resource Manager . Teams dapat menentukan templat ARM atau Bicep deklaratif yang menentukan infrastruktur yang diperlukan untuk menyebarkan solusi.

Platform pihak ketiga seperti Terraform, Ansible, Chef, dan Pulumi juga mendukung IaC untuk mengelola infrastruktur otomatis.