-
1주차 회고노트항해 플러스 백엔드 5기 2024. 6. 22. 15:18
1. 이번 과제
주제 : 사용자의 포인트를 충전/저장하는 엔드포인트 개발
Step1 : TDD 작성하기
Step2 : 동시성 문제를 해결하고 통합테스트 작성해보기
2. 회고
✏️ 문제
과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제
이번 주차를 지나며 겪었던 문제가 무엇이었나요?
- 특정 사용자가 포인트 충전과 사용을 동시에 하는 경우의 테스트 케이스 작성에 대한 고민
- 특정 사용자가 포인트 충전과 사용을 동시에 하는 경우 동시성 처리를 어떤식으로 처리할 것 인지에 대한 고민
✏️ 시도
문제를 해결하기 위해 어떤 시도를 하셨나요?
- 어떠한 given, when, then을 작성해야 테스트가 신뢰성이 있을지 고민해보았다.
- 테스트 케이스 작성시 동시 요청을 위해 어떤 방식들을 많이 사용하는지 비슷한 사례들을 찾아보았다.
- 포인트 충전과 사용 메소드에 동시에 접근하는 경우 어떤식으로 처리해야하는지 비슷한 사례들을 찾아보았다.
✏️ 해결
문제를 어떻게 해결하셨나요?
- given에서는 포인트를 충전하고, when에서는 포인트 충전/사용을 동시에 요청하는 처리, then에서는 충전/사용에 대한 결과 값을 계산하여 검증하는 방식으로 테스트 케이스를 작성하였다.
- CompletableFuture allOf()를 통해 특정 사용자의 포인트 사용과 충전을 동시에 요청하였다.
- synchronized 키워드를 포인트 충전, 사용 메소드에 사용하여 하나의 스레드가 점유하고 있을 때는 다른 요청을 대기하도록 처리하였다.
✏️ 알게된 것
문제를 해결하기 위해 시도하며 새롭게 알게된 것은 무엇인가요?
✅ TDD 작성시 탑다운 방식으로 Controller -> Service -> Repository 순서로 작성해 나아가야하고 유닛 테스트를 작성한 후 최종적으로 통합 테스트를 진행한다.
✅ 동시성 처리를 위해 비슷한 사례들을 찾아보면서 ConcurrnetHashMap, CompletableFuture, synchronized 등의 개념들에 대해서 새롭게 알게 되었다.
✏️ Keep : 현재 만족하고 계속 유지할 부분
이번 주를 마무리 하며 나에게 만족했던 부분은 무엇인가요?
- 회사 업무와 과제를 병행하면서 시간적으로 부족하였는데 수면 시간을 줄이면서 주어진 과제를 완료하기 위해 노력했다는 점에서 만족스럽다.
- 코드 품질에 대한 고민과 테스트 케이스에 대한 고민 등 평소에는 잘 하려고 하지 않았는데 이번 과제를 진행하면서는 최대한 고민을 많이 해보려고 노력했다는 점에 대해 만족스럽다.
✏️ Problem : 개선이 필요하다고 생각하는 문제점
이번 주를 마무리 하며 개선이 필요하다고 생각했던 문제점은 무엇인가요?
- 과제를 발제 받고나서 토, 일이라는 시간을 활용하지 않고 쉬었던 것이 좀 아쉽다. 해당 시간들을 활용했다면 평일에 힘들지 않았을 것 같았고 과제의 퀄리티도 좋았을 거라고 생각한다.
- 시간이 부족하다 보니 좀 더 고민하고 공부해야했는데 기능 동작에 급급하게 시도를 했던 방식들이 개선이 필요하고 이런식으로 계속 과제를 해나아 간다면 발전이 없을 것 이다.
- synchronized가 각 포인트 충전, 포인트 사용 함수에 걸려있으므로, 같은 유저에 대해 동시에 두 요청 (충전/사용)이 들어온 경우에 각가 바로 실행되고 이 때, 동시성 문제는 동일하게 발생하므로 어떤 방식으로 해결해야할지 좀 더 고민이 필요할 것 같다.
✏️ Try : 문제점을 해결하기 위해 시도해야 할 것
이 문제점을 해결하기 위해 다음 한 주간 시도 할 것은 무엇인가요?
- 요구사항을 분석하고 기능을 정리 후 일정 (WBS)를 작성하여 스케줄을 관리하고 통제한다면 위에서 작성했던 1번, 2번의 부분들이 개선이 될 것 같다.
- 1주차 과제에서 받았던 피드백들을 좀 더 공부하고 정리하는 시간을 따로 할당하여 위에서 작성했던 3번 부분들을 개선할 것 이다.
'항해 플러스 백엔드 5기' 카테고리의 다른 글
5주차 회고노트 (0) 2024.07.21 1 ~ 5주차 서버구축 챕터 회고록 (0) 2024.07.19 4주차 회고노트 (0) 2024.07.13 3주차 회고노트 (0) 2024.07.06 2주차 회고노트 (1) 2024.06.30