클라우드

1c2·2024년 3월 31일
0

CS

목록 보기
4/18

클라우드 #1: 가상머신

클라우드 기술을 배워보기 전에 클라우드의 기반 기술 중 하나인 가상머신을 먼저 알아본다.

전통적 배포 방식

전통적인 배포 방식은 물리적인 컴퓨터 한 대에 하나의 OS를 설치하고 여러 가지 프로그램을 설치하는 방식이다. 계정을 나눠 여러 명의 사용자가 이용할 수 있도록 할 수 있지만, 어떤 프로그램을 설치했을 때 다른 앱에 영향을 미칠 수 있다.

가상화 배포 방식

가상화 배포 방식은 가상머신을 기반으로 한다. 가상머신이란 컴퓨터의 하드웨어를 소프트웨어적으로 구현한 것이다. 한 대의 컴퓨터를 가지고 여러 개의 OS를 구동할 수 있게 되며, CPU, RAM을 물리적으로 갈아끼는 것이 아니라 설정만으로 이를 수행할 수 있다.

이러한 가상화는 리소스의 효율적 사용을 가능하게 하며, 다양한 애플리케이션과 서비스를 하나의 서버에서 독립적으로 운영할 수 있는 기반을 제공한다.

클라우드 기술의 핵심 요소 중 하나는 중간계층인 하이퍼바이저다. 하이퍼바이저는 하나의 시스템 상에서 여러 개의 가상 컴퓨터를 구동할 수 있도록 해 주며, 이 위에 여러 개의 가상머신을 구축할 수 있다. 각 가상머신 위에는 운영체제(OS)가 올라가고, 그 위에 애플리케이션(앱)이 설치되어 가상머신을 독립적으로 수행할 수 있다.

클라우드는 이러한 가상화 기술 덕분에 한 대의 하드웨어로 여러 명의 사용자들에게 독립적으로 클라우드 서비스를 할 수 있다.

독립적으로 구축된 가상머신은 서로 상호작용하지 않으며, 한 가상머신 위의 프로그램은 다른 가상머신 위의 프로그램에서 볼 수 없는 형태가 된다. 이 현상을 '샌드박스되었다'고도 한다. 다만, OS가 공유되지 않기 때문에 각 가상머신에 일일이 OS를 설치해야 하는 단점이 있다.

클라우드 #2: 오프프레미스 vs. 온프레미스 클라우드

클라우드 서비스는 내가 아닌 다른 회사의 공급자가 호스팅하고 인터넷을 통해 사용자에게 제공되는 인프라, 플랫폼 또는 소프트웨어를 말한다. 이를 이용하면 자체 인프라나 하드웨어 설치 없이도 애플리케이션과 리소스에 쉽고 저렴하게 접근할 수 있다.

오프프레미스(o-premise) 방식

서버를 직접 구매하지 않고 분산된 서버를 기반으로 클라우드를 이용하는 모습을 말한다. 서비스 운영에만 집중할 수 있는 장점이 있다.

온프레미스(on-premise) 방식

이와는 반대로, 온프레미스 방식은 기업이나 개인이 자체 시설에서 보유하고 직접 유지 관리하는 프라이빗 데이터센터(IDC)를 의미한다. 예를 들어, 네이버의 데이터센터는 '프리쿨링'을 통한 전기 절약이 가능한 강원도 춘천에 위치해 있다.

클라우드 #3: IaaS, PaaS, SaaS

클라우드 서비스를 이용하면 서버를 직접 구매할 때 고려해야 할 전력, 위치, 서버 세팅, 확장성 등을 고민하지 않고 서비스 운영에만 집중할 수 있다. 이를 오프프레미스(o-premise) 방식이라고 한다.

IaaS(Infrastructure-as-a-Service)

인프라형 클라우드 서비스로, 클라우드가 단지 인프라를 제공한다. 예를 들어, AWS의 EC2, NCP 등이 이에 해당한다. 개발자는 node.js, MongoDB 등을 직접 설치해야 하지만, 특정 서비스에 종속되지 않는다.

PaaS(Platform-as-a-Service)

플랫폼형 클라우드 서비스로, 클라우드가 플랫폼을 제공한다. Node.js, MongoDB 등이 이미 설치되어 있으며, 사용자는 클릭을 통해 해당 서비스를 이용할 수 있다. 모니터링, CI/CD가 제공된다. 예를 들어, heroku가 이에 해당한다.

SaaS(Software as a Service)

SaaS는 서비스형 클라우드 서비스로, 완전한 서비스를 클라우드 서비스로부터 제공받아 사용한다.

예) 구글 DOCS
구글 DOCS는 클라우드를 통해 다른 컴퓨터에서도 쉽게 작업하고, 다른 사람과의 실시간 공유 작업이 가능하다.

PaaS와 IaaS 비교

IaaS

  • 유연하며 플랫폼에 종속되지 않는다.
  • 이식성이 높다.
  • 운영 비효율 낮다.

PaaS

  • 유연하지 않으며 플랫폼에 종속된다.
  • 이식성은 낮다.
  • 운영 비효율 좋다.

클라우드 #4: 컨테이너와 도커

컨테이너

컨테이너는 애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 코드와 모든 종속성을 패키징하는 소프트웨어의 표준 단위다. 컨테이너는 OS를 공유하기 때문에 빠르고, 경량화되어 있으며 격리성도 훌륭하다. 그러나 OS에 문제가 생기면 다른 앱에도 영향을 미칠 수 있다.

도커

도커는 컨테이너에 필요한 기능을 거의 모두 제공하는 플랫폼이다. 애플리케이션 구동에 필요한 환경 설정 관련 절차를 도커파일에 작성하고 그 후 빌드를 하면 도커 이미지가 생성되고, 도커 이미지를 실행시키면 도커 컨테이너가 만들어진다. 그 후 도커 컨테이너에 설정된 프로그램, 데이터 등이 실제 컴퓨팅 자원 위에서 돌아가게 된다.

즉, 도커는 다음과 같은 과정을 거쳐 컨테이너를 만든다:
1. 도커파일: 패키지, 환경 변수 설정 등을 기록한 파일이다. 이를 빌드해 도커 이미지로 변환한다.
2. 도커 이미지: 컨테이너 실행에 필요한 파일과 설정값, 데이터 등을 포함된 상태값이며 불변한다. 하나의 이미지에서 여러 개의 컨테이너를 생성할 수 있으며, 컨테이너의 상태와는 무관하게 이미지는 그대로 존재한다.
3. 도커 컨테이너: 컨테이너가 실행되면 도커 이미지에 설정된 프로그램, 데이터 등이 실제 컴퓨팅 자원과 연결된다.

도커의 활용 사례

도커 컨테이너를 기반으로 클라우드에 컨테이너 배포 방식으로 서비스가 많이 운영되고 있다. 2014년 구글에서 발표한 자료에 따르면 구글에서 만드는 서비스들 대부분이 도커 컨테이너에 기반하여 쓰이고 있으며, 매주 약 20억 개의 서비스가 운영된다고 한다.

0개의 댓글