4 điểm bởi GN⁺ 2023-07-28 | 1 bình luận | Chia sẻ qua WhatsApp

Xây dựng và vận hành S3

  • S3 là viết tắt của Amazon Simple Storage Service, chỉ một hệ thống lưu trữ quy mô lớn.
  • Andy Warfield làm việc tại S3 và đã có được hiểu biết sâu rộng về hệ thống này.
  • S3 là một dịch vụ bao trùm nhiều lĩnh vực, từ trải nghiệm hiệu năng của khách hàng đến cơ chế hoạt động của ổ cứng.

17 năm trước, tại một khuôn viên đại học xa xôi...

  • S3 được ra mắt vào ngày 14 tháng 3 năm 2006 và năm nay kỷ niệm 17 năm thành lập.
  • Warfield hoàn thành bằng tiến sĩ tại Đại học Cambridge, tham gia dự án Xen, sau đó đồng sáng lập startup XenSource.
  • XenSource phát triển lớn mạnh và được Citrix mua lại, giúp Warfield học được nhiều điều về tăng trưởng kinh doanh và quản lý đội ngũ.

Cách S3 hoạt động

  • Sau khi gia nhập Amazon, Warfield đã học cách S3 vận hành từ Seth Markle, một trong những kỹ sư đời đầu của S3.
  • S3 là một dịch vụ object storage có HTTP REST API, gồm frontend, dịch vụ namespace, đội máy lưu trữ với các ổ cứng, và đội máy thực hiện các tác vụ nền.
  • S3 được cấu thành từ hàng trăm microservice, và sự tương tác giữa các nhóm được xác định bằng các cam kết ở cấp độ API.

Những quan sát ban đầu

  • S3 là một hệ sinh thái liên tục tiến hóa, vượt ra ngoài phần mềm để bao gồm cả phần cứng và con người.
  • Quy mô của S3 được tạo nên từ tập hợp các dịch vụ scale-out ở từng thành phần, nên cần thời gian để thực sự hiểu được độ lớn của hệ thống.

Quy mô kỹ thuật: vật lý của lưu trữ

  • S3 là một hệ thống rất lớn sử dụng hàng triệu ổ cứng.
  • Ổ cứng là một kỳ quan của công nghệ và đổi mới, đồng thời có hiệu quả chi phí rất cao.

Quản lý nhiệt: phân bố dữ liệu và hiệu năng

  • Trong S3, để giải quyết vấn đề gọi là 'quản lý nhiệt', hệ thống thực hiện các tối ưu để phân tán đồng đều các yêu cầu I/O lên nhiều ổ cứng.

Sao chép: phân bố dữ liệu và độ bền

  • S3 sử dụng các cơ chế dư thừa như replication và erasure coding để đảm bảo độ bền dữ liệu và quản lý nhiệt.

Tác động của quy mô: chiến lược phân bố dữ liệu

  • Bằng cách trải dữ liệu rộng nhất có thể trên thật nhiều ổ đĩa, dữ liệu của khách hàng chỉ chiếm một phần rất nhỏ trên mỗi ổ, từ đó đạt được sự cô lập workload.

Yếu tố con người

  • Độ phức tạp của S3 không chỉ đến từ các yếu tố kỹ thuật mà còn từ yếu tố con người.
  • Amazon khuyến khích kỹ sư và các nhóm thất bại nhanh nhưng an toàn, đồng thời tập trung vào việc cung cấp dịch vụ lưu trữ có độ bền cao.

Mở rộng bản thân: giải quyết những bài toán khó bắt đầu và kết thúc bằng 'quyền sở hữu'

  • Warfield cho biết ông đã trải nghiệm sự mở rộng quy mô ở cấp độ cá nhân tại Amazon, đồng thời học hỏi về quy mô của phần mềm, con người và kinh doanh.
  • Tại Amazon, trọng tâm là 'quyền sở hữu', điều này giúp hiểu rõ hơn cấu trúc tổ chức và cách tiếp cận kỹ thuật.

Ý kiến của GN⁺

  • S3 không chỉ là một dịch vụ lưu trữ đơn thuần mà là một hệ sinh thái phức tạp kết hợp giữa phần cứng, phần mềm và yếu tố con người.
  • Bài viết này mang lại góc nhìn hữu ích cho các kỹ sư phần mềm mới vào nghề muốn hiểu quy mô và độ phức tạp của S3.
  • Văn hóa 'quyền sở hữu' của Amazon là một yếu tố quan trọng thúc đẩy các nhóm và cá nhân theo đuổi đổi mới với tinh thần trách nhiệm lớn hơn.

