시작 및 ottsharing 분석

유수민·2022년 11월 8일
0

DDD 프로젝트

목록 보기
2/7
post-thumbnail

📌시작

📖DDD란?

DDD에 대해 다들 관심만 있고 이론적인 내용을 프로젝트로 적용하는 것은 처음이다보니 우선 DDD의 이론적인 부분에 대해 이야기를 나누었다.
DDD는 Domain-Driven Design으로 도메인 주도 설계를 의미한다.
DDD는 총 4가지 layer로 이루어져 있고, domain, application, presentation, infrastructure이다.

  • Domain
    domain은 나머지 3 layer의 존재를 모르기 때문에 아무것도 의존하고 있지 않고(외부 의존성이 낮음) 오직 순수한 비지니스에만 집중한다. 즉, 낮은 추상화 수준만 가지고 atomic한 로직들이 가지고 있다. 만약 순수하게 로직을 구현할 수 없는 경우는 domain layer에는 인터페이스를 두고 구현체를 infrastructure layer로 분리하는 방법을 선택한다. 그 예 중 하나는 repository이다. repository는 어플리케이션이 어떤 DBMS를 사용하는지, 어떤 ORM을 사용하는지 등 데이터베이스에 대한 정보를 알고 있다. DB에 관한 세부사항은 명백히 도메인 지식과는 관계가 없는 부분이므로, domain layer에는 interface만 작성하고 이에 대한 구현체는 infrastructure layer에서 작성하도록 한다.

  • Application
    application은 domain의 존재만을 알고 있다. 즉, domain에만 의존하고 있다.
    나는 application 층은 비지니스로직들을 조합하는 구간이라 생각한다. service를 빗대어 말하기도 한다.

  • Presentation
    presentation은 application의 존재만을 알고 있다. 애플리케이션의 가장 프론트 엔드에 위치하는 레이어로,
    -- cilent로부터 request를 받고 response를 return하는 api 정의
    -- api route별 로깅, 보안 등의 전처리
    의 역할을 한다.

  • Infrastructure
    infrastructure은 domain, application, presentation의 존재를 알고 있다. 존재를 안다는 것은 즉 import를 할 수 있다는 이야기와 동일하다. infrastructure에 의해 나머지 3가지 layer이 잘 구동될 수 있도록 layer들을 통합해서 하나의 어플리케이션으로 serving하는 역할을 한다.

📌ottsharing 구성

기존의 ottsharing은 MVC 구성으로 되어 있다. 나는 도메인적으로 설계하기 위해 우선 usecase를 만들어서 이를 바탕으로 도메인을 나누려고 한다. 아래 기입된 usecase들은 controller를 기준별로 나누었다.

📚user

-로그인하기
-로그아웃하기
-회원가입하기
-내 정보 보기
-내 정보 수정하기

📚party

1) 파티생성하기
-리더인지 확인하기
-돈 지불하게 하기
-대기자 명단에서 3명 초대하기
-해당 파티에 4명이 다 모였는지 표시

2) 내 파티정보가져오기
-나의 정보를 통해 가입된 파티객체 가져오기
-가입되지 않고 대기자 명단에 있는지 확인하기

3) 파티에 들어가기
-돈 지불하게 하기
-생성이 오래된 순으로 빈 파티 찾기
-남아있는 파티가 없으면 대기자 명단으로 넣기
-빈 파티에 멤버에 넣고 파티가 다 채워졌는지 체크하기

4) 파티 삭제하기
-해당 파티 일원인지 확인하기
-파티 리더인지 확인하기
-나머지 팀원들에게 환불하기
-파티 삭제하기

5) 파티탈퇴하기
-리더인지 확인하기
-파티 일원인지 확인하기
-환불하기
-빈 파티로 만들기
-탈퇴시키기

6) 파티정보수정하기
-ottId, ottpassword,닉네임 수정하기
-리더인지 아닌지 구별하기

📚partywaiting

-대기자 명단에서 삭제하기

📚Money

-충전하기
-인출하기

본래 프로젝트에는 user,파티정보를 가지고 있는 party,대기자 명단이 있는 partywaiting, 파티의 일원들 정보를 가지고 있는 partymember라는 총 4가지의 DB가 있다.

📖ottsharing의 도메인

DB와 usecase를 본 결과 총 4가지의 도메인으로 나누기로 했다. sharing이라는 도메인이 이 프로젝트의 주요 기능을 가진 도메인이 될것이며 기존에는 포인트로만 운영되던 것을 따로 payment라는 도메인을 추가하였다. notification 도메인은 도메인간의 이벤트 기능 뿐만 아니라 달마다 사용자가 지불하는 것에 대한 알림설정을 해줄 수 있는 기능을 담고 있는 도메인이다.

profile
배우는 것이 즐겁다!

0개의 댓글