도메인 주도 설계(DDD)를 채택한 프로젝트에서 엔티티의 생성 시점(createdAt)과 수정 시점(updatedAt)을 자동으로 관리하려면 어떤 방식이 더 적합할까? 특히, 도메인 계층과 데이터 계층이 분리되어 있고, merge를 통해 업데이트가 이루어질 가능성이 높다면 설계 선택에 신중해야 한다. 이번 글에서는 @PreUpdate와 @UpdateTimestamp를 비교하며, DDD 방식에 적합한 구현 방법을 제안해보겠다. 1. DDD 관점에서의 엔티티 상태 관리 DDD에서는 도메인 계층이 핵심이다. 따라서 엔티티의 상태(createdAt, updatedAt) 관리는 애그리거트 루트에서 책임지거나, 이를 데이터 계층에서 투명하게 처리할 수 있어야 한다. 이러한 요구사항을 충족하기 위해: • 도메인 계층..
최근 아키텍처와 테스트의 관계에 대해 깊이 고민하게 되었다. 특히 "테스트하기 쉬운 코드가 곧 잘 짜여진 아키텍처"라는 말이 계속 머릿속을 맴돌았다. 이를 통해 깨달은 점들을 정리해보려 한다.아키텍처란 무엇인가?아키텍처는 단순한 설계 도구가 아니다. 비즈니스 문제를 해결하기 위해 준수해야 하는 제약을 넣는 과정이라고 생각한다. 이는 테스트 코드가 일종의 규약으로 작용한다는 점과 맥을 같이 한다. 중요한 건 아키텍처를 도입할 때는 반드시 그 이유에 대한 구성원들의 공감이 필요하다는 점이다. 공감 없는 아키텍처는 그저 장애물일 뿐이니까.아키텍트의 진정한 목적아키텍처를 다루는 아키텍트의 주요 목적은 결국 인적 자원의 절감이다. 이를 위해서는 다음과 같은 요소들이 필수적이다:동시 작업이 가능한 구조명확한 관심사..