Study/Software Engineering

클라우드의 이해와 활용 (Cloud; Cloud Computing; Cloud Services)

빨간당무 2013. 7. 10. 02:27
  • 클라우드의 이해와 활용 (AWS A-Z)

※ 미리 말씀 드리자면 이 글을 초보 개발자 분들을 위한 글이니, 글 후반의 내용에 대해서 상처받는 태클은 미워합니다.

※ 이 글은  적은 비용으로 창업(서버구축)하려고 하는 개발자 관점에서 작성된 글입니다. 


Cloud를 말할 때 함께 거론되는 것? IaaS, PaaS, SaaS (각각, 아이아쓰, 파쓰, 사쓰) (한글Wiki, 영문Wiki)

※ reference : http://www.silverlighthack.com/image.axd?picture=2011%2F2%2FCloudServiceHierarchy.png


ko.wikipedia.com에서 설명하는 IaaS, PaaS, SaaS는 다음과 같다. 


hostway.co.kr에서 설명하는 IaaS, PaaS, SaaS는 다음과 같다. [Link]


정말 단순하게 말하면 각 예는 IaaS는 Amazon의 EC2와 같은 서비스이고, PaaS는 Google AppEngine과 같은 서비스이고, SaaS는 Gmail과 같은 서비스라고 봐도 무방하다. (물론 현재 아마존의 다른 서비스까지 하게 되면 PaaS에 가깝다.)


  • 클라우드 컴퓨팅(Cloud computing)을 이용하는 장단점을 살펴 보자. [Link]

  • 자 위에는 남들도 다 이야기 하는 부분이고 이제 적은 비용으로 창업(서버구축)하려고 하는 개발자 관점에서 클라우드 서비스의 특성을 보자. 


비용적인 면에서는 결코 싸지 많은 않다. 본인이 원하는 서비스의 이용 유저수에 따른 H/W 사용량이 명확하다면 직접 구축하는게 좋다. 하지만? 초기 서비스는 작은 유저수로 유지되다가 성공하게되면 많은 유저 수가 들어올 것이고, 실패하게 되면 그대로 망하게 될 것이다. 물론 본인이 서버 설치 등등의 작업을 직접 다해야 인건비라도 뺄 것이다. 


또한 사용자가 얼마나 될지 예측 할 수 있는가? 그리고 예측 된다 하더라고 처음 부터 H/W를 충분하게 구매할 것인가? 적은 비용으로 창업하고자 한다면 초기 고가의 H/W의 비용(구매, 설치 및 구축 비용 등)은 매우 큰 부담일 것이다. 그리고 성공한다면 좋겠지만, 사용자 수가 증가함에 따라 추가 장비를 구매했는데 그 다음 달에 망한다면? 생각도 하기 싫을 것이다. 


이런 면에서 클라우드 서비스는 장점이 있다. 초기 몇번의 온라인 명령만으로 서버를 구축 및 설치가 완료 된다. 또한 사용자가 늘어남에 따라 CPU, DB, Network의 사용량이 증가하면 그에 따른 비용을 그 다음 달에 지불하면 된다. 서비스가 망하면? 몇번의 명령으로 서비스를 한순간에 내리고 추가 비용을 막을 수도 있다. 얼마나 간단한가?


또한 국내에 서버를 구축한다면 쉬울지 모르나, 해외 서비스를 가정해 보자. 실제 외국에 서버를 구축하려면 해당 국가의 법을 알아야 하고 인프라에 대해서도 알아야 하며 비행기 타고 해당 지역에 가서 직접 진행하거나 혹은 고비용의 엔지니어를 사서 진행해야 할 것이다. 클라우드 서비스? 아마존의 AWS를 예로 들자면 해당 서비스하려는 지역과 가까운 곳을 지정해서 서버를 열면 된다. 


자 자신의 서비스가 성공적으로 많은 수의 사용자들이 이용하게 되었다고 생각하자. 그에 따라 서비스를 안정적으로 진행하기 위해 H/W를 추가로 구매 및 설치 및 등등 !@#$% 작업을 수행해야 할 것이다. 본인이 직접? 아님 고비용의 해당 지역의 엔지니어? 비용이야 어찌되었든 바로 즉시 H/W를 확장할 수 없을 것이다. 


이러한 점이 문제다. 서비스는 빌빌대는데 확장하자니 비용도 많이 들어가고 시간은 시간대로 걸리고. 막상 어느 정도 H/W를 늘려야 될지 예측하기도 어렵다. 적당히? 아님 나중에 또 확장하지 않도록 크게? 어떤걸 결정할지 모르겠다. 하여간 클라우드 서비스를 이용한다면? 몇번의 명령으로 손쉽게 H/W를 늘릴수 있다. 매우 적은 시간 동안에 말이다. 


당장 게임을 즐기는 유저들이 서버다운에 대해 성토할 때 서버를 확장중이니 기다리세요 라고 말하며 유저가 떠나도록 하기 보단 즉시 서버를 늘려서 서비스의 품질을 올리는 것이다. 놀랍지 않은가? 난 좀 놀랐는데. ;-)


물론 난 현업에 있지 않고 주워들은 지식이라 이 글을 보고 특정 케이스에 적용하여 아닌데? 라고 말하면 할말은 없지만, 가상의 게임 서비스를 예로 들어서 클라우드를 이용한 것과 이용하지 않은 것을 비교해 보도록 하겠다. 


