클라우드 컴퓨팅의 근본적인 개념은 프로비저닝을 통한 IT 리소스의 서비스화.CSP(Cloud Service Provider)가 제공하는 웹 클라이언트에 접속하여 사용자가 요구하는 스펙에 맞는 IT 리소스를 셀프서비스로 이용하는 것.클라우드 컴퓨팅을 이용하여 서버, 스토리지, 네트워크 등의 H/W 및 데이터베이스와 같은 애플리케이션으로 시스템을 구축하고 필요한 정보를 처리할 수 있음.클라우드 컴퓨팅은 온프레미스 방식의 물리적 실행 환경의 제약을 극복하고 사용자에게 실시간으로 프로비저닝된 가상의 리소스를 탄력적으로 제공하기 위한 가상화, 웹 서비스, 가용성 관리 등 다양한 기술의 총집합체.클라우드 컴퓨팅이 데이터 센터에서 사용자의 단말에 서비스 형태로 제공되는 과정은 크게 3개의 영역으로 구분할 수 있음.SaaS, PaaS, IaaS 등의 서비스를 제공하는 CSP.CSP가 제공하는 IT 리소스와 서비스에 접근하기 위한 광역 네트워크.클라우드 컴퓨팅 서비스 제공사(CSP : Cloud computing Service Provider)클라우드 컴퓨팅 인프라 위에 클라우드 플랫폼을 구축하고 이를 통해 SaaS, PaaS, IaaS 등과 같은 다양한 서비스 제공.클라우드 컴퓨팅 서비스 브로커리지(CSB : Cloud computing Service Brokerage)클라우드 컴퓨팅 네트워크(CN : Cloud computing Network)CSP와 사용자의 클라우드 터미널 장치를 연결하는 광대역 유무선 네트워크.클라우드 컴퓨팅 서비스 단말기(CCD : Cloud computing service Client Device)클라우드 컴퓨팅 보안(CS : Cloud computing Security)CSP, 클라우드 네트워크, 클라우드 단말까지 클라우드 서비스를 좀 더 안전하게 이용할 수 있는 환경.클라우드 컴퓨팅 서비스가 가능하도록 클라우드 컴퓨팅을 구성하는 기술가상화분산처리오픈 인터페이스오케스트레이션CSP가 실시간으로 IT 리소스를 프로비저닝하여 제공하고 서비스 요청부터 제공까지 자동화하는 기술.보안 및 프라이버시 보호가상화(virtualization)는 물리적 IT 리소스를 가상의 IT 리소스로 전환시키는 기술.가상화 기술을 통해 하나의 서버에서 여러 실행 환경을 만들 수도 있고, 여러 서버를 하나의 물리적 리소스로 표현할 수도 있음.가상화하여 S/W 플랫폼 역할을 함.가상화는 클라우드 컴퓨팅에서 핵심이 되는 기술.클라우드 컴퓨팅이 사용자의 요청에 적합한 IT 리소스를 탄력적으로 제공할 수 있는 것이 바로 가상화기술 덕분.일반적인 시스템 운용

가상화 기술을 통해 H/W는 여러 개의 논리적 단위로 나뉠 수 있는데, 이 각각의 논리적 단위를 가상 머신(VM : Virtual Machine)라고 함.VM은 단순화된 펌웨어 같은 S/W의 일종으로 H/W 리소스를 OS가 아닌 VM 수준에서 제어하기 때문에 한 H/W상에서 각기 다른 종류의 OS를 여러 개 실행하는 것이 가능.가상화의 개념

