구름? 컴퓨터..? 뭐지
클라우드와 컴퓨팅 모두 들어본적 있는 단어이다.
그러나 클라우드 컴퓨팅이 뭐야? 라고 묻는다면 뭐라고 말해야될지 모르겠다.
이 참에 정리해보려고 한다.
개념
클라우드 컴퓨팅이란 인터넷 상의 가상의 서버(컴퓨터)를 두고 필요할때마다 불러오는 서비스를 뜻한다.
자원,스토리지,디비 등의 자원을 필요에 따라 꺼내 쓰는 것이다.
과거에 서버 컴퓨터를 만들기 위해서는 미리 물리적인 컴퓨터를 사놔야했다.
현재에는 클라우드 컴퓨팅을 운영하는 업체들이, 간단한 클릭 만으로 서버 컴퓨터를 제공하고 있다.
그 업체 중 가장 유명한것이 바로 우리가 많이 들어본 AWS 이다.
그렇다면 클라우드를 사용함으로써 얻게 되는 이점을 뭘까?
가장 먼저 생각나는 이득은 비용 절감이다. 사용한 만큼만 비용을 지불하면 되므로 물리적인 자원 구매하여 유지해야 할 때보다 경제적이다.
두번째로는, 탄력성이다. 원하는 만큼 자원의 크기를 조절할 수 있으므로, 운영에 탄력성이 있다.
서비스 종류
서비스의 종류는 자원을 어디까지 제공하느냐에 따라 3가지로 나뉜다.
IaaS
Infrastruture as a Service
AWS, 네이버 플랫폼과 같은 인프라 구조를 제공하는 서비스이다.
가상 서버 , 스토리지, 가상 네트워크 등의 리소스 형태로 되어있다.
사용자는 물리적인 하드웨어를 직접 관리할 필요가 없고, 직접적으로 해당 서비스를 이용해서 컴퓨터 리소스를 사용할 수 있다.
AWS의 EC2,S3 등이 대표적인 예이다.
AWS의 EC2는 물리적인 서버와 네트워크, 스토리지 등 원하는 os를 바로 깔아 사용 가능하므로 사용자가 원하는 os와 스펙을 선택하기만 하면 된다.
각자 다른 컴퓨터를 갖고, 동일한 컴퓨터 환경에서 실습을 하고 싶다면, aws 를 사용하여 동일한 환경의 컴퓨터를 만들면 된다!
서비스 공급 업체는 다음과 같다.
AWS, Microsoft Azure, Google Cloud, OpenStack
PaaS
Platform as a Service
DB 또는 Application 서버 미들웨어를 제공한다.
하드웨어/OS/미들웨어 에 대한 관리는 제공자가 하고
사용자는 제공된 미들웨어만 사용할 수 있다.
개발 환경과 관련된 서비스 제공를 제공한다. 예를 들어 OS, DB, WAS, JDK가 있다.
따라서 기본 인프라를 관리할 필요 없이 애플리케이션을 실행할 수 있게 해준다.
PaaS를 사용하는 사용자는 os, server, hardware, network
고려할 필요 없이 어플리케이션에만 집중하면된다.
node.js, java 와 같은 런타임을 미리 깔아 놓고
거기에 소스코드만 적어서 빌드하는 구조이고
컴파일은 클라우드에서 해서 결과만 가져온다.
Lambda, AWS Elastic Beanstalk, Google App Engine 모두 PaaS이다.
SaaS
Software as a Service
서비스로서의 소프트웨어를 의미이며, 클라우드 서비스 형태 중 가장 완성된 형태의 클라우드 서비스이다.
모든 것을 기업(클라우드)에서 제공함으로 사용자는 별도의 설치나 부담이 필요 없이 SW를 사용할 수 있다.
그렇다면 기존 소프트웨어 전달방식과 뭐가 다른거지?
개별 컴퓨터에 응용 프로그램을 다운받아서 설치할 필요 없다.
N드라이브, 구글드라이브, iCloud 가 예시이다.