티스토리 뷰

클라우드 컴퓨팅이 뭔지는 이젠 컴퓨터 전공자가 아니더라도 다들 대충은 안다.

그래도 일단 클라우드에 대해서 쓰는 글이니까 정의를 한번 써보면 "인터넷을 통해 원격에서 IT 자원을 빌려쓸 수 있는 대여형 컴퓨팅 환경" 이다.


대중적으로 많이 쓰이는 클라우드 서비스는 스토리지 서비스다. Google Drive라던지 Dropbox라던지 iCloud라던지 한때 N드라이브라는 이름으로 서비스됐던 네이버 클라우드 같은 것들이다.


일반 사용자 레벨에서는 스토리지 이외의 다른 클라우드 서비스를 사용할 일이 거의 없지만, 개발자나 기업을 대상으로는 훨씬 더 다양한 클라우드 서비스들이 제공된다. 가장 대표적인 것이 서버이다. 예를 들어서 내가 1인 개발자인데, 많은 접속자를 수용해야 하는 서버 컴퓨터를 집에 들여놓기엔 초기 비용이나 전기세, 공간 등의 부담이 크다. 그러면 클라우드 회사가 가지고 있는 서버를 빌려서 그 안에다 내가 개발한 물건을 배포하는 것이다.


이런 대형 클라우드 서비스로는 대표적으로 아마존에서 운영하는 AWS (Amazon Web Service), Google Cloud, 마이크로소프트에서 운영하는 Azure 등이 있다.


조금 더 자세하게 클라우드 서비스의 종류에 대해서 얘기하자면 이렇다.


1) IaaS (Infrastructure as a Service)

가장 보편적으로 쓰이는 형태로 IT 서비스를 운영하기 위한 기반이 되는 "인프라" 를 빌려쓰는 것이다.

인프라의 대표적인 예시로 서버 (컴퓨팅 파워), 스토리지, 네트워크 등이 있다.

인프라 위에서 어떤 프로그래밍 언어와 프레임워크를 써서 어떤 서비스를 개발할지는 개발자 몫이다.


2) PaaS (Platform as a Service)

인프라에 더해 개발 환경과 같은 플랫폼까지 클라우드로부터 제공받는 것이다.

예를 들면 AI를 이용한 서비스를 만들고 싶은데 내가 코딩은 할 줄 알지만 머신 러닝을 돌릴 서버도 없고 어떤 언어와 라이브러리를 써야하는지도 모르겠다면 PaaS 서비스에 접속해서 거기서 코딩하면 되는 것이다.


3) SaaS (Software as a Service)

엔드 유저가 사용할 서비스까지 클라우드로부터 제공받는 것이다. 이게 뭔 소리냐면 일반적으로 우리가 쓰는 소프트웨어들을 각 컴퓨터마다 까는게 아니라 클라우드에 접속해서 사용한다는 것이다. 이를테면 MS 워드나 엑셀 대신 사용할 수 있는 구글 문서 도구 같은 것이다.


위에서 언급했던 Dropbox나 Google Drive같은 서비스는 스토리지를 제공한다는 점에서 IaaS로도 분류할 수 있겠지만 서비스 개발을 위한 인프라 목적으로 사용한다기보다는 파일 백업이라는 엔드 유저 입장에서의 서비스를 제공하는 것이기 때문에 SaaS로도 분류할 수 있겠고 그게 더 적합하지 않나 싶다.

(반대로 AWS에는 S3라는 스토리지 서비스가 있는데 이것은 엔드 유저가 사용하는 경우는 거의 없고 AWS의 다른 서비스를 사용하기 위한 자원 저장용으로 주로 사용한다. S3는 IaaS로 보는 것이 타당할 것이다)


위의 3가지 이외에도 XaaS라고 쓰고 X에 아무거나 집어넣어서 있어보이는 단어를 만드는게 한동안 유행하기도 했었는데 그건 붙이기 나름이고, 일반적으로 많이 통용되는 클라우드 서비스의 3가지 분류는 저렇다. 마이크로소프트에서 제시한 아래 그림을 보면 알 수 있듯, IaaS에서 SaaS 쪽으로 갈수록 사용자가 관리하는 부분은 적어지고 클라우드가 담당하는 부분이 많아진다.



