본문 바로가기

프로그래밍/Security, Network

클라우드 컴퓨팅(Cloud Computing)이란

위키백과 , 나무위키


클라우드(Cloud)의 의미는 컴퓨터 통신망이 구름과 같은 것에 싸여 안이 보이지 않고, 일반 사용자는 이 복잡한 내부를 굳이 알 필요도 없이 어디에서나 구름 속으로 손을 집어넣어 자기가 원하는 작업을 할 수 있다는 것이다. 이른바 동일한 체험을, 인터넷이 연결된 어디에서나 보장해주는 것.


인터넷 상의 유틸리티 데이터 서버에 프로그램을 두고 그때 그때 컴퓨터나 휴대폰 등에 불러와서 사용하는 웹에 기반한 소프트웨어 서비스이다.


클라우드 컴퓨팅의 정의는 개인이 가진 단말기를 통해서는 주로 입/출력 작업만 이루어지고, 정보분석 및 처리, 저장, 관리, 유통 등의 작업은 클라우드라고 불리는 제3의 공간에서 이루어지는 컴퓨팅 시스템 형태라고 할 수 있다.


  • 클라우드 컴퓨팅은 IT 관련된 기능들이 서비스 형태로 제공되는 컴퓨팅 스타일이다.
  • 사용자들은 지원하는 기술 인프라스트럭처에 대한 전문 지식이 없거나 제어할 줄 몰라도 인터넷으로부터 서비스를 이용할 수 있다.
  • IEEE 에서는 "정보가 인터넷 상의 서버에 영구적으로 저장되고 데스크탑이나 테이블 컴퓨터, 노트북, 벽걸이 컴퓨터, 휴대용 기기 등과 같은 클라이언트에는 일시적으로 보관되는 패러다임이다." 라고 말한다.
일반적인 클라우드 컴퓨팅에서 소프트웨어와 데이터는 서버에 저장된다.
  • 클라우드 컴퓨팅은 웹 2.0SaaS(software as a service)와 같이 최근 잘 알려진 기술 경향들과 연관성을 가지는 일반화된 개념이다.
이들 개념들의 공통점은 사용자들의 컴퓨팅 요구를 만족시키기 위해 인터넷을 이용한다는 사실이다. 예로서 구글 앱스(Google Apps)가 있다.

이 외에도 IaaS, PaaS 등의 개념이 있다.

  • IaaS(Infrastructure as a Service): 서비스로써의 인프라라는 뜻으로, AWS에서 제공하는 EC2가 대표적인 예이다. 이는 단순히 서버 등의 자원을 제공해 주면서 사용자가 디바이스에 제약없이 데이터에 접근할 수 있도록 해준다.
  • PaaS(Platform as a Service): 서비스로써의 플랫폼이라는 뜻으로, 사용자(개발자)가 소프트웨어 개발을 할 수 있는 환경을 제공해 준다. 구글의 APP 엔진, Heroku 등이 대표적인 예다.
  • SaaS(Software as a Service): 서비스로써의 소프트웨어라는 뜻으로, drop box, google docs 등 과 같은 것을 말한다.



클라우드 컴퓨팅의 개념은 1965년 미국의 컴퓨터 학자인 존 매카시가 "컴퓨팅 환경은 공공 시설을 쓰는 것과도 같을 것" 이라는 개념을 제시한데에서 유래하였다. 1993년부터는 이미 클라우드라는 용어가 거대한 규모의 ATM을 지칭하는 데 쓰였다. General Magic라는 회사는 1995년 3월부터 AT&T와 다른 여러 통신사들과 제휴를 맺고 클라우드 컴퓨팅 서비스를 최초로 시작했다. 하지만 이 시기는 소비자 중심의 웹 기반이 형성되기 전의 일이었기 때문에 클라우드 컴퓨팅 사업은 당연히 실패했다. 그러나 10년이 지난 2005년에서야 클라우드 컴퓨팅이라는 단어가 널리 퍼지기 시작했다. 하지만 2005년 당시 클라우드 컴퓨팅의 대부분의 내용들은 SaaS에 집중되어 있었다. 2007년까지는 SaaS에 집중되어 있었지만 2008년부터는 더이상 SaaS에만 집중되어 있지 않으며, IaaSPaaS로 그 영역을 넓혀가게 되었다.


장점[편집]

  • 초기 구입 비용과 비용 지출이 적으며 휴대성이 높다.
  • 컴퓨터 가용율이 높다. 이러한 높은 가용율은 그린 IT 전략과도 일치한다.
  • 다양한 기기를 단말기로 사용하는 것이 가능하며 서비스를 통한 일관성 있는 사용자 환경을 구현할 수 있다.
  • 사용자의 데이터를 신뢰성 높은 서버에 보관함으로써 안전하게 보관 할 수 있다.
  • 전문적인 하드웨어에 대한 지식 없이 쉽게 사용 가능하다.

