도메인 이벤트 4

[Pinit] 도메인 이벤트로 소통하기 - gRPC

현재 시스템 구조현재 요구사항에는 일정 시작 시간에 푸쉬 알림을 보내야 한다는 요구사항이 있다. 하지만, 이미 일정을 진행중인/종료한 사람에게 해당 푸쉬알림이 발송될 경우, 이는 UX 측면에서 사용자의 집중력을 해칠 우려가 있기 때문에, 일정이 시작된 후에는 푸쉬 알림이 발송되지 않아야 한다. 내부 상태 변화(Schedule의 "시작됨" 상태 변화와 "취소됨" 상태 변화)를 외부 시스템이 알아야 하는 경우가 발생했다. 이렇다면, 일정 시작 시간에 발송되는 푸쉬 알림은 일정이 "시작되지 않음" 상태일 때에만 발송되어야 한다.즉, 일정의 "시작되지 않음" 관련 상태/상태 변화가 외부 시스템에 전달되어야 한다. 이에 대해 나는 다음과 같은 해결책을 고려했다.도메인 이벤트로 해결하기상태 변화 알리기 - 일정 시..

도메인 이벤트 vs. 애플리케이션 이벤트. 그리고 이벤트의 설계 방법

이벤트는 일반적으로 비동기 작업 시 굉장히 유리함을 갖기 때문에 자주 사용하게 된다.도메인 이벤트와 애플리케이션 이벤트의 차이점에 대해 알아보자.주의) 이벤트의 정의는 발행자가 결정하는 것이고, 아래 설명은 모두 "발행자" 기준으로 된 설명이다.도메인 이벤트도메인 이벤트(Domain Event)란 비즈니스 관점의 이벤트를 의미한다.도메인 모델 내에서 “무엇이 실제로 발생했는지”를 표현하는데 집중하며, 도메인 언어를 사용하여 표현한다.주로 “주문이 생성되었다”, “새로운 손님이 입장했다”와 같은 방식으로, 비즈니스적 상황의 변화를 알리는데 집중한다.목적도메인 모델 간 결합도를 최소화하는데 사용한다.Event Sourcing 구현 시 상태를 복원할 수 있는 근거를 제공하는데 사용한다.비즈니스 규칙 변경에 따..

도메인 이벤트와 State Machine 시스템 설계 - 강아지 키우기

의인화(Anthropomorphism)란?소프트웨어 객체를 능동적이고 자율적인 존재로 설계하는 원칙.객체를 마치 사람처럼 직접 행동하는 “자아를 가진 존재”로 다루는 것을 의미한다.- Rebecca Wirfs-Brock - 도메인 이벤트, 상태 머신, 이벤트 소싱, CQRS, 그리고 DDD(도메인 주도 설계)는 서로 유기적으로 결합되어 응집도 높은 설계를 만든다. 본 글에서는 강아지 키우기 예제를 통해 이러한 개념들을 이해해보고, 실제 구현 시 고려해야 할 디테일과 도전 과제들을 이야기하도록 하겠다. 먼저 해당 링크를 통해, 도메인 이벤트의 정의에 대해 이해하길 바란다.예제 - 강아지 키우기우리가 설계해야 할 소프트웨어 모델은, 단순 CRUD 를 넘어 좀 더 능동적으로 스스로 행동하는 객체를 만들어야 할..

데이터 일관성 문제 회고

팀 프로젝트 일정 관리에서의 데이터 일관성 유지 회고프로젝트를 진행하면서 겪은 가장 큰 도전 중 하나는 팀 프로젝트 기간과 개별 일정 간의 일관성 문제였습니다. 우리 서비스는 단순 피드백을 넘어서 대학생들이 팀 내에서 자유롭게 일정과 할 일을 관리하며 능동적으로 소통할 수 있도록 설계되었는데요, 그만큼 비즈니스 로직에 따른 세밀한 제약 조건을 고려해야 했습니다. 비즈니스 로직의 핵심 요구사항팀 프로젝트 기간 수정: 오직 팀장만 프로젝트 기간을 수정할 수 있습니다.일정 추가: 팀원 누구나 일정을 추가할 수 있습니다.팀-일정 관계: 팀 프로젝트 기간은 반드시 모든 일정을 포함해야 합니다.이러한 제약은 우리 서비스가 팀장에게서 탑-다운으로 내려오는 단순한 피드백 시스템이 아니라, 팀원들이 스스로 일정 관리 및..