1. 작성일

  • 2022-06-21

 

 

2. 회고

주말 동안 수강한 내용 복습 중..

팀 회의 진행 - 프로젝트 설계 구체화

  • 프런트와 서버는 따로 분리하지 않기로 하였다.
  • 템플릿 엔진은 타임리프를 사용하기로 하였다. 
  • MSA 방식은 아직 고민을 해보고 Monolithic 방식으로 구현하되 DDD(Domain Driven Design)를 적용하여 MSA로 분리할 때 용이하도록 하였음
    • 패키지 구조를 Domain별로 나누기로 함.
    • 비즈니스 로직을 Domain에 작성하기로 하였다.
  • 자바 빈즈 패턴으로 객체를 생성하지 말고 생성자, 빌더, 정적 팩토리 메서드로 객체를 생성하자.
    • @NoArgsConstructor(access = AccessLevel.PROTECTED) 사용
    • @Setter 사용 X
  • Entity는 절대 직접 반환하지 마라 -> DTO 사용
    • RequestDto와 ResponseDto 생성하여 사용
    • ResponseDto를 반환하기 위해 객채를 dto로 변환하여하는데 이때 변환 위치는?
    • -> Controller  or  Service  둘 중 어느 곳에서 사용하는 게 좋을까?
    • -> 계층 간 데이터 이동을 위해 생성한 것이 dto이니 service에서 변환하고 Controller에 dto로 반환받는 게 맞지 않을까 생각 중
  • 테스트 코드 작성하기로 함.  (통합 테스트 , Junit 테스트)
  • 1:1 관계의 인터페이스와 클래스 (Service와 ServiceImpl) 생성 <- 인터페이스 생성하지 않기로 함.
    • ->  인터페이스를 만들어 사용할 경우 DIP 원칙이 지켜지며 유연한 확장이 가능하다.
    • 하지만 인터페이스를 도입하면 추상화라는 비용이 발생한다 (1:1 관계의 경우 단순히 인터페이스를 한 개 더 생성하는 작업이므로 효율성 측면에서 떨어진다/ 구현 내용을 보기 위해 거쳐야 하는 단계가 추가됨.)
    • 따라서 기능을 확장할 가능성이 없다면, 구체  클레스를 직접 사용하고, 향후 꼭 필요할 때 리팩토링을 해서 인터페이스를 도입하는 것도 방법이다.
  • 예외 처리방식은 Global로 처리하기로 하였고 상황에 맞는 HttpStatusCode를 응답해주는 방식으로 처리하기로 하였다.
  • Cloud는 어떻게 구성할지 아직 결정하지는 않았고 추후 프로젝트를 진행하며 결정하기로 하였다.
  • 매일 코드 리뷰 하기로 하였다.

 

 

프로젝트 시작 전 준비 과제

  • API 설계
  • 연관관계 정리를 바탕으로 Entity(도메인) 설계
  • 디비 설계

 

 

 

3. 오늘의 포스팅

  • 없음

+ Recent posts