위의 분류 말고도 또 다른 분류가 있는데, 배포 방식에 따른 분류가 그것이다. 퍼블릭 클라우드, 프라이빗 클라우드, 하이브리드 클라우드로 나누는데 그 특징은 아래와 같다.


1) 퍼블릭 클라우드 (Public Cloud)

위에서 설명한 일반적인 형태로 클라우드 서비스를 전문적으로 하는 기업으로부터 IT 자원을 제공받는 것이다. 

'사용한 만큼' 돈을 내는 것이 특징.

인프라 구축에 필요한 초기 비용을 절감하고 인프라를 유연하게 운용하기 위해서 주로 쓴다.

유연성이란게 뭔 말이냐면 내가 게임 개발을 해서 서비스를 하려고 서버를 잔뜩 샀는데, 게임이 망하거나 특정 시간대에는 유저가 거의 접속하지 않는다고 하면 서버값이 엄청난 낭비가 된다. 하지만 클라우드를 사용하면 접속자가 없을 때는 서버를 꺼 놓으면 돈을 내지 않으니까 리스크가 적고 비용을 절감할 수 있다는 것이다.


2) 프라이빗 클라우드 (Private Cloud)

기업 내에서 자체적으로 클라우드 시스템을 구축하거나, 위의 클라우드 전문 기업으로부터 해당 기업을 위한 독립적인 데이터센터를 제공받는 형식이다. 퍼블릭 클라우드와 같은 비용적인 이점은 사라지지만, 실제 물리적 인프라에 대한 완전한 통제권을 가지므로 보안이 중요하다거나 하는 경우에 주로 쓴다고 알려져 있다.


3) 하이브리드 클라우드 (Hybrid Cloud)

프라이빗 클라우드 또는 온프레미스 (On-premise: 기존의 전통적인 IT 인프라 운용 방식) 환경 + 퍼블릭 클라우드 환경을 결합한 것이다. 기존에 보유하고 있는 인프라를 온전히 활용하면서 부족한 부분만 퍼블릭 클라우드 서비스로 메꾼다던지 하는 식으로 잘만 쓰면 양쪽의 장점을 둘 다 취할 수 있는 방식이다. 


요즘은 하이브리드 클라우드로 많이들 가는 추세라곤 하더라.


가장 일반적인 케이스인 IaaS 퍼블릭 클라우드를 사용하는 경우를 기준으로, 주요 클라우드 서비스들이 어떻게 동작하고 어떻게 상호작용하는지 간략히 알아보자. 아래 그림은 'AWS 클라우드 디자인 패턴' 중 하나인 'Scale-Out 패턴' 인데, 주요 서비스들이 그림 하나에 들어있어서 설명하기에 괜찮은 것 같다.


2XNdewVsgellO3x8-67124.png


- 서버 (컴퓨팅)


위 그림에서는 EC2. AWS의 컴퓨팅 서비스 이름이다.

컴퓨터를 빌린다. 실제 물리적 컴퓨터는 클라우드 회사의 데이터센터에 있고, 그 물리적 컴퓨터는 가상화 기술에 의해 논리적으로는 여러 개의 가상 머신으로 쪼개진다. 그 중 하나에 내가 접속해서 쓰는 것이다. 접속할 때는 보통 SSH로 접속하게 된다.

VMWare라던지 VirtualBox같은 가상 머신 구동기랑 Putty같은 SSH 클라이언트 프로그램을 써본 적 있다면 사용법이 비슷하다는 걸 알 수 있다.


- 네트워크


AWS나 구글에서는 VPC (Virtual Private Cloud) 라는 용어를 쓴다. 프라이빗 네트워크, 그러니까 공유기에 컴퓨터 여러 대 물리는 것과 같은 환경을 세팅해줄 수 있다. 물론 Public IP도 부여할 수 있어서 부여해준다면 외부와의 통신도 가능하다.


