하루 100명에서 6000명까지! 서버가 버티질 못했던 소프트콘 뷰어십 제작기 (7)

정연진·2024년 2월 5일
30
post-thumbnail


인터넷 방송 데이터를 수집하여 시청자들이 쉽게 알아볼 수 있도록 자료를 분석하여 사용자들에게 알기쉽게 제공하는 것을 목표로 만들어진 뷰어십 ( 시청률 ) 사이트 입니다.

소프트콘 뷰어십은 다음의 정보를 제공합니다.

  1. 인터넷 방송 크리에이터 별 순위 및 통계 지표
  2. 인터넷 방송 카테고리 상세 데이터 및 순위 및 통계 지표
  3. 플랫폼 별 랭킹 및 상세 통계치
  4. 한국 내 이스포츠 ( LCK, LCK CL ) 통합 데이터 및 팀별 데이터

여러분들의 많은 방문! 부탁드리겠습니다.

https://viewership.softc.one/


2024년 1월의 기록

Vercel Analytics

지난 1월, 한달동안 다음의 서비스 런칭과 작업을 진행했습니다.

  • 이스포츠 페이지 오픈
  • 데이터 수집 범위 증가 ( 상위 1,000 명 )
  • 방문자수 데이터 전용 DB 및 수집 시작
  • 연재 블로그 작성 및 이스포츠 데이터 정리

현재까지 얻은 데이터는 다음과 같습니다.

  • 최고 하루 방문자수 (UV) 6,510명
  • 최고 하루 페이지뷰 (PV) 32,720명

지속적인 우상향 그래프와 더불어 현재까지 성장세가 아주 좋습니다! 특히 이세돌 이적, 트위치 종료 그리고 스텔라이브 이적 이라는 큰 이벤트가 2월 중 준비되어 있어 2월중 다시한번 최고치를 경신할 수 있지 않을까 예상하고 있습니다.

언론사 언급 및 자료 사용


현재 저희 사이트의 데이터와 블로그 자료등은 여러 언론사에서 활용하여 사용중입니다. 돈도 없고 인맥도 없는 제가 언론사들에게 댓가를 지불한게 아니라 놀랍게도 언론사들에서 제가 올린 블로그 글을 그대로 인용하여 인터넷 방송 관련 기사들을 많이 작성 하더군요!

아마 네이버, 아프리카 측에서 배포하는 보도자료를 이용해서 여러 언론사에서 사용한것 같은데 여튼 어느정도 사이트 홍보도 되고 공신력도 좀 생기는것 같아 굉장히 좋은 포인트라고 생각중입니다!

이번 블로그는 대위기! 예상하지 못한 서버 폭발이라는 주제로 연재해보겠습니다.

우상향중인 사이트 방문자

뷰어십 프로젝트가 꽤나 진행되고, 점점 인터넷 방송 관계들까지 입소문을 타기 시작했습니다.

다른걸 떠나서 일단 치지직과 아프리카 뷰어십 데이터를 보기 위해서 찾아올 사이트가 몇개 없고, 치지직은 소프트콘 뷰어십이 유일하게(이제는 아님) 데이터 수집을 진행했던 사이트이니 더더욱 그랬을 것이라고 생각합니다.

현재도 그렇지만 사이트 방문자수는 우상향중인 그래프를 보여주고 있습니다. 즉, 어제 감당이 가능했던 인프라가 오늘도 감당 가능할지에 대해 예측이 힘들다는 이야기이기도 하죠.

현재까지 방문자수 데이터

5달 전인 2023년 9월.

당시 펨코에서 홍보로 영구정지를 당하기 전, 펨코의 폭발적인 유입으로 인해 하루 300명의 사용자가 들어왔던 시절이였습니다.

( 당시 상황을 담은 연재 3화 바로가기 - velog )

크.. 당시엔 300명만 들어와도 서버가 터졌었는데 이때 바꿨던 현재 구조가 지금 수준에선 매우 큰 도움이 되고 있네요.

이 당시 문제점들과 최적의 구조를 생각해 만들었던 최종 결과는 위 그림과 같은 구조였는데 이런 구조로 만든 이후 사용자 접속 트래픽 감당에 여유가 넘쳐 흘렀었죠.

