Tổng quan đồ án
Trong thế giới công nghệ ngày nay, việc tự động hóa hạ tầng đã và đang trở thành một yếu tố quan trọng không thể thiếu trong việc phát triển và vận hành các ứng dụng hiện đại. Đặc biệt, khi nói đến việc quản lý hạ tầng trên môi trường đám mây như AWS, việc sử dụng các công cụ như Terraform và CloudFormation càng trở nên phổ biến hơn. Terraform, một sản phẩm của HashiCorp, và CloudFormation, một dịch vụ của AWS, đều là những công cụ mạnh mẽ cho phép chúng ta mô tả và tạo ra toàn bộ hạ tầng của mình chỉ bằng vài dòng mã. Thông qua việc sử dụng những công cụ này, chúng ta có thể giảm thiểu được rất nhiều thời gian và công sức cần thiết để thiết lập và quản lý hạ tầng, đồng thời cũng giảm bớt rủi ro do con người gây ra.
Vì vậy, đồ án của nhóm chúng em là một nghiên cứu về hai công cụ khá phổ biến này. Sau khi thảo luận về chủ đề, chúng em đã tiến hành nghiên cứu, tìm hiểu và triển khai hạ tầng.
Hiện nay, việc triển khai và quản lý hạ tầng trên AWS thường gặp nhiều khó khăn, chủ yếu do các nguyên nhân sau:
- Lỗi con người: Thiết lập thủ công dễ dẫn đến sai sót.
- Khó khăn trong quản lý: Không có cách thức rõ ràng để theo dõi và kiểm soát các thay đổi hạ tầng.
- Thiếu nhất quán: Các môi trường (dev, test, prod) có thể không đồng nhất nếu không có quy trình thiết lập chuẩn.
Cùng với đó là các thách thức về:
- Đồng bộ hóa: Đảm bảo rằng các môi trường khác nhau đều được thiết lập giống nhau.
- Tự động hóa: Giảm thiểu sự can thiệp của con người thông qua tự động hóa.
- Quản lý phiên bản: Dễ dàng theo dõi và quản lý các thay đổi trong cấu hình hạ tầng.
Mục tiêu của đề tài
- Nghiên cứu và áp dụng triển khai hạ tầng tự động thông qua code (IaC) bằng Terraform và CloudFormation.
- So sánh ưu, nhược điểm của Terraform và CloudFormation.
- Xây dựng các module mẫu để triển khai hạ tầng dịch vụ AWS.
- Đánh giá hiệu quả và đề xuất lựa chọn công cụ thích hợp.
Phương pháp nghiên cứu
- Nghiên cứu lý thuyết: Tìm hiểu tài liệu, hướng dẫn sử dụng, và tài liệu kỹ thuật của Terraform và CloudFormation.
- Thực nghiệm: Xây dựng các module thực tế triển khai trên hạ tầng AWS.
- Phân tích và đánh giá: So sánh kết quả triển khai của hai công cụ, đánh giá ưu, nhược điểm và đề xuất lựa chọn.
Nội dung đồ án
Terraform
Terraform là một công cụ mã nguồn mở thuộc loại Infrastructure as Code (IaC), do HashiCorp phát triển, cho phép người dùng xác định và triển khai cơ sở hạ tầng thông qua mã hóa. Terraform hỗ trợ nhiều nhà cung cấp dịch vụ đám mây như AWS, Azure, Google Cloud Platform, và nhiều dịch vụ khác.
Hoạt động của Terraform

- Cấu hình hạ tầng: Được viết bằng ngôn ngữ HashiCorp Configuration
Language (HCL). - Quá trình hoạt động:
o Write: Viết các file cấu hình để mô tả hạ tầng.
o Plan: Terraform tạo ra một kế hoạch triển khai dựa trên cấu hình.
o Apply: Thực thi kế hoạch và thiết lập hạ tầng.
o Destroy: Xóa bỏ hạ tầng khi không còn cần thiết.
Các thành phần chính của Terraform
- Providers: Là các plugin giúp Terraform tương tác với các API của nhà cung cấp
dịch vụ (ví dụ: AWS, Azure). - Modules: Tập hợp các file cấu hình có thể được tái sử dụng.
- State: Tập tin lưu trữ trạng thái hiện tại của hạ tầng, giúp Terraform biết được
những gì đã được triển khai.
CloudFormation
CloudFormation là một dịch vụ do AWS cung cấp, giúp người dùng dễ dàng thiết lập và quản lý tài nguyên AWS thông qua các mẫu (template) JSON hoặc YAML. AWS CloudFormation thuộc loại Infrastructure as Code (IaC) và Cloud computing, cho phép người dùng tạo lập mô hình, tự động hóa việc triển khai, cung cấp và quản lý hạ tầng công nghệ trên AWS cũng như các tài nguyên của bên thứ ba bằng cách xử lý cơ sở hạ tầng dưới dạng mã.

Các thành phần chính của CloudFormation
- Template: file định nghĩa cấu hình cho stack, được viết bằng định dạng JSON hoặc YAML. Template xác định các tài nguyên cần được tạo, các tham số đầu vào, các giá trị đầu ra và các thuộc tính khác của stack.
- Stack: một thực thể được tạo ra từ template và chứa tất cả các tài nguyên AWS được định nghĩa trong template.
- Change Set: một tập hợp các thay đổi được đề xuất cho stack. Nó cho phép xem trước các thay đổi sẽ được thực hiện trước khi áp dụng chúng.
Hoạt động của CloudFormation
Đầu tiên, tạo các ngăn xếp (stack), AWS CloudFormation gọi các dịch vụ AWS để cung cấp và cấu hình tài nguyên, nhưng chỉ trong phạm vi quyền hạn cho phép. Ví dụ, để tạo hoặc xóa phiên bản EC2 qua CloudFormation, doanh nghiệp cần quyền tương ứng.
AWS IAM quản lý các quyền này và các lệnh gọi của CloudFormation được khai báo trong template của doanh nghiệp. Ví dụ, một template mô tả phiên bản EC2 loại t2.micro sẽ khiến CloudFormation gọi API để tạo phiên bản đó.


Thiết kế hệ thống
Thiết kế hệ thống dùng Terraform

Thiết kế hệ thống dùng CloudFomation

Kết luận
- Triển khai thành công hệ thống tự động hóa hạ tầng dịch vụ AWS bằng Terraform và CloudFormation.
- Hiểu về cách hoạt động của các dịch vụ như VPC, EC2, S3 và các dịch vụ khác của AWS để xây dựng các module.
- Qua quá trình triển khai và so sánh, nhóm kết luận được những điểm mạnh và điểm yếu của hai công cụ Terraform và CloudFormation.
Hướng phát triển
Để tiếp tục nâng cao hiệu quả và tự động hóa hạ tầng dịch vụ AWS, nhóm đề xuất các hướng phát triển trong tương lai:
- Mở rộng và tích hợp CI/CD: Tiếp tục nghiên cứu và triển khai tích hợp Terraform và CloudFormation vào các quy trình CI/CD để tự động hóa triển khai và cập nhật hạ tầng.
- Giám sát và kiểm tra tự động: Tích hợp các công cụ giám sát và kiểm tra để đảm bảo hạ tầng hoạt động ổn định và phát hiện sớm các vấn đề.
- Phát triển module tái sử dụng: Mở rộng và tối ưu hóa các module mẫu, giúp việctriển khai hạ tầng nhanh chóng và hiệu quả hơn.


