티스토리 뷰

저는 현재 국내 기술로 클라우드 서비스 솔루션을 개발 제공하고 있는 (주)이노그리드에서 오픈스택 관련 솔루션 개발 업무를 맡아하고 있습니다. 신입 직원들이 들어오거나 하면 교육하는 내용을 보강하여 블로깅하려고 이렇게 글을 작성하였습니다.

 

우선 컴퓨팅의 패러다임 설명으로 클라우드 컴퓨팅까지 발전 하게 된 경위를 설명해 보려고 합니다. 큰 맥락에서의 정리이다 보니 학술적 접근은 별도의 논문 등을 참고하길 바랍니다(논문에서도 저마다의 정리를 하다 보니 조금은 헷갈리는 부분이 있을 수 있다).

 

다음 편에서는 클라우드를 설명하기 앞서 가상화와 클라우드 차이점을 설명하고 상세 유형별로 몇 편에 걸쳐 소개하고, 마지막으로 클라우드 컴퓨팅 다음으로 다가올, 아니 이미 다가온 컴퓨팅 패러다임을 설명함으로써 마무리를 지어보려고 합니다.

 


1편 컴퓨팅 패러다임(Computing paradigm)

2편 가상화와 클라우드(Virtualization and Cloud Service)

3편 클라우드 유형: IaaS(Infra as a Service)

4편 클라우드 유형: PaaS(Platform as a Service)

5편 클라우드 유형: SaaS(Service as a Service)

6편 미래 컴퓨팅 패러다임(Next generation paradigm)

 

 


 

Computing Paradigm

 

 

 

Image  1  Computing Paradigm Phases

 

 

이 전의 컴퓨팅 패러다임도 있지만, 그리드 컴퓨팅(Grid Computing)에서부터 다뤄 보는 것으로 하겠습니다.

 

Grid Computing

 

다양한 컴퓨팅의 발전은 더 복잡하고 어려운 컴퓨팅 즉 연산하기 위함에 있습니다. 그런 바람의 산물은 메인프레임(Mainframe)에서 슈퍼컴퓨터(Supercomputer)에 이르기까지 다양한 형태로 발전했지만, 그 가격으로 인해서 결코 대중적이지 않았습니다. 이를 대중화 시킨 것은 X86 기반의 PC와 서버 시장의 발전, 대중화 그리고 인터넷의 발전으로 인한 컴퓨터간의 연결이 가능해지며 대중화와 비교적 저렴해진 X86기반의 서버 컴퓨터를 활용하여 슈퍼컴퓨터에 준하는 컴퓨팅(연산) 연구를하기 시작했습니다. 그 하나의 결과로 분산 컴퓨팅이 있었고 그 분산 컴퓨팅의 방법론 중의 하나로 그리드 컴퓨팅이 제시되게 됩니다.

 

그리드 컴퓨팅(Grid Computing)을 말하기 전에 우선 분산 컴퓨팅(Distributed Computing)을 설명할 수 있어야 합니다. 분산 컴퓨팅의 목표는 분산 시스템에 대해서 알아보면 알기쉬운데 대략적으로 이렇게 정의 할 수 있다.

Distributed System: a group of independent/autonomous computers that are networked together appear to the user as a one computer.
분산 시스템: 유일하고 독립적인 컴퓨터 그룹을 네트워크로 서로 연결하여 사용자에게 하나의 컴퓨터로 나타내는 것.

 

Image 2 Distributed System

 

 

독립된 컴퓨터가 자체적인 메모리 공간을 자지고 하나의 목표를 위해 연산하고 이를 메세지 형태로 네트워크를 통해서 공유하는 것을 분산 컴퓨팅이라 할 수 있습니다(병렬 컴퓨팅은 보장된 처리 시간을 목표로 하기 위해서 프로세서가 동일하고 시스템이 동일해야 하는  분산 컴퓨터와 다르다고 볼 수 있습니다).

 

분산된 (서로 다른)컴퓨터 자원을 통하여 슈퍼컴퓨터(Super Computer)의 성능에 준하면서 하나의 컴퓨터인것과 비슷한 성능을 목표로 발전하였습니다. 분산 컴퓨팅에는 그리드 컴퓨팅(Grid Computing)을 비롯하여 하이퍼큐브 컴퓨팅(Hypercube Computing) 등 개발 연구되었습니다. 여러 컴퓨팅 기술 중에서 그리드 컴퓨팅을 설명하려는 것은 클라우드 컴퓨팅(Cloud Computing)과 가장 유사한 형태로 컴퓨팅 자원 사용을 하고 있기 때문입니다.

 

그리드 컴퓨팅은 기존의 다른 컴퓨팅과 다른 것은 서로 다른 성능의 컴퓨터 자원을 공동의 목표를 위하여 네트워크로 연결하는 것에서 있다고 할 수 있습니다. 하지만 가상화 기술 등을 적용하기 전이었기 때문에 클라우드 컴퓨팅과는 다르게 메모리(Memory) 공유나, CPU 자원을 공유하는 등을 할 수 없지만, 서로 다른 성능의 컴퓨터가 서로 다른 OS를 가지고도 하나의 연산을 또는 목적을 위해서 연결하여 자원을 사용한다는 것에 클라우드 컴퓨팅과 가장 흡사하다 할 수 있습니다.

 

그리드 컴퓨팅 특징

 

  • 독립적인 컴퓨터(Independent Computers)
  •  컴퓨터의 독립적인 운영체제(Operating System)
  •  메모리 공유(No shared memory)
  •  CPU 공유(No shared CPU Clock, Core)

 

Cloud Computing

 

