도메인
- 소프트웨어로 해결하고자 하는
문제영역
- 소프트웨어를 사용하는 사용자의 활동이나 관심사와 관련되어 있다.
- 소프트웨어 산업은 다른 산업 내에서 발생하는 다양한 비즈니스 문제를 해결한다
ex) 쇼핑몰을 구축할 때, 도메인은 전자상거래이다
소프트웨어는 사람의 욕망과 욕구를 해결하려고 만든 창조물이다. 사람들의 욕망과 욕구가 개발자에게 전달됐을 때 우리는 그것을 도메인이라 부른다.
도메인 모델
- 모델은 목적을 위해 현실 세계에 존재하는 것을 가공하고 편집하여 우리에게 정보를 제공한다.
- 특정 다이어그램이 아니라 다이어그램으로 전달하려는 아이디어이자 목적을 가진 의사소통 수단이다.
- 이 의사소통 수단은 회의, 기획, 디자인, 개발에 사용되어야 한다.
바운디드 컨텍스트
- 해결 영역 solution space
- 관심사를 분리하고 격리하여 문제 해결에 집중할 범위를 정한다.
해결영역을 구분하기!!!!!!!
애그리거트 (비즈니스 규칙)
- 시스템이 기대하는 책임을 수행하며
일관성
을 유지하는 단위
- 일관성은
항상 참이어야하는 속성
을 유지함으로써 달성된다.
- 명령을 수행하기 위해 함께 조회하고 업데이트해야 하는 최소 단위
비관적 잠금
- 한 번에 한 명의 사용자만 처리할 수 있도록 데이터베이스의 레코드를 독점한다
- 성능이 저하되고 교착 상태(deadlock)가 발생할 수 있다
낙관적 잠금
- 애그리거트에서 무엇이든 변경하면 버전 증가가 발생해야 한다.
- OPTIMISTIC_FORCE_INCREMENT를 사용하거나 버전을 수동으로 증가시킨다
결과적 일관성
- 일시적으로 불변식이 깨지지만 최종적으로 지킬 수 있도록 노력한다
- 배치방식과 이벤트방식