[GCP] Compute Engine: VM 인스턴스

서경·2024년 9월 30일
post-thumbnail

Compute Engine (Google Compute Engine, GCE)


VM 인스턴스 가상 머신을 생성하여 다양한 사람들의 동시 접속을 가능하게 한다.
Colab도 VM 인스턴스의 하나다. VM 인스턴스를 사용하여 코렙을 사용할 수 있게 한다.


  • Compute Engine은 GCP에서 제공하는 가상 머신(VM, Virtual Machine) 서비스
    AWS EC2에 해당하는 서비스

  • GCP에서 가장 기본적이면서 많이 쓰이는 인프라로 네트워크에 연결된 가상 서버 제공
    전 세계에 위치한 데이터 센터들은 광섬유 네트워크로 연결되어 있기 때문에 단일 인스턴스에서 글로벌 부하 분산 cloud computing으로 확장할 수도 있다.
    온-프레미스 상에 물리적으로 서버를 구성하는 것과 같이 클라우드에 서버를 생성하는 것과 같다.

  • Compute Engine은 다양한 인스턴스 구성(H/W)이미지(OS) 제공
    컴퓨터 시스템은 하드웨어와 소프트웨어로 구성된다.
    우리가 구성하는 건 서버이며, 서버 구성에 CPU, 메모리, 스토리지(하드웨어를 결정)가 기본이된다.






1. 인스턴스 구성 (H/W)

  • 마이크로에서부터 vCPU 160개 또는 3.75TB 메모리를 제공하는 인스턴스까지, 사전에 정의된 다양한 사양의 인스턴스 제공
    큰 메모리는 생성 시간이 오래 걸린다.

  • 임의로 인스턴스의 시스템 구성을 설정할 수 있는 custom 머신 유형도 제공하기 때문에 자신의 요구사항에 맞춘, 나만의 머신 유형을 설정하여 저렴하게 이용

  • 최대 64TB의 영구 디스크 Repository를 HDD 또는 SSD 형태로 제공하기 때문에 목적에 맞는 영구 디스크 Repository를 선택하여 이용할 수 있으며, 다양한 OS 이미지 제공


vCPU는 클라우드 환경에서 물리적인 CPU 코어를 논리적으로 나누어 가상 머신이나 컨테이너에 할당된 컴퓨팅 리소스이다.

온-프레미스는 하드웨어 구성을 해야 하며, 하드웨어 구매로 부터 시간이 걸린다.
하지만, 클라우드는 가상환경에다가 소프트웨어적으로 서버를 구성하는 형태이기 때문에 즉각적인 생성이 된다.

인스턴스를 생성하여 온-프레미스 상 서버처럼 운영할 수 있다.
단, 사용 즉시 과금이 이루어지며, VM 인스턴스 구성 시 월 단위 예상 비용이 보여진다.

GCP에서 사전에 구성해둔 인스턴스를 사용하거나 원하는 형태의 하드웨어 구성으로 직접 생성이 가능하다.






2. 이미지 (OS)

운영체제(OS)는 하드웨어를 제어하는 중요한 시스템 소프트웨어이다.
하드웨어가 결정되면, 그 하드웨어를 효과적으로 관리하고 제어하기 위해 OS가 필요하다.
OS는 컴퓨터 시스템의 하드웨어 자원을 관리하고, 다른 소프트웨어가 하드웨어를 사용할 수 있도록 중개 역할을 한다. 이 때문에 OS는 시스템의 핵심적인 요소로 매우 중요하다.

이미지는 인스턴스가 실행 중인 상태에서는 생성할 수 없으며, 중지되어 있는 상태에서 인스턴스를 그대로 복사한다.


  • 지원하는 OS 이미지로는 Debian, Ubuntu, SUSE, Red Hat, Windows Server



2.1. Linux

Linux Kernel 의미



2.2. Linux 배포판

○ Kernel + 각종 Utility + 설치 프로그램을 하나의 패키지로 구성

