AIRI KANNA LAST CONCERT - 「The finale」 홈페이지 작업 회고

작성일자
Nov 29, 2024
태그
notion image
 

문제 상황

  • 크리에이터링크 서비스를 통해 콘서트 이벤트 페이지를 이미 구성되어 있음.
  • 이후 접속자 폭주(500 TPS+)로 인하여 서버에 장애 발생, 서비스 제공 일방적 중단 문제 발생
 

발생 원인 분석

  • 해당 홈페이지가 올라가있는 크리에이터링크 서버는, 미국 GCP 서버 한대로 작동 중이었으며, 대량 트래픽에 대한 처리가 미흡했던 것으로 추정.
  • 또한 웹빌더 특성 상 발생한, 불필요한 백엔드 서버 작동으로 인한 데이터베이스 락 또한 해당 문제에 기여한 것으로 추정
 

문제 해결 방법 구상

  • 일단, 문제를 해결하기 위한 방법으로는 아래 두가지 방법이 떠오름.
      1. 크리에이터링크 측과의 협조로 서버 스케일 업
      1. 크리에이터링크 서버팜으로부터의 독립 << 이 방식으로 진행하게 됨.
  • 크리에이터링크에서 독립하기로 결정한 이유는, 홈페이지가 12월 3일까지만 운영되고 종료될 것이기 때문에 스케일업하기 위한 코스트가 심하게 든다는 문제가 있었기 때문이었다.
 

문제 해결

  • 먼저, 크리에이터링크에서 독립하기 위해서는 직접 해당 페이지를 제작할 필요가 있다.
  • 다행히도 기존에 크리에이터링크를 통해 디자인 된 부분이 있었기에, 해당 디자인을 참고해서 작업을 빠르게 진행할 수 있었다.
 

근본적인 문제

  • 사실 세상에는 많은 트래픽을 쉽게 버틸 수 있는 서버는 없다. 트래픽을 알맞게 예측하고 미리 그에 맞는 성능의 서버를 준비하는게 필요하다.
  • 따라서, 기존 웹사이트의 TPS인 500의 2배수(1000)을 버틸 수 있는 것을 목표로 인프라를 구축하였다.
 

운영 지원

  • 아마존웹서비시즈코리아의 도움으로, AWS를 통해 서비스를 배포할 수 있게 되었다.
  • AWS는 Serverside Rendering이 필요한 프론트엔드도 쉽고 안정적으로 배포할 수 있도록 Amplify라는 서비스를 제공한다.
 

인프라 구성

  • 따라서, Next.js를 통해서 웹사이트를 재작성하기로 결정한 뒤 나는 SSG 형태의 정적 웹으로 서빙할 수 있도록 하였다.
  • 왜냐면 선물함 외에는 데이터베이스 이용이 필요하지 않았고 데이터가 자주바뀌지 않기에, 해당 데이터를 빌드타임에 가져오거나 아예 하드코딩 하는 방법으로 데이터베이스 부하를 줄일 수 있기 때문이다.
  • 이미지와 영상같은 에셋들은 모두 Cloudflare R2에 배포하였다. 이를 통해 Amplify 트래픽 용량 제한과 요청 건수 제한에 쉽게 미치지 않게하여 비용을 절감할 수 있었다.
 

서비스 오픈

  • Amplify는 내부적으로 해당 사이트를 빌드하고, 이를 정적 버킷에 올려 Cloudfront를 통해 배포한다.
  • 여기다 Cloudflare의 프록싱 기술과 Tiered Cache를 통해 효율적인 에셋 캐싱을 하게 하여 실제 서버로 들어오는 트래픽 또한 절감시켰다.
  • 현재 이 회고를 쓰는 지금도, 실제 접속자 수에 비해 부하는 매우 적게 들어오고 있고, 프리티어와 크레딧 범위 내에서 커버되고 있다.
 

FAQ

  • 왜 도메인을 새로 구입하셨나요?
    • 기존 도메인은 크리에이터링크에 등록하기 위해 국내에서 구입한 도메인으로, 저희 소유가 아니기에 관리가 어려운 문제가 있었으며 해당 도메인의 네임서버 또한 트래픽을 못이기고 터져나갈 가능성(희박하지만) 또한 염려되어 신규 도메인을 구입하고, Cloudflare로 이전하였습니다.