가상화 계층의 역할은 상위 S/W 계층에 대해서는 제어가 가능하게 하고, 하위 H/W 계층에 대해서는 리소스가 효율적으로 활용될 수 있도록 우회 가능한 층을 제공하는 것임.
가상화 기술은 아래의 4가지 특성을 제공하여 여러 환경이 동시에 동작할 수 있는 가상 환경을 제공함.
파티셔닝(partitioning)캡슐화(encapsulation)VM은 폴더와 파일로 존재하며, 구조화되어 있어 이동 및 복사가 가능함.격리(isolation)VM이 캡슐화되어 있어서 장애 및 보안 문제 발생 시 해당 VM은 격리 조치되며, 세밀한 리소스 제어로 성능을 유지함.H/W 독립성VM은 독립적으로 가동되어 또 다른 서버 가상화 시스템 or 물리적 시스템인 서버로 마이그레이션(migration)이 가능함.마이그레이션을 V2P(Virtual machine to Physical machine) ,마이그레이션을 P2V라 함.인프라(infra)라고 함.서버의 종류와 특징
| x86 및 x64 서버 | - 인텔 x86 Xeon 칩셋 or AMD x64 칩셋을 기반으로 한 마더보드 기반 서버 기술. |
|---|---|
| UNIX 서버 | - 유닉스 운영체제를 기반으로 작동하는 엔터프라이즈(Enterprise)급 서버로, IBM, HP, Oracle 등이 시장을 주도. |
| ARM 서버 | - 저전력 프로세서 ARM 칩셋을 기반으로 한 고집적 마이크로 서버 |
| HPC 기술 | - 매니코어 CPU칩 기술이나 GPU 등 코프로세서(coprocessor)를 활용한 고성능 서버. |
스토리지의 종류와 특징
| HDD | - 비휘발성 - 순차접근이 가능한 컴퓨터의 보조기억장치. - 플래터를 회전시켜 자기패턴으로 정보를 기록하는 자성 기반의 기계적 메커니즘으로 구동. |
|---|---|
| SSD | - HDD를 대체하는 낸드플래시 등 메모리칩 배열이 고정된 반도체 메모리 방식의 무소음으로 작동하는 저장장치. - 성능, 폼팩터, 내구성, 전력소모 면에서 우수함. |
| Hybird | - 상대적으로 저렴한 HDD 기술과 성능이 우수한 SSD 기술을 혼용한 스토리지 |
네트워크 장비의 종류와 기능
| 스위치 | - 네트워크 단위들을 연결하는 통신장비로 허브라고도 함. - OSI(Open Systems Interconnection) 2계층에서 사용하는 네트워크 내에서 패킷 전달 담당. |
|---|---|
| 라우터 | - OSI 3계층에서 패킷의 위치를 추출하여 그 위치에 대한 최상의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치. |
| 방화벽 | - 서로 다른 네트워크를 통과하는 데이터를 허용ㆍ거부하거나 검사ㆍ수정하는 H/W나 S/W장치. |
OS의 종류와 특징
| 클라이언트 OS | - 사용자의 사용성을 향상 시킬 수 있는 GUI기능이나 멀티미디어 기능이 지원 됨. - 대표적으로 윈도우, Mac OS, 안드로이드 OS, iOS 등. |
|---|---|
| 서버 OS | - 하드웨어 리소스를 고속으로 가동시키면서도 안정적으로 동작시키기 위해 필요한 기능으로 특화되어 있음. - CPU, 메모리, GPU 등의 H/W 성능을 최대한 끌어내고 대량의 데이터를 효율적으로 수행하는 알고리즘을 갖추고 있음. - 대표적으로 윈도우 Server, Unix, Linux 등이 있음. |
미들웨어의 종류와 기능
| TP 모니터(Transaction Processing monitor) | - 시스템과 데이터베이스 사이의 최소 처리 장치를 모니터링하고 일관성을 유지하는 트랜잭션 관리 미들웨어. - 주로 C/S 시스템에 사용. |
|---|---|
| 웹 애플리케이션 서버(web application server) | - 주로 웹 서버와 데이터베이스 서버 사이에서 복잡한 프로그래밍적 기능을 제공하여 동적인 결과를 전송하는 미들웨어. |
| 엔터프라이즈 서비스 버스(enterprise service bus) | - 컴포넌트화된 논리적 집합으로 묶은 핵심 미들웨어. - 비즈니스 프로세스 환경에 맞게 설계 및 실행할 수 있는 공통 실행 환경을 위한 아키텍처 패턴. |
| 데이터베이스 미들웨어 | - 애플리케이션을 특정 데이터베이스로 연결해 주는 소프트웨어 |
서버 가상화라는 용어는 이미 1960년대부터 다수의 IT 리소스 관리와 운영의 어려움을 보완하기 위한 목적으로 개발된 이후 널리 사용되기 시작.가상(논리적)의 기능과 구성 요소를 만들어 내기 위한 방식으로 확장되었음.호스트 가상화 방식가상화 S/W가 설치되고, 그 위에 S/W 실행을 위한 OS(호스트 OS)가 구동되는 방식.하이퍼바이저 가상화 방식하이퍼바이저가 설치되고, S/W 실행을 위한 게스트OS가 구동 되는 방식.컨테이너 방식호스트 가상화 기술은 논리적 리소스를 생성하기 위한 가장 초기에 보편화된 기술.가상화 S/W를 설치하여 가상화를 구성함.가상화 S/W에 의해 추상화된 가상 환경에 애플리케이션을 위한 OS를 작동시키는 방식.가상 환경을 가상머신(VM)이라고 함.VM을 이용한 서버 가상화를 S/W적 파티셔닝 or OS 이미지 가상화라고도 함.
호스트 가상화 방식에는 애플리케이션 실행에 호스트 OS와 게스트 OS 두 종류의 OS가 구동됨.호스트 OS : H/W 계층 위에 설치되어 H/W 직접 관리.게스트 OS : 가상 머신(VM) 위에 설치되어 S/W 실행 환경 제공.호스트 가상화의 가장 큰 장점은 가상의 H/W를 에뮬레이팅하여 게스트 OS가 H/W 리소스에 접근하는 것을 제어하고 동기화 하기 때문에 호스트 OS에 크게 제약이 없음.호스트 OS 위에 게스트 OS가 공존하는 구조로 2개의 OS가 필요 이상의 CPU, 디스크, 메모리 등을 사용하는 오버헤드가 큰 단점이 있음.호스트 가상화 기술의 단점을 극복하고 좀 더 적은 리소스 사용으로도 가상화를 지원하기 위한 하이퍼바이저(hypervisor)가 등장.하이퍼바이저의 가장 큰 특징은 어떠한 OS에 의존하지 않고 H/W에 직접 설치ㆍ구동이 되는 구조임.
하이퍼바이저 방식은 하이퍼바이저가 H/W를 직접 제어할 수 있어서 상대적으로 오버헤드가 작음.
하지만 H/W를 제어할 OS가 없기 때문에 하이퍼바이저 구동 시 DOM0라는 관리 머신이 함께 구동됨.
DOM0가 가상 환경 운용에 얼마나 많이 개입하느냐에 따라 하이퍼바이저 방식은 크게 2가지로 구분 됨.1. 전가상화(full-virtualization)

