Apa itu Infrastruktur sebagai Kode?

Infrastructure as code defines the environment in a versioned file

Infrastructure as Code (IaC) adalah pengelolaan infrastruktur (jaringan, mesin virtual, penyeimbang beban, dan topologi koneksi) dalam model deskriptif, menggunakan versi yang sama seperti yang digunakan tim DevOps untuk kode sumber. Sebagaimana prinsip bahwa kode sumber yang sama menghasilkan biner yang sama, model IaC menghasilkan lingkungan yang sama setiap kali diterapkan. IaC adalah praktik DevOps kunci yang digunakan bersamaan dengan pengiriman berkelanjutan.

IaC memecahkan masalah nyata

Infrastructure as Code berevolusi untuk memecahkan masalah pergeseran lingkungan dalam alur rilis. Tanpa IaC, tim harus memelihara pengaturan lingkungan penyebaran individu. Seiring waktu, setiap lingkungan menjadi snowflake yang berarti konfigurasi unik yang tidak dapat direproduksi secara otomatis. Ketidakkonsistensian di antara lingkungan menyebabkan masalah selama penyebaran. Dengan snowflake, administrasi dan pemeliharaan infrastruktur melibatkan proses manual yang sulit dilacak dan berkontribusi pada kesalahan.

Idempotensi adalah prinsip Infrastructure as Code. Idempotensi adalah properti yang selalu ditetapkan perintah penyebaran lingkungan target ke dalam konfigurasi yang sama, terlepas dari status awal lingkungan. Idempotensi dicapai dengan mengonfigurasi target yang ada secara otomatis atau dengan membuang target yang ada dan membuat ulang lingkungan baru.

Dengan begitu, dengan IaC, tim membuat perubahan pada deskripsi lingkungan dan membuat versi model konfigurasi, yang biasanya dalam format kode terdokumentasi dengan baik seperti JSON. Alur rilis menjalankan model untuk mengonfigurasi lingkungan target. Jika tim perlu membuat perubahan, mereka mengedit sumbernya, bukan target.

IaC memberikan manfaat nyata

Infrastructure as Code memungkinkan tim DevOps menguji aplikasi di lingkungan seperti produksi di awal siklus pengembangan. Tim ini berharap untuk menyediakan beberapa lingkungan pengujian dengan andal dan sesuai permintaan. Infrastruktur yang direpresentasikan sebagai kode juga dapat divalidasi dan diuji untuk mencegah masalah penyebaran umum. Pada saat yang sama, cloud secara dinamis menyediakan dan melucuti lingkungan berdasarkan definisi IaC.

Tim yang menerapkan IaC dapat memberikan lingkungan yang stabil dengan cepat dan dalam skala besar. Tim menghindari konfigurasi lingkungan manual dan menegakkan konsistensi dengan mewakili status lingkungan yang diinginkan melalui kode. Penyebaran infrastruktur dengan IaC dapat diulang dan mencegah masalah runtime yang disebabkan oleh pergeseran konfigurasi atau dependensi yang hilang. Tim DevOps dapat bekerja sama dengan serangkaian praktik dan alat terpadu untuk memberikan aplikasi dan infrastruktur pendukungnya dengan cepat, andal, dan dalam skala besar.

Lebih suka definisi deklaratif

Pendekatan yang disukai untuk IaC adalah menggunakan file definisi deklaratif jika memungkinkan. File definisi menentukan apa yang dibutuhkan lingkungan dan belum tentu bagaimana caranya. Dengan kata lain, ini dapat mendefinisikan versi dan konfigurasi tertentu dari komponen server sebagai persyaratan, tetapi tidak menentukan proses untuk menginstal dan mengonfigurasinya. Abstraksi ini memungkinkan fleksibilitas yang lebih besar di tengah, seperti teknik yang dioptimalkan yang dapat digunakan penyedia infrastruktur. Ini juga membantu mengurangi utang teknis mempertahankan kode imperatif, seperti skrip penyebaran, yang dapat bertambah dari waktu ke waktu.

Tidak ada sintaks standar tunggal untuk IaC deklaratif. Platform yang berbeda mendukung format file yang berbeda, dan seringkali beberapa format file, seperti YAML, JSON, dan XML. Akibatnya, keputusan untuk memilih sintaks untuk menjelaskan IaC biasanya menjadi persyaratan platform target.

Menggunakan IaC di Azure

Azure menyediakan dukungan native untuk IaC melalui Azure Resource Manager. Tim dapat menentukan templat deklaratif yang menentukan infrastruktur yang diperlukan untuk menyebarkan solusi mereka.

Tim juga dapat menggunakan IaC yang didukung oleh platform pihak ketiga populer, seperti Terraform, Ansible, Chef, dan Pulumi untuk mengelola infrastruktur otomatis.