Continuous Challenge

[항해플러스 7기 백엔드] 4주차 회고 - 서버 구축하기 (구현 시작!) 본문

Study/항해플러스 7기

[항해플러스 7기 백엔드] 4주차 회고 - 서버 구축하기 (구현 시작!)

응굥 2025. 1. 12. 15:01
728x90
728x90

이번 4주차는 가장 힘들었던 주라고 감히 말해본다...

왜 2주차랑 비슷할 거라고 생각했지..? 하지만.. 해내고 말아..

점점 나이를 한 살 두 살 먹어가며 대학생 때처럼 다음 날 시험이 있다고 밤새는 것이 당연하지 않아졌다.

오히려 다음 날 중요한 일정이 있을 때에는 충분한 수면을 취하는 것이 좋은 컨디션을 만든다는 것을 알았기 때문에...

그렇게 지내왔던 나를 새벽까지 깨어있게 만든 것이 바로 항해...

내가 새벽 4시 넘어서까지 깨어있을 수 있는 사람인지 몰랐는데 이번에 항해 덕분에 알게 되었다.

나도 밤샐 수 있는 사람이었구나... ㅇ0ㅇ

일요일인 오늘까지도 밤샘의 여파가 남아있는 것 같다... 오늘은 푹 자야지...

 

4주차에는 3주차에 했던 이커머스 서비스 설계를 바탕으로 코드를 구현하는 작업을 했다. + Swagger 적용

1. 잔액 충전/사용 

2. 쿠폰 발급/조회

3. 상품 목록 조회

4. 주문

5. 결제

6. 상위 상품 목록 조회 (3일 기준, 상위 5개)

Swagger API Docs

총 8개의 API 구현하기, 근데 클린아키텍처를 곁들인,, 근데 동시성 제어를 고려한,, 테스트 코드는 기본,,

내가 간과했던 2주차와의 차이점은 구현해야 할 API의 정량적인 갯수가 많아졌고, 파사드 패턴을 고려해야 했고, 익숙하지 않은 JPA와 사용해본 적 없는 QueryDSL, TestContainers 를 사용해야 했다.

그래서 이번 주차는 무조건 시간 투자가 필요했던 주차였다..

 

내가 가장 고민을 했던 부분은 계층 별 DTO의 사용이었다.

"독립성을 위해서는 계층별 DTO를 분리해주는 것이 좋다."는 것까지는 이해를 했다.

그런데 네이밍이나 변환 방식에 대한 고민이 되었던 것 같다. 클린아키텍처의 사례를 눈으로 직접 본 적이 없어서 보통은 어떻게 사용하는지가 궁금했다.

멘토링에서 코치님께 질문을 했었는데 이 당시에는 나의 질문이 제대로 정리가 되지 않아 코치님에게 전달이 잘 되지 않았던 것 같다.

그러다가 학습메이트분에게 질문을 해서 원했던(?) 답을 얻었고 계층 별 DTO를 만들어 구현을 진행했다.

interfaces layer - xxxRequest, xxxResponse
application layer - xxxCommand, xxxInfo
domain layer - xxxDTO
infrastructure layer - entity

 

사실 생각해보면 CRUD API 구현인데 왜 그렇게 시간이 오래 걸렸을까... 를 생각해보자면 (지금 생각해보는 중...)

설계를 머릿속에서 온전히 다 그리지 못했던 게 아닐까?!

그래서 구현을 하면서 다시 생각을 하니까... 오래 걸렸던거지...그래서 설계도 계속 바뀌고....

아, 멘토링을 받고 설계가 바뀐 부분도 있고... 역시... 설계 때문..인가?

그리고 처음 사용해보는 QueryDSL 이나 TestContainers 세팅 과정에서 헤맸던 것도 한 몫 하고....

게다가 테스트 코드까지 작성하면서 구현을 하니 시간이 2배 정도 걸리지 않았을까?

 

아무튼...

어찌저찌 우당탕탕 과제를 해서 목요일 새벽 4시에 제출을 하고 장렬히 전사했다.

새벽 과제 함께했던 우리 팀원 승연님과 학습메이트 진우님께 감사 인사를 전합니다,,,🫶🏻

 

아직까지는 ALL PASS 에요 ㅠㅠ

PASS/FAIL 이 중요하냐 하면 그건 아니지만, 왠지 PASS가 아니면 서운할 것 같단 말이죠,,,

 

오늘은 코치님의 피드백을 코드에 반영하고, 5주차 요구사항을 분석하고 다음 주차도 열심히 해보겠습니다. 💪🏻

728x90
728x90
Comments