cloud 개념이 도입되기 전에는 대부분의 기업이 자체 데이터 및 솔루션 등을 저장하기 위해 데이터 센터를 구축하여 IT 서비스를 수행하는 방식
사용자의 직접적인 관리없이 데이터 스토리지와 컴퓨팅 파워와 같은 컴퓨터 시스템 리소스를 필요 시 바로 On-Demand 방식으로 제공하는 것
일반적으로 인터넷을 통해서 사용자가 사용할 수 있는 Data Center
우리가 원하는 시점에 원하는 자원을 사용할 수 있다는 것
자원의 유연성 : 필요할 때 언제든지 쓸 수 있어야 한다
독립된 컴퓨터를 네트워크로 연결해서 마치 하나의 컴퓨터처럼 활용하는 것
느슨하게 또는 강력하게 연결되어 작업을 처리하는 컴퓨터로 하나의 단일 시스템으로 보이게 함
느슨하게는 다른 데이터센터의 컴퓨터를 연결하는 것
강력하게는 동일한 데이터센터 내의 컴퓨터를 연결하는것
❓ 클러스터링을 하는 이유
유휴자원이란?
활용 사례 : SETI@HOME 프로젝트
이 프로젝트는 외계에서 온 신호를 수집하고 분석해서 외계 생명체를 탐색하는 프로젝트이다.
참여자의 컴퓨터가 idle 상태일 때, 화면보호기 형태로 외계신호 데이터를 처리함
자발적으로 유휴 자원을 제공받아 대규모 분석 작업 수행
유휴 자원 활용의 한계
네트워크 환경이나 하드웨어/소프트웨어 환경이 다를 경우 작업 실패 가능성 있음
일부 작업이 다른 시스템에 영향을 주거나 시스템 전체를 재부팅시키는 등 안정성 문제 발생 가능
중재자의 역할
대표적 기술: Hypervisor
대부분의 컴퓨터는 자원을 100% 사용하지 않는데, 이때 남은 자원을 이용하는 것
이 경우에도 중재자가 필요하다.
낮은 활용성 상태의 컴퓨터에 일부 작업을 전송해서 처리하는 경우
작업의 일부분을 다른 컴퓨터에 전송해서 처리하게 되면 활용도를 높일 수는 있지만 속도와 안정성은 담보할 수 없다.
다른 두개의 컴퓨터의 환경이 다르다면 한 쪽의 작업을 다른 쪽으로 일부 전송해을 때 환경이 맞지 않아서 완료되지 못할 수도 있다.
작업이 완료되지 않으면 작업 완료 시간만 늘어난다.
한쪽의 작업이 다른 쪽으로 전송되어 실행되는 도중에 시스템 전체에 영향을 줄 수 있는 작업을 수행하게 되면 문제가 발생할 수 있다.
재부팅을 하는 경우가 대표적이다.
양쪽의 작업이 섞이지 않도록 하고 한쪽의 작업에 문제가 생겼을 때 다른 한쪽에 영향을 주지 않도록 해야 한다. 이러한 중재자를 Hypervisor라고 한다.
하이퍼바이저는 물리적 자원을 여러 대의 가상 자원으로 관리해주는 역할을 수행한다.
물리적 시스템에 설치된 하이퍼바이저를 통해서 독립된 가상의 컴퓨터를 만들 수 있고, 이러한 가상의 컴퓨터로 작업을 처리한다.
클러스터링을 통해 컴퓨터의 성능을 향상시키는 방법의 기반이 되는 기술
오케스트레이션은 유휴한 컴퓨팅 자원을 네트워크를 통해서 연결한다.
그리드 컴퓨팅과 클러스터링이 대표적인 예이다.
그리드 컴퓨팅까지는 유휴 자원을 활용하는 방식으로 컴퓨터 개수를 늘리는 방식
유휴 자원의 성능을 높이는 방법은 하이퍼바이저가 개입하는 방법
하이퍼바이저의 기반 기술이 가상화이다.
가상화 기반으로 자원의 효율성을 높이는 대표적인 에가 클라우드 컴퓨팅이다.
그리디 컴퓨팅과 클라우드 컴퓨팅 서비스의 핵심 기술은 오케스트레이션과 가상화로 조금 다름
2가지 서비스의 궁극적인 목표는 활용성을 높이는 것이다
두가지 서비스는 배타적인 관계는 아님
많은 데이터 센터들이 가상화를 기반으로 한 클라우드로 구축되고 있고 클라우드를 통해 제공된 컴퓨팅 자원들이 네트워크를 통해 그리드 컴퓨팅으로 구현될 수 있음
활용성을 높이기 위한 그리드 컴퓨팅과 클라우드 컴퓨팅을 HTC(High Through Computing) 라고 한다.
HTC와 대비되는 개념으로, 슈퍼컴퓨터와 같이 빠른 계산을 목적으로 하는 컴퓨팅
얼마나 많은 자원을 오랫동안 사용했는지가 중요한 목표가 아니라 오직 빠른 계산이 최상의 목표이다.
HPC 목적으로 도입된 시스템에 HTC와 같은 역할을 기대하는 것과 HTC 와 같이 활용하는 것은 비용측면에서 비효율적이다.
HPC로 대변되는 슈퍼컴퓨터는 고가의 컴퓨팅 장비이고 대부분 Infiniband 와 같은 고속 네트워크로 연결되지만HTC의 경우 범용 장비를 Ethernet과 같은 일반적인 네트워크로 연결해서 사용한다.
클라우드 컴퓨팅이 이슈를 해결하기 위한 가장 좋은 방법으로 여겨지고 있음
자원의 활용성
안정성
빠른 복구
IaaS ( Infrastructure as a Service ) : 물리적인 머신을 가상 머신으로 제공해주는 서비스, 컴퓨팅 파워를 제공하는 서비스
PaaS ( Platform as a Service ) : IaaS 위에 플랫폼을 만들어서 서비스를 제공하는 것, 소프트웨어 개발 환경을 빌려주는 것
SaaS ( Software as a Service ) : 응용프로그램을 서비스
On Premise : Networking, Storage, Servers, Virtualization, O/S, Middleware, Runtime, Data, Applications 모두를 직접 관리
IaaS : O/S, Middleware, Runtime, Data, Applications 부분을 직접 관리
PaaS : Data, Applications 부분을 직접 관리
SaaS : 관리하는 부분은 없음, 제공되는 서비스를 사용만 합니다.
IaaS -> PaaS -> SaaS
컴퓨터 시스템을 여러개의 가상 컴퓨터로 만들 수 있는 기반 기술
컴퓨터를 가상화해야 하기 때문에 컴퓨터의 기본 시스템을 가상화해야 한다.
CPU, Memory, I/O 장치를 가상화
가상화 기술을 이용해서 실제 구현한 것이 Hypervisor 이다.
대표적으로 KVM , Xen , VMware , Virtual Box
가상화 기술은 다시 전가상화 와 반가상화로 나눌 수 있다.
베어메탈 방식과 호스티드 방식으로도 구분한다
베어메탈방식 : 물리시스템 위에 하이퍼바이저를 설치하는 방식
Xen, KVM, MS의 Hyper-V 등이 있음호스티드 방식 : 물리시스템 위에 운영체제를 설치하고 운영체제 위에 하이퍼바이저를 설치해서 동작시키는 방식
Virtual Box, VMware Player 등전가상화 방식으로 구현된 하이퍼바이저는 Guest OS가 수정되지 않은 상태로 동작
전가상화 방식에서는 하이퍼바이저 상에서 동작하는 Guest OS가 자신이 가상화 환경에서 동작하고 있다는 사실을 인지하지 못함
물리적인 시스템에 접근하기 위해서는 반드시 하이퍼바이저의 개입이 필요한 방식으로 오버헤드가 필연적으로 발생
반가상화 방식으로 구현된 하이퍼바이저는 Guest OS가 수정된 상태로 동작
반가상화 방식은 Guest OS가 하이퍼바이저 위에서 동작하고 있을을 인지하는데 이를 위해서는 OS의 코드 수정이 필요
하이퍼바이저가 제공하는 API를 Hyper Call 이라고 하는데 이를 호출해서 물리적인 시스템에 접근하기 때문에 성능이 전가상화보다 우수
운영체제의 코드를 수정해야하기 때문에 리눅스와 같은 오픈 소스에서만 사용 가능
가상머신은 하이퍼바이저 상에서 동작하기에 하이퍼바이저를 통해서 가상머신을 관리할 수 있다
하이퍼바이저는 모든 물리 시스템에 설치되어야 하고 해당 시스템의 가상머신만을 해당 하이퍼바이저가 관리하기 때문에 대규모의 물리 시스템을 운영하고 있는 데이터 센터에서 직접적으로 하이퍼바이저를 통한 가상 머신의 관리는 어려움
가상머신을 관리하는 툴 : Open Stack , Open Nebula
관리 툴들은 저마다 장단점을 가지고 있는데 오픈소스를 기반으로 한 클라우드를 구축하는 경우라면 RedHat이 지원하는 소프트웨어 관심을 갖게 됨