Cloudformation / Serverless vs Terraform trong AWS
Tôi muốn hiểu nhu cầu của các công cụ như Terraform. Khi chúng tôi có sẵn mẫu Thông tin đám mây và người ta có thể tạo / cập nhật tất cả các dịch vụ AWS với mẫu đó, thì việc sử dụng dịch vụ như Terraform là gì. Vui lòng đề xuất.
Trả lời
CloudFormation (CFN) và Terraform (CF) đều là công cụ phát triển Cơ sở hạ tầng dưới dạng mã (IaC).
Tuy nhiên, CFN chỉ dành cho AWS . Bạn không thể sử dụng nó với Azure, GCP hoặc bất kỳ thứ gì khác bên ngoài hệ sinh thái AWS. Ngược lại, TF là đám mây bất khả tri . Bạn có thể sử dụng nó trên không chỉ nhiều nhà cung cấp đám mây mà còn để làm việc với các sản phẩm không phải đám mây, chẳng hạn như docker, các cơ sở dữ liệu khác nhau và thậm chí cả pizza domino nếu bạn muốn.
Vì vậy, lợi thế chính của TF là khi bạn học nó chỉ một lần , bạn có thể áp dụng nó cho một số nhà cung cấp đám mây. CFN chỉ hữu ích trong AWS và một khi bạn ngừng sử dụng CFN, bạn phải học điều gì đó mới để làm việc với đám mây khác.
Cũng có sự khác biệt về cách thức hoạt động của TF và CFN. Cả hai đều có thế mạnh của họ và những ngày cuối tuần . Ví dụ:
khi bạn triển khai bằng CFN, tất cả các tài nguyên đều có sẵn để xem ở một vị trí trung tâm trong AWS cùng với mã nguồn của mẫu. Trong khi đó với TF thì không có chỗ nào như vậy. Nếu bạn đăng nhập vào bảng điều khiển AWS, bạn không biết cái gì được tạo bởi TF, mã nguồn được sử dụng là gì, v.v.
TF có các vòng lặp và cấu trúc dữ liệu phức tạp và các điều kiện, trong khi CFN thì không.
CFN có chính sách tạo và chính sách cập nhật, TF thì không.
Bạn có thể kiểm soát quyền truy cập vào CFN bằng chính sách CFN và chính sách IAM. Bạn không thể làm tương tự với TF vì nó "sống" bên ngoài AWS.
Có một số lý do tại sao bạn có thể chọn Terraform thay vì CloudFormation:
- Nhà cung cấp bất khả tri: Có thể có một thời điểm nào đó trong tương lai mà bạn cần phải di chuyển cơ sở hạ tầng đám mây của mình. Điều này có thể do một số lý do (ví dụ: chi phí, tuân thủ quy định, v.v.). Với Terraform, bạn vẫn có thể sử dụng cùng một công cụ để triển khai cơ sở hạ tầng mới. Với việc sử dụng thông minh các mô-đun Terraform, bạn thậm chí có thể để nguyên vẹn các phần lớn của cơ sở hạ tầng của mình dưới dạng kho lưu trữ mã.
- Hỗ trợ các công cụ khác: Điều này cũng xây dựng một chút dựa trên điểm trước đó, nhưng Terraform có thể triển khai nhiều hơn nữa sau đó chỉ là tài nguyên AWS. Ví dụ: bạn có thể sử dụng Terraform để điều phối việc triển khai máy EC2 sau đó được cấu hình bằng Ansible. Hoặc bạn có thể sử dụng Terraform để triển khai các ứng dụng trên đầu cụm Kubernetes của mình. Mặc dù CloudFormation hỗ trợ các tài nguyên tùy chỉnh thông qua việc tạo các Lambdas tùy chỉnh, nhưng việc duy trì còn khá nhiều việc.
- Hệ sinh thái rộng hơn: Do bản chất Nguồn mở của Terraform, có một hệ sinh thái công cụ khổng lồ giúp bạn giải quyết tất cả các loại vấn đề, chẳng hạn như kiểm tra cơ sở hạ tầng dưới dạng mã hoặc xây dựng tuân thủ một cách liên tục.
- Có thể cho rằng một ngôn ngữ tốt hơn: Cá nhân tôi nghĩ Terraform là một cách phù hợp hơn cho Cơ sở hạ tầng dưới dạng Mã sau đó là CloudFormation. Terraform có khả năng tích hợp ngôn ngữ (HCL) linh hoạt hơn rất nhiều và hệ thống mô-đun của họ cho phép nhiều khả năng tổng hợp hơn so với những gì có thể đạt được trong CloudFormation.