Bỏ qua

Tài liệu Thiết kế Kiến trúc Hệ thống: EZD AI Booth

Mục tiêu: Cung cấp một bản thiết kế kiến trúc chi tiết, làm nền tảng cho việc phát triển sản phẩm EZD AI Booth, đảm bảo tính mở rộng, bảo mật, và khả năng bảo trì.

1. Các Nguyên tắc Thiết kế Chỉ đạo (Guiding Principles)

Mọi quyết định kỹ thuật sau này đều phải tuân thủ bốn nguyên tắc cốt lõi sau:

  1. MODULARITY (Thiết kế Mô-đun): Không có khối mã lệnh nguyên khối (monolith). Mọi thành phần, từ phần mềm trên booth đến các dịch vụ backend, phải được thiết kế dưới dạng các mô-đun độc lập, có thể phát triển, kiểm thử, và triển khai riêng biệt. Điều này là chìa khóa cho tốc độ phát triển và khả năng mở rộng của đội ngũ.
  2. SCALABILITY (Khả năng Mở rộng): Hệ thống phải được thiết kế để phục vụ từ 10 booth đến 10,000 booth mà không cần phải tái kiến trúc toàn bộ. Mọi thành phần phải có khả năng mở rộng theo chiều ngang (horizontal scaling).
  3. DATA-FIRST (Ưu tiên Dữ liệu): Dữ liệu là tài sản quý giá nhất. Kiến trúc phải đảm bảo mọi dữ liệu tương tác đều được thu thập một cách tin cậy, xử lý theo thời gian thực, lưu trữ an toàn và có thể truy vấn dễ dàng cho việc phân tích.
  4. SECURITY BY DESIGN (Bảo mật từ Thiết kế): Bảo mật không phải là một tính năng trang bị thêm. Nó phải được tích hợp vào từng lớp của kiến trúc, từ thiết bị vật lý đến cơ sở dữ liệu.

2. Kiến trúc Tổng thể (High-Level Architecture)

Hệ thống của chúng ta bao gồm ba khu vực chính, tương tác với nhau qua các API được định nghĩa rõ ràng.

graph TD
    subgraph "Kiến trúc Tổng thể EZD AI Booth"
        A["<b>I. EZD Booth Device</b><br/>(The Edge)"]
        B["<b>II. EZD Cloud Backend</b><br/>(The Brain)"]
        C["<b>III. Tenant Dashboard</b><br/>(The Control Center)"]
    end

    A <-->|API| B
    B -->|API| C
  • I. EZD Booth Device: Thiết bị vật lý đặt tại địa điểm, chịu trách nhiệm tương tác trực tiếp với người dùng.
  • II. EZD Cloud Backend: "Bộ não" trung tâm, nơi xử lý mọi logic nghiệp vụ, AI, và dữ liệu.
  • III. Tenant Dashboard: Giao diện web cho phép khách hàng doanh nghiệp (Tenant) quản lý nội dung và xem phân tích.

3. Thiết kế Chi tiết Từng Thành phần

I. EZD Booth Device (The Edge)

