Cuốn Sách của Allspaw Giải quyết Vấn đề gì
Kỷ luật về Không Cạn kiệt
John Allspaw viết 'The Art of Capacity Planning' (O'Reilly, 2008; lần in lần thứ hai 2017) sau khi vận hành các hoạt động tại Flickr trong nhiều năm tăng trưởng nhanh chóng. Luận điểm của ông: lập kế hoạch dung lượng không phải là một bài tập bảng tính một lần. Đó là một kỷ luật liên tục kết hợp đo lường, dự báo, & phán xét kỹ thuật. Bỏ qua bất kỳ ba yếu tố nào, & bạn hoặc cạn kiệt dung lượng trong sản xuất hoặc đốt tiền trên phần cứng không sử dụng.
Lập kế hoạch dung lượng nằm giữa hai chế độ lỗi:
- Cung cấp thiếu: các dịch vụ chạy nóng, độ trễ tăng vọt, tỷ lệ lỗi tăng, khách hàng rời đi. Cách nhanh nhất để mất người dùng trong giai đoạn tăng trưởng.
- Cung cấp quá mức: phần cứng chạy ở mức 10% sử dụng, tài chính hỏi tại sao ngân sách tiếp tục tăng mà không có doanh thu tương xứng. Cách nhanh nhất để mất lực lượng nhân sự trong cuộc ôn tập ngân sách.
Nghệ thuật nằm ở việc tìm kiếm hành lang giữa hai vách đá đó & ở bên trong nó khi khối lượng công việc thay đổi.
Ba câu hỏi cốt lõi điều khiển mọi bài tập dung lượng:
- Chúng tôi có gì? Dung lượng hiện tại trong các đơn vị cụ thể: yêu cầu trên giây, truy vấn trên giây, gigabyte lưu trữ, kết nối đồng thời.
- Chúng tôi cần gì? Nhu cầu dự báo tại một ngày trong tương lai với biên độ không chắc chắn rõ ràng.
- Khi nào chúng tôi phải hành động? Thời gian dẫn cho cấp phát, cung cấp hoặc mở rộng. Đám mây giảm điều này xuống phút; tại chỗ có thể có nghĩa là hàng tháng.
Tại sao Nó Không Thể là Bảng tính
Một công ty thương mại điện tử lập kế hoạch dung lượng một lần một năm, vào tháng 11, bằng cách ngoại suy tuyến tính 12 tháng lưu lượng trước đó. Họ chạy trên các máy chủ chuyên dụng với thời gian cấp phát 6 tuần. Lưu lượng của họ cho thấy tính thời vụ mạnh mẽ hàng tuần (3x đỉnh cuối tuần), tính thời vụ mạnh mẽ hàng năm (5x Black Friday), & đã tăng trưởng 40% năm trong ba năm qua.
Khối lượng Công việc so với Sử dụng
Hai Số khác nhau, Cả hai Bắt buộc
Lập kế hoạch dung lượng thất bại khi các nhóm chỉ đo lường một trong hai thứ nguyên cần thiết.
Khối lượng công việc: nhu cầu trên hệ thống từ bên ngoài. Yêu cầu trên giây, giao dịch trên phút, megabyte trên giây, người dùng đồng thời. Khối lượng công việc mô tả những gì thế giới đang yêu cầu từ bạn.
Sử dụng: hệ thống đầy bao nhiêu khi phục vụ nhu cầu đó. Phần trăm CPU, bộ nhớ được sử dụng, độ sâu hàng đợi, băng thông mạng, IOPS đĩa. Sử dụng mô tả cảm giác của hệ thống dưới nhu cầu đó.
Khối lượng công việc một mình cho bạn biết điều gì đang đến nhưng không phải liệu bạn có thể phục vụ nó không. Sử dụng một mình cho bạn biết bạn đầy bao nhiêu nhưng không phải mong đợi gì vào ngày mai. Bạn cần cả hai, vẽ biểu đồ song song, để đưa ra quyết định dung lượng.
Tỷ lệ dung lượng = khối lượng công việc / sử dụng. Nếu bạn phục vụ 1.000 yêu cầu trên giây ở 50% CPU, tỷ lệ dung lượng của bạn là 2.000 RPS trên 100% CPU trên mỗi máy chủ. Yếu tố chuyển đổi này cho phép bạn chuyển đổi khối lượng công việc dự báo thành số lượng máy chủ cần thiết.
Allspaw nhấn mạnh đo lường ở mức độ cạnh tranh đúng. Một mẫu trên phút che giấu các đỉnh 30 giây. Một mẫu trên giờ che giấu mọi thứ. Công việc dung lượng thực cần phân giải phụ phút cho các sự kiện đỉnh và phân giải phút cho xu hướng. Bất cứ điều gì thô hơn sản xuất tự tin giả nguy hiểm.
Cái Gì để Công Cụ
Nhóm của bạn đang khởi chạy cung cấp dụng cụ dung lượng trên một bản phát hành sản phẩm mới (một dịch vụ chuyển mã hóa video). Bạn có thể nhặt tối đa 8 chỉ số để theo dõi ở độ phân giải phụ phút. Dịch vụ này nhập tải video, xếp hàng chúng, chuyển mã hóa thành nhiều định dạng, & ghi các đầu ra vào lưu trữ đối tượng.
Xu hướng, Tính thời vụ, Không chắc chắn
Ba Lớp của Mọi Dự báo
Allspaw & cuốn sách SRE của Google đều đồng ý về cấu trúc của một dự báo hữu ích: xu hướng, tính thời vụ, & biên độ không chắc chắn. Bỏ qua bất kỳ dự báo nào & trở nên gây hiểu lầm.
Xu hướng: độ dốc của nhu cầu trong những tháng hoặc năm. Thường được mô hình hóa bằng hồi quy tuyến tính cho các cửa sổ ngắn, hàm mũ hoặc từng phần tuyến tính cho tăng trưởng lợi kép. Đường xu hướng trả lời 'nhu cầu đang hướng tới chung nói chung?'
Tính thời vụ: các mẫu tuần hoàn ở nhiều thang thời gian. Hàng ngày (lưu lượng đỉnh chiều), hàng tuần (sự tăng vọt cuối tuần), hàng năm (Black Friday, mùa thuế, năm học). Tính thời vụ phép nhân tỷ lệ với xu hướng; tính thời vụ cộng thêm bù đắp hằng số.
Biên độ không chắc chắn: nón dự báo. Dự báo mà không có biên độ là một đoán. Dự báo thực xuất bản ước tính trung tâm với biên độ trên & dưới rõ ràng, thường ở mức độ tự tin 90% hoặc 95%. Nón mở rộng khi bạn dự phóng xa hơn vào tương lai. Dự báo 4 tuần có thể có biên độ ±10%; dự báo 12 tháng thường có biên độ ±50%.
Tách biệt tăng trưởng kinh doanh từ nhu cầu kỹ thuật: dự báo lập kế hoạch dung lượng về khối lượng công việc kỹ thuật, nhưng các nhóm kinh doanh dự báo doanh thu, đăng ký hoặc chiến dịch. Công việc của nhà lập kế hoạch dung lượng là dịch dự báo kinh doanh thành nhu cầu kỹ thuật: tăng trưởng đăng ký 30% có thể có nghĩa là 30% cuộc gọi API nhiều hơn, nhưng nó có thể có nghĩa là 80% nhiều hơn nếu người dùng mới sử dụng hệ thống nhiều hơn, hoặc chỉ 15% nếu họ chuyển đổi với tỷ lệ thấp hơn. Tỷ lệ chuyển đổi quan trọng như dự báo kinh doanh cơ bản.
Dự báo Lưu lượng Kỳ nghỉ
Dịch vụ của bạn phục vụ một trang web thương mại điện tử. Lưu lượng Black Friday năm ngoái là 5x mức trung bình tháng 11, duy trì trong 12 giờ. Doanh nghiệp đã tăng trưởng 40% năm trên năm. Tiếp thị đang khởi chạy một chiến dịch trả phí dự kiến sẽ thêm 20% bổ sung vào lưu lượng Black Friday năm nay.
Biết Trần của Bạn
Tìm Trần Trước Khi Sản Xuất Làm
Dự báo cho bạn biết điều gì đang đến. Kiểm tra trần cho bạn biết liệu hệ thống có thể phục vụ nó không. Allspaw coi xét kiểm tra trần là một đầu vào không thể thương lượng cho lập kế hoạch dung lượng: bạn không biết dung lượng thực của bạn cho đến khi bạn đã kiểm tra nó dưới tải được kiểm soát.
Ba loại kiểm tra trần:
- Kiểm tra tải tổng hợp: một trình tạo tải (k6, Locust, JMeter, vegeta) điều khiển lưu lượng tại một dịch vụ mục tiêu trong lập kế hoạch. Tăng tải cho đến khi có cái gì đó phá vỡ. Điểm phá vỡ là trần. Tốt nhất cho thử nghiệm dịch vụ cô lập.
- Cuộc diễn tập lửa sản xuất: cố ý giảm dung lượng trong sản xuất (thoát một tỷ lệ của máy chủ, giết một khu vực) & quan sát cách dung lượng còn lại xử lý lưu lượng thực. Kiểm tra hành vi sản xuất thực bao gồm các tương tác không mong đợi. Độ tin cậy cao nhất nhưng rủi ro cao nhất.
- Tải bóng: phát lại lưu lượng sản xuất thực tại một dịch vụ mục tiêu chạy song song với sản xuất. Nắm bắt các mẫu khối lượng công việc thực (hỗn hợp truy vấn hiếm, tác nhân người dùng kỳ lạ) mà không ảnh hưởng đến người dùng. Mặt đất chung mạnh mẽ.
Khoảng không gian đầu là bộ đệm giữa tải hiện tại và trần. Quy tắc ngón tay cái SRE:
- Khoảng không gian đầu 50% ở trạng thái ổn định cho một dịch vụ vùng đơn (vì vậy một lỗi vùng không cạn kiệt vùng sống sót)
- Khoảng không gian đầu 30% cho một dịch vụ đa khu vực với dự phòng N+2
- 100%+ khoảng không gian đầu tiếp cận các sự kiện đỉnh nổi tiếng (Black Friday, chung kết thể thao)
Khoảng không gian đầu không phải là chất thải. Đó là chi phí của việc không trang hoàng kỹ sư lúc 3 giờ sáng, không mất khách hàng trong một spike, & không chịu lỗi tầng vòng khi một vùng thất bại. Các nhóm tài chính đôi khi đẩy để giảm khoảng không gian đầu; các kỹ sư dung lượng phải nói rõ chi phí của chạy chặt để làm cho cuộc trò chuyện đó có thực tế hơn là cảm xúc.
Thiết kế một Kiểm tra Trần
Bạn kế thừa một dịch vụ không có trần dung lượng được ghi chép. Tải sản xuất hiện tại là 800 yêu cầu trên giây trên 12 máy chủ, CPU trung bình 35%. Tiếp thị đang thông báo một chiến dịch trong 6 tuần dự kiến sẽ điều khiển lưu lượng đến 3.000 RPS ở đỉnh.
Lên, Ra, hoặc Đường chéo
Khi nào Thêm Sức mạnh, Thêm Hộp, hoặc Cả hai
Ba chiến lược mở rộng cốt lõi, mỗi cái có hồ sơ chi phí & độ tin cậy riêng biệt:
Mở rộng quy mô dọc (mở rộng lên): máy lớn hơn. Thay thế máy chủ 8 lõi bằng máy chủ 32 lõi. Đường dẫn đơn giản nhất; hoạt động cho đến khi bạn chạm vào giới hạn máy đơn. Điểm lỗi duy nhất vẫn còn. Chi phí tăng phi tuyến: máy 32 lõi thường chi phí hơn 4 lần máy 8 lõi.
Mở rộng quy mô ngang (mở rộng ra): nhiều máy hơn. Thêm máy chủ đằng sau trình cân bằng tải. Dung lượng tỷ lệ tuyến tính với số lượng máy chủ. Chế độ lỗi thay đổi: bạn phải xử lý sự phối hợp phân tán, nhưng một lỗi máy chủ duy nhất không còn phá hủy dịch vụ. Độ phức tạp hoạt động tăng lên.
Mở rộng quy mô đường chéo (thuật ngữ của Allspaw): mở rộng lên trước tiên đến một kích thước trên máy chủ thoải mái, sau đó mở rộng ra từ đó. Kết hợp các hoạt động đơn giản hơn của các máy chủ lớn với sự dư thừa của nhiều máy chủ. Hầu hết các dịch vụ sản xuất sống trong lãnh thổ mở rộng quy mô đường chéo.
Giá dành riêng so với theo yêu cầu: nhà cung cấp đám mây thưởng cho khả năng dự đoán. Dung lượng dành riêng rẻ hơn 30-60% hơn theo yêu cầu nhưng yêu cầu cam kết 1-3 năm. Nhà lập kế hoạch dung lượng thường khóa nhu cầu ổn định với dung lượng dành riêng & burst thành theo yêu cầu cho các đỉnh. Sai tính tách biệt này có thể hoặc lãng phí tiền (dự trữ quá mức) hoặc phơi bày ngân sách để ngạc nhiên (dự trữ thiếu trong các đỉnh).
Các trường hợp điểm nóng & khối lượng công việc có thể bị gián đoạn: 60-90% rẻ hơn theo yêu cầu nhưng có thể được thu hồi với thông báo phút. Phù hợp cho công việc hàng loạt, phân tích, đào tạo khối lượng công việc, hoặc bất kỳ dịch vụ nào được thiết kế cho gián đoạn duyên dáng. Lưu lượng sản xuất đối mặt với người dùng thường tránh điểm nóng.
Chọn một Đường dẫn Mở rộng
Dịch vụ chuyển mã hóa video của bạn chạy trên 8 phiên bản đám mây kích thước trung bình (8 lõi mỗi cái). Bạn dự kiến tăng trưởng 3x trong 6 tháng tiếp theo. Khối lượng công việc bị ràng buộc CPU, song song hóa theo video, & mỗi chuyển mã hóa video mất 90 giây từ đầu đến cuối. Các phiên bản dành riêng chi phí 50% của theo yêu cầu. Các trường hợp điểm nóng chi phí 30% của theo yêu cầu nhưng có thể bị chấm dứt với thông báo 2 phút.
Sự Nghiệp Lập kế hoạch Dung lượng
Nơi Kỹ năng Lập kế hoạch Dung lượng Trả tiền
Lập kế hoạch dung lượng hiếm khi là một tiêu đề công việc trên chính nó. Các kỹ năng xuất hiện dưới một số vai trò:
Kỹ sư Độ tin cậy Trang web: lập kế hoạch dung lượng là trách nhiệm SRE cốt lõi. Hầu hết các nhóm SRE có một hoặc hai kỹ sư chuyên về dung lượng, sở hữu các mô hình dự báo, kiểm tra trần & tự động cung cấp.
Kỹ sư Chi phí Đám mây / FinOps: một vai trò mới tập trung vào tối ưu hóa chi tiêu đám mây. Kết hợp lập kế hoạch dung lượng với mô hình tài chính, đàm phán hợp đồng & quản lý danh mục phiên bản dành riêng. Trả lương cực kỳ tốt ở các công ty đám mây gốc lớn vì hóa đơn đám mây thường là chi phí lớn thứ hai sau lương nhân sự.
Kỹ sư Hiệu suất: tập trung vào hiệu quả trên mỗi nút và kiểm tra trần. Công việc: trích xuất thêm dung lượng từ phần cứng tương tự thông qua lập hồ sơ, tối ưu hóa & thay đổi kiến trúc. Kiến thức hệ thống & thời gian chạy ngôn ngữ nặng.
Chuyên gia Lập kế hoạch Dung lượng: ở các công ty rất lớn (Google, Meta, Amazon, Netflix), các nhóm lập kế hoạch dung lượng chuyên dụng tồn tại. Họ sở hữu các mô hình dự báo trên toàn bộ hạm đội, đàm phán cấp phát ở quy mô & phối hợp với tài chính trên lộ trình phần cứng đa năm.
Kỹ năng hợp chất: phân tích chuỗi thời gian (R, Python statsmodels, Prophet), lý thuyết xếp hàng (M / M / 1, M / M / c, Luật Nhỏ), ít nhất một công cụ quản lý cấu hình, ít nhất một bảng điều khiển chi phí đám mây, & khả năng viết một báo cáo dự báo mà một CFO có thể hiểu & hành động. Các kỹ năng kỹ thuật giúp bạn phỏng vấn; các kỹ năng giao tiếp giúp bạn ngân sách.
Kết thúc
Những gì Bạn Bây giờ Biết
Lập kế hoạch dung lượng là một kỷ luật liên tục, không phải một bài tập hàng năm. Bạn đã bao gồm:
- Hành lang giữa cung cấp thiếu & cung cấp quá mức
- Khối lượng công việc so với sử dụng như hai chiều của phép đo
- Xu hướng, tính thời vụ & biên độ không chắc chắn như ba lớp của mọi dự báo
- Kiểm tra trần (tổng hợp, bóng, cuộc diễn tập lửa) là cách duy nhất để biết dung lượng thực
- Bộ đệm khoảng không gian đầu & tại sao chúng không phải là chất thải
- Mở rộng quy mô đường chéo & quyết định giá dành riêng / theo yêu cầu / điểm nóng
- Đường dẫn sự nghiệp nơi các kỹ năng này kiếm được cơ quan ngân sách
Hai ý tưởng quan trọng nhất. Dự báo với biên độ, không bao giờ với điểm đơn. & đo lường trần của bạn trước khi sản xuất làm. Mang hai ý tưởng đó về phía trước & phần còn lại theo sau.
Đọc được khuyến nghị: 'The Art of Capacity Planning' của Allspaw (O'Reilly, 2017 lần in lần thứ hai), các chương liên quan trong Cuốn sách SRE của Google (miễn phí tại sre.google/books/), & 'Systems Performance' của Brendan Gregg cho công việc hệ thống cơ bản. Bài học bạn tập đi sâu hơn trên cấu trúc hình ảnh: Luật Nhỏ là khu vực, đường cong xếp hàng, độ dốc xu hướng & bao bọc khoảng không gian đầu.