Skip to main content

Architecture Characteristics là gì? Các đặc tính kiến trúc trong phần mềm (Phần 2) – Cloud và Cross-Cutting

Sự phát triển của điện toán đám mây đã làm thay đổi đáng kể cách chúng ta thiết kế phần mềm. Bên cạnh các đặc tính kiến trúc truyền thống như hiệu năng hay khả năng mở rộng, các hệ thống hiện đại còn phải đáp ứng nhiều yêu cầu mới như Elasticity, Availability theo Availability Zone, hay quản trị dữ liệu theo từng khu vực địa lý. Đồng thời, những yêu cầu xuyên suốt như Security, Privacy, Authentication, Authorization hay Accessibility cũng trở thành yếu tố bắt buộc trong hầu hết các dự án.

Trong bài viết này, chúng ta sẽ khám phá hai nhóm Architecture Characteristics quan trọng đối với các hệ thống hiện đại: Cloud CharacteristicsCross-Cutting Characteristics, đồng thời tìm hiểu vai trò của từng đặc tính thông qua những ví dụ gần gũi trong thực tế.

Architecture Quantum là gì? Giải thích Lượng tử Kiến trúc trong Software Architecture

Architecture Quantum (Lượng tử kiến trúc) qua 8 ví dụ thực tế

Tìm Hiểu Kiến Trúc Phần Mềm (Software Architecture) Qua Góc Nhìn Của Một Kiến trúc sư phần mềm (Software Architect)

Architecture Characteristics là gì? Các đặc tính kiến trúc trong phần mềm (Phần 1): Operational và Structural

Architecture Characteristics là gì? Các đặc tính kiến trúc trong phần mềm (Phần 3): Trade-off và Least Worst Architecture

4. Nhóm Đặc tính Đám mây (Cloud)

Các đặc tính xuất hiện cùng với sự phổ biến của điện toán đám mây:

On-demand Scalability (Khả năng mở rộng theo nhu cầu)

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.

On-demand Elasticity (Khả năng co giãn theo nhu cầu)

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 On-demand Scalability trả lời câu hỏi "Hệ thống có thể mở rộng khi cần không?" thì On-demand 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.

Phân biệt On-demand Scalability và On-demand Elasticity

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.

On-demand 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.

On-demand 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.

Zone-based Availability (Tính khả dụng theo Availability Zone)

Là khả năng hệ thống vẫn tiếp tục hoạt động khi một Availability Zone (Vùng khả dụng - AZ) gặp sự cố. Availability Zone là một hoặc nhiều trung tâm dữ liệu độc lập trong cùng một khu vực địa lý (Region), được kết nối với nhau bằng mạng tốc độ cao nhưng vẫn tách biệt về nguồn điện, hệ thống làm mát và hạ tầng vật lý.

Ví dụ, một ứng dụng được triển khai đồng thời trên ba Availability Zone trong cùng một Region. Nếu một AZ bị mất điện hoặc gặp sự cố mạng, lưu lượng truy cập sẽ tự động được chuyển sang hai AZ còn lại mà người dùng hầu như không nhận thấy sự gián đoạn.

Để đạt được Zone-based Availability, kiến trúc thường triển khai nhiều bản sao của ứng dụng trên nhiều AZ, kết hợp với cân bằng tải, sao chép dữ liệu giữa các AZ.

Đặc tính này giúp hệ thống chịu được các sự cố ở mức trung tâm dữ liệu, nhưng chưa đủ để đối phó với các thảm họa ảnh hưởng đến toàn bộ Region

Region-based Privacy and Security (Quyền riêng tư và bảo mật theo khu vực)

Là khả năng đảm bảo dữ liệu được lưu trữ, xử lý và bảo vệ theo các yêu cầu pháp lý, quy định và chính sách bảo mật của từng khu vực hoặc quốc gia.

Ví dụ, một công ty toàn cầu cung cấp dịch vụ cho khách hàng ở châu Âu, Mỹ và Nhật Bản. Dữ liệu của khách hàng châu Âu có thể bắt buộc phải được lưu trữ và xử lý trong các Region thuộc Liên minh châu Âu để đáp ứng các quy định về bảo vệ dữ liệu. Trong khi đó, dữ liệu của khách hàng Nhật Bản có thể được lưu trữ trong các Region tại Nhật nhằm đáp ứng các yêu cầu pháp lý của quốc gia này.

Đặc tính này ngày càng quan trọng đối với các hệ thống toàn cầu vì nhiều quốc gia có quy định nghiêm ngặt về chủ quyền dữ liệu (data sovereignty), quyền riêng tư và bảo vệ thông tin cá nhân.