오피스 프로그램, 시스템 제어 프로그램 등 각종 응용프로그램을 설치할 수 있게 묶어 둔 것이 배포판이다.
커널 + 프로그램 + 프로그램 설치를 묶어놨다고 보면 된다.


○ Red Hat 계열 배포판

  • RHEL(RedHat Enterprise Linux)
  • SUSE

○ Debian 계열 배포판

  • Debian
  • Ubuntu

Ubuntu, SUSE, Red Hat = 리눅스 서버
Windows Server = 윈도우 서버(윈도우와 다름)

Red Hat이든 Debian든 리눅스 커널은 하나이기 때문에 커널,
즉, 기본 리눅스 명령은 동일한데 세부적인 것이 다르다.

Red Hat은 네트워크 기반 환경에서 많이 사용되며,
Debian든은 윈도우즈 처럼 편의성 기준으로 구성이 된다.
세계적으로 두 개의 계열을 많이 사용한다.

GCP에서는 Debian든 계열의 리눅스와 Red Hat 계열의 리눅스를 제공한다.
앤드 유저 보다는 서비스 제공을 목적으로 한다.

GCP에서는 제공하는 OS 이미지 유형은 리눅스, 윈도우 2개가 있으며(맥 OS 미제공),
맥 OS는 AWS에서 이원화하여 제공한다.






  • Compute Engine은 S/W 또는 업데이트와 같은 호스트 시스템 이벤트가 발생하더라도, VM 인스턴스가 계속 실행될 수 있게 해주는 라이브 이전 기능 제공
    사용자는 VM을 재부팅할 필요 없이 동일 영역에서 실행 중인 인스턴스를 또 다른 호스트로 라이브 이전할 수 있다.

GCP에서 생성된 VM을 운영하다가 변경할 필요가 생기면, 존(zone) 이나 리전(region) 을 이동하는 것은 불가능하다.
현재 생성된 VM 자체를 직접적으로 다른 존이나 리전으로 이전할 수는 없지만, 다른 네트워크로 이동하는 방법은 가능하다.

GCP는 라이브 마이그레이션 기능을 제공하여, VM이 운영 중인 상태에서도 물리적인 서버 간에 VM을 이전할 수 있다. 그러나 이 기능은 동일한 존 내에서만 가능하며, 존이나 리전 간 VM 이전은 지원되지 않는다. 대신, 새로운 리전이나 존에 VM을 다시 생성한 후 데이터를 마이그레이션하는 방법을 사용할 수 있다.



  • Compute Engine에 있는 선점형 VM은 GCP에 있는 유휴 자원을 활용하여 매우 저렴한 가격으로 컴퓨팅 리소스를 이용할 수 있다.
  1. 대규모 컴퓨팅 및 일괄 작업이 필요할 경우 합리적인 가격으로 해당 리소스를 얻을 수 있다.
  2. 기존 VM과 동일한 옵션을 제공하지만 최대 24시간까지만 유지

GCP에서 인스턴스를 생성하면 서버 하나를 할당받아 가상 환경에서 운영하게 된다. 이때, 기본 가격이 책정되어 과금이 발생한다. 하지만 일시적인 개발 환경이나 테스트 용도로만 VM이 필요한 경우, 일반적인 VM보다 저렴하게 사용할 수 있는 선점형 VM(Preemptible VM)을 제공받을 수 있다.

선점형 VM은 일반 VM보다 매우 저렴하지만, 사용 기간에 제한이 있다.
GCP 입장에서는 미리 선투자한 하드웨어 자원을 활용하는 것이므로, 남는 자원을 저렴하게 제공하여 사용자들이 이를 활용하도록 하고, 자원 활용률을 높인다.
사용자들은 저렴한 가격으로 VM을 사용할 수 있고, GCP는 미리 투자한 자원에 대한 회수율을 높일 수 있다.