이후 사용하던 RDS 인스턴스도 t4g.medium으로 다시 스케일다운하고, 리드 레플리카 ( 읽기 전용 복제본 )도 다시 없애 단일 인스턴스로 회귀했습니다. 이와 더불어 Aurora DB로 변경하고 안정성도 추가로 확보했죠. 하루 2,000명 들어오던 시절까지는 괜찮았습니다.

다만, 3000명 이상이 들어오기 시작하니 t4g.medium도 점점 힘겨워 하기 시작합니다.


AWS 의 t4g.medium은 자체 그리비톤 2 ARM CPU를 이용한 컴퓨터로 빠르고 유연한 버스트 제품입니다. CPU 크레딧을 제공하고 vCPU의 기준 성능을 넘으면 크레딧을 차감하는 구조로 이뤄집니다. 보통 20%를 넘는 상황이 많이 발생하지는 않았기 때문에 괜찮았는데, 하루 방문자수가 3000명이 넘어가기 시작하니 많이 들어오는 시간대 크레딧이 쭉쭉 차감되기 시작하더라구요.

1월 중순, 저는 처음으로 크레딧이 차감되는 모습을 목격했습니다. 이미 BufferCacheHitRatio ( DB의 메모리 버퍼 캐시 히트율 ) 은 40~60% 를 보여주고 있는 상황이였죠. 이 두가지 사실이 증명하는 이야기는 명백합니다. 더이상 t4g.medium으로 버틸수는 없습니다.

무려 비용이 2배가 증가하지만 더이상 어쩔수 없습니다. 과감하게 스케일업을 진행하여 t4g.large로 업그레이드를 하기로 마음먹었죠.

AWS를 이용해보신분들은 아시겠지만, 굉장히 간편합니다! 딸깍 한번이면 바로 업그레이드가 진행되니까요.

스케일업, 이후 확연히 개선된 지표

이제 대부분의 지표가 안정적으로 돌아왔습니다.

사용자 유입이 극단적으로 몰릴경우 살짝 크레딧을 까는 경우가 있지만, 그외의 대부분의 경우에선 범위 내에서 움직임을 보여주고 있어 굉장히 유연한 대처가 가능한 상황이죠.

CPU수가 늘어난것은 아니기에 극단적인 성능 지표가 늘어난것은 아니지만, RAM이 8GB로 늘어난 덕분에 90% 이상의 데이터를 버퍼 캐시에서 가져올수 있는 상황이고, 이런 이유로 대부분의 상황에서 최대 15초 이내의 계산 상황을 보여주고 있습니다.

실제 이렇게 스케일업을 진행한 이후 ( 1월 29일 진행 ) 타임아웃과 에러가 확연하게 줄어들었고, 해당 타임아웃들 역시 대부분 서버 리붓중 발생한 타임아웃으로 예상되고 있습니다.

또한 아예 개발을 하지 않았던 어제, 역대 최고의 서버 호출량을 보여준 상황이였는데요, ( 33.9GB-h )

이 상황에서 모든 콜을 단 하나의 오류와 타임아웃없이 처리해 낸것을 확인할 수 있었습니다. 스케일업의 효과는 확실했죠.

어차피 현재 구조상 RDS 자체에서 6분에 한번만 처리하게 되면, 나머지는 VercelData Cache에서 땡겨오는 프론트 페이지이기 때문에 부담은 전혀 없는 상황이죠. 정말 다행인건 아직 Vercel의 Data Cache는 따로 돈을 받지는 않고 있습니다.

하지만 문제는 다른쪽에 있었습니다.

Vercel 대역폭도 이제 얼마 안남..았을까?

사실 개발을 하면서 처음보는 일이긴 한데, 실제 사용되는 대역폭이 기존 제공 대역폭을 뚫어버릴것 같습니다. Vercel은 1TB까지 20$ 한도지만, 해당 대역폭이 넘어가면 100GB 당 40$라는 놀라운 금액을 내야 합니다.

이 시점이라면 AWS Amplify로 이전하는것도 고려해 봐야겠지만 지금은 그럴 타이밍이 아닙니다. 도대체 어떤 파일이 이렇게나 많은 대역폭을 차지할까요?

