Cloudformation / Serverless vs Terraform di AWS

Aug 25 2020

Saya ingin memahami kebutuhan alat seperti Terraform. Ketika kami memiliki templat Cloudformation tersedia dan seseorang dapat membuat / memperbarui semua layanan AWS dengan itu, Apa gunanya menggunakan layanan seperti Terraform. Mohon Sarankan.

Jawaban

Marcin Aug 25 2020 at 15:56

CloudFormation (CFN) dan Terraform (CF) keduanya adalah alat pengembangan Infrastruktur sebagai Kode (IaC).

Namun, CFN hanya untuk AWS . Anda tidak dapat menggunakannya dengan Azure, GCP, atau apa pun di luar ekosistem AWS. Sebaliknya, TF adalah cloud agnostic . Anda dapat menggunakannya tidak hanya di beberapa penyedia cloud, tetapi juga untuk bekerja dengan produk non-cloud, seperti buruh pelabuhan, berbagai database, dan bahkan pizza domino jika Anda mau.

Jadi keuntungan utama TF adalah setelah Anda mempelajarinya hanya sekali , Anda dapat menerapkannya ke sejumlah penyedia cloud. CFN hanya berguna di AWS, dan setelah Anda berhenti menggunakan CFN, Anda harus mempelajari sesuatu yang baru untuk bekerja dengan cloud lain.

Ada juga perbedaan cara kerja TF dan CFN. Keduanya memiliki kekuatan dan akhir pekan . Sebagai contoh:

  • ketika Anda menerapkan menggunakan CFN, semua sumber daya tersedia untuk dilihat di satu lokasi pusat di AWS bersama dengan kode sumber templat. Padahal dengan TF tidak ada tempat seperti itu. Jika Anda masuk ke konsol AWS, Anda tidak tahu apa yang dibuat oleh TF, apa kode sumber yang digunakan, dll.

  • TF memiliki loop dan struktur dan kondisi data yang kompleks, sedangkan CFN tidak.

  • CFN memiliki kebijakan pembuatan dan kebijakan pembaruan, TF belum.

  • Anda dapat mengontrol akses ke CFN menggunakan kebijakan CFN dan kebijakan IAM. Anda tidak dapat melakukan hal yang sama dengan TF karena TF "hidup" di luar AWS.

1 Blokje5 Aug 25 2020 at 15:56

Ada beberapa alasan mengapa Anda mungkin memilih Terraform daripada CloudFormation:

  1. Vendor Agnostik: Mungkin ada saatnya Anda perlu memigrasi infrastruktur cloud di masa mendatang. Hal ini dapat terjadi karena beberapa alasan (misalnya biaya, kepatuhan terhadap peraturan, dll.). Dengan Terraform Anda masih dapat menggunakan alat yang sama untuk menyebarkan infrastruktur baru. Dengan penggunaan modul Terraform yang cerdas, Anda bahkan dapat membiarkan sebagian besar infrastruktur Anda sebagai tempat penyimpanan kode dengan bijaksana.
  2. Dukungan untuk alat lain: Ini juga dibangun sedikit dari poin sebelumnya, tetapi Terraform dapat menerapkan lebih dari sekadar sumber daya AWS. Misalnya, Anda dapat menggunakan Terraform untuk mengatur penerapan mesin EC2 yang kemudian dikonfigurasi dengan Ansible. Atau Anda dapat menggunakan Terraform untuk menerapkan aplikasi di atas cluster Kubernetes Anda. Meskipun CloudFormation mendukung sumber daya khusus melalui pembuatan Lambdas khusus, cukup banyak pekerjaan yang harus dipelihara.
  3. Ekosistem yang lebih luas: Karena sifat Sumber Terbuka Terraform, ada ekosistem alat yang sangat besar yang membantu Anda menyelesaikan semua jenis masalah, seperti menguji infrastruktur sebagai kode atau membangun sesuai kepatuhan secara berkelanjutan.
  4. Bisa dibilang bahasa yang lebih baik: Secara pribadi menurut saya Terraform adalah cara yang lebih cocok untuk Infrastruktur sebagai Kode daripada CloudFormation. Terraform memiliki lebih banyak fleksibilitas yang dibangun ke dalam bahasa (HCL) dan sistem modul mereka memungkinkan lebih banyak komposabilitas daripada apa yang dapat dicapai di CloudFormation.