Memahami Alat IaC: Cloudformation vs Terraform
Diterbitkan: 2022-03-10AWS CloudFormation dan Terraform – tidak yakin harus memilih yang mana? Artikel ini akan membantu Anda mencapai keputusan yang cerdas.
Cloud Computing telah merevolusi dunia DevOps. Ini bukan hanya kata kunci lagi; itu di sini dan di sini untuk mengubah cara kita mengembangkan dan memelihara aplikasi kita. Meskipun ada banyak alasan mengapa Anda harus menggunakan komputasi awan untuk semua skala bisnis, ada sedikit batasan, Anda harus menyediakan infrastruktur Anda secara manual.
Anda harus pergi ke konsol penyedia cloud Anda dan memberi tahu mereka apa yang Anda inginkan. Ini berfungsi dengan baik untuk kasus penggunaan kecil tetapi bagaimana jika Anda memiliki orang yang berbeda membuat perubahan konfigurasi di konsol. Anda bisa berakhir dengan infrastruktur super rumit yang hanya akan menjadi semakin sulit untuk dipelihara. Tidak ada cara yang efisien untuk berkolaborasi atau melacak perubahan pada Infrastruktur di Cloud. Nah, sebenarnya ada. Infrastruktur sebagai Kode.
Infrastruktur sebagai kode adalah istilah yang sangat populer dalam komputasi awan. Ini adalah proses mengelola infrastruktur TI Anda menggunakan kode. Ya itu benar. Alih-alih pergi ke konsol dan melakukan semuanya secara manual; Infrastruktur sebagai kode, alias IAAC atau IAC, memungkinkan Anda menulis file konfigurasi, yang kemudian menyediakan infrastruktur cloud Anda. IAC memberi kita manfaat seperti konsistensi, perawatan yang mudah dan cepat, dan tidak ada ruang untuk kesalahan manusia.
Menggunakan IAC dengan Amazon Web Services
AWS adalah layanan komputasi awan terkemuka di dunia, memiliki pangsa pasar dua kali lipat dari penyedia awan berikutnya setelahnya. Ada lebih dari 200 layanan di AWS yang dapat melayani ratusan dan ribuan kasus penggunaan.
Saat mulai menggunakan IAC dengan AWS, Anda akan sering mempersempit pilihan Anda ke AWS CloudFormation dan alat sumber terbuka, Terraform. Saat mencoba membuat pilihan di antara keduanya, memahami banyak fitur yang ditawarkan kedua alat bisa sangat banyak. Dalam artikel ini, kita akan melihat perbedaan antara AWS CloudFormation dan Terraform untuk membantu Anda memutuskan alat mana yang lebih sesuai dengan kebutuhan Anda.
Terraform vs. AWS CloudFormation: Perbedaan
Modularitas
Saat menggunakan IAC di organisasi besar, modularitas dapat menjadi faktor besar untuk memilih alat yang tepat.
Formasi Awan
CloudFormation tidak memiliki dukungan asli untuk modul. Ini memungkinkan Anda untuk menggunakan sesuatu yang disebut tumpukan bersarang sebagai modul.
Misalnya, Anda dapat memiliki konfigurasi standar tentang bagaimana Anda ingin menyediakan bucket S3 di organisasi Anda. Jadi, Anda membuat template CloudFormation standar yang membuat bucket S3. Sekarang ketika pengguna akhir ingin membuat bucket S3, mereka dapat menggunakan template CloudFormation ini sebagai tumpukan bersarang dan membuat bucket S3 standar.
Ada juga layanan AWS yang kurang dikenal, Katalog Layanan AWS yang dapat membantu Anda dengan modularitas AWS CloudFormation Anda. Katalog Layanan adalah layanan AWS yang dirancang khusus untuk organisasi yang ingin membatasi cakupan Layanan AWS untuk memenuhi persyaratan kepatuhan, keamanan, biaya, atau kinerja. Dan coba tebak? Katalog Layanan AWS menggunakan template CloudFormation di backend.
Mari kita cepat memahami ini dengan sebuah contoh. Bucket S3, jika tidak digunakan dengan benar, dapat segera menjadi bencana besar bagi data rahasia Anda. Mari kita ambil contoh yang sama, Anda ingin memiliki cara standar tentang bagaimana Anda ingin menggunakan S3 di organisasi Anda. Opsi pertama adalah membuat templat tumpukan bersarang, yang dapat digunakan dalam tumpukan CloudFormation lain dan sama baiknya.
Jika Anda tidak ingin pengguna harus menggunakan templat standar ini sebagai tumpukan bersarang, Anda dapat menggunakan Katalog Layanan AWS. Katalog Layanan akan memungkinkan pengguna untuk menggunakan template standar ini dari UI konsol dan menentukan beberapa parameter, untuk sedikit penyesuaian. Ini akan memungkinkan Anda untuk mengontrol bagaimana infrastruktur disediakan di Akun AWS Anda dan mencegah skenario yang tidak diinginkan.
Terraform
Terraform memiliki dukungan asli untuk modul. Ini memungkinkan Anda membuat konfigurasi standar seperti AWS CloudFormation dan menggunakannya dalam konfigurasi terraform lainnya.
Karena Terraform adalah alat sumber terbuka, Anda juga dapat menemukan dan menggunakan beberapa modul sumber terbuka yang telah dibuat sebelumnya di Registri Terraform. Anda juga dapat membuat modul Anda sendiri dengan konfigurasi Anda sendiri dan menyimpannya di registri modul pribadi.
Secara pribadi, saya lebih suka menggunakan Terraform daripada CloudFormation jika modularitas adalah persyaratan besar.
Menggunakan tumpukan bersarang di CloudFormation tidak semudah menggunakan modul di Terraform. Faktor utamanya adalah melewatkan data dari template CFN ke tumpukan bersarang bisa jadi cukup rumit.
Tidak ada tempat standar di mana template CloudFormation dapat dibagikan. Anda memiliki Katalog Layanan AWS tetapi itu hanyalah cara bagi Anda untuk menerapkan beberapa aturan untuk membuat infrastruktur melalui Konsol. Kita semua tentang kode. Saat menggunakan Katalog Layanan, meskipun beberapa tugas rumit dienkapsulasi oleh file CloudFormation, Anda masih harus melalui tugas manual untuk membuka konsol dan menentukan parameter untuk membuat Infrastruktur Anda.