Đây là "bộ mặt" của hệ thống. Nó phải đáng tin cậy, phản hồi nhanh và có khả năng hoạt động bán-ngoại tuyến (semi-offline).

  • Thông số Kỹ thuật Phần cứng (Đề xuất):

    • CPU/Bo mạch: Một máy tính mini công nghiệp (Industrial Mini PC) chạy HĐH Linux (ví dụ: Ubuntu Core) để đảm bảo sự ổn định và bảo mật. CPU Core i5 hoặc tương đương, RAM 16GB.
    • GPU: GPU tích hợp đủ mạnh hoặc GPU rời cấp thấp để render avatar 3D mượt mà (ví dụ: NVIDIA GeForce GTX 1650).
    • Màn hình: Màn hình cảm ứng công nghiệp 27-32 inch, độ phân giải 4K, độ sáng cao.
    • Audio: Array Microphone để lọc tạp âm, Loa stereo chất lượng tốt.
  • Kiến trúc Phần mềm trên Booth (Application Architecture):

    • Containerization: Toàn bộ phần mềm sẽ chạy trong các Docker container để dễ dàng cập nhật và quản lý.
    • Các Module chính:
      1. UI & Experience Manager: Xây dựng bằng Electron hoặc một framework tương tự. Chịu trách nhiệm hiển thị giao diện người dùng, quản lý luồng trải nghiệm (màn hình chờ, màn hình tương tác).
      2. 3D Avatar Engine: Sử dụng Unity hoặc Unreal Engine, được tích hợp vào ứng dụng chính. Nhận lệnh (ví dụ: "vẫy tay", "gật đầu") từ Dialog Manager và thực thi animation tương ứng.
      3. Local NLP & Voice Client: Ghi nhận giọng nói, chuyển đổi thành văn bản (Speech-to-Text) bằng API đám mây hoặc một model gọn nhẹ tại chỗ, gửi văn bản đến Cloud Backend và nhận lại văn bản trả lời.
      4. Device Agent: Một dịch vụ chạy nền, chịu trách nhiệm "giao tiếp" với Cloud Backend để kiểm tra tình trạng sức khỏe (heartbeat), nhận lệnh cập nhật phần mềm, và đồng bộ hóa nội dung.

II. EZD Cloud Backend (The Brain)

Đây là trái tim của hệ thống. Chúng ta sẽ sử dụng Kiến trúc Microservices để đáp ứng nguyên tắc Modularity và Scalability.

  • Kiến trúc Nền tảng:

    • Các dịch vụ sẽ được đóng gói trong Docker containers và điều phối bởi Kubernetes (K8s).
    • Mọi giao tiếp giữa các dịch vụ và với bên ngoài sẽ thông qua một API Gateway.
  • Các Microservices Cốt lõi:

    1. API Gateway: Điểm vào duy nhất cho mọi yêu cầu từ Booth và Tenant Dashboard. Chịu trách nhiệm định tuyến, xác thực (authentication), và giới hạn tần suất truy cập (rate limiting).
    2. Identity Service: Quản lý định danh và quyền của người dùng (Tenants).
    3. Dialog Service: Dịch vụ quan trọng nhất. Nhận văn bản từ Booth, gọi đến NLP Service để phân tích ý định, truy vấn các dịch vụ khác (nếu cần) để lấy thông tin, và xây dựng câu trả lời hoàn chỉnh.
    4. NLP Service: "Bộ não" AI thực sự. Tích hợp với một nền tảng LLM bên thứ ba (Google Gemini, OpenAI GPT) được tinh chỉnh (fine-tuned) bằng dữ liệu của chúng ta. Chịu trách nhiệm phân tích ý định (intent classification), trích xuất thực thể (entity extraction).
    5. Data Ingestion Service: Nhận mọi dữ liệu tương tác (câu hỏi, câu trả lời, thời gian tương tác, vị trí booth) từ các Booth dưới dạng một dòng sự kiện (event stream) và đẩy vào hệ thống lưu trữ. Dịch vụ này phải có khả năng chịu tải cực cao.
    6. Analytics Service: Chạy các tác vụ phân tích định kỳ hoặc theo yêu cầu trên dữ liệu đã thu thập để cung cấp insight cho Tenant Dashboard.
    7. Content Management Service (CMS): Cho phép Tenant quản lý thông tin đặc thù của họ (sơ đồ cửa hàng, thông tin khuyến mãi) qua Tenant Dashboard.
    8. Device Management Service: Quản lý trạng thái, phiên bản phần mềm, và gửi lệnh đến các Booth Agent.
  • Kiến trúc Dữ liệu (Polyglot Persistence): Chúng ta sẽ không dùng một loại CSDL cho tất cả.

    • PostgreSQL: Dùng cho các dữ liệu có cấu trúc, quan hệ như thông tin người dùng (Tenants), thông tin các booth, nội dung CMS.
    • MongoDB/DynamoDB: Dùng để lưu trữ lịch sử các cuộc hội thoại dưới dạng các tài liệu JSON, dễ dàng truy vấn và linh hoạt.
    • Kafka/Pulsar: Dùng làm message broker cho Data Ingestion Service, đảm bảo không một tương tác nào bị mất.
    • Google BigQuery/Amazon Redshift: Dùng làm Kho dữ liệu (Data Warehouse) cho Analytics Service, tối ưu cho các truy vấn phân tích phức tạp trên tập dữ liệu lớn.

