0

Phân biệt giữa Reliability/Safety (Độ tin cậy/An toàn) và Scalability/Elasticity (Khả năng mở rộng/Tính co giãn)

1. Architecture Characteristics (Đặc tính kiến trúc) là gì?

Trong khi các yêu cầu nghiệp vụ (domain requirements) xác định hệ thống làm cái gì (ví dụ: cho phép đặt hàng), thì các đặc tính kiến trúc xác định hệ thống vận hành như thế nào và tại sao nó thành công.

Một hệ thống có thể hỗ trợ hàng chục đặc tính khác nhau, nhưng kiến trúc sư không nên tham lam. Mỗi đặc tính được thêm vào sẽ làm tăng độ phức tạp của thiết kế.

Nguyên tắc "Ít hơn là tốt hơn": Kiến trúc sư nên nỗ lực chọn ra số lượng đặc tính ít nhất có thể thay vì nhiều nhất có thể. Việc cố gắng hỗ trợ quá nhiều thứ sẽ dẫn đến những giải pháp chung chung, cồng kềnh và khó vận hành.

2. Reliability/Safety (Độ tin cậy/An toàn)

Đây là một đặc tính kiến trúc mô tả khả năng của hệ thống hoạt động chính xác, ổn định và an toàn ngay cả khi xảy ra lỗi, sự cố hoặc các tình huống bất thường. Mục tiêu của đặc tính này là đảm bảo người dùng có thể tin tưởng vào kết quả mà hệ thống tạo ra, đồng thời giảm thiểu nguy cơ gây thiệt hại về dữ liệu, tài sản hoặc con người.

Mặc dù thường được nhắc cùng nhau, Reliability (độ tin cậy) và Safety (độ an toàn) là hai khái niệm khác nhau.

Reliability tập trung vào việc hệ thống có thực hiện đúng chức năng đã thiết kế hay không. Một hệ thống có độ tin cậy cao sẽ hoạt động liên tục trong thời gian dài, ít gặp lỗi và khi xảy ra sự cố vẫn có khả năng phục hồi để tiếp tục cung cấp dịch vụ. Ví dụ, một hệ thống ngân hàng trực tuyến phải luôn tính toán chính xác số dư tài khoản, không làm mất giao dịch ngay cả khi máy chủ gặp sự cố hoặc mất kết nối mạng.

Safety lại quan tâm đến việc hệ thống có gây ra hậu quả nguy hiểm hay không khi xảy ra lỗi. Một hệ thống có thể không còn hoạt động bình thường nhưng vẫn phải đảm bảo không gây tổn hại cho con người hoặc tài sản. Chẳng hạn, phần mềm điều khiển thang máy nếu phát hiện cảm biến cửa gặp lỗi sẽ không cho phép thang máy di chuyển thay vì tiếp tục vận hành trong trạng thái nguy hiểm. Tương tự, phần mềm điều khiển máy truyền dịch trong bệnh viện nếu không xác định được chính xác tốc độ truyền thuốc sẽ tự động dừng bơm và phát cảnh báo thay vì tiếp tục truyền với tốc độ không kiểm soát.

Nói cách khác, Reliability trả lời câu hỏi "Hệ thống có tiếp tục hoạt động đúng không?", còn Safety trả lời câu hỏi "Nếu hệ thống hoạt động sai thì hậu quả có được kiểm soát không?"

Một hệ thống có thể rất đáng tin cậy nhưng chưa chắc đã an toàn. Ví dụ, một robot công nghiệp có thể hoạt động liên tục nhiều tháng không gặp lỗi (độ tin cậy cao), nhưng nếu khi cảm biến phát hiện người đi vào vùng nguy hiểm mà robot vẫn tiếp tục chuyển động thì hệ thống đó không an toàn. Ngược lại, một hệ thống có thể thường xuyên dừng hoạt động khi phát hiện dấu hiệu bất thường (độ tin cậy không cao) nhưng lại rất an toàn vì luôn ưu tiên tránh gây tai nạn.