클라우드 컴퓨팅(Cloud Computing)은 기본적으로 독립적인 X86기반의 컴퓨터와 운영체제를 가지고 있다는 것에서 그리드 컴퓨팅과 유사합니다. 다만, 가상화 기술을 통하여 메모리 및 CPU의 클록이나 코어를 공유하는 등의 기능에서 다르다고 볼 수 있습니다.

 

그리드 컴퓨팅(Grid Computing) 클라우드 컴퓨팅(Cloud Computing)
독립적인 컴퓨터(Independent Computers) 독립적인 컴퓨터(Independent Computers)
각 컴퓨터의 독립적인 운영체제(Own Operating System) 각 컴퓨터의 독립적인 운영체제(Own Operating System)
비 메모리 공유(No shared memory) 메모리 공유(Shared memory)
비 CPU 공유(No shared CPU Clock, Core) CPU 공유(Shared CPU Clock, Core)

 

클라우드 컴퓨팅은 유휴 서버가 많이 있던 구글 등에서 재 사용성등을 고객의 자원 요청에 의해서 가상화된 형태의 컴퓨팅자원(서버, 네트워크 등)을 제공하는 온디맨드(On-demand) 형태의 서비스를 하게되면서 고객은 자신의 (서버, 네트워크 등)자산이 정확히 어디에 있는지 알 수 없지만, 확실한 곳에 존재한다는 것이 흡사 구름 같다고 하여 “클라우드”(Cloud)라고 부르며 유명해지기 시작했습니다.

 

Type of Cloud Service

 

클라우드 서비스 유형(Type of Cloud Service)은 크게 설치별, 서비스별로 나누어 볼 수 있습니다. 내용은 아래와 같습니다.

 

설치별 유형

  • Private Cloud: 기업 등에서 자신들만의 사용을 목적으로 클라우드 솔루션을 설치하는 것을 말합니다. 보통 AWS는 퍼블릭 클라우드로 유명한데, 얼마 전 펜타곤에 AWS가 클라우드 구축을 했다는 뉴스를 접했습니다. 이는 퍼블릭 클라우드 서비스만 한다는 AWS가 자신들의 서비스 시스템 전부를 분리된 펜타곤 네트워크에 서비스 직접 설치를 했을 것으로 추정됩니다. 이렇듯 클라우드를 On-promise 형태로 설치하는 것을 Private Cloud 라고 합니다.
  • Public Cloud: 우리가 알고 있는 유명 클라우드 서비스 벤더에서 제공되는 클라우드 서비스를 떠올리면 됩니다. AWS, AZUR, Google Cloud, Naver Cloud, NHN TOAST Cloud 등이 있으며, 요즘 게임사 등 에서 전 세계를 대상으로 서비스하기 위하여 Public Cloud에 서비스를 배포하고 하는 경우들이 있습니다.

설치 유형별은 설치를 어떻게 하느냐에 따라서 구분하며, 본 회사의 클라우드잇(Cloudit) 솔루션은 주로 Private Cloud로 회사 또는 학교에 설치 제공되고 있는데, 안정성 확보 및 홍보를 위하여 Public Cloud 서비스도 하고 있습니다.

 

서비스별 유형

사실 요즘은 더 다양한 XaaS(X as a Service)들이 출현중에 있으나 전통적으로 나누는 형태로 IaaS, PaaS, SaaS 를 구분하여 나누었습니다.

 

 

Image 3 Cloud computing service models arranged as layers in a stack

 

 

  • IaaS(Infra as a Service): 장비(Infrastructure)를 서비스로 제공하는 것을 말합니다. Server, Network, Storage 관련 자원들을 서비스 형태로 제공합니다. 하나의 컴퓨터와 네트워크 서비스를 가상화로 제공한다고 보면 좋을 것 같습니다.
  • PaaS(Platform as a Service): 나름의 정의를 내리자면 서비스를 위한 플랫폼을 제공한다고 보면 좋을 것 같습니다. 무슨 말인가 하면 개발자라면 서버를 구매하고 네트워크를 구성하는 것은 어떤 서비스를 제공하기 위한 기반을 다진다고 볼 수 있습니다. 그러고 나서 개발한 서비스를 빌드하고 빌드한 결과물을 설치하고 배포하여 실제로 서비스를 사용하는 사람에 이르기까지 일련의 과정을 거칩니다. PaaS는 장비적인 기반이 후, 프로그램을 빌드하고 설치하고 서비스하는 부분까지의 부분을 다룬다고 보면 됩니다. 물론 더 많은 기능이 있지만, 이것이 기본적인 기능이라 할 것입니다.
  • SaaS(Service as a Service): SaaS는 장비나, 플랫폼을 신경 쓰지 않습니다. 그저 서비스를 구동하고 접근할 수 있도록 하는 것에만 신경 쓴다고 보면 됩니다. 

많이 부족할 수 있는 정리내용이지만, 위의 정리한 내용은 대학원 수업 자료와 회사에서 일하면 정리된 자료를 토대로 정리된 것입니다. 클라우드에 대한 개념이나 정보를 얻는 부분에서 도움이 되었으면 좋겠습니다. 다음 편에는 가상화와 클라우드의 차이에 대해서 이야기 해보려고 합니다. 많은 관심 부탁드립니다.

 

 


 

Image 1 :허의남. Six Computing Paradigm. 2016 “Background of Cloud Computing” 수업교재. “01_Cloud_computing_Background_Distributed_Systems-2016.pptx” 2021년 1월 13일

Image 2: Miym. Parellel and distributed computing. “Distributed Computing” Wikipedia. 웹 2021년 1월 13일.

Image 3: Aavindraa. Service models. 2012 “Cloud Computing” Wikipedia. 웹 2021년 1월 13일.