Nhìn chung, bốn đặc tính này phản ánh những yêu cầu đặc trưng của kiến trúc phần mềm trên nền tảng điện toán đám mây (cloud-native architecture). On-demand ScalabilityOn-demand Elasticity giúp hệ thống thích ứng linh hoạt với sự thay đổi của khối lượng công việc và tối ưu chi phí sử dụng tài nguyên. Zone-based Availability đảm bảo dịch vụ vẫn duy trì hoạt động khi một trung tâm dữ liệu gặp sự cố, góp phần nâng cao độ sẵn sàng của hệ thống. Trong khi đó, Region-based Privacy and Security tập trung vào việc bảo vệ dữ liệu và tuân thủ các quy định pháp lý của từng quốc gia hoặc khu vực, một yêu cầu ngày càng quan trọng đối với các hệ thống hoạt động trên phạm vi toàn cầu. Khi kết hợp với nhau, các đặc tính này giúp xây dựng những hệ thống cloud-native vừa linh hoạt, bền bỉ, an toàn và đáp ứng tốt các yêu cầu kinh doanh hiện đại.

Cloud Native là gì? Tư duy thiết kế hệ thống hiện đại cho thời đại đám mây

5. Nhóm Đặc tính Xuyên suốt (Cross-Cutting)

Các đặc tính không nằm gọn trong một nhóm cụ thể nhưng là những ràng buộc thiết kế quan trọng:

Accessibility (Khả năng tiếp cận)

Là khả năng giúp mọi người đều có thể sử dụng hệ thống, bao gồm cả người khuyết tật hoặc những người có các hạn chế về thị giác, thính giác, vận động hoặc nhận thức. Đây không chỉ là một yêu cầu về giao diện người dùng mà còn ảnh hưởng đến cách kiến trúc phần mềm được thiết kế, chẳng hạn như hỗ trợ trình đọc màn hình, điều hướng bằng bàn phím, màu sắc có độ tương phản cao hoặc cung cấp văn bản thay thế cho hình ảnh.

Ví dụ, một hệ thống thương mại điện tử được thiết kế đúng chuẩn Accessibility sẽ cho phép người khiếm thị sử dụng screen reader để duyệt sản phẩm và thanh toán mà không gặp trở ngại. Ngược lại, nếu toàn bộ chức năng chỉ hoạt động bằng chuột hoặc sử dụng màu sắc làm phương tiện truyền tải thông tin duy nhất thì người khuyết tật sẽ khó hoặc không thể sử dụng hệ thống.

Archivability (Khả năng lưu trữ lâu dài)

Là khả năng lưu giữ dữ liệu trong thời gian dài mà vẫn đảm bảo dữ liệu có thể được truy xuất, đọc và sử dụng khi cần. Đặc tính này thường xuất hiện trong các hệ thống tài chính, y tế, giáo dục hoặc chính phủ, nơi dữ liệu phải được lưu giữ từ nhiều năm đến hàng chục năm để phục vụ kiểm toán, tra cứu hoặc tuân thủ pháp luật.

Ví dụ, một bệnh viện cần lưu hồ sơ bệnh án của bệnh nhân trong nhiều năm. Kiến trúc hệ thống phải hỗ trợ lưu trữ lâu dài, sao lưu dữ liệu, định dạng dữ liệu ổn định và khả năng khôi phục khi cần mà không bị mất mát hoặc hư hỏng.

Authentication (Xác thực)

Là quá trình xác minh một người hoặc một hệ thống thực sự là ai. Nói cách khác, hệ thống cần trả lời câu hỏi: "Bạn là ai?"

Kiến trúc phần mềm cần lựa chọn cơ chế xác thực phù hợp như tên đăng nhập và mật khẩu, xác thực hai yếu tố (2FA), đăng nhập bằng Google, Microsoft hoặc sử dụng chứng chỉ số. Một hệ thống ngân hàng thường yêu cầu người dùng nhập mật khẩu và mã OTP trước khi được phép truy cập tài khoản.

Authentication chỉ xác nhận danh tính, chưa quyết định người đó được phép làm gì.

Authorization (Phân quyền)

Là quá trình xác định một người dùng sau khi đã xác thực được phép thực hiện những hành động nào. Nó trả lời câu hỏi: "Bạn được phép làm gì?"

Legal (Tuân thủ pháp lý)

Là khả năng đáp ứng các yêu cầu pháp luật và quy định mà hệ thống phải tuân theo. Điều này không chỉ liên quan đến mã nguồn mà còn ảnh hưởng đến cách lưu trữ dữ liệu, ghi nhật ký, bảo mật, quản lý quyền riêng tư và quy trình vận hành.

Ví dụ, một hệ thống thanh toán phải tuân thủ các tiêu chuẩn về bảo vệ dữ liệu thanh toán, trong khi một hệ thống y tế phải tuân thủ các quy định về bảo mật hồ sơ bệnh nhân. Kiến trúc phần mềm cần được thiết kế ngay từ đầu để đáp ứng các yêu cầu pháp lý thay vì bổ sung sau này.

