Trong các lược đồ quen thuộc thì các cái tên như Deployment Diagram, Architecture Diagram sẽ là những lược đồ mà sẽ ít ai biết tới hoặc có chăng cũng chỉ là nghe qua! Thực tế thì chúng là những lược đồ quan trọng chẳng kém gì đàn em kia (Nói đàn em vì những loại lược đồ này mang tính khái quát cao cung như rất quan trọng trong dự án thực tế)

Trong bài viết này chúng ta sẽ cùng tìm hiểu về ông kẹ Deployment Diagram, suy cho cùng thì giá trị của một dự án chỉ thực sự được định mức khi đã deploy và có người dùng mà :v

I. Ôn lại một chút
Trong UML, bạn sử dụng Class Diagram và Component Diagram để lý giải về cấu trúc của phần mềm; Sequence Diagram, Collaboration Diagram, Statechart Diagram và Activity Diagram để xác định hành vi của phần mềm.

Bên cạnh đó, phần giáp ranh giữa phần cứng và phần mềm của hệ thống thì ta dùng Deployment Diagram để giải thích sự liên kết giữa bộ xử lý [Ở đây có thể là CPU thuê từ máy ảo,…] và các thiết bị trong hệ thống [Database, Server cũng là thiết bị,…] mà phần mềm của chúng ta sẽ chạy ở trên đó.

II. Deployment Diagram là gì?
Được sử dụng để biểu đạt trực quan những khía cạnh tĩnh của các nút vật lý và các mối quan hệ giữa chúng cũng như chỉ ra các chi tiết trong việc xây dựng.

Nó là một trong hai loại lược đồ sử dụng trong việc mô hình hóa các khía cạnh vật lý của một hệ thống hướng đối tượng. Môt lược đồ triển khai là một lược đồ cho thấy cấu hình runtime của các node đang xử lý và các components bên trong chúng. Hmmm nghe qua thì nó khác là giống với lược đồ component ở điểm node là tập hợp của nhiều component.

Class vs Node vs Component
Component Diagram và Deployment Diagram có cách vẽ tựa như Class Diagram, chỉ có điều thay vì chưa các Classes, tụi nó sẽ chứa các Componenet và các Node theo trình tự riêng. Về cơ bản thì Deployment Diagram có thể xem như Class Diagram nhưng ở đây nó tập trung và các node của hệ thống. Ta sử dụng Deployment Diagram để mô hình hóa view hệ thống khi triển khai tĩnh

