Architecture

Kiến trúc hệ thống #

Sơ đồ thành phần hệ thống #

Hệ thống gồm các dịch vụ chính như:

  • Collector Service: cung cấp chức năng quản lý thu thập dữ liệu.
  • OAuth2 Server: cung cấp tính năng xác thực, phân quyền, giao diện đăng nhập, v.v..
  • Patient Medical Records (TODO: review tên): cung cấp api truy cập dữ liệu nhận từ các đơn vị y tế.

Ngoài ra, còn có các dịch vụ:

  • Identity Management Service: dịch vụ hỗ trợ mã hóa nhiều lớp và lưu trữ định danh người dùng
  • Encryption Service: dùng để tăng cường lớp mã hóa cho các dịch vụ lưu trữ dữ liệu quan trọng, hoặc cung cấp tính năng mã hóa cho các dịch vụ chưa có tính năng này
  • Event Store: hỗ trợ API nhận dữ liệu từ các dịch vụ trong hệ thống hoặc bên ngoài hệ thống như các đơn vị y tế. Dữ liệu có thể được lấy từ các cơ sở dữ liệu, API, cảm biến v.v..
  • Error Tracking Service: là một Event Store được dùng để thu thập dữ liệu lỗi từ các dịch vụ
  • API Explorer: là dịch vụ cung cấp tài liệu về API nhằm hỗ trợ các bên công tác thứ 3 có thể sử dụng API hệ thống được dễ dàng.
  • SMS Service: cung cấp chức năng gửi, nhận tin nhắn từ một số đầu số được cải đặt trước
  • Analysis Service: …. ??? (TODO: bổ sung)

Xác thực và phân quyền #

Authenticate&Authorization

Khi triển khai kiến trúc Microservice thông thường sẽ có hai cách hiện thực phân quyền:

  • Cách 1: Chia các dịch vụ thành 2 loại (Micro và Edge/Backend-for-Frontend), phân quyền được thực hiện ở các service thuộc loại Edge, các Micro cung cấp API (nội bộ) không yêu cầu xác thực
  • Cách 2: Mỗi service (trừ một số service đặc biệt) sẽ tự quản lý phân quyền.

Hệ thống này được hiện thực theo cách 2 - Mỗi service tự phân quyền, do đó cần có IAM để hỗ trợ các service trong việc xác thực người dùng

IAM (Identity Access Management) nắm giữ các định danh của toàn bộ các đối tượng (user, service, command…) cùng với các bộ luật phân quyền chi tiết cho từng loại tài nguyên.

Việc mỗi service phải tự thực hiện việc xác thực, phân quyền sẽ làm tăng chi phí khi xây dựng các service, ngoài các nghiệp vụ chính thì cần thêm lớp middleware để giao tiếp với IAM.

OAuth2 #

oauth2_openid_code

Tài liệu tham khảo #