-
2주차 회고노트항해 플러스 백엔드 5기 2024. 6. 30. 23:10
1. 이번 과제
주제: 특강 예약 서비스 개발
Step3 : 특강 신청 서비스 구현
- ERD 작성
- 특강 신청 API
- 특강 신청 완료 여부 조회 API
- 특강 선택 API
Step4 : 동시성 제어, 확장 가능한 엔티티 추가
- 단 한번의 특강이 아닌 특강을 여러번 진행 할 수 있도록 확장 하기
- (동시성) 각 특강 별로 최대 30명까지만 정상적으로 요청되도록 기능 구현
2. 회고
✏️ 문제
과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제
이번 주차를 지나며 겪었던 문제가 무엇이었나요?
- 클린 + 레이어드 아키텍처 구성
- 동시성에 대한 고민 : 특강에 1자리만 남았을 경우에 여러 사용자가 수강 요청시 먼저 요청이 들어온 사용자만 신청 완료처리
✏️ 시도
문제를 해결하기 위해 어떤 시도를 하셨나요?
- 클린 + 레이어드 아키텍처 구성
- 아래와 같은 구성으로 컨트롤러, 서비스, 레포지토리 간의 의존을 해결할 수 있도록 구성을 가져갔다.
- 동시성에 대한 고민 : 비관적 락을 사용하여 한명의 사용자가 이미 수강 신청 엔티티를 점유하고 있는 경우 다른 사용자들은 접근할 수 없도록 시도
✏️ 해결
문제를 어떻게 해결하셨나요?
- 클린 + 레이어드 아키텍처 구성
- Controller, Domain(Service / Repository)가 변경되어도 서로의 영향이 없도록 설계의 방향성을 잡고
- Controller -> Service -> Interface Repository -> RepositoryImpl -> interface ORM Repository
- Controller만 DTO를 알고 있고, Domain(Service / Repository)에서만 Entity를 알 수 있도록 설계하여 의존성을 분리하도록 아키텍처를 설계
- Service에서 리턴되는 엔티티 객체를 DTO로 변환해주는 컨버터를 Controller <- Converter -> Service 와 같이 사이에 배치하여 서로의 Entity 정보가 Controller 외부에 노출되지않도록 설계
- 동시성 제어, 확장 가능한 엔티티 추가
- 강의 스케줄 엔티티를 추가하여 최대 수강 신청자수, 현재 수강 신청자수, 수강일자 컬럼을 추가하여 확장 가능한 엔티티 추가
- 강의 스케줄 정보를 가져오는 findById() 메소드에 @Lock 어노테이션을 선언하여 비관적락을 구현
- 강의 신청 메소드에 @Transactional 어노테이션을 추가하여 강의 스케줄 엔티티의 현재 수강 신청자수 증가 및 사용자 특강 신청 완료 히스토리 정보 등록을 하나의 트랙잭션으로 묶어 관리하여 동시성 문제를 처리
✏️ 알게된 것
문제를 해결하기 위해 시도하며 새롭게 알게된 것은 무엇인가요?
✅ 확장 가능한 엔티티를 추가하면서 각 레이어별로 의존성이 높은 설계인 경우 변경사항이 발생하면서 기술 부채를 발생할 수 있다.
✅ 동시성 처리를 위해 비슷한 사례들을 찾아보면서 비관적 락을 구현하는 방법에 대해서 새롭게 알게 되었다.
✏️ Keep : 현재 만족하고 계속 유지할 부분
이번 주를 마무리 하며 나에게 만족했던 부분은 무엇인가요?
✅ 클린 + 레이어드 아키텍처 설계의 구조를 계속 고민하면서 확장 열려있는 프로젝트를 만들어갈 수 있도록 유지하자.
✅ 회사 업무와 과제를 병행하면서 시간적으로 부족하였는데 과제를 완료하기 위해 노력했다는 점에서 나 자신에게 대견스럽다.
✏️ Problem : 개선이 필요하다고 생각하는 문제점
이번 주를 마무리 하며 개선이 필요하다고 생각했던 문제점은 무엇인가요?
❌ 최대한 기능을 빠르게 개발에 해야겠다는 조급한 마음으로 인해 이번 챕터의 가장 중요한 목표였던 아키텍처 설계에 소홀했던 점
✏️ Try : 문제점을 해결하기 위해 시도해야 할 것
이 문제점을 해결하기 위해 다음 한 주간 시도 할 것은 무엇인가요?
🔥 챕터가 마감되고 부족했던 부분들을 리펙토링하여 아키텍처 설계에 미흡했던 부분들을 보완하였다.
🔥 챕터 진행시마다 해당 챕터에서 중요한 목표를 생각해보고 기준을 잡아 단순하게 과제를 제출하고 끝이 아닌 과제를 제출하고 이것이 개인적인 성장으로 이루어질 수 있는 중요한 목표를 생각하며 개발을 진행해야겠다.
'항해 플러스 백엔드 5기' 카테고리의 다른 글
5주차 회고노트 (0) 2024.07.21 1 ~ 5주차 서버구축 챕터 회고록 (0) 2024.07.19 4주차 회고노트 (0) 2024.07.13 3주차 회고노트 (0) 2024.07.06 1주차 회고노트 (0) 2024.06.22