Terraform, di sisi lain, memiliki metode yang ditetapkan untuk membuat, memelihara, dan berbagi modul. Anda dapat melihat persyaratan yang tepat dari modul di Registri Modul Terraform dan menggunakannya dalam file terraform Anda dengan sangat mudah.
Kontrol dan tata kelola atas Infrastruktur
Jika Anda ingin membatasi sumber daya yang dapat dibuat oleh orang-orang Anda di Akun AWS Anda: AWS CloudFormation dan Terraform memberi Anda sarana untuk melakukannya.
Mari kita bicara tentang CloudFormation terlebih dahulu. CloudFormation sendiri tidak menawarkan kontrol apa pun tentang bagaimana template digunakan tetapi Anda dapat menggunakan kebijakan AWS IAM untuk hanya mengizinkan pengguna di Akun AWS Anda untuk hanya menggunakan template CloudFormation standar untuk pembuatan sumber daya. Dalam contoh bucket S3 kami, Anda mungkin ingin membatasi semua izin "Buat S3" untuk pengguna dan hanya mengizinkan mereka membuat bucket S3 dari AWS Service Catalog atau Nested Stacks.
Terraform memungkinkan Anda untuk mengontrol sumber daya mana yang dapat dibuat pengguna Anda menggunakan kebijakan sebagai alat kode Sentinel. Sentinel memungkinkan Anda untuk menerapkan kebijakan berbasis logika yang halus untuk mengizinkan atau menolak tindakan pengguna melalui Terraform. Misalnya, Anda dapat menolak semua sumber daya yang membuat bucket S3 dan hanya mengizinkan pengguna membuat bucket S3 dari modul standar.
Manajemen Negara
Keduanya, AWS CloudFormation dan Terraform perlu melacak sumber daya yang mereka pertahankan.
Terraform menyimpan status infrastruktur Anda dalam file status. File ini disimpan secara lokal secara default namun Anda dapat menyimpannya di backend jarak jauh seperti S3 dan meminta banyak pengguna membuat perubahan pada kumpulan infrastruktur yang sama.
CloudFormation tidak memelihara file status, setidaknya tidak ada yang bisa kita lihat. CloudFormation adalah layanan terkelola, jadi, ia melakukan semua pemeliharaan dan pemeriksaan status di latar belakang.
Keduanya, AWS CloudFormation dan Terraform memiliki sarana bagi Anda untuk memeriksa perubahan apa yang akan dilakukan pada infrastruktur Anda. Di Terraform, Anda dapat menjalankan perintah – “rencana terraform” dan bagaimana Terraform berencana menerapkan perubahan konfigurasi Anda. Di CloudFormation, pengguna dapat melihat informasi ini melalui Change Sets.
Bahasa
Terraform menggunakan Bahasa Konfigurasi HashiCorp, HCL, bahasa yang dibuat oleh HashiCorp. Ini sangat mirip dengan JSON dengan fitur dan kemampuan bawaan tambahan.
Template CloudFormation ditulis dalam format YAML atau JSON
Logging dan rollback
Baik AWS CloudFormation dan Terraform memiliki kemampuan logging yang baik. Dalam pengalaman saya, kesalahan dan masalah sangat mudah (sebagian besar).
CloudFormation: Secara default, CloudFormation mengembalikan semua perubahan Anda jika terjadi perubahan tumpukan yang gagal. Ini adalah fitur yang bagus dan dapat dinonaktifkan untuk tujuan debugging apa pun.
Terraform: Terraform tidak akan secara otomatis mengembalikan perubahan Anda jika gagal. Ini bukan masalah karena Anda selalu dapat menjalankan perintah penghancuran terraform untuk menghapus konfigurasi yang setengah disediakan dan memulai kembali menjalankan Terraform lagi.
Cakupan
Terraform tidak terbatas pada AWS Cloud. Faktor terpenting saat memilih antara Terraform dan CloudFormation adalah Terraform mendukung penyedia dan layanan cloud lainnya.
Jadi, jika Anda berencana menggunakan IAC untuk beberapa platform cloud, Terraform adalah pilihan terbaik Anda. CloudFormation, meskipun merupakan alat yang ampuh, hanya terbatas pada AWS. Dengan menggunakan Terraform, Anda dapat menyiapkan infrastruktur dan menerapkan aplikasi Anda di berbagai platform cloud, sehingga membuat aplikasi Anda lebih tersedia dan tangguh.
Dukungan Fitur
Biasanya, saat AWS meluncurkan layanan dan fitur baru, CloudFormation akan diperbarui sebelum Terraform, karena ini adalah Layanan AWS. Sampai sekarang, kedua alat tersebut mencakup sebagian besar layanan dan fitur dari layanan ini. Ini bisa menjadi sedikit kelemahan menggunakan Terraform, namun kami punya solusinya.
Ada juga kemungkinan bagi Anda untuk membuat tumpukan CloudFormation dalam kode Terraform Anda. Jadi, jika Anda menggunakan Terraform dan tidak memiliki fitur, Anda dapat mengatur sementara tumpukan CloudFormation di dalam kode Terraform Anda.
Dukungan teknis
Paket dukungan teknis AWS berbayar juga mencakup dukungan CloudFormation.
HashiCorp juga telah membayar paket untuk dukungan teknis di Terraform.
Kesimpulan
Baik AWS CloudFormation dan Terraform adalah alat yang kuat dan dikembangkan sepenuhnya. Perbedaan di atas akan membantu Anda membuat keputusan yang tepat untuk memilih alat berdasarkan kebutuhan Anda. Sebagai saran pribadi, jika Anda berencana menggunakan beberapa platform cloud di masa mendatang atau saat ini menggunakan banyak cloud, Anda harus menggunakan Terraform sebagai toko serba ada untuk semua kebutuhan Anda. Jika Anda mencari alat IAC hanya untuk AWS, AWS CloudFormation dan Terraform adalah permainan yang adil.
Jika Anda tertarik untuk mempelajari Terraform, lihat kursus online ini.