단점[편집]

  • 서버가 공격 당하면 개인정보가 유출될 수 있다.
  • 재해에 서버의 데이터가 손상되면, 미리 백업하지 않은 정보는 되살리지 못하는 경우도 있다.
  • 사용자가 원하는 애플리케이션을 설치하는 데에 제약이 심하거나 새로운 애플리케이션을 지원하지 않는다.
  • 통신환경이 열악하면 서비스 받기 힘들다.
  • 개별 정보가 물리적으로 어디에 위치하고 있는지 파악할 수 없다



정확한 개념이 의외로 복잡한데, 대부분의 작업을 온라인에 분산되어 존재하는 데이터 센터(Data Center, 이하 클라우드)에 맡겨 수행하고, 사용자의 컴퓨터는 클라우드에 접속하여 상호작용하는 단말기 역할만 하는 것이다. 이 때문에 모든 데이터와 연산 자원이 클라우드 안에만 존재하게 되며, 이 자원을 유연하게 관리하기 위해 가상화 기술 등이 투입되게 된다. 


또한 인터넷 서비스 운영자의 입장에서는 직접 서버를 운영하는 대신에, 구글이나 아마존닷컴, 마이크로소프트 등의 대기업의 클라우드 자원을 빌려 서비스를 운영하는 편이 차후에 서비스의 규모가 커졌을 때 대처하기 편하다. 서버 세팅/확장 등은 신경쓰지 말고 서비스 운영 자체에만 집중할 수 있게 해 준다. 컴퓨팅 자원을 마치 전기 끌어다 쓰듯이 쓸 수 있도록 해 준다고 보면 된다.

또한 이러한 서비스를 이용한 실상품으로는 구글에서 추진하고 있는 크롬북이 대표적이다. 크롬북은 컴퓨터 전원을 켜면 크롬 브라우저 하나만[4] 덩그러니 실행된다. 다른 프로그램은 어떻게 쓰냐고? 클라우드에 접속하면 문서도구, 그래픽, 게임을 불문한 모든 작업이 가능하다. 컴퓨터에 아무것도 저장하지 않은 상태로 오직 클라우드 내에서만 구글 크롬 스토어에서 취급되는 앱들을 비롯한 다양한 클라우드 앱을 이용할 수 있으므로 굳이 프로그램을 깔아서 쓸 필요가 없다는 컨셉이다. 다만 크롬북은 모든 작업을 웹과 클라우드상에서 처리하다 보니 인터넷이 없으면 말 그대로 깡통이 된다는 치명적인 단점이 있다.

애플의 맥북 에어도 어떻게 보면 비슷한데, iCloud드롭박스 등의 여러 클라우드 서비스 등장으로 굳이 하드 탑재로 용량을 늘릴 필요가 없어졌기에 맥북 에어의 경우 두께를 위해 용량을 희생하고 그 두께의 거의 모든 부분이 배터리 확충에 치중되고 있다. 저장 용량이 중요하지 않고 되려 사용자의 편의성과 직결되어 있는 배터리 양이 더 중요하다는 것이다. 다만 크롬북과는 달리 인터넷에 연결되지 않아도 웬만한 건 다 할 수 있기 때문에 아래에 서술된 클라우드의 단점 역시 어느 정도 극복할 수 있는 형태라는 결정적 차이점을 가진다.


 그리드 컴퓨팅과는 다르다, 그리드 컴퓨팅과는!

왠지 그리드 컴퓨팅이라는 개념과 혼동하는 경우가 많은데, 분산처리라는 점에서는 같으나, 다음 면에서 큰 차이를 보이고 있다.

  • 그리드 컴퓨팅은 '분산'에, 클라우드 컴퓨팅은 '중앙집중'에 초점이 맞춰져 있다. 실제로 그리드 컴퓨팅은 흩어져 있는 컴퓨터의 여유자원을 인터넷으로 합쳐서 특정 프로그램을 돌리는 것이고, 클라우드 컴퓨팅은 은 내부 네트워크 내 컴퓨터들의 자원을 합쳐 특정 프로그램들을 돌리는 것이다.

클라우드 컴퓨팅은 협업 처럼 한 그룹에 있는 애들이 같이 으쌰으쌰해서 파워를 합치는 것 이고,

그리드 컴퓨팅은 군대처럼 지가 해야될 일을 다른 애들한테 짬시키는 것 이다.

