본문 바로가기

클라우드

클라우드란?

클라우드..??


클라우드는 단순히 외부 서버에 자원을 활용하는 것으로만 알고 있었다. 직접 사용해봤음에도 이게 정확히 뭔지 잘 몰랐다. IaaS, PaaS, SaaS 등의 개념도 겉으로만 알고 있었다.


클라우드 컴퓨팅은 인터넷 기반 컴퓨팅의 일종으로 정보를 자신의 컴퓨터가 아닌 인터넷에 연결된 다른 컴퓨터로 처리하는 기술이다. 예를 들어 인공지능이나 빅데이터처럼 많은 자원이 필요한 경우 분산되어 있는 여러 컴퓨터에서 자원을 끌어다가 쓰는 것이다. 컴퓨팅 자원의 예로는 네트워크, 서버, 스토리지, 애플리케이션, 서비스이다. 자원을 공유한다는 것이 핵심인 것 같다.


장점으로는 서버 구매 비용이 없다는 것이다. 서버를 직접 구축하고 관리하는 수고와 비용이 줄기 때문에 개발에 집중할 수 있다. 고용량 네트워크, 저비용 컴퓨터 및 스토리지 장치 이용, 하드웨어 가상화, 서비스 지향 아키텍쳐, 자율 및 유틸리티 컴퓨팅이 채택되어 클라우드 컴퓨팅이 성장하였다. 수요가 증가하면 규모를 확장하고 줄면 규모를 줄이는 등 유연하다.


클라우드 서비스

인터넷 상에 자료를 저장하고 사용자가 필요한 자료나 프로그램을 설치하지 않고도 인터넷 접속을 통해 언제 어디서나 이용할 수 있는 서비스이다. 


클라우드 컴퓨팅이라는 용어의 기원

정확한 정보는 없다. 하지만 서버 아이콘을 원으로 둘러쌌는데 여러개의 서버 클러스터가 겹쳐지게 되면 구름같은 모양이어서 클라우드라는 이름이 붙게 되었다는 설도 있다. 현재 클라우드는 분산 컴퓨팅을 위한 플랫폼을 의미한다.


클라우드는 비용 절감을 목적으로 한다. 핵심 사업에 집중할 수 있게 한다. 주된 기술은 가상화이다. 가상화 소프트웨어는 물리적인 컴퓨팅 장치를 하나 이상의 가상 장치로 분리시키는 것이다. 여러 독립적인 컴퓨팅 장치들의 규모 제어가 가능한 시스템을 만드는데 필수적인 운영 체제 수준 가상화와 함께 유휴 컴퓨팅 리소스들을 더 효율적으로 할당, 사용할 수 있다.


클라우드 컴퓨팅은 일종의 그리드 컴퓨팅(분산 병렬 컴퓨팅 : 서로 다른 컴퓨터를 하나로 묶어 가상의 대용량 고성능 컴퓨터를 구성하는 것)이다. 


서비스 모델


IaaS Infrastructure as a Service

가장 기본적인 클라우드 서비스 모델. 가상 머신과 기타 자원들을 서비스로 제공하는 모델. 물리적 컴퓨팅 자원, 위치, 데이터 파티셔닝, 확장, 보안, 백업과 같은 인프라스트럭쳐의 세세한 부분으로부터 사용자를 이끌어내는 온라인 서비스. IaaS를 사용하는 사용자는 응용 프로그램을 배치시키기 위해 OS, SW를 설치한다. IaaS는 환경 설정을 다 해야하는 느낌이다. ex 아마존 웹서비스의 EC2.


PaaS Platform as a Service

개발자들에게 개발 환경을 제공한다. 제공자는 개발을 위한 툴킷, 표준, 배포, 지불을 위한 채널을 개발한다. OS, 프로그래밍 언어 실행 환경, DB, 웹 서버를 포함한 컴퓨팅 플랫폼을 배급한다. 개발자들은 기반 하드웨어 및 소프트웨어 계층을 구매한다. 관리 비용이나 복잡성이 없어도 자신의 소프트웨어 솔루션을 클라우드 플랫폼에서 개발, 실행할 수 있다. MS Azure, Google App Engine과 같은 PaaS에서 기반이 되는 컴퓨터, 스토리지 자원은 응용 프로그램 수요에 맞추기 위해 자동으로 규모를 조정하며 클라우드 사용자는 자원을 수동으로 할당하지 않아도 된다.


내가 써 본 IWINV 클라우드 서버도 Linux Ubuntu 기반의 APM이 설치되어 있었으니까 PaaS인 것 같다.


SaaS Software as a Service

SaaS 모델에서 사용자들은 응용 소프트웨어와 데이터베이스에 대한 접근 권한을 가진다. 클라우드 제공자들은 응용 프로그램을 실행하는 인프라스트럭쳐와 플랫폼을 관리한다. "주문형 소프트웨어"를 가리키기도 한다. 가격 정책은 종량제 또는 구독 비용 기반이다. 클라우드 사용자들은 자신의 컴퓨터에 응용 프로그램을 설치하고 실행할 필요가 없어서 유지 보수와 지원이 단순하다. 클라우드 응용 프로그램들은 확장성 관점에서 다른 응용 프로그램과 차이가 있다. 확장성은 변화하는 작업 수요를 충족하기 위해 런타임 중에서 태스크들을 여러 개의 가상 머신으로 복제함으로써 수행할 수 있다. 로드 밸런서들은 가상 머신들의 집합을 통해 작업을 분산시킨다.


대표적인 예가 네이버 클라우드나 구글 드라이브, 구글 docs, 구글 slide 같은 것이다. 여러 사람이 브라우저 상에서 별도의 프로그램 설치 없이 동시에 문서에 접근하여 작성할 수 있다.


서버리스 컴퓨팅

클라우드 컴퓨팅 실행 모델의 하나로, 클라우드 제공자는 동적으로 머신 자원의 할당을 관리한다. 가격은 애플리케이션이 소비한 자원의 실제 양에 기반을 둔다. 서버리스 컴퓨팅은 말이 서버가 없다는 것이지 서버가 필요하긴 하다고 한다. 그럼에도 서버리스 컴퓨팅이라는 이름이 사용되는 이유는 서버 관리 및 용적 계획 결정이 완전히 개발자나 운영자로부터 숨겨져 있기 때문이다. 서버의 존재에 대해 생각하지 않아도 된다.

서버리스 프레임워크 : Kubeless, Fission, Funktion


BaaS Backend as a Service

애플리케이션 개발에 있어서 필요한 다양한 기능(DB, SNS 연동, 파일 시스템)을 API로 제공해서 개발자들이 서버 개발을 하지 않고 필요한 기능을 쉽고 빠르게 구현할 수 있다. 서버 트래픽이 늘어나도 서버가 자동으로 확장된다.

ex : FireBase


FaaS Function as a Service

프로젝트를 여러 개의 함수로 나눠서 분산된 컴퓨팅 자원에 등록하고 함수 실행 횟수만큼 비용을 낸다. 주기적으로 실행되게 할 수 있다. 웹 요청을 처리할 수 있다. 백엔드 API를 구성할 수 있다.

FaaS와 PaaS의 차이

PaaS의 경우엔 애플리케이션이 배포되면 항상 서버에 애플리케이션이 돌아가고 있고 FaaS의 경우엔 이벤트가 발생했을 때 실행되고 작업이 종료되면 끝난다.


출처

https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C_%EC%BB%B4%ED%93%A8%ED%8C%85#%EC%97%AD%EC%82%AC

https://velopert.com/3543

'클라우드' 카테고리의 다른 글

도커? Docker란? 도커 설치  (0) 2019.02.25