-
Notifications
You must be signed in to change notification settings - Fork 0
Domain
grasshopper42 edited this page Nov 30, 2024
·
2 revisions
Simon은 중소규모 기업을 위한 제품 판매 및 재고 관리 ERP 시스템입니다. 업무 영역과 비즈니스 복잡도에 따라 Core, Supporting, Generic 도메인으로 구분하여 관리합니다.
비즈니스 경쟁력과 직접 연관된 핵심 도메인들입니다.
-
- 차별화 요소: 제품 정보의 정확성과 일관성
- 복잡도: 중간
- 변경 빈도: 낮음
- 핵심 가치: 제품 정보의 SSOT(Single Source of Truth) 제공
-
- 차별화 요소: 핵심 수익 창출 프로세스
- 복잡도: 높음
- 변경 빈도: 중간
- 핵심 가치: 거래 프로세스의 정확성과 효율성 보장
-
- 차별화 요소: 운영 효율성의 핵심
- 복잡도: 높음
- 변경 빈도: 높음
- 핵심 가치: 실시간 재고 정확성과 가용성 보장
핵심 도메인의 기능을 지원하고 보완하는 도메인들입니다.
-
- 지원 대상: Inventory, Product Catalog
- 복잡도: 중간
- 변경 빈도: 중간
- 핵심 가치: 효율적인 재고 공급 체계 유지
-
- 지원 대상: Sales, Purchase
- 복잡도: 높음
- 변경 빈도: 낮음
- 핵심 가치: 정확한 재무 상태 관리
-
- 지원 대상: Sales, Purchase, Account Balance
- 복잡도: 높음
- 변경 빈도: 중간
- 핵심 가치: 안전하고 정확한 결제 처리
비즈니스 지원을 위한 공통 기능을 제공하는 도메인들입니다.
-
- 제공 기능: 거래처/직원 정보 관리
- 복잡도: 중간
- 변경 빈도: 낮음
- 핵심 가치: 거래 주체 정보의 통합 관리
-
- 제공 기능: 내부 사용자 관리
- 복잡도: 낮음
- 변경 빈도: 낮음
- 핵심 가치: 시스템 사용자 관리 및 권한 통제
-
동기 통신
- REST API: 실시간 데이터 조회/갱신 - GraphQL: 복잡한 데이터 조회
-
비동기 통신
- Event Bus: 도메인 이벤트 전파 - Message Queue: 비동기 작업 처리
-
강한 일관성 (Strong Consistency)
- 금전 거래 데이터 - 재고 수량 - 주문 상태
-
최종 일관성 (Eventual Consistency)
- 통계 데이터 - 알림 상태 - 로그 데이터
sequenceDiagram
Sales->>Inventory: 재고확인
Inventory-->>Sales: 재고상태
Sales->>Payment: 결제요청
Payment->>AccountBalance: 잔액갱신
Sales->>Inventory: 재고차감
sequenceDiagram
Purchase->>Inventory: 재고확인
Inventory-->>Purchase: 재고부족알림
Purchase->>Payment: 결제요청
Payment->>AccountBalance: 잔액갱신
Purchase->>Inventory: 재고증가
- [Audit.md 참조] - 감사 정책
- [Notification.md 참조] - 알림 정책
Backend:
- Framework: Nest.js
- ORM: TypeORM
- DB: PostgreSQL
Architecture:
- DDD 기반 설계
- 함수형 프로그래밍 지향
- TDD 적용
- [Performance SLA 문서 참조]
- 각 도메인별 세부 성능 요구사항은 해당 도메인 문서 참조
- 마이크로서비스 기반 확장
- 도메인별 독립 배포/확장
- 이벤트 기반 느슨한 결합
- 도메인별 독립 데이터 저장소
- 읽기/쓰기 분리
- 데이터 파티셔닝 전략
각 도메인에서 사용되는 용어 정의는 통합 용어 사전을 참조하되, 도메인별 특화된 용어는 각 도메인 문서에서 관리합니다.