단점은, 선점형 VM은 최대 24시간까지만 사용할 수 있으며, 그 이후에는 강제로 종료된다. 따라서 장기적인 운영 환경보다는 일시적인 테스트나 개발 용도로 적합하다.



  • Compute Engine은 상대적으로 저렴한 비용으로 이용할 수 있다.
  1. 초 단위로 비용을 청구하고 등록 수수료나 선불 약정 없이 장기 실행 작업에 대해서 자동으로 할인 가격 제공
  2. 약정 사용 할인을 사용하면 인스턴스 유형 변경의 제한 없이 최대 57%까지 비용 절감 가능

GCP에서는 약정을 통해 비용을 절감할 수 있으며, 변경에 대한 제한 없이 일정한 금액을 약정하여 구독 서비스처럼 운영할 수 있다.
VM은 생성되는 순간부터 과금이 시작되며, 초 단위로 과금되어 시간이 지남에 따라 비용이 발생한다.

이와 함께, 저장공간(스토리지) 에 대한 비용도 발생한다.
예를 들어, 10TB의 스토리지를 예약했더라도 실제로 사용한 만큼만 비용이 청구된다.
즉, 100GB를 사용했다면 100GB에 해당하는 저장 비용만 발생하는데, 이러한 방식은 종량제 개념으로, 사용한 리소스에 대해서만 비용을 지불하는 방식이다..



  • Compute Engine은 Google Kubernetes Engine을 통해서 Compute Engine VM에서 Docker Container를 실행 및 관리, 조정할 수 있다.









VM 인스턴스

인스턴스 생성 시 금액을 고려해야 한다.


  • Compute Engine 인스턴스에서는 Linux 및 Windows Server용 공개 이미지뿐만 아니라, 사용자가 만들거나 사용자의 기존 시스템에서 가져올 수 있는 비공개 커스텀 이미지도 실행할 수 있다.
  1. 각각의 인스턴스는 GCP 프로젝트에 속하며, 하나의 프로젝트는 여러 개의 인스턴스를 가질 수 있다.
  2. 프로젝트에서 인스턴스를 만들 때 해당 인스턴스의 영역 운영체제 및 머신 유형 등을 지정할 수 있다.



  • VM 인스턴스는 프로젝트에 포함이 되어 있기 때문에 프로젝트를 삭제하면 여기에 속한 VM 인스턴스도 함께 삭제된다.
    · 기본적으로 인스턴스는 운영체제가 포함된 작은 부팅 영구 디스크를 가지고 있다.
    · 더 많은 저장공간이 필요한 경우에는 Repository 옵션을 통해서 저장공간을 추가할 수 있다.
    * 프로젝트가 먼저 생성이 되어야 VM 인스턴스를 만들 수 있다.
    만약, 프로젝트가 삭제된다면, VM인스턴스가 함께 삭제된다.



  • 프로젝트에는 최대 5개의 VPC 네트워크를 가질 수 있으며, Compute Engine 인스턴스는 하나의 VPC 네트워크에 속하게 된다.
    · 동일한 네트워크 안에 위치한 인스턴스들은 로컬 영역 네트워크 프로토콜로 서로 통신할 수 있다.



  • Compute Engine은 인스턴스를 만들 때 컨테이너를 사용하여 만들 수 있는 옵션을 지원하기 때문에 VM 또는 인스턴스 템플릿을 만들 때 도커 이미지로 시작할 수 있다.
    · VM 관리를 위해 GCP에서 제공하는 도구는 웹에서 사용할 수 있는 gcloud 명령줄 도구 및 REST API 및 모바일 애플리케이션 등을 이용할 수 있다.

VM 인스턴스가 생성되면 VPC에 연결되어 있어야 내부 및 외부 접속 여부가 결정되며, 같은 네트워크 안에서는 연결이 가능하다.
클라우드에서 VM 인스턴스를 생성할 때 이를 컨테이너로 만들 수 있고 나중에 템플릿을 생성할 때도 도커 이미지로 생성하는 것이 가능하다.









