[뻘 생각] 왜 우리는 클라우드로 가야하는가?

해당 블로그는 KT olleh ucloud biz 의 지원을 받고 있습니다. 이 글에서의 클라우드는 개발자 입장에서의 클라우드 서버(IaaS, PaaS, SaaS, BaaS) 를 의미합니다. 최근에 직접적이지는 않지만, 클라우드를 왜 써야 하는지에 대한 질문을 종종 받습니다. 또한 클라우드가 싸다고 하는데 더 비싼거 같아요?, 성능도 떨어지는 것 같다라는 얘기도 자주 듣습니다. 그러면서 도대체 왜 클라우드를 써야 하는지에 대해 궁금해 합니다. 먼저 첫번째 대답은, 말하신게 전부 맞습니다라는 겁니다.

실제로 16G 메모리 정도를 사용하는 서버를 비교해보면 다음과 같습니다. Aws, KT UCloud, cloudv.kr, 통큰아이를 비교해봅니다.(무약정 월간 기준, 코어의 종류는 조금 다를 수 있습니다. ECC의 차이도 있겠지만 이건 일단 무시하겠습니다. 특히 통큰아이는 32GB 메모리 기준입니다. 환율은 2013/11/03 기준으로 1,061원입니다.)

|                 | 업체             | 가격         |사양

|클라우드|aws               |313,207    |2 core 17.1GB

|클라우드|KT UCloud  |261,000    |4 core 16 GB

|호스팅     |cloudv         |169,000     |8 core 16 GB

|호스팅     |통큰아이     |125,000     |4 core 32 GB

이렇게 보면, 도리어 웬지 가장 수치상 좋아보이는 통큰아이가 가장 싸보이고, aws나 KT UCloud는 2배이상 비쌉니다.  그리고 가상화를 기본적으로 사용하는 클라우드에서는 또한 실제 물리 장비에 비해서 I/O도 많이 떨어집니다. 즉, 비싼데, 더 안좋은 성능을 보여주는 겁니다.

그렇다면 클라우드를 왜 써야 하는가에 대한 생각이 들 것입니다. 먼저 결론부터 말하자면, 박민우님이 “이미 클라우드는 차와 같다. 차를 사용하는 것은 이미 부인할 수 없는 흐름이고, 차가 없어진다고 다시 마차를 사용하거나 할 수 없다.”  라고 말씀하신 것 처럼 이미 클라우드를 사용하는 것 자체는 거부할 수 없는 흐름으로 넘어가고 있습니다. 그러면 당연히… 도대체 왜? 라는 질문이 들것입니다.

또한 심심찮게 들려오는 클라우드의 장애 소식은 더더욱 클라우드를 쓰기를 불안하게 만들어줍니다. 그럼에도 불구하고, 우리는 클라우드를 사용해야 하고, 점점 더 사용하게 될 것입니다.  다음과 같은 상황들을 가정해 보도록 하겠습니다.(아주 극단적인 상황으로)

1. 소셜 쇼핑 처럼, 특정 시간대의 트래픽 패턴이 극단적으로 다를 때, 만약 오전 1시와 오후 1시의 트래픽이 100배가 차이가 난다면, 안정적인 서비스를 위해서 서버가 몇대가 필요할까요? 그리고 그 피크치가 딱 1시간 정도라면?(아니면 반반이라고 한다면?) 안정적인 서비스를 위해서는 장비가 맥시엄을 대비한 경우보다 더 필요합니다.(장애가 발생할 수도 있으니..) 하지만, 클라우드 서비스 이용한다면, 그 시점에만 맥시엄으로 늘려놓고, 그 외에는 다시 장비 수를 줄여둘 수 있습니다.

2. 차주 서비스를 위해서 100대의 서비스가 필요한데, 주문하니 한달이 걸린다고 합니다.  그럼 어떻게 해야할까요? 물론 이런 질문에 대해서는 큰 업체들은 “예측 가능”이 가장 중요하므로, 서비스의 규모를 파악해서 미리 주문을 한두달 전에 넣어두면 해결되지 않는냐? 라고 반문할 수 있습니다. 그러나, 누구도 완벽하게 트래픽을 계산할 수 없고, 반대로 꾸준히 지속된다라고 말하기는 어렵습니다. 최근의 모바일 게임은 그 변화가 더 커져서 동접이 높아서 100대 1000대를 사서 서비스를 했는데, 일년안에 동접이 확 떨어지면, 남은 장비들을 어떻게 해야할까요?

실제로 경험한 일 중에는, 장비 2대를 추가해야 하는데, IDC 상면에 한대 밖에 추가할 공간이 없어서, 전체 장비의 위치를 다 옮겨야 해서, 옮겨야 할 장비만큼을 새로 할당 받아서 다른 상면에 재 구축하고 원래 장비들을 반납한 적도 있었습니다. 이런 경우는 장비가 갑자기 전에 사용하던 만큼 필요하게 됩니다.

결국 여기서의 핵심은 “예측 가능” 과 “기민성”의 두 가지 키워드로 요약이 되게 됩니다.

즉 , 클라우드 서비스는 항상 정확할 수 없는 “예측 가능”과 빠르게 서비스에 필요할 때 언제든지 투입하거나 제거할 수 있는 “기민성”을 만족시켜주기 때문에, 점점 더 많이 사용하게 될 것이라고 생각합니다.

클라우드 서비스를 설계하게 되면(분산 서비스를 설계하게 되면) 결국 서버를 서버라기 보다는 하나의 컴포넌트로 취급하게 되고, 같은 여러개의 컴포넌트가 컴포넌트 풀에 존재하고, 이것이 사용불가능하게 되면, 다른 컴포넌트를 사용하게 되는 방식으로 구성이 되게 됩니다. 그래서, 클라우드 서비스 를 이용할때도, 기존에 서버에 장애가 있으면, 이를 점검해서 다시 투입하는 방식이 아니라, 새로운 장비를 할당받아서 서비스에 투입하고 기존 인스턴스를 지워버리면 됩니다. 이미지를 기반으로 쉽게 Scale out이 가능해지는 것이죠.

장애 측면에서 보더라도, 클라우드 서비스의 장애는 IDC의 장애와 비슷하지 않을가라고 생각합니다. 결국 DR(Disaster Recovery) 전략이 필요하고, 비용에 따라서, 적절하게 구축여부를 판단해야 될껍니다.

결국 클라우드 서비스를 사용하냐, 마냐 가 아니라, 어떻게 하면 잘 사용할 것인가가 정확한 질문이라고 생각합니다. 물론 클라우드 서비스가 항상 답은 아니고, I/O가 높은 서비스는 가상화 클라우드에서는 좋은 성능을 발휘하기도 힘듭니다.(아마존의 EMR도 가상 서비스 위에서 도는 것이 아니라, 물리 Hadoop 풀을 충분히 갖춰두고 여기서 서비스 하는 것으로 알고 있습니다.)

그리고 PaaS, SaaS, BaaS 등으로 발전해 나가면서, 클라우드 서비스의 조합만으로도 쉽게 서비스 구성이 가능해져서, Time To Market 을 지키는 게 더 쉬워질 것입니다. (다만 여기서, 여러 클라우드 서비스를 이용하면, 반대로 각각의 클라우드 서비스에 대한 장애가 취약해진다는 단점이 있긴 합니다만… 이런 여부에 대한 대응책을 미리 생각해 두는 것이 필요합니다.)

About these ads
By charsyam Posted in Cloud

One comment on “[뻘 생각] 왜 우리는 클라우드로 가야하는가?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s