logo
Published on

서버리스 웹사이트가 Cold start에 빠지지 않도록 warm-up 하기

240228-191102

상황

서버 시간을 조회하는 댄버 서버시간 프로젝트를 배포하다가 몇분간 접속하지 않다가 접속하면 약 4초 정도 지연되었다가 화면이 나타나는 Cold start 현상을 보게되었습니다. Vercel을 통한 서버리스 배포는 비용 부담이 적어서 자주 사용해야 하는데 유저에게 불편을 주는 긴 로딩은 피하고 싶었습니다. 해결 방법을 검토하다가 Tobin님의 Speeding up AWS Amplify NextJS First Render + Cold Start: An Unexpected Result 글을 보고 해결할 수 있었습니다. 콜드 스타트를 해결하는 서버리스 웜업 방법을 필요로 하는 개발자가 많이 있을 것 같아 과정을 공유합니다.

적용 방법

warm-up은 한마디로 요약하면 사이트가 잠들기 전에 계속 불러서 깨우는 것입니다. 약 5분 정도 아무도 접속하지 않는 웹 사이트는 깊이 잠드는 Cold 상태가 됩니다. 그러니 잠들기 전에 한번 더 불러서 깨우면 다시 또 5분간 깨어있게 됩니다. 이를 반복해서 항상 깨어있는 서버리스 웹사이트를 만들 수 있습니다. AWS Route53 콘솔에 접속해서 왼쪽 메뉴에서 Health checks에 들어가면 사이트가 살아있는지 주기적으로 체크하는 Health check 를 생성할 수 있습니다. Create health check를 눌러서 아래와 같은 옵션으로 생성해주세요. 그럼 끝입니다. 금액은 Health check 한개당 약 1달러/월 라고 합니다. 자세한 정보는 참고 블로그 글을 통해 확인하실 수 있습니다. 이 글이 도움이 되기를 바랍니다.

참고 자료

https://medium.com/aws-tip/speeding-up-aws-amplify-nextjs-first-render-cold-start-and-images-an-unexpected-result-36a416d69615