f-lab-edu / league-of-legends-data-solution

‘리그 오브 레전드’를 벤치마킹해서 플레이어의 행동 이벤트를 발생하는 API를 통해 실시간으로 데이터가 잘 흐를 수 있도록 데이터 솔루션을 제공합니다.
2 stars 0 forks source link

feat: Backup 스파크 어플리케이션 개발 및 Backup Scheduler 작성 #39

Closed Ra99it closed 2 months ago

Ra99it commented 2 months ago

적용 사항

  1. Backup 역할을 수행하는 스파크 어플리케이션을 작성했습니다. 실행시킨 날짜의 월을 기준으로 해당 월의 모든 데이터를 압축률이 높은 gzip과 AES-256 알고리즘을 적용했습니다. 이로써 안정적으로 데이터를 저장할 수 있습니다.

  2. 위 어플리케이션을 Airflow로 해당 월의 마지막 날 23시 59분에 실행시키도록 스케줄링합니다. 이로써 자동으로 달마다 데이터를 백업하게 됩니다.

  3. 또한 기존 EmrStepSensor에서 EmrStepSensorAsync으로 변경했습니다. 기존의 EmrStepSensor는 Task의 상태를 지속적으로 확인하여 지속적으로 리소스를 활용하지만, EmrStepSensorAsync는 충족할 때 까지 리소스를 사용하지 않고 대기 하다가 충족이 되면 작업을 진행합니다. 이로써 자원의 효율성이 향상됩니다.

f-lab-johnp commented 2 months ago

데이터 압축은 백업에만 적용할 필요는 없습니다. 원본 데이터를 두벌 유지하게 되면 비용이 크게 증가할 수 있습니다. 버킷에 S3 Lifecycle 적용을 검토해보시는게 어떨까요?

Ra99it commented 2 months ago

그러면 저렇게 백업을 굳이 하지 않고, S3 라이프 사이클을 통해 핫-웜-콜드 데이터처럼 관리하는게 더 효율적인건가요?

f-lab-johnp commented 2 months ago

그러면 저렇게 백업을 굳이 하지 않고, S3 라이프 사이클을 통해 핫-웜-콜드 데이터처럼 관리하는게 더 효율적인건가요?

네 데이터에 따라 백업 버킷을 유지해야 하는 경우도 있겠지만 S3는 이미 높은 내구성을 지원하고 있는 스토리지 입니다. 일반적으로 원본 데이터는 사이즈가 상당히 크기 때문에 장기간 지난 데이터를 Glacier로 아카이빙하는 방식으로 관리하는 경우가 많습니다.

Ra99it commented 2 months ago

그러면 일단 기능은 추가하지만 사용하지 않고 S3 라이프 사이클을 사용하는 방안으로 추진해보겠습니다.