본문 바로가기

Data Engineering/Youtube Comment Analysis

[데이터 시스템 구축기] 3. Airflow를 활용한 유튜브 댓글 수집 아키텍처 개선

0. 기존 댓글 수집 아키텍처

https://geup.tistory.com/29

 

Youtube 댓글 수집

Youtube Data API 사용방법 한국 지역 인기동영상 모든 댓글 및 답글 수집 코드 단점 예외처리가 어려움 API를 사용하기 때문에 여러 요인의 예외가 발상하지만 예외처리가 코드를 추가하면 코드가

geup.tistory.com

 

하지만 이 방식은 예외처리가 어렵고, 토큰을 하드코딩 해야 하며, 병렬처리가 어렵고, 수집을 위해 운영자가 직접 실행해야 하고, 댓글 혹은 답글이 수정되거나 추가되면 다시 수집해야 한다는 등 여러 단점이 있다.

 

 

1. Airflow, RabbitMQ를 활용한 댓글 수집 아키텍처

[그림1] Airflow, RabbitMQ를 활용한 유튜브 인기동영상 댓글 수집

해소된 문제점

  • 예외처리가 어렵다?
    • Airflow를 사용하면 댓글 수집 파이프라인을 하나의 긴 스크립트에서 여러 개의 태스크로 분리하고 workflow 매니지먼트를 통해 실행할 수 있다. 따라서 수집 중간에 예외가 발생해도 해당 태스크부터 다시 실행하면 된다.
  • 토큰을 하드코딩 해야 한다?
    •  Airflow는 자격 증명 정보를 관리할 수 있는 기능을 제공한다.
  • 병렬처리가 어렵다?
    • RabbitMQ에 댓글을 수집해야하는 동영상의 video_id 게시하면 작업자는 해당 video_id를 consume하여 댓글을 수집할 수 있도록 로직을 구현하였으며 이는 이후 병렬처리에 활용될 예정이다.
    • Airflow를 사용하면 executor에 따라서 병렬처리가 가능하며, 이후 KubernetesPodOperator를 활용하면 k8s의 replicaset을 활용해 작업자를 여러 명으로 늘릴 수 있다.
  • 댓글 혹은 답글이 수정되거나 추가되면 다시 수집해야 한다?
    • 해당 문제를 해결하는 로직을 추가하였다. (그림 1의 collect_exist_video_comment 태스크)
  • 직접 실행해야 한다?
    • Airflow의 Schedule기능을 활용해 매일 0시에 수집 작업이 실행되도록 함

문제점

  • 아직 병렬 처리가 적용되지 않음
  • 가용성 문제
    • Airflow가 실행되고 있는 Node에 장애가 발생하면 댓글 수집에 장애가 발생함
    • 로컬 파일 시스템에 수집된 데이터를 저장하고 있기 때문에 로컬 파일 시스템에 장애가 발생하면 댓글 수집에 장애가 발생함

코드

https://github.com/GEUP/youtube-comment/tree/useAirflow

 

GitHub - GEUP/youtube-comment: 유튜브 한국지역 인기동영상 댓글 수집 및 분석 프로젝트

유튜브 한국지역 인기동영상 댓글 수집 및 분석 프로젝트. Contribute to GEUP/youtube-comment development by creating an account on GitHub.

github.com

 

2. Airflow, RabbitMQ, Kubernetes를 활용한 댓글 수집 아키텍처

[그림2] Airflow, RabbitMQ, Kubernetes를 활용한 유튜브 인기동영상 댓글 수집

해소된 문제점

  • 가용성
    • kubernetes가 airflow와 RabbitMQ에 장애가 발생하면 자동으로 복구해주기 때문에 가용성이 높아진다.
  • 확장성
    • 부하가 높은 태스크인 댓글 수집 태스크의 경우 DAG를 수정하여 필요한만큼 병렬처리할 수 있다. (실험 필요)

 

문제점

  • Observation, monitoring의 어려움
    • 어떤 영상의 댓글일 얼마나 수집되고 있는지 확인하기 어려움

 

코드

https://github.com/GEUP/youtube-comment/tree/useKubernetes

 

GitHub - GEUP/youtube-comment: 유튜브 한국지역 인기동영상 댓글 수집 및 분석 프로젝트

유튜브 한국지역 인기동영상 댓글 수집 및 분석 프로젝트. Contribute to GEUP/youtube-comment development by creating an account on GitHub.

github.com

 

재현 방법 (PPT 참조)

youtube comment collect.pptx
0.14MB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.