[항해 취업 리부트 코스] 6주차 프로젝트 WIL

2024. 4. 30. 10:29· 항해99/5-8주차
목차
  1. 1. 이번 주 항해 취업 리부트코스에서 내가 구현한 기능
  2. 2. 해당 기능을 구현하기 위해 거친 기술적 의사결정
  3. 3. 이번 주 겪은 트러블슈팅
  4. 4. 이번 주 진행된 개인 프로젝트에서 얻은 인사이트

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 취업 리부트 코스를 수강하고 작성한 콘텐츠입니다.
 

IT 커리어 성장 코스 항해99, 개발자 취업부터 현직자 코스까지

항해99는 실무에 집중합니다. 최단기간에 개발자로 취업하고, 현직자 코스로 폭발 성장을 이어가세요. 실전 프로젝트, 포트폴리오 멘토링, 모의 면접까지.

hanghae99.spartacodingclub.kr

 

저작자표시 (새창열림)

'항해99 > 5-8주차' 카테고리의 다른 글

[항해 취업 리부트 코스] 7-8주차 프로젝트 WIL  (0) 2024.05.14
[항해 취업 리부트 코스] 5주차 프로젝트 WIL  (0) 2024.04.22
  1. 1. 이번 주 항해 취업 리부트코스에서 내가 구현한 기능
  2. 2. 해당 기능을 구현하기 위해 거친 기술적 의사결정
  3. 3. 이번 주 겪은 트러블슈팅
  4. 4. 이번 주 진행된 개인 프로젝트에서 얻은 인사이트
'항해99/5-8주차' 카테고리의 다른 글
  • [항해 취업 리부트 코스] 7-8주차 프로젝트 WIL
  • [항해 취업 리부트 코스] 5주차 프로젝트 WIL
solitude12
solitude12
solitude12
Digital Agora
solitude12
전체
오늘
어제
  • 분류 전체보기 (54)
    • Programming Language (0)
      • Java (0)
    • Web Programming (2)
      • Spring Boot (3)
    • Computer Science (10)
    • 항해99 (28)
      • 1주차 (6)
      • 2-4주차 (18)
      • 5-8주차 (3)
    • 코딩테스트 (11)
      • 알고리즘 (4)
      • 백준 (3)
      • 프로그래머스 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 개발자포트폴리오
  • 개발자부트캠프
  • dfs
  • 다익스트라
  • 개발자취준
  • Collection
  • 항해99
  • cs
  • 배열
  • 취리코
  • 코딩테스트
  • 스택
  • 프로그래머스
  • 백준
  • Java
  • bfs
  • 컴퓨터구조
  • 개발자이력서
  • 취업리부트코스
  • 그래프
  • 자료구조
  • 알고리즘
  • 개발자취업
  • 구현
  • 자바
  • 큐
  • 컴퓨터 구조
  • Stack
  • spring
  • spring boot

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
글쓰기 / 관리자
solitude12
[항해 취업 리부트 코스] 6주차 프로젝트 WIL
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.