- Quản lý hơn 165.000 tài nguyên đám mây trên 625 workspace Terraform và 38 tài khoản AWS
- Trong số 170 kỹ sư, có 40 người là chuyên gia hạ tầng
- Thực hiện 225 lần phát hành hạ tầng (
terraform apply) và 723 lần lập kế hoạch (terraform plan) mỗi ngày
- Để làm được điều này, họ đã triển khai Terraform Cloud để tự động hóa quy trình phát hành hạ tầng, giảm thao tác thủ công và lỗi của các lập trình viên
Các vấn đề trước khi triển khai Terraform Cloud
- Cần quyền truy cập AWS ở mức cao: đội hạ tầng phải có quyền truy cập AWS ở mức cao
- Công việc tốn thời gian: phải chạy
terraform apply trong từng thư mục rồi lặp lại việc rà soát và phê duyệt, và chỉ một thay đổi cũng có thể ảnh hưởng đến hơn 120 workspace
- Phát sinh infrastructure drift: các thay đổi ngoài dự kiến tích lũy lại, khiến khi áp dụng cần thêm bước rà soát và xử lý
Triển khai Terraform Cloud và hiệu quả đạt được
- Loại bỏ drift → loại bỏ infrastructure drift, giảm rủi ro và gánh nặng cho lập trình viên
- Tiết kiệm thời gian cho lập trình viên → tiết kiệm khoảng 8.000 giờ làm việc mỗi năm (tương đương khối lượng công việc của 4 lập trình viên)
- Có thể theo dõi thay đổi → theo dõi thay đổi qua audit log và dễ debug hơn
- Hỗ trợ speculative plan → tự động kiểm thử thay đổi và có thể xem trực tiếp kết quả trong GitHub CI
Cách vận hành Terraform Cloud hiện tại
- Tự host: tự cài đặt Terraform Cloud for Business và vận hành TFC agent trong cụm ECS thuộc tài khoản AWS
- Cấu hình agent pool: vận hành 120 agent, chia thành môi trường phát triển (40) và môi trường production (80) để duy trì mức đồng thời cao
Các yếu tố được giám sát trọng điểm
- Cạn kiệt agent và giới hạn đồng thời → cảnh báo cho người trực on-call khi thiếu agent
- Thời gian plan → gửi cảnh báo cho đội nếu thời gian plan ở môi trường phát triển vượt quá 4 phút
- Infrastructure drift → hiện chưa đo lường (gần như không còn drift)
Tối ưu hóa để nâng cao chất lượng
- Phát triển TFC CLI: cho phép tự động rà soát và phê duyệt thay đổi trên nhiều workspace bằng CLI
- Xây dựng hệ thống cảnh báo: tự động hóa qua thông báo Slack để không bỏ sót việc áp dụng Terraform
- Quản lý workspace tự động: dùng Terraform để quản lý 625 workspace và gắn tag để phân biệt đội sở hữu
- Phân tích mức sử dụng Terraform Cloud: tận dụng TFC API để thu thập dữ liệu phiên bản state, từ đó nắm được mức sử dụng tài nguyên và xu hướng tăng trưởng
- Sao lưu Terraform State: tự động sao lưu file state vào bucket S3 để có thể khôi phục khi xảy ra sự cố
- Quản lý phụ thuộc workspace: xây dựng cây phụ thuộc module để tự động thiết lập thư mục mà workspace cần theo dõi
- Tự động hóa nâng cấp provider: dùng Dependabot để nâng cấp provider theo chu kỳ hàng tháng, giảm gánh nặng quản trị nhờ tự động hóa
Các cải tiến trong tương lai
- Rollout theo từng giai đoạn: chuyển từ phát hành dựa trên nhánh
main sang triển khai nhiều giai đoạn (phát triển → staging → production)
- Tách nhỏ workspace lớn: chia nhỏ 625 workspace hiện tại thành hơn 1500 workspace để rút ngắn thời gian plan và apply và thu hẹp phạm vi ảnh hưởng của thay đổi
- Nâng cấp tính năng cảnh báo: bổ sung khả năng gán lại trong thông báo Slack và thêm tính năng tự động tạo lệnh
tfc review
- Tự động scale agent: dự kiến triển khai hệ thống tự động scale dựa trên EKS để xử lý hiệu quả khối lượng công việc biến động
- Mã nguồn mở các công cụ tự phát triển: có kế hoạch công bố mã nguồn mở cho nhiều công cụ nội bộ đã phát triển để các đội khác cũng có thể sử dụng
Chưa có bình luận nào.