머신 유형 (인스턴스 유형, H/W)

  • 메모리, vCPU, 디스크등을 포함하여 인스턴스에 제공할 수 있는 가상화된 H/W 리소스 모음 지정
    · 머신 유형의 조합을 통해서 사용자에게 맞는 최적 머신을 만들 수 있다.

  • 사전 정의된 머신 유형
    · Compute Engine에서는 사전에 정의함 머신 유형이 있다.
    자신의 목적에 맞는 머신 유형을 선택하면 되고, 생성된 이후에도 언제든 머신 유형은 변경할 수 있다.

  • 커스텀 머신 유형

  1. 사전 정의된 머신 유형이 맞지 않을 경우, 인스턴스 생성 시 사용할 vCPU 수와 메모리 용량등 머신 유형을 설정할 수 있다.
  2. 사전 정의된 머신 유형보다 비용이 추가되며 선택 가능한 메모리 및 vCPU에 일부 제한이 있을 수 있다.
  • CPU 플랫폼
  1. Compute Engine에서 VM 인스턴스가 사용할 수 있는 CPU 플랫폼 중 하나를 사용하게 된다.
  2. CPU 플랫폼을 직접 지정하지 않으면, 기본적으로 설정되어 있는 기본 플랫폼 사용
  • Compute Engine의 GPU
  1. Compute Engine에서는 VM에 추가할 수 있는 GPU 제공
  2. GPU를 사용하면 머신 러닝 및 데이터 처리와 같은 특정 부하 작업에 효율을 가져올 수 있다.
  3. 3D 시각화 및 3D 렌터링 같은 그래픽 집약적인 부하가 있는 경우 NVIDIA GRID 기술을 사용하는 가상 워크스테이션을 만들 수도 있다.









머신 구성

1. 머신 구성 - 범용


범용(General Purpose) 인스턴스는 다양한 작업에 적합한 인스턴스 유형으로, 성능과 비용의 균형이 잘 잡혀 있다.

E2 인스턴스는 가용성이 높은 인스턴스 유형으로, 지속적으로 실행되며 중단되지 않는 안정적인 운영을 제공한다.






2. 머신 구성 - 컴퓨팅 최적화


CPU 속도가 중요한 경우, 즉 CPU 연산이 빈번하게 발생하는 작업이 많다면, 범용 인스턴스보다는 컴퓨팅 최적화 인스턴스가 적합하다.
이는 CPU 성능이 중요한 작업에 맞춰 최적화된 인스턴스로, 더 높은 처리 성능을 제공한다.






3. 머신 구성 - 메모리 최적화


메모리 최적화 인스턴스는 메모리 성능이 중요한 서비스를 제공할 때 적합하다.
특히 인메모리 데이터베이스(예: Redis)와 같은 경우, 데이터를 메모리에 저장하기 때문에 메모리의 성능과 용량이 매우 중요하다.
메모리 최적화 인스턴스는 이러한 상황에서 최상의 성능을 제공한다.






4. 머신 구성 - 스토리지 최적화


데이터베이스를 운영할 때, 스토리지 처리 속도는 매우 중요하다.
특히 대용량 데이터베이스에서는 빠른 읽기/쓰기 속도가 필요하기 때문에, 스토리지 성능이 좋은 인스턴스를 선택하면 데이터 처리 속도를 향상시킬 수 있다.
스토리지 처리 속도가 높으면 쿼리 성능이 좋아지고, 전체적인 시스템 응답 시간이 단축된다.
SSD나 NVMe 기반 스토리지를 사용하는 것이 이러한 상황에서 유리하다.






5. 머신 구성 - GPU


딥러닝 학습이나 AI 서비스 제공에서는 GPU가 매우 중요하다.
특히 이미지, 음성, 자연어 처리와 같은 작업에서 GPU는 학습 속도에 큰 영향을 미친다.
GPU를 사용하지 않으면 학습 시간이 길어지며, CPU만으로 학습하게 되면 시간이 더 오래 걸리고 비용도 증가하게 된다.

따라서 학습 시간을 단축하고 비용 효율성을 높이기 위해 GPU를 사용하는 것이 좋다.
특히 빠른 학습이 요구될 때 GPU를 활용하는 것이 효과적이다.

