BBTI는 원래 일회성 서비스로 한달정도만 오픈해둘 생각이었다. 그리고 예상대로 서비스 오픈후 일주일이 지나자 서비스 이용자가 눈에 띄게 줄어드는게 보였다. 그리고 서버를 언제 내릴지 생각하고 있었는데, 갑자기 또 방문자 수가 급증하기 시작했다. BBTI를 이용했던 사람들이 본인 블로그와 네이버 카페에 이런 서비스가 있다고 올렸고, 이를 본 새로운 사용자들이 유입되기 시작했다.
- https://www.hankookilbo.com/NewsLetter/rabbit/Read/286
- https://blog.naver.com/runaroon/222462351861
- 등등 블로그, 트위터, 카페 등에 BBTI 글이 올라왔다.
이를 보고 서비스를 더 유지하는쪽으로 마음을 바꾸었다. 다만 지금의 구조는 비용적으로 낭비라고 생각해서 이를 개선하고 싶었다. 사용자가 서비스에 접속하면 서버는 프론트 파일을 전송하고 몇가지 API를 동작한다. 사용자 한명당 실제 서버가 동작한 시간은 아무리 길게잡아도 10초를 넘지 않는다. 하루에 100명이 방문해도 실 서버 동작시간은 1000초, 즉 30분도 넘지 않는다. 하지만 현재 AWS EC2는 24시간 동작하고 이에대한 비용을 지불하니 낭비인 샘이다.
그래서 프론트는 Cloud Front와 S3를 사용하여, 사용량당 비용이 발생하도록 하였다. S3에 Vuejs 빌드 파일을 올리고 이를 Cloud Front로 배포하였다. 그리고 서버 API는 Api Gateway와 Lambda를 사용하여, 요청당 비용이 발생하도록 하였다. 기존 서버로 동작하던 API를 각각 하나의 Lambda로 분리하였고, 이를 Api Gateway로 요청이 오면 각각의 Lambda가 실행되도록 하였다. 그리고 Route53이 제일 앞에서 bbti.site 도메인으로 오는 요청을 각각에 연결한다. 기존 24시간 동작하는 서버의 고정비용이 아니라 사용에 따라 비용이 발생하도록 구조를 개선하여 비용은 1/10 가까이 줄일 수 있었다.
'PROJECT' 카테고리의 다른 글
BBTI - 토끼 성향 테스트 (1) | 2021.06.18 |
---|---|
Selenium과 Ec2를 활용한 트위치 뷰봇(Twitch Viewbot) 만들기 (2) | 2020.03.24 |