여기까지만 들으면 거의 같지 않나 싶지만.. 클라우드 컴퓨팅은 자기 내부 그룹에서 하는 일이고, 그리드 컴퓨팅은 얼굴도 모르는 애들한테 막 시키고 난리를 친다.


  • 그리드 컴퓨팅은 자원 자체가 흩어져 있기 때문에 중간에 해커가 개입될 수 있지만, 클라우드 컴퓨팅은 자원이 중앙집중 및 가상화되어 있기 때문에 이런 일이 불가능하다. 클라우드를 해킹하려면 어차피 네트워크 전체를 침입해야 하는데, 중간에 방화벽에 막히기라도 하면 말짱 도루묵. 또한 클라우드 컴퓨팅은 용량과 성능의 제약에서 벗어나게 되므로 운영체제 레벨의 보안 처리와 함께 예외처리 떡칠을 해버리게 되면 암호 문제나 내부적인 문제를 제외한 모든 침입면에서는 해커들이 떡실신 당하게 된다. 물리적으로 데이터 센터 내부에 직접 접속하거나 협조를 얻으면 몰라도, 최소한 단말기로 하려는 원격 소프트웨어 해킹 시도는 불가능에 가까울 것이다.

또한 슈퍼컴퓨터와도 혼동하는 일이 있는데, 슈퍼컴퓨터는 전용 OS를 이용하여 모든 노드를 하나로 묶는 반면 클라우드 컴퓨팅은 각 노드마다 OS가 따로 깔리고 상호간 처리는 클라우드 미들웨어 간의 네트워크 전송으로 해결한다. 물론 슈퍼컴퓨터를 여러대 연결해서 그걸 클라우드 컴퓨팅으로 돌리는 것도 가능하고, 외부에서 보면 슈퍼컴퓨팅이나 클라우드 컴퓨팅이나 그게 그거다.


2000년대 들면서 급부상한 IT떡밥 중 하나이나, 정작 통신 보안쪽으로는 크게 골머리다. 클라우드 컴퓨팅 환경에서는 사용자의 개인 정보가 클라우드에 저장되면 사실상 사용자가 그 정보의 위치를 통제할 수 없기 때문.[5] 이를 리처드 스톨먼이 딱 한 단어, (Trap)으로 지적한 바 있다. 덧붙여 사실상의 처리를 사용자의 시스템에서 처리하지 않기 때문에, 통상 시스템에 비해 트래픽이 증가하게 된다. 인터넷 종량제라도 시행했다간...컴퓨터를 켜는 거 자체가 요금 그나마 대부분의 트래픽이 클라우드 내에서 처리될 수 있다는 점에선 그리드 컴퓨팅에 비해 약과. 그리드 컴퓨팅의 경우 처리되는 모든 트래픽을 떠안아야 한다.


여하튼 가벼움이 가장 큰 장점이고, 보안 전문가들이 공밀레가 되는 대신에 일반 사용자는 보안에 그다지 신경을 쓸 필요도 없기에 MS의 Microsoft Azure를 필두로 여러 곳에서 적극 도입이 진행 중. 아파치 재단의 프로젝트인 Hadoop 및 관련 프로젝트들은 이걸 오픈소스로 구현한 것이다.


클라우드 컴퓨팅에는 개인목적으로 저장해둔 데이터들이 사용자 본인이 아무리 관리를 철저하게 한다 해도 하루아침에 사라지거나, 전혀 상관없는 제3자에게 공개될 수 있는 매우 치명적인 단점이 존재한다. 이러한 문제가 발생하는 원인은 전적으로 당신의 데이터를 관리하는 회사에게 있다. 즉 클라우드를 관리하는 회사가 망하거나, 변심하거나, 관리를 소홀히 한다면음모론처럼 들리는 이 단점이 곧바로 현실이 된다.


관리소홀로 인해 데이터가 통째로 증발한 사례는 이미 현실에서 실현되었다. 일본 퍼스트서버 사고가 그것이다. 클라우드 서비스 업체가 5698개 기업의 데이터를 몽땅 날려먹은 초대형 사고가 발생하였다.


차라리 망하면 다행인데 더 끔찍한 비극은 클라우드를 관리하는 회사가 임의로 사용자의 정보를 제3자에게 제공하는 경우다.



구름이란 의미답게 정의도 뜬구름 잡는 듯한 것이 많다. 용어 자체가 굉장히 넓은 범위를 포함하고 있으며, 사람마다 정의하는 의미가 전부 다르다. 실제로 관련 서적을 봐도, 기본적인 내용은 다 같을지라도 세부적인 정의가 전부 다 다르다.

K모 대학에서 관련된 강의를 했었던 기업에서 실무를 담당하고 있는 누군가의 말을 빌리자면, "누군가와 클라우드 컴퓨팅에 대해 토의할 일이 있으면 시간의 80%를 그 사람이 생각하는 클라우드와, 내가 생각하는 클라우드를 비교하는데 쓴다"라고 했을 정도로 사람마다, 기업마다, 부서마다 생각하는 게 다르다.