업비트 웹소켓 프록시 비용 폭등 문제 해결하기: 웹소켓 프록시를 Data Transfer Out이 싼 인스턴스로 이전 (Lightsail)
[이 글](https://blog.coinsect.io/posts/upbit-websocket-go-proxy)을 쓸 때만 해도 웹소켓 Proxy서버를 만들어서 throttling을 적당히 걸어주면 **우아하게** 비용 문제를 해결할 수 있을 줄 알았다.
그러나 이런저런 삽질을 해본 결과, 무슨 최적화나 꼼수를 써도 결국 EC2 => 외부로 나가는 트래픽은 전부 Data Transfer Out을 늘리게 되며, EC2는 기본적으로 이 비용이 매우 비싸기 때문에 비용을 크게 절감할 수 없음을 깨닫게 됐다.
따라서, 최종적으로 선택한 방법은 Data Transfer Out 비용 자체가 싼 인스턴스, AWS 기준 Lightsail을 웹소켓 전용 서버로 운용해보자는 것이었다.

EC2는 기본적으로 Data Transfer Out에 대해 100GB까지는 무료로 제공하는데, 수 년간 운영해본 경험상 수많은 코인 티커에 대해 내 서버에 연결된 클라이언트들에 브로드캐스팅하다보면 저 한도는 아주 가볍게 넘었다.
따라서 저 트래픽 자체가 싼 곳을 선택하는 방법 외에는 뾰족한 비용 절감 방법이 없다.
Oracle이나 Vultr 등 저 비용이 없거나 저렴한 Cloud들도 많았지만 그냥 AWS 내에서 해결하고 싶어서 찾아보니 Lightsail이 딱이었다. 예전부터 들어서 알고는 있었지만 굳이? 하다가 비용이 너무 많이 나오다 보니 [...] 오늘자로 하나 생성했다.

$12 플랜은 첫 90일은 무료(!)이고 거기에 무려 3TB Transfer까지 패키지로 포함되어 있다. 그래서 여기서 인스턴스를 만들고 방화벽을 열었다.

그리고 Route53에서 `https://cheap.coinsect.io` A record를 추가해서 방금 만든 Lightsail 인스턴스를 바라보게 하고, Lightsail 인스턴스에서는 Nginx 프록시로 localhost의 go websocket proxy서버를 바라보도록 설정해뒀다.
그리고 클라이언트에선 웹소켓 연결은 `https://cheap.coinsect.io`로 하도록 만들고 배포했다.
**기대되는 효과**:
- 이제 스로틀링 간격을 아주 짧게 주면서 실컷 Data Transfer Out시켜도 됨 (물론 throttling을 아예 안 주는 것보단 주는게 나음)
- 비용은 앞으로 세 달간은 $0, 그 뒤로는 $12 상한으로 줄일 수 있음. 기존에 트래픽 비용만 $100씩 나가던 걸 삭제.
- 아울러 내 메인 인스턴스(EC2 medium)에서는 CPU도 이 웹소켓 서버가 빠진 만큼 적게 쓰기 때문에, CPU Credit이 누적되는 효과도 기대해본다.
**단점**:
- 관리 포인트가 늘어남... PuTTY에서도 이제 두 인스턴스를 들락날락거려야 하고 IP도 2개를 관리해야 함 ㅠ.ㅠ 그래도 매달 $50~$100이 뭐 하늘에서 떨어지는 건 아니니까