개발일기

[DDD 모델링] 포토카드 도메인 주도 개발을 위한 회원 , 프로필 모델링 본문

photocard backend server 개발일기

[DDD 모델링] 포토카드 도메인 주도 개발을 위한 회원 , 프로필 모델링

한둥둥 2025. 1. 13. 13:29

도메인 모델링을 진행해주는 이유는 모델링 및 기능 사항을 정의해주고, 진행하면 어떤 것을 테스트 코드로 작성할 지, 조금 더 손쉽게 작성 가능 하였고, 같이 진행하는 프로젝트 팀원들도 내 코드를 조금 더 이해하기 쉽게 해준다. 이는 엄청난 효과다. 왜냐면 유지보수 하기 좋은 코드가 될 수 있기 때문이다.

또한 이런식으로 진행하면 테스트 코드 작성하면서, 예외 처리를 어디가 미흡했는지, 어떤 코드를 추가해야하는지도 더 잘 파악할 수 있다는 장점도 있다. 

 

모델링 방식은 유비쿼터스언어, 바운디드 컨텍스트를 활용하여 진행하였다. 

아직 유비쿼터스 언어, 바운디드 컨텍스트가 무엇인지 모른다면 아래 관련 글을 읽어 보는 것도 좋다. 

 

https://seounggyun.tistory.com/326

 

유비쿼터스 언어(보편 언어)의 중요성

Account유저 입장에서는 계정, 은행 입장에서는 계좌 다양한 의미를 내포  Reward유저 입장에서 Reward는 item인가 Reward 보상 그 자체인가? challenge챌린지와 목표의 차이는 무엇? , 챌린지 이벤트 다른

seounggyun.tistory.com

https://seounggyun.tistory.com/325

 

[개발 & 방법론 / DDD] 바운디드 컨텍스트 (BOUNDED CONTEXT)

진정한 DDD는 설계에 있다는 것을 여러가지 블로그들을 통하여 깨닫게 되었다. 도메인 주도 개발 시작하기라는 책에서도 바운디드 컨텍스트가 언급된다. - http://www.yes24.com/Product/Goods/108431347 

seounggyun.tistory.com

 

 

회원 모델링

| 한글명 | 영문명 | 설명             |
| --- | --- |----------------|
| 회원 | member | 사이트 회원         |
| 닉네임 | nickname | 회원 가입한 유저 닉네임  |
| 이메일 | useremail | 회원 가입한 유저 이메일  |
| 비밀번호 | password | 회원 가입한 유저 비밀번호 |
| 인증번호 | userNumber | 이메일 인증번호    |
| 메일 | mail | 유저한테 보내는 메일 |
| 아이디 | userId | 회원 가입한 유저 아이디 |
| 휴대폰 번호 | phoneNumber | 회원 가입한 유저 휴대폰 번호 |
| 클라이언트 | client | web 브라우저에서 보내는 요청 |
| 이메일 인증 | authMail | 이메일 인증 |

### 회원 
- 비회원은 `회원(member)` 가입할 수 있다.
- `닉네임(nickname)`은 비속어를 지정할 수 없다. 
- `이메일(useremail)`은 필수 작성한다.
- `비밀번호(password)` 영문 특수문자 숫자 형식 조합 8-16글자 아닌 경우 회원 가입할 수 없다.
- `비밀번호(password)` 두 개가 일치해야 회원가입이 가능하다.
- `이메일 인증(authMail)` 실패하는 경우 회원 가입할 수 없다. 
- `휴대폰 번호(phoneNumber)` 입력
- `아이디(userId)` 또는 `이메일(useremail)` 중복일 경우, 회원 가입은 불가능하다.
- `비밀번호(password)`, `아이디(userId)`가 `클라이언트(client)`가 올바른 요청을 한다면 로그인한다.
- `회원(member)`은 `비밀번호(password)`를 찾을 수 있다.
- `회원(member)`은 `아이디(userId)`를 찾을 수 있다.
- `회원(member)`은 로그인할 수 있다.
- `회원(member)`은 탈퇴할 수 있다.

 

 

회원 프로필 모델링

| 한글명 | 영문명 | 설명                |
| --- | --- |-------------------|
| 회원 | member | 사이트 회원            |
| 닉네임 | nickname | 회원 가입한 유저 닉네임     |
| 이메일 | useremail | 회원 가입한 유저 이메일     |
| 비밀번호 | password | 회원 가입한 유저 비밀번호    |
| 썸네일 | thumbnail | 회원 가입한 유저 프로필 이미지 |
| 휴대폰 번호 | phoneNumber | 회원 가입한 유저 휴대폰 번호  |
| 인증번호 | userNumber | 이메일 인증번호          |
| 프로필 | profile | 회원 가입한 유저 정보들     |

### 프로필
- `회원(member)`은 `닉네임(nickname)` 중복 아닌 경우,  변경할 수 있다.   
- `회원(member)`은 `이메일(useremail)` `인증번호` 일치 and 중복된 이메일 없는 경우, 변경할 수 있다.  
- `회원(member)`은 `이메일(useremail)` `인증번호` 불일치 and 중복된 이메일 있는 경우, 변경할 수 없다.
- `회원(member)`은 `비밀번호(password)` 영문 특수문자 숫자 형식 조합 8-16글자 인 경우 변경할 수 있다.
- `회원(member)`은 `비밀번호(password)` 영문 특수문자 숫자 형식 조합 8-16글자 아닌 경우 변경할 수 없다.
- `회원(member)`은 `썸네일(thumnail)` 변경할 수 있다.
- `회원(member)`은 `휴대폰 번호(phoneNumber)` (xxx-xxxx-xxxx)형식이 아닌 경우, 변경할 수 없다.
- `회원(member)`은 `휴대폰 번호(phoneNumber)` (xxx-xxxx-xxxx)형식인 경우, 변경할 수 있다.
- `회원(member)`은 `프로필(profile)`조회할 수 있다.
- `회원(member)`은 `썸네일(thumbnail)` 이미지 형식일 경우, 변경할 수 있다.
- `회원(member)`은 `썸네일(thumbnail)` 이미지 형식이 아닌 경우, 변경할 수 없다.