Stategraph Giải Quyết Các Vấn Đề Mở Rộng Quy Mô Của Terraform Bằng Kiến Trúc Cơ Sở Dữ Liệu Đồ Thị

Nhóm Cộng đồng BigGo
Stategraph Giải Quyết Các Vấn Đề Mở Rộng Quy Mô Của Terraform Bằng Kiến Trúc Cơ Sở Dữ Liệu Đồ Thị

Terramate đã công bố Stategraph, một giải pháp backend mới được thiết kế để giải quyết các vấn đề mở rộng quy mô cơ bản của Terraform bằng cách thay thế quản lý trạng thái dựa trên file bằng phương pháp cơ sở dữ liệu đồ thị. Dự án này nhằm mục đích giải quyết các vấn đề phối hợp gây khó khăn cho các nhóm quản lý triển khai hạ tầng lớn, nơi mà các khóa toàn cục và làm mới toàn bộ tạo ra những nút thắt đáng kể.

Vấn Đề Cốt Lõi: Hạn Chế Của Trạng Thái Dựa Trên File

Phương pháp hiện tại của Terraform xử lý trạng thái hạ tầng như một file JSON duy nhất với khóa toàn cục, tạo ra các vấn đề phối hợp khi nhiều nhóm làm việc trên hạ tầng chung. Điều này trở nên đặc biệt khó khăn đối với các tổ chức quản lý hàng nghìn tài nguyên, nơi mà ngay cả những thay đổi nhỏ cũng kích hoạt làm mới trạng thái toàn bộ và chặn các nhóm khác khỏi việc thực hiện cập nhật. Cộng đồng từ lâu đã tìm cách giải quyết những hạn chế này bằng cách chia tách các file trạng thái, nhưng điều này tạo ra những thách thức mới với các phụ thuộc chéo giữa các trạng thái và độ phức tạp trong điều phối.

Giải Pháp Cơ Sở Dữ Liệu Đồ Thị

Stategraph tái tưởng tượng trạng thái Terraform như một cơ sở dữ liệu đồ thị thực sự sử dụng PostgreSQL, nơi các tài nguyên trở thành các nút và các phụ thuộc trở thành các cạnh. Thay đổi kiến trúc này cho phép một số cải tiến quan trọng: cô lập đồ thị con cho phép các nhóm làm việc trên các thành phần hạ tầng khác nhau hoạt động mà không chặn lẫn nhau, khóa chính xác chỉ nhắm vào các tài nguyên bị ảnh hưởng thay vì toàn bộ trạng thái, và làm mới tăng dần giới hạn các hoạt động cho các thành phần đã thay đổi thay vì duyệt toàn bộ hạ tầng.

Việc triển khai sử dụng ba quan hệ cơ sở dữ liệu chính: tài nguyên (một hàng cho mỗi tài nguyên với loại và thuộc tính), phụ thuộc (đại diện cho đồ thị phụ thuộc tài nguyên), và giao dịch (một nhật ký chỉ thêm của tất cả các biến đổi trạng thái). Cấu trúc này bảo tồn mô hình thực thi của Terraform trong khi cho phép tính đồng thời và độ chính xác mà các backend dựa trên file không thể cung cấp.

Kiến trúc Kỹ thuật Stategraph

Thành phần Triển khai Mục đích
Cơ sở dữ liệu PostgreSQL với MVCC Kiểm soát đồng thời mạnh mẽ và khả năng mở rộng đã được chứng minh
Bảng Resources Một hàng cho mỗi tài nguyên với loại, nhà cung cấp, thuộc tính Lưu trữ tài nguyên cốt lõi
Bảng Dependencies Bảng cạnh cho đồ thị phụ thuộc tài nguyên Ánh xạ mối quan hệ
Bảng Transactions Nhật ký chỉ thêm của các thay đổi trạng thái Đường kiểm tra đầy đủ và phân bổ trách nhiệm
Giao thức Backend Tương thích với backend từ xa Terraform / OpenTofu Khả năng thay thế trực tiếp

