Sơ đồ triển khai (Deployment Diagram) trong UML

1. Tổng quan về Sơ đồ triển khai

Sơ đồ triển khai (Deployment Diagram) là một loại sơ đồ trong UML (Unified Modeling Language) được sử dụng để mô tả cách thức triển khai các thành phần phần mềm trên phần cứng. Nó thể hiện các nút (nodes), các thành phần (components) và mối quan hệ giữa chúng, giúp mô tả cấu trúc vật lý của hệ thống.

Sơ đồ triển khai đặc biệt quan trọng trong giai đoạn triển khai hệ thống, giúp kiến trúc sư phần mềm, đội ngũ vận hành hiểu rõ cách các thành phần ứng dụng được phân phối trên các máy chủ, thiết bị, hay nền tảng điện toán đám mây.


2. Các thành phần chính của Sơ đồ triển khai

a. Node (Nút)

  • Đại diện cho một thực thể vật lý (máy chủ, thiết bị, container, v.v.).
  • Được biểu diễn bằng một hình hộp 3D.
  • Có thể chứa các thành phần phần mềm chạy trên nó.
  • Ví dụ: Máy chủ ứng dụng, Cơ sở dữ liệu, Máy chủ web.

b. Component (Thành phần)

  • Đại diện cho một phần mềm hoặc module được triển khai trên một node.
  • Được biểu diễn bằng hình chữ nhật với biểu tượng component (⚙) bên trong.
  • Ví dụ: Service API, Database, Web Application.

c. Artifact (Tạo phẩm)

  • Một phần của phần mềm được triển khai lên hệ thống (ví dụ: tệp JAR, WAR, DLL, EXE).
  • Thường được biểu diễn bằng hình chữ nhật có biểu tượng tệp tài liệu (?).

d. Association (Quan hệ)

  • Biểu diễn kết nối giữa các thành phần.
  • Các loại quan hệ thường gặp:
    • Quan hệ giao tiếp (Communication Association): Thể hiện cách các node liên kết với nhau qua mạng.
    • Quan hệ triển khai (Deployment Relationship): Cho thấy cách các component được triển khai trên các node.

3. Cách vẽ Sơ đồ triển khai

Để vẽ sơ đồ triển khai, ta thực hiện các bước sau:

  1. Xác định các node chính: Bao gồm máy chủ, thiết bị, hệ thống lưu trữ, v.v.
  2. Xác định các thành phần phần mềm: Các module, ứng dụng, dịch vụ.
  3. Xác định cách triển khai các thành phần: Xác định component nào chạy trên node nào.
  4. Vẽ các kết nối giữa các node: Mô tả cách các node giao tiếp với nhau.

4. Ví dụ về Sơ đồ triển khai

Ví dụ 1: Hệ thống Web đơn giản

Giả sử một hệ thống web bao gồm:

  • Client: Máy tính hoặc trình duyệt truy cập trang web.
  • Web Server: Máy chủ chứa ứng dụng web.
  • Database Server: Máy chủ chứa cơ sở dữ liệu.

Sơ đồ triển khai sẽ như sau:

+---------------------+           +------------------------+
|  Client (Browser)   | <-------> |   Web Server (Apache)  |
+---------------------+           |  - WebApp.war          |
                                  +------------------------+
                                               |
                                  +-------------------------+
                                  | Database Server (MySQL) |
                                  |  - Data.db              |
                                  +-------------------------+

Ví dụ 2: Hệ thống Microservices

Giả sử chúng ta có một hệ thống web thương mại điện tử sử dụng kiến trúc Microservices, bao gồm các thành phần sau:

  1. Client (Người dùng): Truy cập hệ thống thông qua trình duyệt hoặc ứng dụng di động.
  2. Load Balancer: Cân bằng tải giữa các máy chủ API.
  3. API Gateway: Cổng vào chính cho tất cả các dịch vụ backend.
  4. Các Microservices:
    • User Service: Quản lý thông tin người dùng.
    • Order Service: Xử lý đơn hàng.
    • Product Service: Quản lý danh mục sản phẩm.
  5. Database Cluster:
    • User DB: Lưu thông tin người dùng.
    • Order DB: Lưu thông tin đơn hàng.
    • Product DB: Lưu thông tin sản phẩm.
  6. Message Broker (RabbitMQ/Kafka): Xử lý giao tiếp không đồng bộ giữa các service.

Sơ đồ triển khai hệ thống:

+--------------------------------------------------+
|                  Load Balancer                   |
+--------------------------------------------------+
              |                        |
  +--------------------+    +--------------------+
  |    API Gateway     |    |    API Gateway     |  <-- (Cân bằng tải)
  +--------------------+    +--------------------+
              |                        |
  +--------------------+    +--------------------+
  |  User Service      |    | Order Service      |
  |  - user.jar        |    | - order.jar        |
  +--------------------+    +--------------------+
              |                        |
  +--------------------+    +--------------------+
  |  Product Service   |    |  Message Broker    |
  |  - product.jar     |    | (RabbitMQ/Kafka)   |
  +--------------------+    +--------------------+
              |                        |
  +--------------------+    +--------------------+
  |     User DB        |    |     Order DB       |
  |  - MySQL/Postgres  |    |  - MySQL/Postgres  |
  +--------------------+    +--------------------+
              |
  +--------------------+
  |    Product DB      |
  |  - MySQL/Postgres  |
  +--------------------+

Giải thích sơ đồ

  • Client truy cập hệ thống thông qua Load Balancer, giúp phân phối yêu cầu đồng đều đến các API Gateway.
  • API Gateway đóng vai trò như một cổng duy nhất để giao tiếp với các Microservices.
  • Microservices chạy trên các container/máy chủ khác nhau:
    • User Service xử lý thông tin người dùng.
    • Order Service xử lý đơn hàng.
    • Product Service quản lý sản phẩm.
  • Database Cluster lưu trữ dữ liệu, với mỗi dịch vụ có một database riêng biệt.
  • Message Broker (RabbitMQ/Kafka) giúp các service giao tiếp bất đồng bộ, hỗ trợ hệ thống mở rộng tốt hơn.

5. Ứng dụng của Sơ đồ triển khai

  • Giúp lập trình viên, kiến trúc sư phần mềm hiểu rõ cách hệ thống được triển khai.
  • Hỗ trợ việc lên kế hoạch triển khai, bảo trì hệ thống.
  • Giúp đội ngũ vận hành dễ dàng theo dõi kiến trúc hệ thống thực tế.
  • Dùng để tối ưu hóa hiệu suất hệ thống.

6. Kết luận

Sơ đồ triển khai là một công cụ quan trọng giúp mô tả cách phần mềm được triển khai trên hạ tầng phần cứng. Nó không chỉ giúp hiểu rõ cấu trúc vật lý của hệ thống mà còn hỗ trợ quá trình thiết kế, vận hành và tối ưu hệ thống.