1. 작성일
- 2022-06-21
2. 회고
주말 동안 수강한 내용 복습 중..
팀 회의 진행 - 프로젝트 설계 구체화
- 프런트와 서버는 따로 분리하지 않기로 하였다.
- 템플릿 엔진은 타임리프를 사용하기로 하였다.
- 스프링 부트 2.7.0에서 타임리프 사용 issue 때문에 스프링 부트 버전을 낮추기로 하였다. (2.6.8 or 2.5.14)
- 2022.06.20 - [프로그래밍/개발이슈] - Spring Boot 2.7.0 * Thymeleaf 호환 문제
- 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. 오늘의 포스팅
- 없음
'일기 > TIL' 카테고리의 다른 글
프로잭트 시작 D-1 (스파르타 클라우드 엔지니어 캠프 Day+67) (0) | 2022.06.23 |
---|---|
팀 회의 4 - 디비 설계(스파르타 클라우드 엔지니어 캠프 Day+66) (0) | 2022.06.23 |
docker 실시간강의(스파르타 클라우드 엔지니어 캠프 Day+64) (1) | 2022.06.20 |
JPA 집중공부시작(스파르타 클라우드 엔지니어 캠프 Day+61) (0) | 2022.06.18 |
프로잭트 시작 1주일 전(스파르타 클라우드 엔지니어 캠프 Day+60) (0) | 2022.06.16 |