Hardware Virtual Machine라고도 함.VT(Virtualization Technology)를 이용하는 관리용 VM DOM0를 통해 여러 종류의 게스트 OS의 커널 요청을 번역하여 H/W에 전달함.DOM0가 개입하여 중재하는 형태이기 때문에 병목현상으로 인한 성능저하가 발생할 수 있는 단점이 있음.2. 반가상화(para-virtualization)

전가상화의 가장 큰 단점인 성능저하의 문제를 해결하기 위해 H/W를 부분적으로 가상화하는 방식.하이퍼 콜(hyper call)이라는 인터페이스를 통해 하이퍼바이저에 직접 제어 요청을 하기에 높은 성능을 유지할 수 있는 것이 반가상화 방식의 가장 큰 장점.하이퍼바이저에 하이퍼 콜 요청을 할 수 있도록 게스트 OS의 커널 수정이 요구되기 때문에 리눅스와 같은 오픈소스 OS 외의 OS에서 반가상화를 이용하기가 제한적인 단점이 있음.컨테이너 가상화 기술의 개념.
하이퍼바이저가 호스트 OS 없이 직접적으로 가상 환경을 구축할 수 있다 하더라도 하이퍼바이저 위에 여러 개의 OS를 구동시키는 것 자체가 많은 오버헤드를 발생시킴.컨테이너 가상화는 호스트 OS 상에 논리적인 영역(컨테이너)을 만들고, 애플리케이션을 동작시키는 데 필요한 라이브러리와 애플리케이션 등을 컨테이너 안에 포함시켜 게스트 OS 없이 개별 서버와 같은 실행 환경을 구축하는 방식.컨테이너란 호스트 OS상에서 컨테이너라 불리는 논리적인 파티션을 생성하고, 애플리케이션 실행에 필요한 라이브러리, 미들웨어, 런타임, 보조 애플리케이션 등을 하나로 모아 서버인 것처럼 사용할 수 있게 만든 영역.
컨테이너의 가장 큰 특징은 게스트 OS의 실행에 소요되는 오버헤드가 없어 고속으로 작동한다는 점.컨테이너 기술을 사용하면 시스템 리소스를 마치 애플리케이션이 개별적으로 점유하고 있는 것처럼 보이게 할 수 있음.도커(Docker)
도커는 컨테이너 가상화 기술에서 오늘날 가장 대표적으로 사용되는 솔루션.반가상화보다 더 경량화된 리눅스 컨테이너를 기반으로 구동됨.VM과는 달리 이미지 생성과 배포에 특화된 기능을 제공함.도커는 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아두고, 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 및 운용할 수 있는 오픈소스 플랫폼.도커를 사용할 수 있는 환경만 있다면 애플리케이션에 대한 이미지를 다운로드받아 바로 사용할 수 있는 다운로드(pull) 기능.
컨테이너로 묶어 이미지화 하고, 이런한 도커 이미지를 레지스트리(registry)에 저장하여 공유할 수 있음.레지스트리에는 도커 허브(hub)와 리포지터리(repository)가 있음.레지스트리는 도커 이미지를 저장하고 저장된 이미지를 사용자가 다운로드하여 설치할 수 있는 공유 환경을 제공하는 저장소.도커 컨테이너를 관리하고 실행하기 위해 데몬(daemon)과 상호작용하는 클라이언트를 통해 이미지를 다운로드하고 실행하게 됨.도커는 이러한 인프라 환경을 컨테이너로 관리하기 때문에 개발자는 도커를 사용하여 개발한 애플리케이션 이미지를 작성하고 컨테이너를 가동시킬 수 있음.이미지는 도커가 설치되어 있는 환경이라면 기본적으로 어디서든지 작동되므로 개발자가 가장 곤혹스러워하는 개발ㆍ테스트 환경에서 정상적으로 구동되지만 운용 환경에서는 구동되지 않는 상황 발생을 현저하게 줄일 수 있음.CI/CD를 가능하게 함.CI/CDCI(Continuous Integration)와 짧은 주기로 S/W를 개발하여 S/W가 언제든지 신뢰 가능한 수준으로 출시될 수 있도록 보증하는 CD(Continuous Delivery or Continuous Deploy)를 동시에 수행하는 S/W 공학적 접근 방법으로 S/W를 더 빠르게, 더 주기적으로 빌드 및 테스트하고 출시하는 것을 목표로 함.도커의 특징.
빠른 설치애플리케이션 이식성컨테이너에 존재하기 때문에 호스트의 커널이나 플랫폼 버전 등에 상관없이 도커만 실행할 수 있으면 사용이 가능함.버전 제어, 컴포넌트 재사용컨테이너 버전 제어가 쉽고 변경 내역을 확인 가능하며, 롤백이 간단함.도커를 가볍게 만들 수 있음.쉬운 유지 관리컨테이너 분산배치, 상태 관리 및 구동 환경을 관리해주는 도구.쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈 소스 플랫폼.컨테이너는 애플리케이션의 독립적인 실행 환경을 제공하며, 쿠버네티스는 이 컨테이너들이 일정한 상태로 유지되도록 지원