Amazon EC2 사용시 주의사항

3 min read

특정 주제에 대해 잘 모르는 사람을 아는 사람으로 교화시키는 작업은 대단히 어렵다. 모르는 사람을 위해 친절한 문장들을 만들다보면 전달하고자 했던 의도조차 희석되므로 아는 자, 모르는 자 모두를 잃을 수도 있다. 모르는 자가 충분한 개념탑재 없이 관련글을 읽을 경우 수박 겉 핥기식 지식이 되어 그들의 미래를 망칠 가능성도 농후하다. 그래서 이 포스트에서는 EC2가 뭔지, AWS가 뭔지 모르는 사람을 조금도 배려하지 않겠다. 될 놈은 도와주지 않아도 된다. 될 놈을 애써 도와주려한다면 그들의 에고에 상처나 내게 될 것이다.

Instance Types

default 인스턴스 타입이 Small Instance (m1.small) 이다. 대부분의 인스턴스 타입(t1.micro, c1.medium은 32bit 가능)이 64bit 인데 얘는 32bit 다. 멋모르고 m1.small로 시작했다가 다른 64bit 전용 인스턴스 타입으로 절체가 안되서 빡치는 일이 없으시길.

가장 저렴한 인스턴스 타입인 t1.micro를 사용할 경우 시간당 $0.025 (EU 기준) 이다. 24/7 돌리는 서버라면 한달에 $18 다. 1년 내내 사용할 경우 $219 이나, Heavy Utilization으로 선금 $62를 지불할 경우, 선금포함 1년에 $132면 된다. 한달에 12,000원 꼴이다. 한달에 두 끼 식사값이면 서버 하나를 배치해둘 수 있는 것이다. 그러나 t1.micro에는 함정이 있다.

Up to 2 EC2 Compute Units (for short periodic bursts)

반짝- 할 찰나 정도동안 2 EC2 코어를 사용할 수 있다. 그럼 반짝이 아니라 바아아아안짝이라면 어떨까? vmstat로 확인해보면 Xen 위에서 도는 서버에서나 볼 수 있는 추가 필드를 하나 볼 수 있다. 바로 st(steal time) 이다. t1.micro 인스턴스가 오랫동안 시스템 자원을 full로 쓰고 있다면 가상화 레이어에서 일시적으로 자원을 빼앗는다. 중간 이상 규모의 C++ 프로젝트를 컴파일해보면 이 현상을 확실히 목격할 수 있다. 중간중간 5~10초 정도 아예 시스템이 거의 멈추면서 st가 100으로 치솟는다. 예를들어 얼마전 0.1 릴리즈된 모질라 재단의 새 프로그래밍 언어인 Rust 컴파일러를 t1.micro로 빌드할 경우 5시간이 넘게 걸리지만, m1.large로 빌드하면 30분 정도면 된다. 5시간동안 꾸물 꾸물 컴파일되는게 아니라 뜨문 뜨문 컴파일 되는 것이다. 5시간동안 그 서버에서 도는 모든 프로세스들이 병신된다고 보면 된다.

그러니 싼 맛에 t1.micro 쓰면 안된다. 중대형 C++ 프로젝트를 컴파일하려면 m2.xlarge 처럼 코어당 프로세스 파워가 최고인 애들을 1시간동안만 빌려서 잽싸게 컴파일하고 terminate 해버리는 것을 추천한다. 컴파일 신나게 빨리 하고 500원~($0.57) 이면 할만하지 않은가. ㅋ

**Prices **

EC2 Prices 페이지 가장 상단에 있는게 instance 사용료 테이블이다. instance 사용료는 최소 단위가 1시간이다. 10분 쓰고 버려(terminate)도 1시간 비용은 내야한다. 그 다음 주의깊게 봐야할 것은 Data Transfer 다. 매달 1GB는 무료인데 1GB도 안쓰면 잉여 서버라고 봐야하니 무료인 것이 별 의미가 없다. 1TB 를 쓰면 매달 $120가 나간다. 결코 저렴하지 않다. 매달 1TB를 쓰려면 한달내내 1초도 쉬지않고 385KB/s로 데이터 서빙을 하는거다. 여태까지 말한 트래픽 비용은 모두 아웃바운드 비용이다. 인바운드는 어떨까? 무료다. 서버에 미친듯이 쉬지않고 업로드를 하더라도 트래픽 비용이 공짜다. 하지만 별 의미가 없다. 디스크 비용이 필요하기 때문이다. 물론 crawler 같은 거 돌리기엔 안성맞춤.

디스크는 EBS(Elastic Block Store)라고 불리우며 1GB 당 한달에 $0.11이다. 인스턴스 생성시 기본으로 생성되는 EBS가 8GB이므로 매달 88센트가 나간다고 생각하면 "껌 값이네 ㅋ" 할지 모르지만, 우리가 일반 서버에 붙여놓던 디스크의 사이즈를 생각해보면 비싼거다. 300GB 정도는 붙였다고 친다면 매달 $33를 지불해야 하는거다. 물론 EC2를 쓰면서 300GB 짜리 EBS 블럭 하나를 통으로 잡는 또라이는 없겠지만 숙지해야할 내용이다. EBS는 시간당이 아니라 매월 결제되는 것을 잊지마라. 50분동안 잠깐 쓰기 위해 t1.micro 인스턴스 하나를 올렸다 내릴 경우, 인스턴스 비용 $0.025 + EBS 비용 $0.88이 나간다. 8GB EBS를 1시간 썼다 할지라도 t1.micro 인스턴스 35시간에 맞먹는 비용이 지출되는 것이다. 연습삼아 300GB짜리 EBS를 만들었다가 5초만에 지우더라도 $33가 나간다.

**One shot  **

서버 한대 추가하기가 그렇게 편할 수가 없다. 러닝중인 서버에 downtime 없이 새 EBS를 만들어서 동적으로 마운트 할 수도 있다. 정말 매력적이다. 그러나 그만큼 쉽게 서버를 지울 수도 있다. Stop 한다는게 실수로 Terminate 해버리면 끝장이다. 돌이킬 수 없다.

**마치며 **

서비스가 잘될지 안될지 한 치 앞을 내다볼 수 없는 내게 EC2는 축복이다. 더 쓰고 싶은 내용이 많지만 SNS에 적응된 내게 이런 장문의 글은 익숙치 않으므로 나머지 내용은 다음 기회에.

Comments

4 thoughts shared

01
R

rainygirl

잉 SNS에 적응된 내게 이런 장문의 글은 익숙치 않으시다고요??!?! :D

02

화니

micro 인스턴스 저거 엄청... ㅠㅜ

S3도 생각보다 저렴하지는 않더라구요.

03

자갈

잠깐 쓸거면 Spot Instance로 돌리는게 나을지도 몰라요 ㅎㅎ

04
K

kernys

아웅 좋아라 _

Continue Reading

Discover more thoughts and insights