[LG CNS AM INSPIRE CAMP 1기] AMaze 영상 메모 웹앱 구현 - VERSION 2

2025. 1. 13. 15:41·LG CNS AM CAMP 1기
목차
  1. 💡 VERSION 2 업데이트 내용
  2. 💡 프로젝트의 핵심 Youtube Data API
  3. 💡 데이터 관리
  4. 💡 프로젝트 관리
  5. 📝 SUMMARY
🔑단단한 뿌리는 수많은 가지를 뻗게 한다

💡 VERSION 2 업데이트 내용


📃 지난 일주일 동안 짬나는 시간을 활용해 간단한 웹앱을 구현하고 Vercel에 배포했습니다.
YouTube Data API를 활용할 아이디어를 고민하다가, 매일 아침 동국대로 출근하면서 생산적인 활동을 해보자는 생각이 들었습니다. 그래서 토스 Slash, 우아한 테크, 당근 테크 같은 기술 영상들을 보고 배운 점 딱 3가지만 정리하는 앱을 만들게 되었습니다

💻Interface

⬆️ 주요 기능은 사용자가 공부하고 싶은 영상을 선택하고, 해당 영상에 대한 배운 점을 작성할 수 있도록 구성되어 있습니다
특히 학습 포인트를 3가지로 제한한 이유는, 단순히 "배운 점을 적어보라"는 요청보다는 구체적인 목표를 제시함으로써 사용자의 동기부여를 더 효과적으로 이끌어낼 수 있다고 생각했기 때문입니다

💡 프로젝트의 핵심 Youtube Data API


📃 프로젝트의 핵심은 YouTube Data API이며, 이 API는 할당량 제한이 있습니다. 처음에는 10,000이라는 할당량이 제공되었으나, 사용 초기에는 이해하지 못한 채 개발을 진행했습니다.
특히, search 쿼리를 통해 데이터를 호출했는데, 이 방법은 호출당 100의 비용이 발생합니다. 이러한 호출을 무분별하게 사용하다 보니 중간에 할당량 초과로 인해 개발이 중단되는 상황을 겪었습니다. 이 문제를 해결하기 위해 임시 데이터를 정의하여 작업을 이어갔습니다

💻 호출 방법

api 호출
console.log

⬆️ 앞서 언급한 search 쿼리는 호출당 100의 비용이 발생하는 반면, playlistItems를 사용하여 데이터를 가져오는 경우 호출당 비용이 2에 불과 ‼️ 합니다. 이에 따라 비용을 절약하기 위해 playlistItems를 사용하는 방식으로 API 호출을 변경했습니다
또한, 프로젝트의 목적상 id와 title 정보만 필요했으므로, fields 파라미터를 통해 필요한 데이터만 명시적으로 정의하여 호출 비용을 최소화했습니다

 

💡 데이터 관리


📃 이렇게 API를 통해 불러온 데이터는 utils에 정의된 getStorageVideoIds와 storeVideosIds 함수를 통해 로컬 데이터베이스에서 관리됩니다. 이 데이터는 사용자가 직접 삭제하지 않는 한 계속 저장됩니다. 만약 삭제되더라도, 적은 비용으로 API 호출을 통해 데이터를 다시 가져올 수 있기 때문에 아래와 같이 처리했습니다

💻 호출 방법

⬆️ 이 코드는 컴포넌트가 처음 렌더링될 때 fetchAllVideos 함수를 호출하여 YouTube API에서 비디오 목록을 가져오고, 로컬에 캐시 된 데이터가 있으면 이를 사용하여 화면에 비디오 목록을 표시하며, 없으면 API 호출을 통해 비디오 정보를 받아와 저장한 후 화면에 업데이트합니다

💡 프로젝트 관리


📃 CONTENT

⬆️ 간단한 프로젝트라서 github를 통해서 프로젝트를 관리했고, commit 규칙을 사전에 정의해서 변경 사항을 명확히 기록하고, 프로젝트 이력을 체계적으로 관리했습니다. 이렇게 해야 나중에 문서화할 때도 편리하다는 걸 이전 프로젝트에서 뼈저리게 느꼈습니다ㅎ  

 

📝 SUMMARY


📌 사실 일주일이라는 짧은 시간 동안 이렇게 빠르게 프로젝트를 구현했다는 사실이 저에게도 큰 자신감을 주는 것 같습니다. 앞으로도 배운 내용을 바탕으로 간단한 프로젝트를 구현하며 복습하고 성취감을 느낄 수 있는 시간이 필요할 것 같네요

저작자표시 비영리 변경금지 (새창열림)
  1. 💡 VERSION 2 업데이트 내용
  2. 💡 프로젝트의 핵심 Youtube Data API
  3. 💡 데이터 관리
  4. 💡 프로젝트 관리
  5. 📝 SUMMARY
'LG CNS AM CAMP 1기' 카테고리의 다른 글
  • [LG CNS AM INSPIRE CAMP 1기] 어노테이션과 Maven 빌드 관리 도구 빠르게 이해하기
  • [LG CNS AM INSPIRE CAMP 1기] 제네릭 Generic 완벽하게 이해하기
  • [LG CNS AM INSPRIRE CAMP 1기] 최상위 객체 Object & final & abstract & interface 정리하기
  • [LG CNS AM INSPRIRE CAMP 1기]순차지향, 절차지향, 객체지향: 프로그래밍 패러다임 완벽 이해하기
Jelong
Jelong
커스텀 웹: https://jaehong-park.com Github: https://github.com/qkrwoghd04
24/7 Developer's Note커스텀 웹: https://jaehong-park.com Github: https://github.com/qkrwoghd04
  • Jelong
    24/7 Developer's Note
    Jelong
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Software Engineering
      • Ubuntu
      • Network
      • JavaScript
      • Web
      • Interaction Design
      • React Native
      • React
      • Algorithm
      • Java
      • Database design
      • IT Trend
      • TroubleShooting
      • AWS
      • Interview
      • LG CNS AM CAMP 1기
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    generic
    BST
    prototyping
    javascript
    frontend
    소프트웨어 공학
    typescript
    오블완
    mininet
    expo
    티스토리챌린지
    화이트 박스 테스트
    자바
    css
    JS
    알고리즘
    java
    블랙 박스 테스트
    데이터 구조
    ChatGPT
    미니넷
    AWS
    React
    이진트리
    Queues
    GPT-4
    자바스크립트
    html
    알고리즘 분석
    heap
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Jelong
[LG CNS AM INSPIRE CAMP 1기] AMaze 영상 메모 웹앱 구현 - VERSION 2

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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