Phản Hồi Của Cộng Đồng Và Mối Quan Ngại Về Việc Áp Dụng

Thông báo này đã khơi dậy cuộc thảo luận đáng kể về sự đánh đổi giữa tính đơn giản và khả năng mở rộng. Một số người thực hành đánh giá cao tính minh bạch và dễ khắc phục sự cố của file trạng thái hiện tại, bày tỏ lo ngại về việc giới thiệu một hộp đen mà họ không thể dễ dàng kiểm tra hoặc sửa chữa. Tuy nhiên, nhóm phát triển nhấn mạnh rằng các công cụ thông thường như jqcat sẽ tiếp tục hoạt động, duy trì khả năng tiếp cận làm cho các file trạng thái Terraform có giá trị cho việc gỡ lỗi.

Động lực chính chỉ đơn giản là quy mô nhỏ Terraform/Tofu bắt đầu gặp sự cố và tạo ra công việc cho người dùng khi họ phải tái cấu trúc cho các vấn đề hiệu suất không nên tồn tại.

Các tổ chức đã sử dụng phương pháp microservices với các file trạng thái chia tách đặt câu hỏi liệu độ phức tạp có cần thiết hay không, nhưng những người ủng hộ chỉ ra rằng hạ tầng chung như VPC, vai trò IAM, và cơ sở dữ liệu chắc chắn tạo ra các điểm phối hợp hưởng lợi từ kiểm soát đồng thời tốt hơn.

Lợi ích chính so với các tệp trạng thái truyền thống

  • Đồng thời: Khóa chi tiết trên tài nguyên và phụ thuộc thay vì khóa tệp toàn cục
  • Hiệu suất: Làm mới tăng dần các đồ thị con bị ảnh hưởng thay vì duyệt toàn bộ trạng thái
  • Khả năng mở rộng: Xử lý hàng nghìn tài nguyên mà không bị suy giảm hiệu suất tuyến tính
  • Cô lập: Các nhóm có thể làm việc trên các thành phần hạ tầng riêng biệt cùng lúc
  • Khả năng truy vấn: Trạng thái trở nên có thể tìm kiếm và báo cáo thông qua các công cụ cơ sở dữ liệu tiêu chuẩn
  • Tương thích: Không cần thay đổi các cấu hình hoặc quy trình làm việc Terraform hiện có

Lộ Trình Di Chuyển Và Tầm Nhìn Tương Lai

Stategraph được thiết kế như một sự thay thế trực tiếp đọc các file trạng thái hiện có và tự động xây dựng biểu diễn đồ thị, không yêu cầu thay đổi gì đối với cấu hình Terraform. Giao thức backend vẫn không thay đổi, làm cho nó tương thích với các công cụ và quy trình làm việc hiện có. Nhóm phát triển hình dung một tương lai nơi toàn bộ hạ tầng thế giới có thể về mặt lý thuyết được đại diện như một module gốc duy nhất với cô lập phù hợp và kiểm soát truy cập dựa trên vai trò, loại bỏ nhu cầu chia tách trạng thái trong khi duy trì các ranh giới bảo mật.

Dự án đại diện cho một sự thay đổi cơ bản trong cách suy nghĩ về quản lý trạng thái hạ tầng, áp dụng các nguyên tắc hệ thống phân tán đã được thiết lập tốt cho các vấn đề đã gây khó khăn cho hệ sinh thái Terraform kể từ khi thành lập. Mặc dù không phải mọi tổ chức sẽ cần mức độ tinh vi này, các nhóm quản lý hạ tầng quy mô lớn với nhiều người đóng góp có thể tìm thấy giá trị đáng kể trong việc cải thiện tính đồng thời và giảm chi phí phối hợp.

Tham khảo: Why We're Building Stategraph: Terraform State as a Distributed Systems Problem