Spring핵심원리-회원 설계

DOYOUNG KIM·2023년 12월 27일
0

Spring프레임워크

목록 보기
10/18

💻 스프링 핵심 기술 - 기초
해당 강의는 김영한님의 스프링 핵심 원리- 기초 강의를 수강하여 공부한 내용은 간략하게 기록하는 기록장
스프링 핵심 원리 기초 강의

비지니스 요구사항

1. 회원

  • 회원을 가입하고 조회할 수 있다
  • 회원은 일반,VIP 두 종류가 있다
  • 회원 데이터는 자체 DB를 구축할 수 있고, 외부와 연동 가능(현재 시점 미정)

2. 주문&할인 정책

  • 회원은 상품을 주문 가능
  • 회원 등급에 따라 할인 정책을 적용
  • 할인 정책은 모든 VIP는 1000원 할인 고정 금액 할인 적용(추후 변동)
  • 할인 정책은 변동성이 높음, 회사 자체 규정이 완성되지 않아, 오픈 전까지의 고민 필요(최악의 경우에는 할인 적용 X)

현재 요구사항을 확인해보면 결정되지 않은 사항이 꽤 많다.
해당 결정이 완성된 이후에 개발 지연은 현실적으로 어렵기 때문에 객체지향 설계를 통해서 해당 기능의 인터페이슬르 통해서 구현체를 바꾸는 방식을 사용하는 것!!

회원 도메인 설계

회원 가입 및 조회
회원 등급은 일반/VIP
회원 데이터는 자체 DB or 외부 시스템

  • 회원 도메인 협력 관계

클라이언트를 통해서 회원 서비스를 제공
요청받은 요구사항인 가입 및 조회 기능을 가진 회원 서비스 역할

회원 저장소의 역할을 수행하는 역할을 만들고 구현체를 선택
다만 현재 어떤 구현체를 써야하는지 명확한 명세가 없음으로 개발을 위해서 메모리 회원 저장소를 사용
추후 DB또는 외부 시스템 사용의 경우에 추가 구현체 생성

  • 회원 클래스 다이어그램

각각 구체화하여 보면 멤버 서비스, 멤버 리포지토리 인터페이스를 만들고 이를 구현하는 구현체를 각각 어떤걸 만들지 알아본다.

  • 회원 객체 다이어그램

문제점

  • 코드 설계상에서의 문제점
  • 다른 저장소로 변경시 OCP 원칙을 준수하나?
  • DIP를 잘 지키고 있나?
  • 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제가 있다
    👉 주문 기능 추가 이후 문제점과 해결을 다시 보자

멤버 서비스의 멤버 리포지토리 자체는 인터페이스에 의존한다.
다만 할당하는 부분이 구현체에 의존하게 되는게 문제다.
이게 DIP 를 위반하는 것이다.

profile
매일 1%씩 성장하는 개발 공부 블로그 입니다.

0개의 댓글

관련 채용 정보