포럼
AWS를 중심으로 한 클라우드와 IDC의 비교에 대한 소고
2015.03.28 00:41
살펴보면 살펴볼 수록, AWS(Amazon Web Services)는 재미있는 서비스인 것 같습니다.
특히 올해 3/4분기(빠르면 8월경)에 한국에도 리전을 추가한다더군요. 4월에는 대규모 서밋도 한다던데, 잠재 유저로써 한번 가보고 싶을 정도입니다. (아무나 갈 순 없겠죠?)
여하튼 최근 며칠동안 AWS에 대한 여러 인터뷰나 자료들을 서칭하면서 생각한 것들입니다.
1. 글로벌 타겟 서비스로는 무조건 AWS가 유리
아무래도 국내 IDC들은 해외 트래픽 자체에 대해 상한선을 걸기도 하고, 높은 수준의 과금을 거는 경우도 많기때문에 비용면에서도 그렇고 레이턴시 면에서도 불리하다는건 당연합니다.
이런 단점을 cloudflare같은 매력적인 CDN을 사용해 보완할 수도 있겠지만 cloudflare를 사용하는 국내 서비스들의 대부분이 서울이 아닌 홍콩이나 도쿄엣지로 연결시키는걸 보면 이건 좀 아니다 싶을 때가 많습니다.
따라서 타겟이 글로벌이라면 유료이긴 해도 저렴한 비용으로 글로벌 CDN을 구축할 수 있는 AWS가 굉장히 유리할 것 같습니다.
2. 오토 스케일링을 통한 확장성은 매력적
클라우드 자체가 하드웨어를 요구되는 수준 만큼만 리소스를 투입할 수 있다는 데에 장점이 있고, 트래픽 변동폭이 큰 서비스에는 특히 이런 부분이 매력적인 것 같습니다.
예를 들어 Lezhin의 사례처럼 특정 시간대에만 방문자가 폭증하는 서비스는 일반적인 하드웨어 자원만 갖춘 뒤에 피크 타임때만 클라우드로 추가 자원을 빠르게 투입함으로써 비용 절감과 사용자 만족 동시에 해결이 가능하겠죠.
다만 이 경우 스냅샷과 로드밸런서 사용이 필수적이고, VM(인스턴스 서버)을 추가하고 다시 축소시키는 과정에서 CPU 로드나 RAM 점유율이 아니라 쓰레드 유닛 수 등 좀 더 정교한 컨트롤을 적용해야 효과적으로 자원을 배치하고 관리하는 것이 가능할 것 같습니다.
특히 몇 분 간격으로 vm들의 health를 파악하고 적절하게 분산하도록 도와주는 구성체계가 완성되어 있는 것이 중요하겠죠.
(개인적으론 스케일링 업을 VM을 추가하는게 아니라, VM의 자원을 늘려주면 더 좋지 않나 싶은데 기술적으로 불가능한지 잘 모르겠습니다. 예를 들어 1CORE를 사용하다 부하가 발생하면 2CORE, 4CORE로 VM의 성능을 올리면 좋을탠데 말이에요.)
3. AWS의 다양한 요금 옵션 계약은 만족스러운 부분
AWS는 크게 세 종류의 과금 체계가 있는데 실시간으로 하드웨어 자원을 구입해 사용할 수 있는 온 디멘드 인스턴스, 약정 할인 프로그램인 예약 인스턴스, 아마존이 가지고 있는 잉여 자원을 입찰해 사용할 수 있는 스팟 인스턴스가 그것입니다.
특히 온 디멘드 인스턴스에 비하면 국내 클라우드에 비해 AWS가 비용적인 면에서 매력적이지는 않다고 판단합니다.
다만 상시로 구동시켜야 하는 최소한의 자원은 예약 인스턴스를 계약해서 적용하고, 로드밸런서와 오토 스케일링을 결합해 필요한 만큼의 추가 자원을 스팟 인스턴스를 활용하면 가격적인 면에서 매력이 있지 않나 싶습니다.
예를 들어, 1vCPU와 1GiB의 메모리를 제공하는 아마존 t2.micro 인스턴스의 경우 도쿄 리전을 기준으로 시간당 $0.02, 월간 14.4USD가 필요합니다. 하지만 1년 약정의 예약 인스턴스를 사용하면 선결제 금액 없이 시간당 $0.015, 월간 10.95USD로 25% 절감한 금액에 동일한 자원을 예약할 수 있습니다. 여기에 소정의 금액을 선결제하거나, 약정을 3년으로 늘리면 할인 폭은 더 커집니다.
가장 매력있는 스팟 인스턴스를 사용하면 같은 사양의 비용은 시간당 $0.003, 월간 2.16USD의 굉장히 합리적인 금액이 계산됩니다. 물론 스팟 인스턴스는 아마존이 보유하고 있는 리소스의 상황에 따라 금액이 달라지고, 잔여 자원이 없으면 높은 시간당 금액을 '입찰'해도 인스턴스를 배분받지 못할 수도 있다고 합니다.
하지만 아무리 높은 금액을 입찰해도 스팟 인스턴스를 받지 못하는 상황이 오더라도, 이 땐 온 디멘드 인스턴스를 활용하는 식으로 서비스 중단이나 심각한 과부하라는 최악의 시나리오는 피할 수 있지 않나 싶습니다.
4. AWS의 지나치게 복잡한 과금 체계는 난감
지금까지 AWS의 여러 장점들을 거론했다면, 지금부터는 단점들 위주로 느낀 바를 적겠습니다.
가장 큰 문제는 지나칠 정도로 복잡한 과금 체계입니다. AWS는 CPU와 RAM자원인 '인스턴스'와 인스턴스가 기본 저장 공간을 가지고 있지 않을 경우 스토리지(SSD or HDD)인 EBS 또는 S3를 사용해야 합니다.
여기에 AWS의 강점인 오토 스케일링과 CDN을 활용하기 위해 필요한 몇 가지의 부가 서비스 요금까지 계산하면 IDC나 현재의 클라우드 비용에 비해 AWS 계약시 어느 정도의 예산이 필요한지에 대한 시뮬레이션이 참 복잡합니다.
AWS에서도 여러가지 요금 계산기나 요금 절감 페이지를 안내하고 있기는 하지만, 서버 자원과 대역폭만 결정해서 계산하면 되는 국내 클라우드나 IDC 입주에 비해서 신경써야 할 점이 늘어난 것은 사실입니다.
5-1. 클라우드는 정말 IDC에 비해 저렴할까?
많은 스타트업이나 소규모 퍼블리셔의 공통된 고민은 비용 절감입니다. 클라우드가 하드웨어를 구성할 필요가 없으니 초기 비용이 절감된다는 사실 자체는 인지하고 있지만, 우리나라에서도 IDC에 입주시킨 물리 서버를 사용하더라도 '영구 임대형'이나 '분납 구매형'을 활용하면 엔트리급 서버 정도는 선납금 없이도 충분히 구성이 가능합니다.
결국 초기 비용이 아닌 지속적으로 발생할 유지비용이 관건입니다. 여기서 간단한 시뮬레이션을 해보겠습니다.
일 평균 방문자수 4천명, 일 평균 PV 15만 건의 사진 커뮤니티가 있다고 가정합시다. 스토리지는 OS레벨과 HTML 등 공통 파일에서 30GB, DB에서 10GB, 일반 첨부파일들에서 200GB를 사용한다고 하겠습니다. 매일 평균 25GB의 트래픽이 발생한다고 보겠습니다.
위에서 언급한 수준의 서비스를 처리하려면 제온 1230수준의 8CORE CPU, 8GB 정도의 램을 갖춘 하나의 블레이드 서버가 적당합니다. 물론 최적화에 따라 차이가 있습니다. cafe24에서 비슷한 수준의 스펙을 가진 서버호스팅을 보니, 월 8만 5천원(VAT 별도)의 요금이 발생합니다. 트래픽은 10Mbps급의 밴드 계약이므로, 25GB/day의 전송량은 무난히 처리하고, 500GB의 듀얼 HDD가 적용되어 백업까지 여유롭습니다.
클라우드를 사용해보겠습니다. 클라우드의 장점은 서버 분산이 용이하다는 점이니 WEB와 DB를 분리해보죠. 국내 호스팅업체 중 하나인 cloudv의 2core, 2GB 메모리 상품 두 개를 계약한 다음, DB용 서버에 메모리를 2GB 추가하겠습니다. 7.6만원 + 1만원이네요. 100GB의 기본 스토리지를 제공하므로 추가 스토리지 100GB를 추가로 계약하면 2만원. 합쳐서 9만 6천원의 월간 비용이 발생합니다. 트래픽은 월간 국내 700GB, 해외 30GB를 기본으로 제공합니다.
마지막으로 AWS입니다. 지금부터 가격은 모두 도쿄 리전 기준입니다. 1코어와 2GB의 메모리를 제공하는 WEB용 상품 하나를 1년 계약으로 결제하면 매월 10.95USD의 비용입니다. 이 정도 성능으로는 부족하겠죠. 1코어의 CPU와 1GB의 메모리를 제공하는 t1 인스턴스를 '혼잡 시간'에 매일 6시간씩 추가한다고 가정하고, '최고 혼잡 시간'에는 t1 인스턴스를 2개씩 6시간 추가한다고 가정하겠습니다. 요금은 당연히 저렴한 스팟 인스턴스입니다. 시간당 0.0031USD, 1.674USD군요. 웹 서버용 자원 비용은 총 13USD 내외입니다. (스팟 인스턴스는 상황에 따라 가격에 차이가 있어 약간 반올림하였습니다)
다음은 스토리지 공간입니다. AWS의 t 시리즈 인스턴스는 기본 용량을 제공하지 않으므로 EBS라는 별도의 블록을 구입해 마운트시켜야 합니다. SSD는 GB당 0.12, HDD는 GB당 0.08로 계산되네요. SSD는 3.6USD, HDD는 16USD입니다.
마지막으로 DB입니다. 2개의 CORE와 4GB의 메모리를 지원하는 상품을 1년 계약하면 $340의 선납 비용, 시간당 $0.038이 적용됩니다. 월간 27.36USD + 선납 금액의 월 평균 환산액을 추가하면 55.69USD입니다. 여기에 10GB의 DB 스토리지 사용료 $1.38을 더하면 총액 57.07 USD입니다.
여기까지의 비용을 합치면 89.67USD입니다. 이정도면 괜찮다고 생각할 수도 있지만, 문제는 트래픽 요금입니다. 적어도 수백기가에서 많게는 TB단위까지 '무료 전송량'을 제공하는 국내 클라우드와는 달리, AWS는 무료 전송량이 없습니다. 초과분은 10TB/월까지 GB당 0.14USD가 적용됩니다. 일 25GB는 월간 750GB, 전송 요금은 105USD입니다.
이렇게 계산해보니 총 194.67USD가 적용됩니다. 기준환율 1,106.8/USD를 적용하면 21만 5460원입니다. 여기에 CDN 적용을 위한 비용, 로드밸런서 사용 비용, EBS(스토리지)의 속도 향상을 위한 비용 등..을 더해야겠죠. 매력있는 금액은 아닙니다.
5-2. 클라우드는 단순한 호스팅이 아니다
'간략한 시뮬레이션' 이라고 전재한 것처럼, 위 자료는 아주 단편적인 사례를 기준으로 시뮬레이션된 것이므로 설득력있는 근거는 아닙니다.
그럼에도 불구하고 알 수 있었던 것은, 물리 서버 자원을 벗어날 수록(IDC -> 클라우드), 한국 클라우드가 아닌 AWS를 선택할 수록 요금이 절약되는 것이 아니라 오히려 더 많은 요금이 발생한다는 것입니다. 여기에는 더 많은 RAM을 필요하거나, 더 많은 스토리지가 필요할 때 확연하게 느껴집니다.
클라우드의 장점은 비용의 절감이 아닙니다. 물론 앞서 언급한 Lezhin처럼 짧은 몇 시간대에만 트래픽이 집중적으로 몰려드는 경우는 상황에 따라 예외가 있겠지만, 하루 종일 대체로 비슷한 수준의 부하가 발생하고, 장기간 지속적으로 유지할 서비스라면 하드웨어를 구입하거나 임대해서 IDC에 입주시켜 사용하는 것이 저렴합니다.
그럼에도 불구하고 클라우드를 주목해야 하는 것은 무엇보다 유연한 확장성입니다. 필요한 시기에 필요한 만큼 아주 빠르게 자원을 배치하고, 수요가 줄어들면 삭감하는 것이 자유롭습니다. 늘리기는 쉬워도 줄이기는 어려운 하드웨어(서버) 운영에 비해 매력적이지요.
가장 중요한 것은 서버를 IDC에 입주시키는 것과 클라우드를 이용하는 것 중 어떤 것도 우월한 것은 없으며, 서비스의 특성에 따라 활용해야 한다는 것입니다. (둘 다 활용하는 것도 가능합니다.)
6. 스타트업에게 과연 클라우드가 매력적일까?
지난 2011년 페이스북의 브렛 테일러 CTO는 인터뷰에서 사업을 하면서 했던 가장 큰 실수로 서버를 직접 구매했다는 것을 꼽았습니다. 이유는 간단합니다. 비용을 줄일 수 있긴 해도, 시스템을 직접 유지하는 데에 너무 큰 '품'을 들여야 했다는 것입니다. 차라리 그 시간에 개발에 전념하는 것이 더 좋았다는 것이죠. 아마 한번쯤 들어보셨을 이야기라고 생각합니다.
* 브렛 테일러는 페이스북의 CTO이기 전에 프렌드피드라는 스타트업을 운영하던 CEO였습니다.
충분히 설득력있는 이야기라고 생각하지만, 이 이야기는 어디까지나 미국인이 자신의 경험을 설명했다는 점에 주목해야 합니다.
우리나라는 엔트리급 서비스의 인프라 구축에 많은 비용과 시간이 필요하지 않습니다. 하드웨어는 임대해서 사용해 초기 비용이 발생하지도 않고, 임대 기간 동안의 A/S는 호스팅 업체가 보증하며 장애가 발생하면 아주 빠른 시간 내에 대응하는 곳들이 많습니다. 게다가 기술 지원도 굉장히 저렴한 비용으로 가능합니다. 시스템을 직접 유지할 필요도 없고, 새벽에 장애가 생겨서 IDC까지 차를 몰고 가야할 필요도 없다는 것입니다.
거듭 말하고 싶은 것은 클라우드의 장점은 상시 운용되는 서비스의 비용 절감이 아니라 유연한 확장성이라는 것입니다. 따라서 대규모 이벤트 등으로 짧은 시간에 순식간에 트래픽이 증가하거나, 놀랍도록 빠르게 성장하는 서비스에는 클라우드가 매력적입니다. 하지만 일정한 궤도에 도달한 이후 큰 추이 변동이 없다면 차라리 IDC에 직접 입주시키는 것이 더 매력있는 선택이 될 수 있습니다.
0. 용어 설명과 보충
* 리전: AWS에서 장비가 위치한 IDC를 의미합니다. 아시아에는 도쿄와 싱가포르에 있고 미국과 EU의 몇몇 지역에 리전이 있습니다.
* 엣지: CDN에서 '오리지널 데이터'를 받아와 보관하고 있는 장소입니다. 서울을 비롯해 전 세계 여러 지역에 퍼져있고, 사용자(USER)에서 가장 가까운 곳에 위치한 엣지에서 데이터를 받아옴으로써 반응 속도를 개선합니다.
* 인스턴스: AWS에서 말하는 VM입니다. '가상화 서버(유닛)' 정도로 번역할 수 있습니다.
댓글 4
-
기진곰
2015.03.28 11:12
-
GG
2015.03.28 14:46
저랑 같은 생각하시는 분이 장문의 글을 써 주셨군요.
국내 서버호스팅 가격이 점점 내려가는 추세인것 같습니다.
아마존이 국내 IDC 를 임대해서 서비스 하려고 하는지는 잘 모르겠으나 단가를 맞출 수 있을지가 의문입니다.
뭐 그래도 제가 봐온바로는 왠만한 업체들은 귀찮아서 40-50만원짜리 서버 호스팅+관리 서비스 비용을 그냥 지출하는 것으로 알고 있습니다.
사실 홈페이지 하나 돌리는데도 말이죠..
서버호스팅에 가성비 따지는 사람도 있는가 하면 안정적인 서비스를 위한다며 전문가 기준으로는 터무니없이 비싼 서버 호스팅을 사용하는 사람들도 많다는 데에 놀랍니다.
:)
-
Canto
2015.03.28 23:00
저도 기업, 커뮤니티등의 웹사이트의 경우에는 클라우드시스템이 필요없다고 봅니다.
말씀해주신대로 클라우드시스템의 장점은 간편한 서버시스템의 구축과 유연한 확장성인데..
고정적인 트래픽과 고정적인 시스템자원 사용 발생이 대부분인 일반적인 커뮤니티 사이트들에서는 필요없는 것이죠..
개인적으로 AWS등의 클라우드 서비스가 가장 빛을 발휘하는 용도는 게임서버 용도라고 생각합니다.
특히 요즘의 스마트폰 게임들은 게임수명이 짧기 때문에 짧은 기간안에 많은 유저들을 유치하고 과금을 유도하기 위해 시간제 이벤트를 많이 열고 있는데.. 해당 이벤트가 진행되는 시간에만 서버를 증설하는 방식으로 사용하기 때문에 클라우드 서비스가 가장 적합합니다.
그 이외라면 티켓팅 서비스나 커머스 서비스등 순간 접속자가 폭주(?)하는 서비스를 운영하는 업체들 정도겠네요..
해외에서 보고있자면 한국의 경우에는 정말 서버호스팅등 호스팅서비스의 가격이 저렴한 편이고 종류도 세분화 되어있어서...
클라우드시스템의 필요성이 크지 않은 것일 수도 있다고 생각합니다.
-
NOVCUBE
2015.03.29 00:40
굳이 클라우드가 아니더라도 해외기준으로는 VPS Reseller 를 이용하는 방법도 있습니다.
일정한 하드용량, 트래픽, 램, ip 를 할당을 받아 그 범위 내에서 vps를 생성 또는 삭제할수 있습니다.
게다가 cloud보다는 가격이 저렴한 경우가 많습니다.
다만 vps 자체의 하드용량이나 램 등을 확장하는 기능이 없을수도 있고
하드 트래픽 메모리 ip 등을 적게주는 경우도 존재합니다.
국내의 경우는 이런 방식의 vps reseller 서비스가 없는걸로 알고있구요.
해외의 경우에는 찾기가 어려워서 그렇지 몇군데 있긴 있습니다.
한군데는 신규가입을 안받고있고 한군데는 리셀러라기에는 생성가능한 vm이 2~3개뿐인게 단점이더군요.
주소는 http://volumedrive.com/vdrive/?a=svm 입니다.
엄청난 유연함과 확장성이 필요한 서비스라면 AWS가 적합하다는 결론에 동의합니다. 예를 들어 게임 어플리케이션을 개발하는 스타트업이라면 사용자 수가 갑자기 수천 배로 늘어났다가 또 갑자기 빠져나갈 수도 있죠. 일시적인 이벤트도 마찬가지고요. 이런 경우에는 AWS처럼 인스턴스를 사실상 무제한으로 생성해 사용할 수 있는 서비스가 좋습니다.
거꾸로 생각해 보면 정말로 AWS가 필요한 서비스는 별로 없다는 결론도 나옵니다. 일반적인 회원제 커뮤니티 사이트, 기업 홈페이지 등은 업무시간 또는 회원들이 활발하게 활동하는 저녁시간에 부하가 다소 높아지긴 하지만, 서버를 증설해야 할 정도로 변동폭이 크지는 않잖아요. 그냥 최대 부하를 기준으로 넉넉한 서버를 준비해 두기만 하면 대개 AWS보다 저렴한 가격에 더 좋은 성능을 누릴 수 있죠. 말씀하신 것처럼 AWS는 가격 메리트는 그다지 없거든요. AWS를 쓰는데 고정된 숫자의 인스턴스가 한달 넘게 돌아가고 있다면 그건 그냥 허공에 돈을 버리는 거나 마찬가지입니다. 그래서 딱히 대단한 확장성이 필요하지 않은 서비스라면 AWS보다는 그냥 IDC에서 서버를 임대해 쓰는 것이 낫다는 님의 제안에도 100% 동의합니다.
그러나 글로벌 타겟 서비스라면 무조건 AWS가 유리하다는 주장에는 동의하지 않습니다. 해외 사용자들을 타겟으로 한다 해도 유연한 확장성이 얼마나 필요한가에 따라 구분이 필요합니다. 많이 유연해야 한다면 물론 AWS입니다. 그러나 글로벌 서비스라도 그냥 서버 몇 대 임대해 놓고 사용하는 것이 훨씬 가성비가 좋은 경우가 대부분입니다. 단, 말씀하신 것처럼 국내 IDC는 해외망 과금체계가 별로 좋지 못하기 때문에, 해외 IDC를 선택해야겠죠.
안타까운 것은, AWS 외에는 국내에 잘 알려진 해외 서버/가상서버/클라우드 호스팅 업체가 거의 없다는 점입니다. 그래서 "해외는 무조건 AWS"라는 공식이 나와 버리고, 이 잘못된 공식 때문에 수많은 국내 사업자들이 해외 서버 구축에 불필요한 시간과 비용을 많이 투자하고 있습니다. 물론 현실적으로 해외 IDC에 서버를 코로케이션하기는 어렵습니다. 그러나 님의 글에서도 국내 IDC에 서버를 코로케이션하기보다는 그냥 임대하는 방법을 언급하고 있네요. 해외 IDC도 마찬가지입니다. 서버 몇 대 임대해서 쓰면 됩니다. 하드웨어는 IDC에서 보증해 주고, 장애 대응도 매우 빠릅니다. 영어가 문제라고요? 그건 AWS도 똑같습니다.
IBM Softlayer 같은 곳은 서버임대가 주력사업인데도 거의 클라우드를 방불케 하는 자동화 시스템이 갖추어져 있어서 온라인상으로 거의 모든 작업이 가능합니다. 아니면 국내에도 어느 정도 알려진 Linode, Digital Ocean 등의 가상서버 호스팅을 이용해도 되고요. 양쪽 모두 AWS보다 가성비도 높고, 어느 정도의 확장성도 쉽게 확보할 수 있습니다. 거기다 CloudFlare까지 붙이면 한국에선 좀 느리더라도 해외 사용자들은 아무 불만이 없겠죠. 덕분에 AWS를 사용할 필요를 거의 느끼지 못한다는 스타트업들이 미국에는 점점 늘어나고 있습니다. 우리나라 스타트업들도 "해외 = AWS"라는 공식에만 매달리지 말고 좀더 폭넓은 선택을 할 수 있으면 좋겠습니다.