[WIL] 항해 플러스 백엔드 1주차

곽태민·2025년 10월 26일
0

📝 WIL: 테스트에 대한 올바른 인식 & 동시성 제어

🎯 이번 주에 겪었던 문제

이번 주차를 진행하며 다음과 같은 문제를 겪었다.
TDD(Test Driven Development) 에 대한 잘못된 인식이 있었음
• 무조건 비즈니스 로직을 구현하기 전에 테스트 코드를 작성해야 한다고 오해하고 있었음
• 모든 기능에 대해 테스트 코드를 작성해야 한다고 생각했었음
단일 책임 원칙(SRP) 에 따른 테스트 코드 작성 방식의 중요성을 깨달음
• 멀티 스레드 환경에서의 동시성 제어 방법 고민

🔍 시도해본 것들

문제를 해결하기 위해 아래와 같은 시도를 진행했다.
PointService 에 단일 책임 원칙이 무시된 채 너무 많은 책임이 집중되어 있었는데,
validation 로직을 UserPoint 도메인 클래스로 분리
• 멀티 스레드 환경에서 동시성 제어를 위해 ReentrantLock 사용
• 테스트 코드 작성 시 단일 책임 원칙을 지키기 위해 각 클래스 단위로 테스트 코드 작성

✅ 문제를 어떻게 해결했는가?

• 서비스 레이어에서 중복 역할을 수행하던 validation 로직을 도메인 객체로 분리하면서 책임이
명확해지고 테스트 범위도 깔끔하게 정리됨
ReentrantLock을 도입하여 동시에 여러 스레드가 접근하는 상황을 제어하여 데이터 정합성을
보장함
• 클래스 단위로 테스트 코드를 작성하면서 테스트 대상의 역할이 명확해지고 유지보수성이 향상됨

💡 새롭게 알게 된 것

시도를 통해 아래와 같은 점을 새롭게 알게 된 것들이 있다.
• TDD는 구현 전에 무조건 테스트를 작성하는 것이 아니라, 설계를 가이드하고 피드백 루프를 촉진하는 철학적 접근이라는 것
• 모든 기능에 대해 테스트 코드를 작성할 필요는 없으며, 핵심 비즈니스 로직 중심으로 테스트하는 것이 효율적이라는 점
• 멀티 스레드 환경에서는 동시성 제어가 필수이며, 그렇지 않으면 데이터 정합성 문제가 발생할 수 있음

🔥 지난 목표 회고

지난주에 설정했던 목표는 다음과 같은 결과가 나왔다.

✅ 잘된 점
• 과제를 하루 전날 제출하여 일정 관리가 비교적 잘 됨

❌ 아쉬운 점
• 동시성 제어에 대한 이해도가 아직 부족하다고 느낌
• 컨디션 관리를 못 했음
→ 더 많은 학습이 필요함

🎯 다음 목표 설정

📌 단기 목표

  • 이커머스 프로젝트 과제를 기간 내에 완수하기
  • 동시성 제어 이론 + 실습 코드 더 많이 경험해보기

반복적인 성장을 위한 루틴으로 가져갈 예정!!

profile
Node.js 백엔드 개발자입니다!

0개의 댓글