또한, 쿠버네티스 기반 환경에서는 컨테이너로 딥러닝 모델을 배포하거나 관리하는 것이 하나의 좋은 방법이 될 수 있다.









Image (os)

  • Compute Engine에서는 Google에서 제공하는 운영체제 Image를 사용하여 인스턴스 부팅 디스크를 만들 수 있고, 공개 이미지와 커스텀 이미지가 있다.

  • 공개 이미지는 구글, 오픈소스 커뮤니티, 제 3자 공급업체에서 제공하고 관리한다.

  • 기본적으로 모든 프로젝트에서 공개 이미지로 인스턴스를 만들 수 있다.

  • 커스텀 이미지는 사용자의 프로젝트에서만 사용할 수 있는 이미지로 부팅 디스크 및 다른 이미지에서 커스텀 이미지를 생성한 다음에 해당 이미지를 이용하여 인스턴스를 만들 수 있다.

  • 대부분 공개 이미지는 추가 비용이 없지만, 프리미엄 이미지의 경우 인스턴스에 추가 비용 발생

  • 커스텀 이미지를 사용하는 경우 인스턴스에 추가 비용이 발생하지 않지만, 프로젝트에 커스텀 이미지를 유지하기 위한 이미지 저장 비용 발생


GCP에서 제공되는 OS 이미지를 사용하는 것은, 구글 클라우드가 제공하는 기본 이미지를 사용하는 것이다.
대부분의 공개된 이미지는 추가 비용이 없지만, Windows와 같은 유료 운영체제는 추가 비용이 발생한다.

기본적으로 리눅스 이미지는 무료로 제공되지만, 일부 PaaS(Platform as a Service) 유형의 이미지를 사용하면 비용이 발생할 수 있다.
따라서, 리눅스를 사용하면 대체로 무료이지만, 특정 상황에서는 유료가 될 수도 있다.









실시간 이전 (Live Migration)

  • Compute Engine은 S/W 또는 H/W 업데이트와 같은 호스트 시스템 이벤트가 발생하더라도 인스턴스를 종료 및 재부팅할 필요 없이 계속 실행시키는 실시간 이전이라는 기능 제공

  • Compute Engine은 사용자가 VM을 재부팅할 필요 없이 동일 영역에서 실행 중인 인스턴스를 또 다른 호스트로 라이브 이전한다.
    · 사용자의 VM에 영향을 주지 않으면서도 인프라를 보호하고 안정적인 상태로 유지하는 데 반드시 필요한 유지관리를 할 수 있다.

  • 라이브 이전은 다음과 같은 작업들에서 실행 중인 상태로 유지
    1. 일반적인 인프라 유지 관리 및 업그레이드, 호스트 OS 및 BIOS 업그레이드, 즉각적인 대응이 필요한 보안 관련 업그레이드, 호스트 이미지 및 패키지의 저장 용량에 대해 호스트 루트 파티션 크기 변경을 포함한 시스템 구성 변경
    2. 데이터 센터의 네트워크 및 전력 망 유지관리, 메모리, CPI, 네트워크 인터페이스 카드, 디스크, 전원 등의 H/W 오류가 발생하는 경우 대신 최선의 방식으로 수행
    3. H/W가 완전히 고장나거나 하는 이유로 실시간 이전이 불가능한 경우에는 VM이 다운된 후 자동으로 다시 시작되고 호스트 에러(hostError)가 로깅된다.

  • 실시간 이전은 VM 자체의 어떠한 속성도 변경하지 않는다.
  1. 실행 중인 VM을 하나의 호스트 머신에서 동일 영역에 있는 다른 호스트 머신으로 단순 전송된다.
  2. 내부/외부 IP 주소, 인스턴스 메타 데이터, 블록 Repository 데이터 및 볼륨, OS 및 애플리케이션 상태, 네트워크 설정, 네트워크 연결 등을 포함하여 모든 VM 속성 및 특성이 변경되지 않은 상태로 유지

0개의 댓글