Next/Image야 이미지를 저장해서 보여주는 서비스이고 어느정도 필요하기 때문에 저정도 사용량을 감당할 수 있지만 홍보용으로 사용했던 palworld.png파일과 Pretendard 로컬 폰트가 도합 400GB 이상을 차지하고 있었습니다.

사용자가 500~1000명 정도라면 별 문제가 안되겠지만, 이제는 4000명 이상이 들어오고 있기 때문에 확실히 신경을 쓰기 시작해야 했습니다.

해당 데이터를 확인후 팰월드 홍보 이미지 자체를 jpg로 변환하고, 폰트는 전부 웹폰트 ( Pretendard 제작자 제공 ) 으로 변경했습니다. 이후 대역폭이 기존 대비 50% 이상 감소하는 효과를 확인했고 추가로 자체 제작하는 인포그래픽 역시 png 대신 jpg, 그리고 webp형식으로 올릴 예정입니다.

아마 당분간은 문제가 없을것 같네요!

치지직의 수집 오류

최근 2월 1일 ~ 2월 3일까지 치지직 수집과 관련된 문제가 발생했었습니다.

최근 발생한 오류에 대해 사과드립니다. 소프트콘 뷰어쉽 오류 보고서

특정 시간대 치지직 수집 데이터 표시 문제로 인해 사이트 전체 데이터가 오류 직전의 데이터로 표시되었던 문제였는데요, 알고보니 치지직에 순간적으로 많은 요청이 들어가면 치지직 API에서 429 에러를 뱉으며 추가 요청을 막는 로직이 있었습니다.

이 문제가 지금까지 발생하지 않았던건 해당 로직의 제한이 50건이였던 것으로 확인되고, 50건은 1회 요청당 30개의 방송 채널을 가져오기 때문에 총 방송 채널 1,500개가 넘어가야만 확인이 가능하기 때문이였습니다.

무려 3일에 걸쳐 문제를 확인하고 해당 시간대 검증을 하기까지 오랜 기간이 걸렸고, 다행히 문제를 잘 수습하여 정상적으로 수집되는것 까지 확인했습니다.

해당 오류 내용을 한번더 적을 수 있지만, 자체 블로그 내용으로 갈음하겠습니다!
( 시간 남으시면 위의 "오류보고서"를 한번 확인해주시면 당시 상황과 처리 과정을 확인해보실 수 있습니다! )

마치면서

처음 1,000명이 들어왔을때만 해도 역대급 방문자라고 생각했었던 시기였는데 어느새 6,000명이 넘는 방문자수를 기록하고 있습니다! 정말 많은 분들이 방문해주시고 구경해주시고 있는데요, 혼자서 모든걸 다 하다보니 아무래도 문제가 발생시 대응이 늦어질수도 있고 업데이트후에도 여러 문제들이 발생할 수도 있습니다.

하지만 혼자서 하기 때문에 인터넷방송 트렌드에 따라 여러분이 원하는 가장 필요한 데이터를 어느 누구보다 빠르게 개발하여 다양한 분들께 더 좋은 서비를 제공할 수 있을 것이라고 생각합니다!

과연 다음번엔 얼마나 더 성장해 있을까요! 앞으로도 많은 기대 부탁드리겠습니다.

감사합니다!


최근 사이트와 velog를 통해 다양한 분들이 커피챗, 미팅 요청등을 주시고 있습니다. 저 역시 언제나 환영이고 빠르게 답장이 가능하니 편하게 연락주세요! 여러분들의 다양한 제안과 커피챗을 환영합니다!

email : dus523@naver.com ( 정연진 )

profile
소프트콘 뷰어쉽 절찬리 운영중! https://viewership.softc.one

7개의 댓글

comment-user-thumbnail
2024년 2월 12일

글 재미있게 잘봤습니다 ~ 혹시 t4g.large로 업그레이드후 비용이 어느정도 나오는지 알수있을까요

1개의 답글
comment-user-thumbnail
2024년 2월 14일

글 재밌게 봤습니다 :)

답글 달기
comment-user-thumbnail
2024년 2월 14일

글 잘 봤습니다! 폰트에서 발생하는 대역폭 문제를 해결하기 위해 웹 폰트로 변경하셨다고 하셨는데, 변경 후 발생한 단점이 있으셨을까요 ??

2개의 답글