1. 이번 주 항해 취업 리부트코스에서 내가 구현한 기능
- 동영상을 재생하는 기능
- 동영상 재생 시 특정 조건(30초 이상 시청)을 달성할 경우 동영상에 대한 조회 수 증가.
- 광고 추가
- 동영상의 일정 플레이 시간 기준에 광고를 추가.
- 광고를 시청 시 광고의 조회수가 추가.
2. 해당 기능을 구현하기 위해 거친 기술적 의사결정
- 통계 기능을 구현하면서 고민한게 일일 조회수를 어떻게 표현하는 지 고민함.
- 일일 조회수를 view_count, created_at 형태로 테이블 컬럼으로 입력받아서 DB에 저장함.
- 문제는 주간, 월간 조회수를 기록할 때는 DB에 값을 따로 저장하는 방법이 옳은지, 아니면 그 순간에 값을 계산 처리하는게 나은 지 고민.
- 해결책 1 : 일일 조회수를 등록하는 테이블 자체를 일일 조회수가 아니라 특정 날짜를 기준으로 조회수를 추적하는 테이블을 만든다.
- 현재는 조회수를 누적하게 되면 생기는 날짜를 기준으로만 잡음.
- 생성 날짜 + 기준 날짜 형태의 날짜 컬럼을 2개를 가지는 조회수 테이블을 만들게 되면 한 테이블에서 일간, 주간, 월간 조회수를 모두 구할 수 있음.
- ex) start_day : 04/24 / end_day : 04/24 => 일간 조회수
- ex) start_day : 04/24 / end_day : 04/31 => 주간 조회수 ( 4 / 24를 기준으로 일주일 조회수 )
- 기본적으로 일간 조회수 기준으로 생성하지만 필요에 따라 얼마든지 특정 기간의 조회수를 구할 수 있음.
- 다만 특정 구간을 구할 때마다 컬럼을 형성하는 건 좋지 못하기 때문에 생성 시에 조건은 자주 쓰는 기준을 위주로 생성하도록 형성.
- 해결책 2 : 데이터의 양이 크지 않다면 그냥 일간 조회수(created_at)만을 기준으로 만들고 계산이 필요할 때 일괄처리해서 계산한다. (후에 병렬 처리를 이용한다면 다른 API나 작업에 영향을 끼치지 않으므로 속도가 많이 느려지지는 않을 것으로 추측)
현재는 기술적인 이해도와 시간적 제한 때문에 해결책 2를 기준으로 테이블의 형태를 수정하지 않은 형태로 구현. 그러나 가능하다면 1번 해결책의 경우가 모범답안으로 보임.
3. 이번 주 겪은 트러블슈팅
문제와 원인
- Spring batch를 프로젝트에 적용 시 정말 간단한 코드였는데도 동작하지 않는 이유가 있어 5시간 정도 방법을 찾지 못해 고민했다.
문제 해결 시도
- batch가 의존성에 추가되지 않은 것은 아닌지 확인해봤었으나 정상적으로 동작하고 있었다.
해결
- 정말 간단한 문제였던 게, 인터넷에 나와 있는 많은 배치에 대한 글들이 스프링 2.xx 버전. batch 4.x 버전을 기준으로 작성한 레퍼런스가 많았다. 그렇기 때문에 현재 spring 3, batch 5 에서 deprecated 된 코드가 많아 정상적으로 동작하지 않아서 실행조차 되지 않았다. 다시 한 번 개발할 때는 자료와 현재 내 프로젝트의 버전을 확인하고 고려해서 작성하는게 중요한 걸 깨달았다.
4. 이번 주 진행된 개인 프로젝트에서 얻은 인사이트
개발을 할 때 버전을 최신 버전을 사용하다보면 관련 자료나 내용을 공식 문서에서만 찾을 수 밖에 없다. 가능하다면 익숙하지 않거나 처음 학습하는 경우에는 버전을 다운그레이드해서라도 낮은 버전에서 많은 레퍼런스들을 확인하며 익숙해지고 나서 버전을 올리면서 학습했던 코드를 마이그레이션하며 다시 학습하는게 적절한 것 같다.
항해99 취업 리부트 코스를 수강하고 작성한 콘텐츠입니다.
'항해99 > 5-8주차' 카테고리의 다른 글
[항해 취업 리부트 코스] 7-8주차 프로젝트 WIL (0) | 2024.05.14 |
---|---|
[항해 취업 리부트 코스] 5주차 프로젝트 WIL (0) | 2024.04.22 |