Blog chia sẻ về công nghệ ...
Published on

[Google-SRE-bản dịch tiếng việt]-Quá trình hình thành Tự động hóa tại Google (SRE)

Authors

📑 Mục Lục

  1. Giới thiệu
  2. Giá trị của Tự động hóa
  3. Các Trường hợp Ứng dụng Tự động hóa
  4. Phân cấp Tự động hóa
  5. Trường hợp Thực tế: MySQL trên Borg
  6. Tự động hóa Cụm Máy chủ (Cluster Turnup)
  7. Quản lý Cụm như một Hệ điều hành lớn
  8. Khuyến nghị
  9. Tự động hóa gây ra Thất bại diện rộng

Giới thiệu

Trong chương này, Google SRE phản ánh quá trình phát triển tự động hóa — từ việc chạy script đơn giản đến xây dựng hệ thống hoàn toàn tự chủ. Tự động hóa không chỉ giúp tiết kiệm thời gian mà còn tăng tính nhất quán, độ tin cậy và khả năng mở rộng. Tuy nhiên, nếu sử dụng không đúng chỗ, nó có thể gây ra lỗi nghiêm trọng ở quy mô lớn.

Giá trị của Tự động hóa

  • Tính nhất quán: Máy móc thực hiện công việc giống nhau mọi lần, hạn chế lỗi con người.
  • Nền tảng mở rộng: Khi viết tốt, tự động hóa trở thành một nền tảng dùng chung cho các hệ thống khác.
  • Sửa lỗi nhanh hơn: Giảm thời gian khắc phục lỗi (MTTR), giúp nâng cao tốc độ phát triển.
  • Phản ứng nhanh: Máy phản ứng nhanh hơn con người trong tình huống hạ tầng.
  • Tiết kiệm thời gian dài hạn: Một khi được đóng gói, ai cũng có thể sử dụng, giảm chi phí vận hành lặp lại.

Các Trường hợp Ứng dụng Tự động hóa

  • Tạo tài khoản người dùng
  • Bật/tắt cụm (cluster turnup/turndown)
  • Triển khai phần mềm và cấu hình
  • Quản lý runtime config
  • Failover, cập nhật bản vá, kiểm tra phân phối

Tại Google, SRE chủ yếu tập trung vào vòng đời hệ thống (infrastructure), không đi sâu vào dữ liệu nghiệp vụ.

Phân cấp Tự động hóa

  1. Không có tự động hóa → Làm tay
  2. Script bên ngoài → Tự viết, dễ lỗi
  3. Script dùng chung → Khó tuỳ chỉnh
  4. Script đi kèm hệ thống → Sát với nghiệp vụ
  5. Tự động hoàn toàn → Không cần can thiệp người

Trường hợp Thực tế: MySQL trên Borg

Khi MySQL chuyển sang chạy trên Borg, failover thủ công 30–90 phút là không chấp nhận được.

=> Viết Decider, failover MySQL tự động nhỏ hơn 30 giây.

Lợi ích:

  • Cắt giảm 95% công việc vận hành lặp lại
  • Tối ưu hoá tài nguyên (chạy nhiều MySQL trên 1 máy)
  • Ổn định và hiệu quả hơn

Tự động hóa Cụm Máy chủ (Cluster Turnup)

Từ turnup bằng tay → tự động hoá qua shell script → Prodtest kiểm tra cấu hình cụm → kết hợp fix idempotent để tự sửa cấu hình sai.

Tiến hoá:

  • Test bằng Python
  • Fix tự động, an toàn, chạy lặp nhiều lần
  • Tách API cho mỗi team, tự quản lý cụm của họ
  • Kết nối qua Admin Server có ACL, tránh lạm dụng SSH

Quản lý Cụm như một Hệ điều hành lớn

Giống như CPU quản lý tiến trình, Borg quản lý container trên hàng chục nghìn máy. Mỗi thay đổi trong hệ thống:

  • Tự kiểm tra trạng thái máy
  • Tự khôi phục khi có lỗi
  • Giao tiếp qua API tập trung

=> Dẫn tới hệ thống tự chủ (autonomous), không cần người điều khiển thủ công.

Khuyến nghị

  • Bắt đầu tự động hoá sớm dù chưa phải Google-scale
  • Ưu tiên viết API, tránh phụ thuộc máy cụ thể
  • Thiết kế hệ thống tự khắc phục lỗi (self-healing)
  • Tách rời logic triển khai khỏi cấu hình

Tự động hóa gây ra Thất bại diện rộng

Câu chuyện "Diskerase toàn cầu": Do giá trị rỗng được hiểu nhầm là “toàn bộ máy”, hàng loạt máy bị xoá trắng ổ đĩa trong vài phút. Nhờ có dự phòng, latency tăng nhẹ, người dùng hầu như không phát hiện. Google học được:

  • Luôn check ranh giới, tránh "empty = all"
  • Tự động hóa cần có rate limit, rollback, và kiểm tra định kỳ