AWS는 생각보다 비용 설계를 잘한 것 같다.
특히 네트워크 관련해서 비용 설계는 너무 잘했다.
EC2 인스턴스 하나를 띄우게 되면 부가적으로 따라오는 예상 되는 비용들이 몇가지가 있다.
1. Data Transfer(외부 네트워크 통신)
2. EBS(저장소 용량)
3. Public IP(공인 IP)
이와 관련 해서는 흔히 네트워크 지식이 얕은 엔지니어 급에서 일으키는 실수라고 할 수 있다.
다음과 같이 위에 ip는 공인 아이피이고 밑에는 사설 아이피로 구성이 되어 있는 네트워크가 존재할 때, API 서버에서 어느 IP로 데이터를 보내는지에 따라 속도가 달라집니다.
정확히 비용적으로 어떻게 차이가 있고 속도도 얼마나 차이가 있는지 모르겠지만 네트워크가 외부망을 갔다 다시 들어오는 것과 내부망에서 바로 다이렉트로 가는 것에서는 차이는 분명 발생하기 때문에 신경을 쓰는 편이 좋습니다.
인스턴스 당 30GB의 용량을 무료로 제공받는 것인줄 알았지만 그게 아니라 EBS 전체 사용량 중 월 30GB만 무료로 제공을 해주는 것이었다.
그래서 인스턴스 몇십개 띄워둔 것들을 모두 다시 내리고 다시 할당해서 다시 띄우는 대참극을 벌인 적이 있었다.
심지어 EBS 용량은 확장을 가능하나 축소는 확장한 걸 축소하는 것만 가능하기 때문에 처음 할당한 용량은 지우지 않고서는 축소가 불가능하기에 엄청난 노가다를 다시 반복했다.
이게 제일 문제였다.
Public IP을 굳이 사용할 필요가 없다는 생각을 하고 비용만 나가고 있으니 이건 내리는 편이 좋겠지? 라는 생각에 해당 기능을 내렸는데 예상치도 못했던 다른 이슈가 생겼다.
일단 Public IP를 사용할 필요가 없다고 생각한 이유는 다음과 같다.
1. SSH 접속은 Proxy 서버를 거쳐 접근 하면 SSH 접속 문제 해결
2. DB 접속도 내부 아이피 통신을 하면 되기 때문에 문제 없음
그럼 이대로 하면 되겠지? 하고 프록시로 둘 인스턴스를 빼고 모든 인스턴스들의 퍼블릭 ip를 뺏으니 곧 이어서 이슈가 여기 저기서 터지기 시작했다...
고려하지 않고 있던 문제는 바로 인터넷 접속이었다.
EC2에서 Public IP를 그게 되면 기본적으로 외부 통신이 전혀 되지 않는다.
별도로 NAT GateWay를 해당 리전 범위에 할당을 해줘야 하는데 이 NAT GateWay가 생각보다 비싸다.
NAT GateWay가 시간당 0.045 달러라서 90개의 Public IP를 사용하는 만큼 나가기 때문에 인터넷 사용 때문에 걱정이라면 90개 이상의 인스턴스를 만들게 되면 Public IP 할당은 내리고 NAT GateWay를 구성해서 네트워크를 구축하게 되면 비용 절감의 효과를 낼 수 있을 것 같다.