Thường thì chúng ta sử dụng các lớp để mô hình hóa các khái niệm và các thứ khác trong một problem domain (giải thích nguyên văn: https://bit.ly/2WasrwZ) và sau đó lại mô hình hóa chúng với concrete instance (concrete ở đây có thể hiểu là real) bằng cách sử dụng components và nodes.
Ví dụ: Nếu muốn mô hình hóa cấu trúc liên kết network tổ chức của bạn, bạn sẽ sử dụng Deployment Diagram chứa các các Instance của các Node. Tương tự nếu bạn muốn mô hình hóa các Component sống trong các nút vật lý trong mạng này, bạn sẽ sử dụng Component Diagram chứa các Instance của các Component.

III Dăm ba khái niệm “dễ nhớ”
a. Component
Một Component là tập hợp của nhiều Class có liên quan với nhau. Một số Component chỉ tồn tại tại thời điểm compile time, số khác tồn tại tại link time, và cũng có một số là ở thời điểm run-time; Tuy nhiên vẫn có trường hợp xuất hiện nhiều hơn một – Những đặc điểm trên sẽ giúp ta phân loại các Component với nhau.

b. Node
Nút là một đối tượng vật lý ở thời điểm run-time, đại diện cho một tài nguyên điện toán (có bộ nhớ và khả năng xử lý). Với Deployment Diagram, ta có thể đặc tả các loại Node và các Node Instance cũng như có thể mô hình hóa các Component Instance đang chạy / “sống” trên một Node bằng cách vẽ chúng trong Node. Ngoài ra để diễn đạt communication giữa các Node ta sẽ dùng bằng đường thẳng quan hệ “Connection”.

c. Dependency
Mối quan hệ ràng buộc chỉ ra rằng một model element (Source) phụ thuộc vào another model element (Target) sao cho một thay đổi đối với “Target Element” kéo theo sự thay đổi ở “Source Element” trong Dependency. Trong Deployment Diagram, ta đặc tả ràng buộc nhằm chỉ ra khả năng mà một Node có thể hỗ trợ cho một Component và tất nhiên là cho thấy ràng buộc giữa chúng.

d. Connection
Nhằm đặc tả đường thông tin sử dụng bới các phần cứng, thông thường thì đường này chỉ ra các phương thức giao tiếp ví dụ như TCP/IP.

e. Artifact
Đại diện cho các Concrete Element. Vd: File thực thi, thư viện, file nén, DB Schema, file cấu hình, etc,..

IV. Nơi nào đó? Có em đây? – Deployment Diagram
Khi bạn muốn xem một mô hình tống quan của việc triển khai (ở trạng thái tĩnh) của một hệ thống, thông thường bạn sẽ sử dụng sơ đồ triển khai theo một trong ba loại hệ thống:

1.Hệ thống nhúng:
– Là tập hợp các phần cứng “giao tiếp” (interfaces) với thế giới thực (physical world)
– Là một bộ liên kết các thiết bị điều khiển như các sensor đầu vào, các bộ truyền động (actuators), và thiết bị hiển thị.
– Là tập hợp các kích thích mồi lửa (thu thập được) thông qua các sensor cảm biến sự thay đổi về chuyển động, nhiệt độ,.. hay đơn giản là tiếp nhận dữ liệu đầu vào theo kịch bản nào đó.
>>> Vậy ở đây ta sử dụng lược đồ triển khai để đặc tả các thiết bị và bộ xử lý bao gồm cả hệ thống nhúng

2. Hệ thống Client/Server
– Đây là kiến trúc quá đỗi quen thuộc với chúng ta rồi, nó tập trung vào việc phân chia rõ ràng giữa giao diện người dùng (nằm trên client) và phần dữ liệu ổn định (persistent data)
– Một hệ thống Client/Server nói chung là về việc triển khai vật lý các components phần mềm của hệ thống thông qua các Nodes.
>>> Lược đồ triển khai được dùng để đặc tả cấu trúc liên kết của các hệ thống như trên

 
Persistent Data là dữ liệu được truy cập không thường xuyên và không có khả năng được sửa đổi/không thay đổi
>>> Đọc thêm tại đây:
https://dzone.com/articles/what-is-persistent-data

3. Hệ thống phân tán (distributed systems)
– Là hệ thống thường host nhiều phiên bản của các component software, mốt số trong chúng có thể migrate(di chuyển) từ node này sang node khác.
– Nó yêu cầu bạn đưa ra quyết định cho phép thay đổi liên tục trong cấu trúc liên kết của hệ thống.
>> > Ta có thể sử dụng sơ đồ triển khai để trực quan hóa cấu trúc liên kết và sự phân tán của các Component hiện tại của hệ thống để lý giải về tác động của các thay đổi đối với cấu trúc liên kết đó.

V. Các bước để vẽ Deployment Diagram
B1: Xác định các node sẽ hiện diện ở client và server processor của hệ thống và hightlight những thiết bị có liên quan tới hành vi của hệ thống.
Ví dụ: Bạn muốn đặc tả các thiết bị đặc biệt, chẳng hạn máy đọc thẻ tín dụng, máy đọc tem giá, các hiển thị trên các thiết bị khác ngoài màn hình, bởi vì vị trí của chúng trong cấu trúc liên kết phần cứng của hệ thống có ý nghĩa về mặt kiến trúc.

B2: Cung cấp tín hiệu trực quan cho các bộ xử lý (processor) và thiết bị này thông qua việc rập khuôn (stereotyping).

B3: Mô hình cấu trúc liên kết của các nút này trong sơ đồ triển khai

B4: Tương tự, chỉ định mối quan hệ giữa các Components trong chế độ xem implementation của hệ thống của bạn và các Nodes trong chế độ xem deployment cũa hệ thống. 

VI. Kế hoạch triển khai
Một mô hình triển khai (Deployment Model) có thể được phát triển theo các bước dưới đây:
B1: Thiết kế và lên kế hoạch cách hệ thống được cài đặt
B2: Xác định xem nếu các phiên bản khác nhau của hệ thống sẽ được triển khai cùng lúc, bằng cách nào ta có thể xử lý chúng?
B3: Physical sites nào cần triển khai và theo thứ tự nào
B4: Cách các bạn train user?
B5: Các backups nào cần thực hiện trước khi cài đặt?

VII. Loạt các ví dụ
Một Component có thể hiểu như một Code Module. Các Component Diagram là các physical analog của Class Diagram. Deployment Diagrams cho thấy các Physical Configuration của Software và Hardware.

VD1: Sơ đồ triển khai sau đây cho thấy mối quan hệ giữa các Component phần mềm và phần cứng liên quan đến các giao dịch bất động sản.

Các Physical Hardware được tạo thành từ các Node. Mỗi Component thuộc về một Node. Các Component được hiển thị dưới dạng hình chữ nhật với hai tab ở phía trên bên trái

VD2: Hệ thống thông tin quản lý dành cho SME (doanh nghiệp vừa và nhỏ) sử dụng TCP / IP làm giao thức truyền thông mạng để kết nối giữa cơ sở dữ liệu máy chủ web, ứng dụng, máy chủ email, v.v. được bảo vệ bởi tường lửa giữa client và server side của hệ thống.

VD3: Hệ thống phân phối doanh nghiệp (Corporate Distributed System)

VD4: Mô hình hóa một hệ thống phân tán

[Carry by: TungTTr –  Date: 04/05/2019]
[Update: 05/05/2019 ]