Privacy (Quyền riêng tư)

Là khả năng bảo vệ thông tin cá nhân của người dùng và đảm bảo dữ liệu chỉ được thu thập, sử dụng, lưu trữ và chia sẻ đúng mục đích mà người dùng đã đồng ý.

Ví dụ, một ứng dụng mạng xã hội cho phép người dùng quyết định ai được xem bài viết, ai được xem số điện thoại hoặc địa chỉ email của mình. Ngoài ra, hệ thống cũng cần cho phép người dùng yêu cầu xóa dữ liệu cá nhân khi cần.

Privacy tập trung vào việc bảo vệ quyền lợi của chủ sở hữu dữ liệu, khác với Security vốn tập trung vào việc bảo vệ hệ thống khỏi các cuộc tấn công.

Security (Bảo mật)

Là khả năng bảo vệ hệ thống khỏi các truy cập trái phép, tấn công mạng, đánh cắp dữ liệu hoặc phá hoại hệ thống. Đây là một trong những đặc tính kiến trúc quan trọng nhất đối với hầu hết các hệ thống hiện đại.

Kiến trúc bảo mật thường bao gồm nhiều lớp như mã hóa dữ liệu, xác thực, phân quyền, tường lửa, phát hiện xâm nhập, ghi nhật ký, kiểm toán, quản lý khóa mã hóa và bảo vệ API.

Ví dụ, khi người dùng thanh toán trực tuyến, toàn bộ dữ liệu thẻ tín dụng được mã hóa trong quá trình truyền và lưu trữ, đồng thời hệ thống giám sát các hành vi bất thường để phát hiện gian lận.

Supportability (Khả năng hỗ trợ)

Là khả năng giúp đội ngũ vận hành và bảo trì dễ dàng theo dõi, chẩn đoán và xử lý các sự cố xảy ra trong hệ thống.

Một hệ thống có Supportability tốt thường được trang bị đầy đủ log, metrics, tracing, dashboard giám sát, cảnh báo tự động và công cụ phân tích lỗi. Khi xảy ra sự cố, đội vận hành có thể nhanh chóng xác định nguyên nhân thay vì phải mất nhiều giờ hoặc nhiều ngày để điều tra.

Ví dụ, nếu một dịch vụ trong kiến trúc microservices phản hồi chậm, hệ thống quan sát (observability) sẽ giúp xác định chính xác dịch vụ nào là nguyên nhân gây ra hiện tượng này.

Usability / Achievability (Khả năng sử dụng)

Là mức độ dễ sử dụng của hệ thống đối với người dùng cuối. Một hệ thống có Usability tốt giúp người dùng hoàn thành công việc nhanh chóng, ít mắc lỗi và không cần nhiều hướng dẫn.

Ví dụ, một ứng dụng ngân hàng cho phép chuyển tiền chỉ với vài thao tác đơn giản sẽ có Usability cao hơn một hệ thống yêu cầu người dùng đi qua nhiều màn hình phức tạp.

Một số tài liệu sử dụng thuật ngữ Achievability để nhấn mạnh khả năng người dùng hoàn thành mục tiêu của mình một cách hiệu quả. Trong thực tế, Achievability thường được xem là một khía cạnh của Usability, tập trung vào việc liệu hệ thống có giúp người dùng đạt được kết quả mong muốn hay không.

Interoperability (Khả năng tương tác)

Là khả năng nhiều hệ thống khác nhau có thể trao đổi dữ liệu và phối hợp hoạt động với nhau, ngay cả khi chúng được phát triển bằng các công nghệ hoặc nền tảng khác nhau.

Ví dụ, một hệ thống thương mại điện tử cần kết nối với cổng thanh toán, hệ thống quản lý kho, đơn vị vận chuyển và phần mềm kế toán. Kiến trúc phần mềm cần sử dụng các chuẩn giao tiếp như REST API, GraphQL, gRPC hoặc các chuẩn dữ liệu như JSON, XML để đảm bảo các hệ thống có thể làm việc cùng nhau.

Một hệ thống có Interoperability cao sẽ dễ dàng tích hợp với các đối tác hoặc dịch vụ mới mà không cần thay đổi lớn trong kiến trúc.

Learnability (Khả năng học sử dụng)

Là mức độ dễ dàng để người dùng mới học cách sử dụng hệ thống trong thời gian ngắn. Đây là một thành phần quan trọng của trải nghiệm người dùng (User Experience).