Tóm lại, Reliability/Safety không chỉ hướng tới việc hệ thống hoạt động ổn định mà còn đảm bảo rằng khi lỗi là điều không thể tránh khỏi, hệ thống vẫn bảo vệ dữ liệu, tài sản và con người khỏi những hậu quả nghiêm trọng. Đây là một trong những đặc tính kiến trúc quan trọng nhất đối với các hệ thống tài chính, y tế, giao thông, công nghiệp và mọi lĩnh vực mà một lỗi nhỏ cũng có thể dẫn đến thiệt hại lớn.

3. Scalability/Elasticity (Khả năng mở rộng/Tính co giãn)

Scalability Là khả năng tăng hoặc giảm tài nguyên của hệ thống theo nhu cầu thực tế khi cần thiết. Khác với khả năng mở rộng truyền thống, tài nguyên không được bổ sung cố định từ trước mà có thể được cấp phát khi nhu cầu tăng và thu hồi khi nhu cầu giảm.

Ví dụ, một website bán vé hòa nhạc thường chỉ có vài nghìn người truy cập mỗi ngày. Tuy nhiên, khi mở bán vé, hàng trăm nghìn người có thể truy cập cùng lúc. Nếu hệ thống hỗ trợ On-demand Scalability, nền tảng điện toán đám mây sẽ tự động bổ sung thêm máy chủ hoặc container để đáp ứng lượng truy cập tăng đột biến. Sau khi đợt bán vé kết thúc, các tài nguyên dư thừa sẽ được loại bỏ để tránh lãng phí chi phí.

Đặc tính này đặc biệt quan trọng trên nền tảng đám mây vì doanh nghiệp chỉ cần trả tiền cho lượng tài nguyên thực sự sử dụng thay vì phải đầu tư đủ hạ tầng cho thời điểm tải cao nhất.

Elasticity là khả năng hệ thống tự động và nhanh chóng mở rộng khi tải tăng và co lại khi tải giảm mà hầu như không cần sự can thiệp của con người. Nếu Scalability trả lời câu hỏi "Hệ thống có thể mở rộng khi cần không?" thì Elasticity trả lời câu hỏi "Hệ thống có thể tự động mở rộng và thu hẹp một cách linh hoạt theo thời gian thực không?"

Ví dụ, một dịch vụ xem phim trực tuyến có lượng người xem tăng mạnh vào buổi tối và giảm đáng kể vào ban đêm. Hệ thống có Elasticity sẽ tự động tăng số lượng máy chủ trong khoảng thời gian cao điểm và tự động giảm số lượng máy chủ khi lưu lượng truy cập giảm, giúp vừa đảm bảo hiệu năng vừa tối ưu chi phí.

Elasticity là một trong những đặc trưng nổi bật của điện toán đám mây.

Hai khái niệm này thường bị nhầm lẫn vì đều liên quan đến việc thay đổi tài nguyên theo nhu cầu.

Scalability nhấn mạnh khả năng mở rộng của hệ thống. Nghĩa là khi cần, hệ thống có thể bổ sung thêm tài nguyên để đáp ứng khối lượng công việc lớn hơn. Việc mở rộng có thể được thực hiện thủ công hoặc tự động.

Elasticity nhấn mạnh khả năng co giãn linh hoạt và tự động. Hệ thống không chỉ mở rộng mà còn tự động thu hồi tài nguyên khi không còn cần thiết. Đây là một mức độ cao hơn của Scalability.

Có thể hình dung rằng mọi hệ thống có Elasticity đều có Scalability, nhưng không phải mọi hệ thống có Scalability đều có Elasticity.

Ví dụ, một quản trị viên phải đăng nhập vào hệ thống và tự bổ sung thêm năm máy chủ khi lượng truy cập tăng. Đây là Scalability nhưng chưa phải Elasticity. Nếu hệ thống tự phát hiện tải tăng và tự động bổ sung năm máy chủ, sau đó tự giảm về hai máy chủ khi tải giảm thì đó là Elasticity.

Đọc thêm về các đặc tính kiến trúc phần mềm tại: Giải mã công nghệ


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí