무료 아마존 웹 서비스, 100% 알뜰하게 사용하는 방법


아마존 웹 서비스(Amazon Web Services)의 무료 서비스인 '프리 티어'(free tier)는 디딤돌 정도로 생각하면 가장 적절하다. AWS와 EC2의 기본 메카니즘에 흠뻑 빠지게 하고 가상 머신 인스턴스와 스토리지, 데이터, 네트워킹을 다루는 아마존의 방식을 이해시키고 궁극적으로는 유료 AWS로 유인하려는 징검다리인 것이다. 또한 어떻게 AWS 사용을 관리하고 제한하는지도 배울 수 있는데 부주의하게 사용하면 '프리 티어'라고 해도 결국 비용을 지불해야 하는 상황에 직면할 수 있다.
 
따라서 여기서는 프리 티어의 무료 사용 조건을 자세하게 살펴보고 그 제한 범위 내에서 무엇이 가능한지 실용적인지도 상세하게 살펴본다. 아마도 거의 모든 AWS 사용자들은 아마존 클라우드가 제공하는 모든 혜택을 누리고 싶어할 것이다. 그렇다면 무료 서비스도 최대한 활용해야 할지 않을까. 프리 티어는 AWS를 시험해보고 몇몇 프로젝트를 시작해보고 심지어 기능적 애플리케이션까지 구축해보는 매우 훌륭한 방법이다.
 
한 가지 덧붙이면,  아마존의 프리 티어 관련 설명 중에는 “아마존은 이 무료 사용의 신규 등록을 언제라도 중단할 수 있다”라는 불길한 문장이 포함돼 있다. 이 문구는 아마존의 입장에서 보면 일종의 면피책이 될 수 있지만 만약 무료 계정을 사용해 볼 생각이 있다면 아마존이 중단하기 전에 지금 바로 실행하는 것이 좋을 것이다.
 
월 0달러로 무엇을 얻을 수 있나
AWS 무료 사용 티어(AWS Free Usage Tier)는 설정과 실행을 하기에 충분할 정도의 다양한 AWS 요소들을 제공한다. 유용한 무언가를 개발할 필요한 모든 것을 지원해 주지는 않지만 분명히 무언가 기능적인 성과물을 만들어낼 수 있다. 가장 대표적인 다음과 같은 것들이다.
 
서버 : 613MB의 RAM과 함께 구성된 EC2상에 리눅스나 윈도우 서버 마이크로 인스턴스를 월 750시간까지 실행할 수 있다. 이는 한달 내내 무료로 연속적으로 사용할 수 있다는 것을 의미한다.
 
아마존은 다량의 우분투 서버 12.04와 12.10, 마이크로소프트 윈도우 서버 2008과 2012, 그리고 아마존의 자체 아마존 리눅스 AMI(Amazon Linux AMI)등을 포함한 각기 다른 리눅스와 윈도우 시스템들을 실행할 수 있게 해주는 AMI(Amazon Machine Images) 카탈로그를 지원한다.

모든 AMI를 무료로 사용할 수 있는 것은 아니지만 실행 가능한 것들이 다수 포함돼 있다. AWS 마켓플레이스(AWS marketplace)에도 역시 AMI 인스턴스로 이용할 수 있는 다양한 서드파티 애플리케이션 어플라이언스들과 서버가 있지만 이를 모두 무료로 사용할 수는 없다.  
 
스토리지 : EC2 인스턴스는 스토리지 공간 없이는 별로 쓸모가 없다. 프리 티어는 기본적으로 30GB의 엘라스틱 블록 스토리지(Elastic Block Storage)와 5GB의 아마존 S3 스토리지, 200만 I/O, 그리고 1GB의 스냅샷 스토리지가 제공된다. I/O 사용량 한도에 주목해보자. 아마존은 I/O에 따라 과금하기 때문에 여기에서 문제가 복잡해질 수 있다.

프리 티어를 넘어서면 아마존은 월 100만 I/O마다 10센트씩 요금을 부과하는데 주어진 인스턴스에 의해 사용되는 I/O의 양은 이를 어떻게 사용하느냐에 따라 크게 달라질 수 있다. (잠시 후 이를 관리하는 팁을 살펴본다)
 
데이터베이스 : 아마존의 관계형 데이터베이스 서비스(Relational Database Services)에는 MySQL, 오라클(Oracle) BYOL, 혹은 마이크로소프트 SQL 서버 익스프레스(SQL Server Express) 등이 포함돼 있다. 사용자는 이 중 선택할 수 있으며 각각 월 750시간, 20GB의 스토리지, 1000만 I/O, 20GB의 백업 스토리지 등을 제공받는다.

NoSQL을 선호하는 이들의 경우 아마존은 이를 다이나모DB(DynamoDB) 형태로 제공하지만 프리 티어에는 단 100MB의 스토리지만 제공한다. 여기서도 또다시 I/O 추산이 복잡해지지만 저-트래픽, 데이터베이스-주도형 사이트를 테스트하기에는 충분하기 때문에 크게 문제가 되지는 않을 것이다.
 
데이터 전송 : 이 부분은 쉽다. 15GB의 외부 송출 대역폭이 모든 AWS 기능에 걸쳐 주어진다. 이해를 돕기 위해 예를 들면 월 5000명의 방문객이 오는 필자의 개인 사이트는 월 1.2GB의 대역폭을 소모한다. 비교적 간단하거나 개인적인 웹사이트의 경우 15GB는 충분하고도 남는 수준이다.
 
제약은 무엇인가
이제 나쁜 소식을 들려줄 차례다. 아마존은 프리 티어 사용에 엄격한 조건들을 덧붙였다. 앞서 설명한 사용량 외에도 다른 제한사항이 많다.
 
핵심 서비스는 단 12개월만 무료 : EC2, S3, RDS등을 포함한 대부분의 주요 AWS 서비스는 최초 등록 이후 12개월만 무료로 사용할 수 있다. 그 기간이 지나면 보통의 요금제와 마찬가지로 사용한 만큼 돈을 지불해야 한다.

다행인 것은 일부 서비스의 경우 12개월 이후에도 프리 티어로 사용할 수 있다는 것이다. 다이나모DB, 심플 워크플로(Simple Workflow), 심플 큐 서비스(Simple Queue Service), 심플 노티피케이션 서비스(Simple Notification Service), 아마존 엘라스틱 트랜스코더(Amazon Elastic Transcoder) 클라우드워치(CloudWatch) 등이 대표적이다.
 
CPU(와 대역폭) 감속을 예상하라 : 마이크로 인스턴스는 간헐적으로 수요가 폭증할 때를 대비해 최대 CPU에 맞춰 공급하도록 설계됐다. 아마존은 '연산 유닛'(compute unite)이라 부르는 전체의 연속적인 인스턴스는 공급하지 않는데 이를 위해서는 M1 스몰 인스턴스로 업그레이드해야 한다. 이를 통해 아마존의 표현대로라면 마이크로 인스턴스를 '추가적인 연산 사이클을 주기적으로 필요로 하는 낮은 스루풋 애플리케이션과 웹사이트에 적합'하게 만들어준다.
 
CPU가 가끔씩 100퍼센트까지 치솟게 만드는 애플리케이션을 실행한다면 문제는 없을 것이다. 그러나 장시간 CPU를 100퍼센트로 고정시키는 앱이라면 처음에는 100퍼센트로 실행되지만 차후 감속된다. 감속 머신의 내부 통계는 여전히 CPU가 100퍼센트로 실행되고 있다고 보고하기 때문에 이에 속으면 안 된다는 점을 명심하라.
  
아마존의 EC2 대시보드를 통해 사용량 통계를 모니터할 수 있지만 실행 기계 내부의 통계에서 더욱 세분화된 정보를 얻을 수 있다.
 
프리 티어의 윈도우 서버 인스턴스가 부족할 수 있다. 또 무엇을 계획하느냐에 따라 윈도우 서버 인스턴스에 할당된 메모리가 이를 실행하기에 불충분할 수도 있다. 정적 웹페이지를 유지하는 정도라면 문제될 것이 없다. 필자는 MySQL/아파치(Apache) 인스턴스를 그런 머신에 (AMPPS 웹 스택을 통해) 설치해 20%정도의 RAM을 남기고 실행할 수 있었다.
 
만약 AWS 호스트된 데이터베이스 인스턴스(RDS)를 통해 데이터베이스를 사용하고 있다면, 다행이도 이 데이터베이스는 전적으로 실행중인 머신과 분리되어 시작된다. 이 때문에 RDS로 인해 사용하는 실제 인스턴스상에 데이터베이스 서버를 실행해 훨씬 많은 메모리를 잡아먹게될 걱정을 할 필요가 없어진다.
 
기본 설정상 일관된 IP 주소를 쓸 수 없다 : 프리 티어는 AWS가 주소를 할당하는 방식이기 때문에 인스턴스는 고정 IP 주소나 일관된 사설 DNS 이름이 자동적으로 따라오지 않는다. 이 때문에 사용하는 인스턴스 재설정이 IP 주소 역시 재설정시켜 일종의 DNS 기술을 적용하지 않으면 외부 사용 목적의 무료 사이트 호스팅을 하기 어렵다.
 
다행히도 이런 문제는 해결하기 비교적 쉽다. 만약 누구나 지금 서비스하는 서버에 지속적으로 접속할 수 있도록 하려면 EC2 엘라스틱 IP 주소(EC2 Elastic IP Addresses)를 사용해 무료 인스턴스에 고정 IP를 제공할 수 있다. 단 주소를 보관한 채 실제로 이를 인스턴스와 연결하지 않는다면 소정의 요금이 부과될 것이다.
 
프리 티어, 100% 활용하기
분명 프리 티어에는 많은 함정들이 있다. 자원 제약들은 사용자가 미리 조심하지 않으면 너무나도 쉽게 넘어서게 되어 있다. 따라서 마이크로 인스턴스 최대한을 활용하고 싶다면 다음과 같은 점을 반드시 명심하기 바란다.
 
요금에 신경써라 : 말할 필요도 없겠지만 정기적으로 AWS 계정 활동 페이지를 체크해 아무도 모르게 요금이 부과되지 않는지 확인하라. 기본 설정상 아마존은 프리 티어 한도를 넘어서서 요금이 부과되더라도 따로 알려주지 않는다. 별도의 통지도 없이 사용 초과분만큼 그대로 요금이 부과된다.

만약 추정 사용량에 대한 알림을 받고싶거나 정해 놓은 예산을 초과할때 경고를 받고 싶다면 아마존이 제공하는 요금 경고 시스템을 사용하면 된다. 그러나 프리 티어에서는 설정가능한 경고와 알림의 수가 제한되어 있다.
 
I/O 사용량을 챙겨라 : 만약 개인용도로 서버를 사용한다면 I/O 요금 폭탄을 맞을 일은 없을 것이다. 그러나 서버를 공공으로 돌리면 상황이 하늘과 땅차이로 완전히 뒤바뀔 수도 있다.
 
인스턴스 I/O 사용량을 알아내는건 그리 어렵지 않지만 성실성과 정밀한 조사가 필요하다.  EC2 관리 콘솔은 모니터링 툴을 제공하지만 프리 티어의 콘솔은 유료 콘솔만큼 세분화되어 있지 않다. 무료 인스턴스를 오분 간격으로 체크하는데 유료일 경우 일분 간격으로 사용량을 볼 수 있다.
 
또한 인스턴스 자체 내에서도 OS의 자체 툴을 사용해 I/O 사용량을 확인할 수 있다. 리눅스 운영체제에서 사용할 수 있는 방법 하나를 소개한다. 윈도우내에서는 초당 디스크 전송(Disk Transfer) 성능 카운터를 사용할 수 있다.
  
아마존 리포팅 시스템을 통해 서비스 요금을 추적할 수 있고 CSV/XML 포맷의 세부 내역도 다운로드 할 수 있다.
 
골치 아픈 일을 피하기 위해 엘라스틱 주소를 할당하라 : 엘라스틱 주소(elastic address)를 사용하면 크게 요금이 늘어나지도 않으면서 훨씬 시스템에 연결하기 쉬워진다. 원격 데스크톱(Remote Desktop) 연결 툴이 연결 주소와 암호를 모두 저장하기 때문에 특히 윈도우 인스턴스에서는 더 편리하다. 그렇지 않으면 사이트가 새로운 IP 주소로 프로비저닝할 때마다 완전히 새로운 원격 데스크톱 연결을 만들어야 한다.
 
클라우드에 아이템들을 백업하라 : 작업중인 서버는 언제 고장나서 초기화 될지 모른다. 귀찮은 재 업로드를 하는 대신 아마존 클라우드에 적절한 데이터를 미리 넣어두는게 좋다. EBS 스냅샷(EBS Snapshot)은 이 작업을 위한 아주 편리한 방법 중 하나지만 프리 티어는 1GB의 스냅샷 스토리지 밖에 얻을 수 없다. 따라서 대신 시스템에서 외부 드라이브로 백업을 수행하는 방식처럼 EBS 볼륨을 덧붙여서 직접 파일을 백업할 수 있다.
 
그럼 이제 무엇을 해야 하나 
프리 티어 AWS에 어느 정도 익숙해지면 아마도 제대로 써보고 싶은 생각이 더 들 될 것이다. 마이크로 인스턴스의 차상위 단계는 M1 스몰 인스턴스로, 메모리가 두 배이고 온전한 연산-유닛치의 CPU가 제공된다. 대부분의 M1 인스턴스의 사용요금은 월 15달러에서 시작한다.
 
만약 일주일 내내 24시간 실행되는 서버가 필요하지 않은 구두쇠라면 스팟 인스턴스(spot instance)를 고려해 보라. 스팟 인스턴스는 시간당 지불할 의사가 있는 최대 가격을 특정지어 연산 용적을 입찰하는 식이다. 만약 스팟 인스턴스의 현재 시간당 가격이 (수요와 공급에 따라 변동적으로) 그 설정액을 초과하면 인스턴스가 자동으로 작동을 중단한다.
 
마지막으로 만약 백업 서버같이 무언가 자동으로 실행하고 싶다면, 예약 인스턴스(reserved instance)를 활용하라. 예약 인스턴스를 쓰면 일년에서 삼년 사이의 특정 기간에 일회 요금을 내고 상당폭 할인된 시간당 사용료로 이용할 수 있다. 예를 들어 지금 시점에서 단일 M1 스콜 리눅스 인스턴스는 연 61달러에 시간당 3.4센트인데 이를 100% 활용한다고 추정할 경우 연 354달러 정도 되는 가격이다.
 
M1 스몰, 스팟 인스턴스, 예약 인스턴스 모두 상당히 저렴한 가격이다. 프리 티어를 졸업해 이들 중 하나를 선택할 때가 되면 아마존의 툴을 사용하면서 비용을 절약하는 상당한 실전 경험을 가진 자신을 발견할 것이다. editor@idg.co.kr
  



스팟 인스턴스는 입찰을 통해 비사용 용량으로 기계를 실행하게 해준다. 이는 적은 돈으로 간헐적으로 기계를 구동하는 유용한 방식이다.




ref : http://www.itworld.co.kr/print/81311


+ Recent posts