여기서는 각 Layer의 모듈 내부에서 찾을 수 있는 일반적인 요소를 살펴보겠다.
각 Layer를 살펴보고 거기에서 찾을 수 있는 일반적인 요소를 살펴보겠다.
통합 및 비기능적 요구 사항이 있는 Foundation Layer부터 구성 요소를 확인하겠다.
재사용 가능성이 높은 요소는 이 Layer에서 정의된다.
Data
- 입력 및 출력 구조 (외부 시스템과 데이터 교환)
- 핵심 Entities는 없음 (통합 및 非비즈니스 기능)
Logic
- 정규화된 API 형태 (다른 모듈에 actions을 제공)
- 오류 코드 및 Exceptions 처리 (외부 시스템과 통신할 때 등)
- 중앙 집중식 Single Sign-On (사용자 인증 Flow)
- 세션 관리 로직
- 사용자 도메인에 공통 Roles를 저장 (Manager 또는 Employee와 같은 Roles은 재사용 가능성이 높음)
Interface
- UI patterns 및 blocks (calendar, accordion UI 등)
- Themes, layouts, exception flows
이제 Core Layer로 이동한다.
핵심 비즈니스 개념이 여기에 나타난다.
여기서 요소는 End-User Layer의 모듈에서 사용된다.
Data
- 핵심 비즈니스 Entities (읽기 전용으로 노출, 모듈 내부의 Logic은 데이터 조작을 제어)
Logic
- 핵심 비즈니스 Entities를 위한 CRUD actions
- Audit 추적 및 통합 로직
- 해당 모듈에서 사용할 수 있는 기능에 대한 다양한 접근 방법
Interface
- 재사용 가능한 UI 비즈니스 blocks
Processes & Timers
- 비동기 데이터 처리 (정보 분류, 데이터 동기화, 계산 혹은 집계 등)
이제 End-User Layer를 보겠다.
기본적으로 화면과 보조 요소가 정의되는 곳이다.
Data
- UI 상태를 저장하거나 임시 Form 데이터를 저장하기 위한 보조 Entities
- 보조 Structures
Logic
- 특정 use cases를 지원하기 위한 비즈니스 Logic (ex. 양식 유효성 검사)
Interface
- use cases를 지원하기 위한 Role-based UI
Processes
- use cases를 지원하기 위한 Workflow 정의