A라는 업체가 B라는 게임을 런칭하였다. 전통적인 방법을 이용하는 것과 클라우드를 이용하는 것의 차이점을 생각해 보자.


 Case

 전통적인 H/W 확장

 클라우드 서비스 이용 

 처음 게임을 개발 할 때 

 최소한의 C/S 환경을 구축하기 위해 개발자용 컴퓨터 한대와 서버용 컴퓨터를 한대 설치 

 개발자를 위한 컴퓨터 한대와 서버는 클라우드 서비스를 이용. 물론 꾸준히 비용이 나감 (AWS의 경우 프리티어를 쓰면 1년이 무료가 될수도 있다.)

 게임을 Close-test를 할 때

 테스트를 위해 설치했던 1대의 서버를 통해 다량의 유저가 접속하여 정상적인 서비스가 어려움. 잠시 테스트를 중단하고 몇일 뒤에 필요한 만큼의 서버를 일부 확장하였다. 물론 H/W와 설치 비용이 추가 

 테스트를 위해 설정했던 클라우드 서비스가 다량의 유저가 접속하면서 정상적인 서비스가 어려움. 잠시 테스트를 몇시간 뒤에 필요한 만큼의 서버를 일부 확장하였다. 물론 확장한 만큼 꾸준히 비용이 나감

 게임을 Open-test할 때, 
 게임이 대박 났을 때

 마켓팅의 성공으로 인해 많은 유저들이 기대를 갖고 대량의 유저가 접속 그에 따라 정상적인 서비스가 어려움. 위 상황 처럼 잠시 테스트를 중단하고 몇일 뒤에 필요한 만큼의 서버를 일부 확장하였다. 물론 H/W와 설치 비용이 추가

 마켓팅의 성공으로 인해 많은 유저들이 기대를 갖고 대량의 유저가 접속 그에 따라 정상적인 서비스가 어려움. 잠시 테스트를 중단하고 몇시간 뒤에 필요한 만큼의 서버를 일부 확장하였다. 물론 확장한 만큼 꾸준히 비용이 나감

 게임이 망했을 때

 Open-test의 반짝 관심은 날아가고 유저는 떠났다. 매우 일부 유저만이 남아서 서비스를 이용할 뿐이다. H/W 자원이 남아서 일부 컴퓨터를 다운 시켜 전기값이라도 아껴보려 한다. 

 Open-test의 반짝 관심은 날아가고 유저는 떠났다. 매우 일부 유저만이 남아서 서비스를 이용할 뿐이다. 클라우드 서비스에 간단한 명령으로 일부 요청 받던 서비스를 종료하여 추가 비용이 나가지 않도록 하였다.

 천재지변 (정전사태)

 서비스를 잘하다가 특정 지역에 대단위 정전 사태로 인해 우리 서버가 죽었다. 고로 우리 서비스는 제공이 불가능하게 되었다. 사용자들이 성토하지만 그저 손가락만 빨며 기다릴 뿐이다.  

 서비스를 잘하다가 특정 지역에 대단위 정전 사태로 인해 특정 지역의 우리 서버가 죽었지만, 다른 지역에 클론화된 우리 서버가 존재하기 때문에 네트워크는 다소 느리지만 안정적인 서비스는 가능하다.

 천재지변 (정전사태) 이후

 저번 천재지변 사태 이후로 한쪽 지역의 서버가 죽더라도 안정적인 서비스를 하기 위해 기존에 구축한 H/W에 준하는 수준의 시스템을 다른 지역에 구축하였다. 그리고 사장한테 추가 비용이 들어갔다고 한소리 들었다.  

 ... 그냥 티어가 높은 곳으로 지정할 뿐. 
 해외 런칭 할 때

 ... 국내에서 했던 것 처럼 해외에서도 Open-test 때와 마찬가지로 진행.

 ... 서비스 하려는 지역에 가까운 지역 서버를 연결하여 확장.


물론 위 내용이 다소 편파적일 수 있다. 내가 생각지 못한 부분도 있을 것이다. 혹은 정말 모든걸 컨트롤 하는 어떤 분께서는 모든 H/W의 비용과 서비스의 요구를 예측해서 최적화된 비용을 산출 할 수 있겠지만, 그래도 표 안에 있는 굵게 처리한 빠른 시간 적인 부분과 안정적인 서비스 부분은 모두들 납득할 것이다. 또한 이 글은 클라우드 서비스를 안내하는 글이라는 점을 생각해 주시기 바란다.


참고 동영상을 보면 왜 써야 하는지 위에 거론 했던 내용들을 되새겨 보시기 바랍니다.

※ reference : http://aws.amazon.com/ko/what-is-cloud-computing/?sc_ichannel=HA&sc_ipage=homepage&sc_iplace=left_column&sc_icampaigntype=general_info&sc_icampaign=ha_what_is_cloud_computing_video%20&sc_icountry=US#whatIs


클라우드 서비스에 대해서는 이정도만 정리하도록 하고 아마존 AWS (Amazon Web Services)의 실재 서비스를 하는 과정을 살펴 보도록 하자. [Link] [미연결됨-추후작성]


※ SW Maestro의 배권한 멘토님께 감사드립니다.