Ví dụ, hai phần mềm quản lý dự án có thể cung cấp các chức năng tương đương nhau, nhưng phần mềm có giao diện trực quan, hướng dẫn rõ ràng và quy trình thao tác đơn giản sẽ giúp người dùng làm quen chỉ sau vài phút. Ngược lại, một hệ thống phức tạp với nhiều thuật ngữ chuyên môn và giao diện khó hiểu sẽ khiến người dùng mất nhiều ngày hoặc nhiều tuần để thành thạo.

Learnability tốt giúp giảm chi phí đào tạo, tăng tốc độ triển khai hệ thống và nâng cao mức độ hài lòng của người dùng.

Comments

Popular posts from this blog

Cloud Native là gì? Tư duy thiết kế hệ thống hiện đại cho thời đại đám mây

Cloud Native đang trở thành nền tảng của hầu hết các hệ thống hiện đại từ Netflix, Amazon đến Google. Nhưng Cloud Native thực sự là gì? Liệu việc đưa ứng dụng lên AWS hay Google Cloud đã đủ để gọi là Cloud Native chưa? Trong bài viết này, chúng ta sẽ tìm hiểu nguồn gốc của khái niệm Cloud Native, bài học từ sự cố AWS năm 2015, và những đặc tính quan trọng giúp các hệ thống hiện đại đạt được khả năng mở rộng, chống chịu và triển khai liên tục. 1. Bài học từ sự cố AWS: Lỗi là “Luật”, không phải “Ngoại lệ” Vào năm 2015, Amazon Web Services (AWS) gặp sự cố sập mạng chấn động. Trong khi các “ông lớn” như Airbnb hay Nest đều bị tê liệt, thì Netflix chỉ bị ảnh hưởng rất nhỏ và phục hồi gần như ngay lập tức. AWS phân vùng các dịch vụ mà nó cung cấp thành các vùng (region) và vùng khả dụng (Availability Zone - AZ). Các vùng ánh xạ đến các khu vực địa lý (như Virginia, California, Oregon) và AZ cung cấp thêm dự phòng và cô lập trong một vùng duy nhất. Hình bên dưới hoàn toàn là giả định (nhưng v...

Kiến trúc cho xử lý dữ liệu luồng (Streaming Architecture) - Phần 3: Continuous Intelligence và AI thời gian thực

Khi hệ thống đã có khả năng thu thập dữ liệu liên tục và phân tích sự kiện theo thời gian thực, câu hỏi tiếp theo là: liệu máy tính có thể tự đưa ra quyết định thay con người hay không? Kiếntrúc cho xử lý dữ liệu luồng (Streaming Architecture) - Phần 1: Giá trị củaStreaming và Kiến trúc Streaming Ingest Kiếntrúc cho xử lý dữ liệu luồng (Streaming Architecture) - Phần 2: Real-timeDashboards và Stream Analytics Đó chính là mục tiêu của Continuous Intelligence – giai đoạn cao nhất trong kiến trúc xử lý dữ liệu luồng. Thay vì chỉ hiển thị cảnh báo trên dashboard, hệ thống có thể liên tục huấn luyện mô hình AI, thực hiện suy luận (Inference) ngay khi dữ liệu phát sinh và tự động kích hoạt các hành động phù hợp. Trong bài viết cuối cùng của series Kiến trúc cho xử lý dữ liệu luồng , chúng ta sẽ cùng khám phá cách xây dựng một hệ thống dữ liệu thông minh có khả năng học hỏi, thích nghi và phản ứng gần như theo thời gian thực. 5. Continuous Intelligence (Trí tuệ liên tục) Đây là cấp...

Reinforcement Learning (Học tăng cường) là gì? Hiểu bản chất qua giải thích về cách AI tự học

Nếu học có giám sát giúp AI học từ những đáp án đã biết trước, còn học không giám sát giúp AI tự khám phá cấu trúc của dữ liệu, thì học tăng cường (Reinforcement Learning - RL) lại đi theo một hướng hoàn toàn khác: AI học bằng chính trải nghiệm của mình. Deep Reinforcement Learning là gì? Vì sao AI cần kết hợp Học sâu với Học tăng cường Reinforcement Learning (Học tăng cường) hoạt động như thế nào? Dynamic Programming, Monte Carlo và các ứng dụng thực tế Thay vì được hướng dẫn từng bước, tác nhân (agent) liên tục tương tác với môi trường, thử nhiều hành động khác nhau và nhận phần thưởng hoặc hình phạt. Sau hàng nghìn, thậm chí hàng triệu lần thử nghiệm, AI dần học được chiến lược tối ưu để đạt mục tiêu. Trong bài viết này, chúng ta sẽ cùng tìm hiểu bản chất của học tăng cường, các thành phần quan trọng như Agent, Environment, Reward, Action và Observation, đồng thời minh họa bằng ví dụ trực quan để thấy AI thực sự "học" như thế nào. 1. Học có giám sát (Supervised learni...