Bagikan melalui


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 infrastruktur sebagai kode yang menentukan lingkungan dalam file versi.

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 secara individu. Seiring waktu, setiap lingkungan menjadi seperti "snowflake", yaitu konfigurasi unik yang tidak dapat dibuat ulang 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 penyimpangan 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 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 menghapus 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 deklaratif menggunakan sintaks JSON atau Bicep untuk menentukan infrastruktur yang diperlukan untuk menyebarkan solusi. Solusi pihak ketiga seperti Terraform melalui penyedia Azure tertentu juga tersedia.