- 스토리지


아까 앞에서 언급했던 S3 같은 것. 서버나 다른 서비스에서 써먹기 위한 파일들을 저장해 놓을 수 있다. 어떤 서비스들은 스토리지에서 파일이 업로드되거나 삭제되는 것을 감지하고 그걸 트리거로 특정한 작업을 수행하게 만들 수도 있다.


- 이미지 관리


위 그림의 AWS 예시에선 AMI (Amazon Machine Image) 라고 써있다.

이미지란 쉽게 말하면 컴퓨터의 상태를 저장해놓은 파일인데, 보통 OS만 깔려있는 초기 상태의 컴퓨터 상태를 말한다. 더 쉽게 말하면 어떤 OS를 쓸건지 고를 수가 있다.

클라우드 회사에서 기본적으로 제공하는 이미지를 사용해서 서버를 생성할 수도 있고, 또는 사용자가 (VMWare 등에서 기존에 사용하던) 머신 이미지를 업로드하고 그걸로 서버를 생성할 수도 있다. 

기본 제공 이미지는 아무래도 서버용이다보니 리눅스가 대부분이지만 윈도우즈 서버 같은 것도 있다.


- 로드 밸런서


위 그림에서 ELB라고 써있는 것.

보통 IT 서비스를 한다면 똑같은 기능을 하는 서버를 한 대만 쓰는게 아니라 여러 대를 쓰기 마련이다. 

한 대만으로는 감당할 수 있는 트래픽에 한계가 있는데, 유저들이 계속 한 대의 서버에만 접속한다면 문제가 생긴다.

로드 밸런서는 그러한 트래픽을 여러 대의 서버로 분산시켜주는 역할을 한다.


- 오토 스케일링


아까 언급했던 '유연성' 이랑 관계가 있는 부분이고 AWS든 어디든 클라우드 회사 홍보하는데 가보면 1순위로 꼽는 장점이다.

트래픽 양에 따라서 동적으로 서버를 늘렸다 줄였다 해주는 서비스다. 

평소엔 동시접속자가 500명 정도인 사이트가 있는데 특정 이벤트 시즌에만 동접자가 10000명 수준으로 늘어난다 치자. 500명 정도만 수용할 수 있는 서버만 가지고 있다면 이벤트 기간에 서버가 터질 것이고, 그렇다고 10000명을 수용할 수 있는 서버를 항시 유지하자니 돈 낭비다. 오토 스케일링은 10000명이 들어올 것 같으면 그때만 순간적으로 서버를 늘려준다. 비용을 효율적으로 사용할 수 있게 되는 것이다.


- 모니터링

AWS 그림에서는 CloudWatch가 모니터링 서비스에 해당한다.

단순히 현재 리소스 사용량이 어떻고 요금이 얼마나 부과되었는지 알 수 있는 기능 뿐 아니라 특정한 상황이 발생하면 그것을 감지해서 어떤 행동을 수행하도록 만들 수가 있다. 대표적인 것이 위의 오토 스케일링과의 연계. 


- 데이터베이스


서버에 알아서 MySQL같은 DBMS를 깔아서 써도 되겠지만, 클라우드에서 제공하는 DBMS를 사용하는 방법도 있다.


---


이외에도 다양한 서비스들이 존재하지만 기본적인 것들만 설명하면 이정도일 것 같다.

위 그림을 다시 한번 간략히 설명하면, 가상 머신을 몇 대 만들고 사용자들은 로드 밸런서를 거쳐 머신에 접속하며 모니터링 서비스가 트래픽을 모니터링하고 있다가 특정 상황이 발생하면 미리 저장되어 있는 이미지를 이용해 새로운 가상 머신을 자동으로 생성해준다는 것이다.

IaaS 클라우드 서비스를 이용하는 가장 기본적인 사례라고 할 수 있겠다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함