웹 앱 프로젝트 경험과 해결 - 도메인 구성

dropKick·2020년 7월 28일
0
post-thumbnail

시리즈

웹 앱 프로젝트를 구성하며 경험한 아키텍처, 패턴, 설계, 구현에 대한 문제점과 경험, 그 해결을 기록

도메인 구성

  • 기능과 프로토 타입 UI 구성
  • 도메인 로직 설계

도메인에 따른 클래스 다이어그램 구성

  • 클래스 간 연관 관계를 어떻게 구성하지
  • 클래스를 어떻게 분리하지

도메인 로직에 따른 DB 연관 관계 구성

  • DB를 단순히 클래스대로 매핑하고 구성하던 이전 프로젝트와는 다르다.

기능은 구성 했는데..

  • 기획에 따라 기능을 작성하고 API 정하고, JSON 포맷까지 정했음
  • UI까지 완성 했고 API 설계를 하면 되겠다고 생각했으나, 생각해보니 클래스/DB를 어떻게 구성하지라는 생각이 들었음

도메인 로직부터 구성하자

  • 아니 연관 관계가 뭐야
  • 각 도메인은 연관 관계를 가진다
  • 연관 관계에 따른 도메인 로직 구성의 필요성

구성

  • 반드시 이메일과 비밀번호로 로그인을 해야한다.
    • 로그인이 불가능하면 이메일과 비밀번호로 회원 가입을 해야한다.
  • 유저 정보는 n개 이상을 소유
    • 세부 정보 : 이메일(PK), 닉네임, 성별, 전화번호, 지역, 비밀번호, 등급
      • 학생
      • 교수 : 인증 정보, 사진
  • 각 회원 별 소지금액 정보를 저장
    • 실제 결제는 카카오페이 API
  • 각 회원 별 관심 분야를 저장, 관심 분야는 있을 수도 없을 수도 있음
  • 유저는 질문을 할 수 있음
    • 한 명의 유저는 다수의 질문을 올릴 수 있고, 하나의 질문은 한 명의 유저와 매핑
    • 하나의 질문에는 여러 개의 답변이 달릴 수 있음
    • 유저가 존재하지 않는다면 질문도 존재할 수 없음
  • 유저는 답변을 할 수 있음
    • 한 명의 유저는 다수의 답변을 올릴 수 있고, 하나의 답변은 하나의 질문과 매핑
    • 질문이 존재하지 않는다면 답변도 존재할 수 없음

새 도메인 모델

  • 유저가 질문을 가지는 것이 아닌 질문 게시글을 사용할 때 유저가 필요한 것

문제점

  • N:N 관계는 존재할 수 없음

N:N 관계를 없앤 도메인 모델

  • 관심사 설정은 해시 태그를 구현

0개의 댓글