1 bình luận

 
GN⁺ 2023-07-28
Ý kiến Hacker News
  • Tỷ lệ lỗi là 1 trên 10^15 yêu cầu là chuyện xảy ra khá thường xuyên trong thế giới thực và là điều cần phải tính đến với S3.

    • Khi còn làm ở AWS, tôi nhớ rằng ở quy mô của S3, những sự kiện có xác suất 1 trên 1 tỷ vẫn xảy ra hằng ngày, và cả những sự kiện có xác suất thấp đến mức bình thường không cần lo cũng phải được cân nhắc và xử lý.
    • Tôi rất vui khi được đọc về ShardStore, đặc biệt ấn tượng với kiểm chứng hình thức, kiểm thử dựa trên thuộc tính, v.v. Thế hệ dịch vụ trước đây nổi tiếng là nhiều lỗi, nhưng ít nhất chúng được thiết kế tốt nhờ các kỹ sư S3 luôn ám ảnh với việc thất bại một cách an toàn để ngăn mất dữ liệu.
  • Làm việc trong lĩnh vực hệ gen học, tôi đã xử lý nhiều kho dữ liệu cỡ petabyte trong suốt 10 năm qua.

    • Với kinh nghiệm sử dụng nhiều hệ thống lưu trữ khác nhau như AWS S3, GCP GCS, Ceph, Gluster, các hệ thống của HP, tôi đánh giá rất cao công sức cần bỏ ra để vận hành những hệ thống này.
    • Lợi ích của việc chia sẻ disk IOPS với vô số khách hàng khác là rất lớn, và việc giảm nhẹ vấn đề này trên một hệ thống đơn lẻ là cực kỳ khó.
    • Với các cụm phần cứng colocated, chúng tôi đã phải tùy biến hệ thống batch để xử lý IO như một loại tài nguyên có thể phân bổ giống như RAM hay CPU cho các tác vụ quy mô lớn.
    • S3 và GCP đắt, nhưng hiệu năng của chúng xứng đáng với chi phí đó.
  • Nếu S3 có thể dùng giao thức dựa trên OAuth2 để ủy quyền quyền truy cập đọc/ghi, thì sẽ có rất nhiều thứ chúng ta có thể xây dựng.

    • Cần có một giao thức dựa trên HTTP để ứng dụng có thể truy cập dữ liệu thay mặt người dùng.
    • Google Drive là thứ gần nhất với điều đó, nhưng lại có vấn đề nhà cung cấp đơn lẻ, và thật tiếc khi remoteStorage không trở nên phổ biến.
    • Tôi hy vọng Solid sẽ thành công, nhưng nó có vẻ phức tạp.
    • Giải pháp riêng của tôi cho vấn đề này là gemdrive.io, nhưng hiện tại tôi đang tập trung vào những phần khác của stack tự host.
  • Phần mô tả thông số năm 1956 của ổ cứng IBM RAMAC.

    • Dung lượng lưu trữ: 3.75 MB, chi phí: khoảng $9,200 mỗi terabyte — thông số này có thể không chính xác.
    • Các trang khác gợi ý giá mua khoảng $10,000 mỗi megabyte, nên thông số đúng có lẽ phải là $9,200 mỗi megabyte.
  • Xử lý xác thực trong hệ thống phân tán là việc cực kỳ khó.

    • Ở quy mô AWS, xác thực gần như là phép thuật, và AWS có mô hình phân quyền rất phong phú nên các thay đổi về quyền được lan truyền qua hạ tầng với tốc độ dưới mili giây.
    • Không giống các dịch vụ khác, S3 có thể đặt quyền ở ngay trên tài nguyên để tối ưu tốc độ.
  • Là một kỹ sư rất giàu kinh nghiệm với định hướng kỹ thuật rõ ràng, tôi dành nhiều thời gian hơn cho việc phát triển và diễn đạt rõ vấn đề thay vì đưa ra ý tưởng.

    • Để làm tốt vai trò này, cần tập trung vào việc làm rõ vấn đề và ủng hộ hướng giải quyết, đồng thời tìm cách hỗ trợ để một đội ngũ kỹ thuật mạnh có thể thực sự sở hữu giải pháp đó.
  • Thật vui khi thấy nhân viên Amazon công khai nói về cách S3 vận hành bên trong.

    • Tôi muốn nghe thêm về cách Glacier hoạt động; vẫn còn nhiều suy đoán vì loại phương tiện lưu trữ được dùng đến nay vẫn chưa được công khai.
  • Phần giải thích đầu đọc ổ cứng bằng cách so sánh với máy bay 747.

    • Đó là công việc chính xác đến mức giống như một chiếc máy bay chỉ mắc một sai lầm duy nhất là bỏ lỡ một ngọn cỏ sau khi bay quanh Trái Đất 25,000 lần.
  • Quay lại thời KeyMap của S3, người ta học được rằng ngay cả khi xác định được object/partition/bucket nóng nhất, cũng không thể đơn giản di chuyển nó đi là xong.

    • Giải pháp thực tế là chia tải partition của host theo các phân vị bốn phần, rồi chuyển partition ở phân vị thứ hai sang host có tải thấp nhất.
    • Nhờ đó, tỷ lệ lỗi chuyển từ mức ổn định khoảng 1% sang những ngày không còn lỗi, và cảnh báo cũng được cập nhật nghiêm ngặt hơn nhiều.
  • S3 không chỉ là một kho lưu trữ, mà còn là một tiêu chuẩn.

    • Một số nơi cung cấp lưu trữ tương thích S3; tôi không chắc tiêu chuẩn này mở đến mức nào hay có phải trả tiền cho Amazon để được nói là "tương thích S3" hay không, nhưng đó là điều rất tuyệt.