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 (vd findCustomerById()). Implement adapter cho port này có thể là CustomerContextHttpAdapter gọ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