Bounded Context
Bounded Context (bối cảnh miền) là một phân hệ (ranh giới) trong hệ thống, bên trong đó một mô hình domain có ý nghĩa nhất quán. Trong kiến trúc lớn, ứng dụng thường gồm nhiều Bounded Context (vd context “Đặt hàng”, context “Khách hàng”).
⚠️ Vấn đề khi tích hợp giữa các Context
Nếu không có quy ước rõ, code tích hợp dễ làm lộn xộn domain: vd context “Đặt hàng” gọi thẳng database của context “Khách hàng” → phá vỡ ranh giới bounded context, khiến context này phụ thuộc chi tiết nội bộ của context kia.
✅ Giải pháp: dùng Port cho ranh giới liên context
Áp dụng Hexagonal Architecture - Ports and Adapters:
Thay vì gọi thẳng DB của context khác, context “Đặt hàng” định nghĩa một port
CustomerContext(vdfindCustomerById()). Implement adapter cho port này có thể làCustomerContextHttpAdaptergọi REST API của service Khách hàng.
Nếu sau này đổi cách tích hợp (gộp database, đổi giao thức), chỉ adapter cần đổi. Context “Đặt hàng” vẫn giữ code sạch, không phụ thuộc cứng vào context khác.
🔗 Ý nghĩa kiến trúc
- Ở Tầng Application, có thể nhóm các use case theo Bounded Context thành package riêng.
- Bounded Context là bước chuẩn bị tốt khi tách monolith thành microservices: nếu monolith đã phân tách qua cổng rõ ràng, việc tách một context thành service độc lập (dùng network call thay call nội bộ) ít ảnh hưởng core.
Liên quan
- Hexagonal Architecture - Ports and Adapters - cơ chế cô lập giữa các context
- Port - Cổng giao tiếp - port liên context
- Tầng Application - nhóm use case theo context
- Domain Model - Mô hình miền nghiệp vụ