본문 바로가기

Dev.World/개발상식&언어

[개발상식] 15. 클라우드 컴퓨팅이란?





클라우드 컴퓨팅
클라우드 컴퓨팅은 서버, 스토리지, 데이터베이스 및 광범위한 애플리케이션 서비스를
인터넷을 통해 간단하게 액세스할 수 있는 방법을 제공한다.

전기 공급 및 소비의 패러다임이 과거의 자가발전에서 현재의 중앙발전으로 바뀌었듯이
IT 자원의 소비 형태도 이렇게 변환될 것이다.
그러한 소비 형태가 바로 클라우드 컴퓨팅이다.
IT분야 미래학자 Nicholas Carr - Big Switch 에서

클라우드 컴퓨팅 혁명과 함께 제 2의 디지털 시대가 다가오고 있다. - 빌게이츠

클라우드 컴퓨팅이란
쉽게 말해서 서버 가상화 기술
가상 라우터를 기반으로 한 네트워크 가상화 기술
스토리지 클라우드를 위한 분산 스토리지파일 동기화 기술
클라우드 운영관리를 담당하는 stack기술 및 사용자 권한 관리 등을 포괄한다.




클라우드 컴퓨팅의 장점
하드웨어에 막대한 사전 투자를 하거나
하드웨어를 유지 관리하기 위해 많은 시간을 할애하지 않아도 된다는 점이다.
또 필요한 인프라 용량을 추정할 필요가 없으며
상황에 따라서 리소스에 액세스하고 확장, 축소할 수 있다.

단 인터넷이 가능한 곳에서만 이용할 수 있다는 단점 그말은 인터넷만 되면 어디서든 접근이 가능하다
개인 정보 유출의 위험, 이건 뭐 어느 서버에서나 일어날 수 있는 가능성
메인 서버에 이상이 생기면 중요한 정보가 손실될 수 있다. 그말은 개인 하드와 정보 손실은 상관이 없다.



분류
Iaas(Infastructure as a Service) : 서비스로서의 인프라
Paas(Platform as a Service) : 서비스로서의 플랫폼
Saas(Software as a Service) : 서비스


분류별 특징
IaaS
Iaas는 CPU, 메모리, 저장장치 및 네트워크 등 IT 인프라를 서비스 형태로 제공하는 클라우드
필요할 때 서버 및 스토리지를 신청하고 사용자는 클라우드에 생성된 자신의 서버(가상머신)와 스토리지를
자신만을 위한 독립적인 장비로 사용하게 된다.
이런 관점에서'는' Dropbox, 네이버클라우드도 Iaas에 속한다고 볼 수도 있다.
ex) Amazon EC2(Amazon Elastic Compute Cloud)가 해당된다.

일반적으로 네트워크 기능, 컴퓨터(가상 or 전용 하드웨어) 및 데이터 스토리지 공간을 제공한다.
IT 리소스에 대해 가장 높은 수준의 유연성과 관리 제어를 제공한다.
유연성이 있고 관리제어를 제공한다는 것은 양날의 검.
이 말은 즉, 개발 부분과 데이터베이스, 웹서버, 운영체제, 모니터링, 로드밸런싱, 업그레이드를 모두 다뤄야 한다는 점.
하지만 개발자가 하는 역할이 많아지므로 가격은 저렴하다.


PaaS
Paas는 소프트웨어 개발환경을 서비스로 제공하는 클라우드 서비스를 뜻한다.
개발환경이란 구현하기 위한 데이터베이스, 웹서버 등 API를 제공하는 것을 말한다.
ex) Heroku , Google App Engine, MS-SQL Azure

기본 인프라를 관리할 필요가 없어 애플리케이션 개발과 관리에 집중할 수 있다.
애플리케이션 실행과 관련된 리소스 구매, 용량 계획, 소프트웨어 유지 관리, 패치 or 다른 모든 획일적인 작업에 대한 부담을 덜어준다.


SaaS
Saas는 클라우드 환경에서 동작하는 응용프로그램을 서비스 형태로 제공하는 것.
ex) Mail, Google docs

서비스 제공자에 의해 실행되고 관리되는 완전한 제품을 제공한다.
SaaS 오퍼링을 사용하면 서비스가 어떻게 유지 관리되는지 또는 기본 인프라가 어떻게 관리되는지 생각할 필요 없이
해당 특정 소프트웨어를 어떻게 사용할지만 생각하면 되는 것이다.
하지만 상대적 비용이 비싸다.




배포모델
클라우드
클라우드상에 완전히 배포된다.
애플리케이션의 모든 부분이 클라우드에서 실행된다.

온프레미스
프라이빗 클라우드라고 부르기도 한다.
리소스의 활용도를 높이기 위해 애플리케이션 관리 및 가상화 기술을 사용한다.
이점에서 레거시 IT 인프라와 같다.

하이브리드
클라우드 기반 리소스와 클라우드에 위치하지 않은 기존 리소스 간에 인프라와 애플리케이션을 연결하는 방법.



AWS(Amazon Elastic Compute Cloud)
EC2 서비스
: VM(Virtual Machine) 기반의 컴퓨팅 자원을 제공하는 서비스이다.
EC2(가상서버)에서 생성한 가상 서버를 인스턴스라고 한다.
서버 각각을 객체로 본다.

인스턴스 유형
범용 : M1 , M2 로 시작하는 유형 / 평균적인 사양(vCPU, 메모리, 네트워크, 저장공간)제공
컴퓨팅 최적화 : C로 시작하는 유형 /  메모리 대비 vCPU 비율이 높다.
GPU 최적화 : G로 시작하는 인스턴스 유형 / NVIDIA GPU 장착
메모리 최적화 : M2 , CR1 로 시작하는 유형 / 메모리 용량이 크다.
스토리지 최적화 : H, I 로 시작하는 유형 / 초고속 I/O 제공, 스토리지 용량이 크다.
마이크로 인스턴스 : 낮은 vCPU 성능과 적은 메모리 제공


cf)
vCPU
EC2는 가상서버 이므로 가상화 소프트웨어를 통해 실행된다.
가상화 소프트웨어를 통해 제공되는 CPU를 vCPU라고 한다.

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

그리드 컴퓨팅은 자원 자체가 흩어져 있기에 해커가 개입될 수 있지만

클라우드 컴퓨팅은 중앙집중 및 가상화되어 있어 불가능하다.



Reference

책 '아마존 웹 서비스를 다루는 기술'
책 '컴퓨터 사이언스'



-..-