TL; DR: Xây dựng dự phòng, mô-đun; kiểm tra tính khả dụng; giám sát chặt chẽ.
Sau khi nhận ra rằng cố gắng vắt kiệt mọi lời giải thích có thể sẽ rất lâu nên tôi sẽ viết ra tất cả những quan sát tôi đã thực hiện.
Đặt câu hỏi tiền đề
Hệ thống đám mây là thuốc chữa bách bệnh
Ngay cả khi bạn đã đi hoàn toàn trên đám mây, với một nhà cung cấp đám mây hàng đầu, bạn vẫn sẽ cần thiết kế ứng dụng của mình để phục hồi, căn cứ. AWS có thể thay thế VM của bạn, nhưng ứng dụng của bạn sẽ có khả năng khởi động lại nếu để ở giữa tính toán.
Chúng tôi không muốn sử dụng hệ thống đám mây, vì x / y / z
Trừ khi bạn là một tổ chức cực lớn, bạn sẽ tốt hơn khi sử dụng các hệ thống đám mây. Top-3 hệ thống đám mây (AWS, MSFT, Google), sử dụng hàng ngàn kỹ sư để cung cấp cho bạn SLA đã hứa và bảng điều khiển dễ quản lý. Nó thực sự là một món hời tốt để sử dụng chúng thay vì dành một xu cho nhà này.
Các vấn đề trong phạm vi và thiết kế
Xác định, định lượng và sau đó liên tục đo lường sự sẵn có của một dịch vụ là một thách thức lớn hơn so với việc viết giải pháp cho các vấn đề về tính khả dụng.
Xác định và đo lường 'tính sẵn sàng' khó hơn dự kiến
Nhiều bên liên quan có quan điểm khác nhau về tính khả dụng và điều có thể xảy ra là định nghĩa được ưa thích bởi một người có mức lương cao nhất vượt qua định nghĩa khác. Điều này đôi khi là định nghĩa chính xác, nhưng thường thì hệ sinh thái không được xây dựng xung quanh việc đo lường điều tương tự bởi vì định nghĩa lý tưởng đó rất khó đo lường, hãy để một mình theo dõi trong thời gian thực. Nếu bạn có một định nghĩa về tính khả dụng không thể theo dõi trong thời gian thực, bạn sẽ thấy dự án tương tự tự thực hiện lặp đi lặp lại với những điểm tương đồng kỳ lạ. Gắn bó với một cái gì đó có ý nghĩa và một cái gì đó có thể dễ dàng theo dõi.
Mọi người đánh giá thấp sự phức tạp của hệ thống luôn có sẵn.
Để giải quyết con voi trong phòng, hãy để tôi nói điều này: "Không có hệ thống đa máy tính nào có sẵn 100%, nó có thể trong tương lai nhưng không phải với công nghệ hiện tại." Ở đây theo công nghệ hiện tại, tôi đang đề cập đến việc chúng ta không thể gửi tín hiệu nhanh hơn tốc độ ánh sáng và những thứ như vậy. Tất cả các kỹ sư comp-sci đáng muối của họ đều biết các hạn chế tính toán phân tán , và hầu hết trong số họ sẽ không đề cập đến nó trong các cuộc họp, vì sợ họ sẽ trông giống như những người mới. Để bù đắp cho tất cả những người không đề cập đến các giới hạn điện toán phân tán, tôi sẽ nói, nó phức tạp nhưng không luôn tin tưởng vào máy tính .
Mọi người đánh giá quá cao khả năng của họ
Thật không may, tính khả dụng nằm trong danh mục, nơi bạn không biết bạn muốn gì nhưng bạn biết bạn không muốn gì. Đó là một chút phức tạp hơn mà 'biết điều muốn' như giao diện người dùng. Nó đòi hỏi một chút kinh nghiệm và nhiều việc đọc để học hỏi kinh nghiệm của người khác và một số điều nữa.
Xây dựng một hệ thống có sẵn từ cơ sở
Hãy chắc chắn rằng bạn sẽ truyền giáo cho mọi nhóm kiến trúc và thiết kế về mức độ ưu tiên đúng của tính sẵn có như một yêu cầu hệ thống.
Các thuộc tính của hệ thống giúp đỡ sẵn có
Các đặc điểm hệ thống sau đây đã cho thấy đã góp phần vào tính khả dụng của hệ thống:
Dư
Một số ví dụ về điều này là không bao giờ chỉ có một VM phía sau VIP hoặc không bao giờ chỉ lưu trữ một bản sao dữ liệu của bạn. Đây là những câu hỏi mà một IAAS tốt sẽ giúp bạn dễ dàng giải quyết hơn nhưng bạn vẫn sẽ phải đưa ra những quyết định này.
Tính mô đun
Một mô-đun REST tốt hơn so với SOA nguyên khối. Một microservice mô-đun thậm chí thực sự có sẵn nhiều hơn HATEOS REST thông thường . Lý do có thể được tìm thấy trong cuộc thảo luận liên quan đến Yield trong phần tiếp theo. Nếu bạn đang thực hiện xử lý hàng loạt thì tốt hơn là xử lý theo lô trong 10 giây hợp lý so với xử lý một lô 1.000.000.
Khả năng phục hồi
"I am always angry"
- Hulk
Một hệ thống đàn hồi luôn sẵn sàng để phục hồi. Khả năng phục hồi này áp dụng cho các trường hợp như thừa nhận ACK chỉ ghi sau khi ghi vào đĩa RAID và có thể qua ít nhất hai trung tâm dữ liệu. Một xu hướng mới nhất khác là sử dụng các cấu trúc dữ liệu không xung đột , trong đó cấu trúc dữ liệu chịu trách nhiệm giải quyết xung đột khi được trình bày với hai phiên bản khác nhau. Một hệ thống không thể phục hồi như một suy nghĩ sau, nó phải được dự đoán và tích hợp. Một thất bại được đảm bảo trong thời gian dài, vì vậy chúng ta nên luôn sẵn sàng với một kế hoạch để phục hồi.
Nhật ký đường mòn
Về mặt kỹ thuật, đây là một kiểu con của Khả năng phục hồi, nhưng là một thứ rất đặc biệt vì nó nắm bắt được tất cả các khả năng. Mặc dù nỗ lực tốt nhất, chúng tôi có thể không dự đoán được mô hình không có sẵn. Nếu có thể, hãy duy trì đủ số lượng nhật ký của các hoạt động hệ thống để có thể phát lại các sự kiện hệ thống. Điều này sẽ, với chi phí thủ công lớn, cho phép bạn phục hồi từ các tình huống không lường trước.
Thuộc tính sẵn có
Danh sách thuộc tính hàng đầu không đầy đủ về 'tính khả dụng': Để thảo luận, hãy giả sử câu hỏi mà người dùng hỏi là "Tôi có bao nhiêu mặt hàng trong giỏ hàng của mình?"
Đúng
Bạn có phải đưa ra câu trả lời chính xác nhất có thể hay không, có ổn không? Chỉ để tham khảo, khi bạn rút tiền từ ATM, nó không được đảm bảo là chính xác. Nếu ngân hàng phát hiện ra lỗi, có thể bạn sẽ đảo ngược các giao dịch. Nếu hệ thống của bạn đang tạo ra các số nguyên tố, thì tôi đoán, bạn có thể muốn câu trả lời đúng mọi lúc.
Năng suất
Bỏ qua điểm này, nếu bạn trả lời luôn đúng cho câu hỏi chủ đề trước. Đôi khi, câu trả lời cho các câu hỏi không cần phải chính xác, ví dụ tôi có bao nhiêu bạn bè trên Facebook ngay bây giờ? Nhưng câu trả lời dự kiến sẽ ở trong sân bóng +/- 1 mọi lúc. Khi bạn đang tạo ra kết quả mong đợi, năng suất của bạn là 100.
Tính nhất quán
Câu trả lời của bạn có thể đúng vào một thời điểm, nhưng vào thời điểm ánh sáng rời khỏi màn hình và đi vào võng mạc của người quan sát, mọi thứ có thể đã thay đổi. Nó làm cho câu trả lời của bạn sai? Không, nó chỉ làm cho nó không nhất quán. Hầu hết các ứng dụng là nhất quán cuối cùng, nhưng mẹo là xác định loại mô hình nhất quán mà ứng dụng của bạn sẽ cung cấp. Nếu tình cờ ứng dụng của bạn có thể chạy trên một máy tính, bạn có thể bỏ qua cách đọc đáng yêu này trên định lý CAP .
Giá cả
Rất nhiều phụ thuộc vào tổng tác động của các tác động ngắn hạn (mất doanh thu) và các tác động dài hạn (danh tiếng xấu, giữ chân khách hàng). Tùy thuộc vào loại khách hàng (trả tiền / miễn phí, lặp lại / duy nhất, bị giam cầm) và tính sẵn có của tài nguyên, các mức đảm bảo sẵn có khác nhau sẽ được xây dựng.
Hướng tới cải thiện tính khả dụng của một hệ thống hiện có
Quản lý vận hành các máy riêng lẻ và mạng rất phức tạp, tôi cho rằng bạn đã để lại cho nhà cung cấp đám mây hoặc bạn đã đủ chuyên môn để biết bạn đang làm gì. Tôi sẽ chạm vào các chủ đề khác trong tình trạng sẵn có. Đối với chiến lược dài hạn Xác định-Đo lường-Phân tích-Kiểm soát là một trận đấu tuyệt vời, một cái gì đó tôi đã nhìn thấy bản thân mình.
- Xác định "tính khả dụng" cho các bên liên quan của bạn là gì
- Làm thế nào bạn sẽ đo lường những gì bạn đã xác định
- Phân tích nguyên nhân gốc rễ để xác định tắc nghẽn
- Nhiệm vụ cải tiến
- Giám sát liên tục ( kiểm soát ) hệ thống
Nguyên nhân không có sẵn
Vì chúng tôi đồng ý rằng quản lý vận hành sẽ bao gồm bất kỳ quản lý cơ sở hạ tầng vật lý nào, nên được thực hiện bởi các chuyên gia, tôi sẽ chạm vào các nguyên nhân khác của sự không sẵn sàng vì lợi ích hoàn chỉnh. Tính khả dụng của IMO cũng nên bao gồm thiếu hành vi dự kiến, nghĩa là nếu người dùng không được hiển thị trải nghiệm mong đợi, thì điều gì đó không khả dụng. Với định nghĩa rộng rãi đó, những điều sau đây có thể gây ra sự không khả dụng: - Lỗi mã - Sự cố bảo mật - Vấn đề về hiệu suất