III. Tenant Dashboard (The Control Center)

  • Kiến trúc: Một ứng dụng trang đơn Single-Page Application (SPA) để mang lại trải nghiệm người dùng mượt mà và tương tác cao.
  • Giao tiếp: Tương tác với Cloud Backend hoàn toàn qua API Gateway.
  • Các tính năng chính:
    • Dashboard Phân tích (gọi đến Analytics Service).
    • Quản lý Nội dung Booth (gọi đến CMS).
    • Quản lý Thiết bị (gọi đến Device Management Service).

4. Các Vấn đề Chung (Cross-Cutting Concerns)

  • API Design: Tuân thủ chặt chẽ tiêu chuẩn RESTful. Sử dụng OpenAPI (Swagger) để định nghĩa và tài liệu hóa API một cách tự động.
  • Bảo mật:
    • Authentication: Sử dụng JWT (JSON Web Tokens) cho việc xác thực các yêu cầu API.
    • Authorization: Phân quyền dựa trên vai trò (Role-Based Access Control) cho Tenant Dashboard.
    • Encryption: Mã hóa dữ liệu mọi lúc (cả khi đang truyền đi - In-Transit với TLS, và khi đang lưu trữ - At-Rest).
  • DevOps & CI/CD:
    • Xây dựng một quy trình CI/CD hoàn toàn tự động từ lúc commit code đến khi triển khai lên K8s.
    • Sử dụng hạ tầng dưới dạng mã (Infrastructure as Code - IaC) với Terraform.
    • Thiết lập hệ thống giám sát (monitoring) và cảnh báo (alerting) toàn diện với Prometheus và Grafana.

5. Đề xuất Công nghệ (Technology Stack)

Thành phần Công nghệ Đề xuất Lý do
Backend Services Node.js (TypeScript) / Python Hiệu năng cao, hệ sinh thái mạnh cho AI và web services.
Frontend (Dashboard) React.js / Vue.js Cộng đồng lớn, hệ sinh thái component phong phú.
CSDL Quan hệ PostgreSQL Ổn định, mạnh mẽ, hỗ trợ tốt JSONB.
CSDL NoSQL MongoDB / DynamoDB Linh hoạt, phù hợp cho dữ liệu dạng tài liệu.
Data Warehouse Google BigQuery / AWS Redshift Tối ưu cho phân tích, khả năng mở rộng vô hạn.
Cloud Provider Google Cloud Platform / AWS Hệ sinh thái dịch vụ AI và Data Analytics hàng đầu.
Containerization Docker, Kubernetes Tiêu chuẩn ngành cho việc triển khai và điều phối microservices.

6. Lộ trình Triển khai – Giai đoạn 1 (MVP)

Mục tiêu của MVP là chứng minh 2 điều: (1) Người dùng có thích thú tương tác không? và (2) Dữ liệu thu thập được có giá trị không?

  • Tính năng MVP:
    • 01 Booth hoạt động với các chức năng hỏi/đáp cơ bản.
    • Tích hợp với LLM bên thứ ba (chưa cần fine-tune).
    • Các services tối thiểu: API Gateway, Dialog Service, NLP Service, Data Ingestion Service.
    • Lưu trữ thô toàn bộ dữ liệu tương tác.
    • Tenant Dashboard cực kỳ đơn giản, chỉ để xem log hội thoại thô.

Mọi thứ khác, chúng ta sẽ xây dựng sau. Hãy tập trung vào việc làm cho trải nghiệm cốt lõi trở nên kỳ diệu và đảm bảo không một byte dữ liệu nào bị mất.