Dưới đây là phần giải thích các khái niệm UML (Unified Modeling Language) liên quan đến vai trò Infra Developer trong một dự án, tập trung vào bốn khái niệm: Dependency, Aggregation, Composition, và Realization — kèm theo ví dụ ứng dụng thực tiễn trong hạ tầng hệ thống (infrastructure):
🧩 1. Dependency (Phụ thuộc)
💡 Khái niệm:
- Quan hệ yếu giữa hai thành phần.
- Thay đổi của class A có thể ảnh hưởng đến class B, nhưng A không sở hữu B.
- Ký hiệu bằng mũi tên đứt nét
A ---> B
.
🛠️ Ứng dụng thực tiễn Infra:
Ví dụ: Trong một hệ thống sử dụng Terraform để triển khai hạ tầng:
- Một module
AppServer
có thể phụ thuộc vàoVPCModule
(nếu VPC chưa được tạo thì không deploy được AppServer).
module "app_server" { source = "./modules/app" vpc_id = module.vpc.vpc_id # --> Dependency
}
→ AppServer phụ thuộc vào VPC, nhưng không sở hữu hay quản lý VPC.
🧱 2. Aggregation (Tập hợp)
💡 Khái niệm:
- Quan hệ “has-a” (có thể sống độc lập).
- Class A sở hữu B, nhưng nếu A bị xóa thì B vẫn còn tồn tại.
- Ký hiệu bằng đường liền nét với kim cương trắng
◻
.
🛠️ Ứng dụng thực tiễn Infra:
Ví dụ: Một Load Balancer trong AWS sở hữu nhiều EC2 Instances:
- Nếu Load Balancer bị xóa, các EC2 Instances vẫn tiếp tục chạy.
LoadBalancer ◻──────> EC2Instance
→ Quan hệ aggregation: Load Balancer chỉ quản lý routing, không chịu trách nhiệm sống/chết của EC2.
🧩 3. Composition (Thành phần)
💡 Khái niệm:
- Quan hệ mạnh hơn aggregation: “part-of”, có tính sinh-tử phụ thuộc.
- Nếu A bị xóa → B cũng bị xóa.
- Ký hiệu bằng kim cương đen
◆
.
🛠️ Ứng dụng thực tiễn Infra:
Ví dụ: Trong Kubernetes:
- Một Pod chứa các Containers.
- Nếu Pod bị xóa, tất cả Containers trong đó cũng bị xóa.
Pod ◆──────> Container
→ Composition: Container không thể tồn tại độc lập nếu không có Pod.
🧠 4. Realization (Hiện thực hóa)
💡 Khái niệm:
- Một class (hoặc thành phần cụ thể) hiện thực một interface hoặc abstract class.
- Ký hiệu bằng đường đứt nét và mũi tên rỗng
----▷
.
🛠️ Ứng dụng thực tiễn Infra:
Ví dụ: Hệ thống CI/CD có nhiều cách triển khai:
- Interface
IDeployer
- Các class cụ thể như
KubernetesDeployer
,EC2Deployer
hiện thực interface đó.
KubernetesDeployer ----▷ IDeployer
→ Realization giúp hạ tầng linh hoạt, dễ mở rộng các phương án deploy khác nhau.
🔧 Tổng kết: Gắn với vai trò Infra Developer
UML Concept | Hạ tầng thực tế liên quan | Ý nghĩa/Ứng dụng chính |
---|---|---|
Dependency | Module Terraform phụ thuộc VPC | Gắn kết tạm thời, không sở hữu |
Aggregation | LoadBalancer → EC2 | Quan hệ quản lý, nhưng không gắn bó sinh-tử |
Composition | Pod → Containers (K8s) | Quan hệ sống-chết, cấu trúc ràng buộc |
Realization | Nhiều loại triển khai thực hiện interface | Giúp chuẩn hóa, dễ mở rộng/đa nền tảng triển khai |