이 포스팅은 GCP Fundamentals 시리즈 3 편 중 3 번째 글 입니다.

  • Part 1 - 01: Introdution
  • Part 2 - 02: Getting Started with GCP
  • Part 3 - This Post
▼ 목록 보기

학습 목표

  1. Google Compute Engine의 목적 및 사용 사례 파악한다.
  2. 다양한 Google Cloud Platform 네트워킹 및 운영 툴 및 서비스 요약
  3. GCP(Google Cloud Platform) 콘솔을 사용하여 컴퓨팅 엔진 가상 시스템을 구축
  4. gcloud 명령줄 인터페이스를 사용하여 Compute Engine 가상 시스템을 빌드한다.

클라우드에서 워크로드를 실행할 수 있는 모든 방법 중에서 가상 시스템이 가장 익숙할 수 있습니다. 컴퓨팅 엔진을 사용하면 구글의 글로벌 인프라에서 가상 머신을 실행할 수 있습니다. 이 모듈에서는 Google Compute Engine이 Google 가상 네트워킹에 중점을 두고 작동하는 방법에 대해 알아보겠습니다. 가상 머신의 좋은 점 중 하나는 가상 머신이 각각 완전한 운영 체제의 파워와 일반성을 가지고 있다는 것입니다. CPU 전원 및 메모리 양, 스토리지 양과 유형을 지정하고 운영 체제를 구축하듯이 가상 시스템을 구성할 수 있습니다. 유연하게 재구성할 수 있으며, 구글 클라우드에서 실행되는 VM의 네트워크 연결성은 전 세계적으로 비교할 수 없을 정도로 뛰어납니다.

Virtual Private Cloud (VPC) Network

많은 사람들이 첫 GCP 프로젝트에서 자체 Virtual Private Cloud를 정의하거나 기본 VPC를 선택하여 시작할 수 있습니다. 그럼에도 불구하고 VPC 네트워크는 Google Cloud 플랫폼 리소스를 서로 연결하고 인터넷에 연결합니다. 네트워크를 분할하고 방화벽 규칙을 사용하여 인스턴스에 대한 액세스를 제한하며 정적 경로를 생성하여 트래픽을 특정 대상으로 전달할 수 있습니다. GCP에 처음 온 많은 사람들을 놀라게 하는 것이 있습니다. 정의한 Virtual Private Cloud 네트워크에는 글로벌 범위가 있습니다.

스크린샷 2020-12-18 오후 3 58 43

전 세계 모든 GCP 영역에 서브넷을 가질 수 있으며 서브넷은 영역을 구성하는 영역에 걸쳐 있을 수 있습니다. 이 아키텍처를 사용하면 글로벌 범위에서 자신만의 네트워크 레이아웃을 쉽게 정의할 수 있습니다. 동일한 서브넷의 서로 다른 영역에 리소스를 가질 수도 있습니다. 서브넷에 할당된 IP 주소 범위를 확장하여 사용자 지정 네트워크에서 서브넷의 크기를 동적으로 늘릴 수 있습니다. 이 작업은 이미 구성된 VM에는 영향을 주지 않습니다. 이 예에서는 VPC에 네트워크가 하나 있습니다. 지금까지, GCPu s-east1 영역에 정의된 하나의 서브넷을 가지고 있다. 두 개의 컴퓨팅 엔진 VM이 연결되어 있습니다. 서로 다른 영역에 있더라도 동일한 서브넷에 있는 인접 네트워크입니다. 이 기능을 사용하여 복원력이 뛰어나지만 네트워크 레이아웃이 단순한 솔루션을 구축할 수 있습니다.

Compute Engine

Compute Engine을 사용하면 Google 인프라에서 가상 시스템을 생성하고 실행할 수 있습니다. 초기 투자도 없으며, 빠르고 일관된 성능을 제공하도록 설계된 시스템에서 수천 개의 가상 CPU를 실행할 수 있습니다. Google Cloud Platform 콘솔 또는 GCloud 명령줄 도구를 사용하여 가상 시스템 인스턴스를 생성할 수 있습니다. VM은 Google에서 제공하는 Linux 및 윈도우즈 Server 이미지 또는 이러한 이미지의 사용자 지정 버전을 실행할 수 있으며, 대부분의 물리적 서버에 대한 이미지를 가져올 수도 있습니다. VM을 생성할 때 메모리 양과 가상 CPU 수를 결정하는 시스템 유형을 선택합니다. 이 종류들은 매우 작은 것에서부터 매우 큰 것까지 다양합니다. 요구 사항을 완벽하게 충족하는 미리 정의된 유형을 찾을 수 없는 경우 사용자 지정 VM을 만들 수 있습니다.

처리 능력에 대해 말하자면, GPU를 활용할 수 있는 기계 학습 및 데이터 처리와 같은 워크로드가 있는 경우 많은 GCP 영역에 GPU를 사용할 수 있습니다. 물리적 컴퓨터에 디스크가 필요한 것처럼 VM도 디스크가 필요합니다. 표준 스토리지와 SSD 중 두 가지 종류의 영구 스토리지를 선택할 수 있습니다. 애플리케이션에 고성능 스크래치 공간이 필요한 경우 로컬 SSD를 연결할 수 있지만 VM이 종료될 때 로컬 SSD 콘텐츠가 오래가지 않으므로 영구적인 가치를 지닌 데이터를 다른 곳에 저장해야 합니다. 이것이 다른 종류의 디스크를 영구 디스크라고 부르는 이유입니다. 어쨌든 대부분의 사용자는 표준 영구 디스크로 시작하며 이것이 기본값입니다.

부팅 이미지도 선택할 수 있습니다. GCP는 다양한 버전의 Linux와 Windows를 사용할 수 있으며 자신만의 이미지를 가져올 수도 있습니다. 많은 GCP 고객은 VM이 처음 부팅 시 소프트웨어 패키지 설치와 같은 특정 구성을 항상 제안하기를 원합니다. GCP VM 시작 스크립트를 전달하는 것은 매우 일반적입니다. 다른 종류의 메타데이터도 전달할 수 있습니다. VM이 실행되면 해당 디스크의 지속적 스냅샷을 쉽게 만들 수 있습니다. 이를 백업으로 유지하거나 VM을 다른 영역으로 마이그레이션해야 할 때 사용할 수 있습니다. 어떤 사람도 작업을 완료하기 위해 대기하고 있지 않은 워크로드, 예를 들어 대규모 데이터 집합을 분석하는 배치 작업을 예로 들 수 있습니다. 작업을 실행하기 위한 사전 예방적 VM을 선택하면 비용을 절감할 수 있습니다. 사전 예방적 VM은 한 가지 측면에서 일반 컴퓨팅 엔진 VM과 다릅니다. 다른 곳에 리소스가 필요한 경우 해당 리소스를 종료할 수 있는 컴퓨팅 엔진 사용 권한을 부여했습니다. 사전 예방적 VM을 사용하면 많은 비용을 절약할 수 있지만 작업을 중지하고 재시작할 수 있습니다. 미리 정의된 시스템 유형 집합을 사용하거나 사용자 지정 시스템 유형을 생성하여 가상 CPU 수 및 메모리 양과 같은 인스턴스의 시스템 속성을 선택할 수 있습니다.

스크린샷 2020-12-21 오전 11 43 43

조금 전에 컴퓨팅 엔진에서 매우 큰 VM을 만들 수 있다고 언급했습니다. 이 비디오가 생성될 당시 최대 가상 CPU 수와 VM은 96개였으며 최대 메모리 크기는 624GB의 베타 버전이었습니다. GCP 웹 사이트를 확인하여 현재 이 최대값이 어디에 있는지 확인하십시오. 이러한 대용량 VM은 인메모리 데이터베이스나 CPU 집약적 분석과 같은 워크로드에 적합하지만 대부분의 GCP 고객은 스케일업하지 않고 스케일아웃하는 것으로 시작합니다. 컴퓨팅 엔진에는 로드 메트릭을 기반으로 애플리케이션에서 VM을 추가하고 제거할 수 있는 자동 확장이라는 기능이 있습니다. 이 작업의 또 다른 부분은 VM 간에 들어오는 트래픽의 균형을 조정하는 것이며, Google VPC는 여러 가지 종류의 로드 밸런싱을 지원합니다. 다음 섹션에 있는 것들을 고려해 보겠습니다.

Important VPC capabilities

물리적 네트워크와 마찬가지로 VPC에도 라우팅 테이블이 있습니다. 이 옵션은 동일한 네트워크 내의 한 인스턴스에서 다른 인스턴스로 트래픽을 전달하는 데 사용됩니다. 외부 IP 주소를 요구하지 않고 하위 네트워크 및 GCP 영역 사이에서도 가능합니다. VPC 라우팅 테이블은 기본 제공되므로 라우터를 프로비저닝하거나 관리할 필요가 없습니다. GCP에 대해 프로비저닝하거나 관리할 필요가 없는 또 다른 기능, 방화벽 인스턴스입니다. VPC는 글로벌 분산 방화벽을 제공합니다. 제어하여 수신 트래픽과 송신 트래픽 모두에 대한 액세스를 제한할 수 있습니다. Compute Engine 인스턴스의 메타데이터 태그 측면에서 방화벽 규칙을 정의할 수 있으므로 매우 편리합니다. 예를 들어 모든 웹 서버에 “web”이라는 태그를 지정하고 포트 80 또는 443의 트래픽이 “web” 태그로 모든 VM에 허용된다는 방화벽 규칙을 작성할 수 있습니다. 기억하세요, VPC는 GCP 프로젝트에 속합니다. 하지만 귀사의 GCP 프로젝트가 여러 개 있는데 VPC가 서로 의견을 교환해야 한다면 어떻겠습니까? 걱정마세요, 그건 완전히 실행 가능하고 다루기 쉽거든요. 두 VPC가 트래픽을 교환할 수 있도록 피어 관계를 설정하기만 하면 됩니다. 한편, IAM의 모든 기능을 사용하여 한 프로젝트에서 VPC와 상호 작용할 수 있는 사람과 대상을 제어하려는 경우 이를 위한 공유 VPC가 제공됩니다.

스크린샷 2020-12-21 오전 11 46 43

몇 개의 슬라이드에서는 변화하는 로드에 대응하기 위해 가상 머신이 자동으로 확장되는 방법에 대해 설명했습니다. 하지만 고객이 VM 4개와 VM 40개를 동시에 제공할 수 있는데 어떻게 애플리케이션을 이용할 수 있습니까? 클라우드 로드 밸런싱이 그 해답입니다. 클라우드 로드 밸런싱은 모든 트래픽을 위한 완전한 분산 소프트웨어 정의 관리 서비스입니다. 또한 로드 밸런싱 장치는 관리해야 하는 VM에서 실행되지 않으므로 확장이나 관리에 대해 걱정할 필요가 없습니다. HTTP 및 HTTPS, 기타 TCP 및 SSL 트래픽, UDP 트래픽 등 모든 트래픽 앞에 클라우드 로드 밸런싱을 배치할 수 있습니다. 클라우드 로드 밸런싱을 사용하면 단일 anycast IP 프론트가 전 세계 지역의 모든 백엔드 인스턴스를 종료합니다. 이 기능은 자동 다중 영역 페일오버를 포함하여 영역 간 로드 밸런싱을 제공하며, 백엔드가 정상 상태가 되지 않을 경우 트래픽을 분수 단위로 이동합니다. 클라우드 로드 밸런싱은 사용자, 트래픽, 백엔드 상태, 네트워크 상태 및 기타 관련 조건의 변화에 신속하게 대응합니다.

스크린샷 2020-12-21 오후 12 07 13

0_filoFgWcpVAm5ere

수요가 크게 증가할 것으로 예상하면 어떻게 될까요? 말하자면, 온라인 게임이 히트를 칠 것 같아요. Google에 수신 로드를 경고하기 위해 지원 티켓을 신청해야 합니까? 아니요. 사전 경고는 필요하지 않습니다. 웹 응용 프로그램에 대해 국가 간 로드 밸런싱이 필요한 경우 HTTPS 로드 밸런싱을 사용합니다. HTTP가 아닌 Secure Sockets Layer 트래픽의 경우 글로벌 SSL 프록시 로드 밸런서를 사용합니다. Secure Sockets Layer를 사용하지 않는 다른 TCP 트래픽인 경우 글로벌 TCP 프록시 로드 밸런서를 사용합니다. 이러한 두 가지 프록시 서비스는 특정 포트 번호에서만 작동하고 TCP에서만 작동합니다. 포트 번호에 UDP 트래픽 또는 트래픽을 로드 밸런싱하려면 지역 로드 밸런서를 사용하여 GCP 영역에 걸쳐 로드 밸런싱이 가능합니다.

마지막으로, 이러한 모든 서비스의 공통점은 인터넷에서 구글 네트워크로 들어오는 트래픽을 위한 것이라는 점입니다. 하지만 프로젝트 내에서 트래픽의 균형을 맞추려면 어떻게 해야 합니까? 예를 들어, 애플리케이션의 프레젠테이션 계층과 비즈니스 논리 계층 사이에서? 이를 위해 내부 로드 밸런서를 사용합니다. GCP 내부 IP 주소의 트래픽을 수락하고 컴퓨팅 엔진 VM 간에 로드 밸런싱을 수행합니다. 사람들이 지불하지 않는 가장 유명한 구글 서비스 중 하나는 8.8.8.8로, 전 세계에 퍼블릭 도메인 이름 서비스를 제공합니다. DNS는 인터넷 호스트 이름을 주소로 변환합니다. 여러분이 상상하듯이, 구글은 고도로 발달된 DNS 인프라를 가지고 있습니다. 8.8.8.8을 사용할 수 있으므로 모든 사용자가 이용할 수 있습니다.

하지만 GCP에 구축한 애플리케이션의 인터넷 호스트 이름과 주소는 어떻게 됩니까? GCP는 클라우드 DNS를 제공하여 전 세계가 이를 찾을 수 있도록 지원합니다. 구글과 동일한 인프라에서 실행되는 관리형 DNS 서비스입니다. 이 제품은 대기 시간이 짧고 가용성이 높으며 사용자가 애플리케이션과 서비스를 사용할 수 있게 하는 비용 효율적인 방법입니다. 게시하는 DNS 정보는 전 세계 중복 위치에서 제공됩니다. 클라우드 DNS도 프로그래밍할 수 있습니다. GCP 콘솔, 명령줄 인터페이스 또는 API를 사용하여 수백만 개의 DNS 영역과 레코드를 게시하고 관리할 수 있습니다.

구글은 전세계적인 에지 캐시 시스템을 가지고 있습니다. 이 시스템을 사용하여 Google Cloud CDN을 사용하여 프로그램에서 콘텐츠 전송을 가속화할 수 있습니다. 고객은 네트워크 지연 시간을 줄일 수 있습니다. 콘텐츠의 원본은 로드가 줄어들고 비용도 절약할 수 있습니다. HTTPS 로드 밸런싱을 설정한 후에는 확인란 하나로 클라우드 CDN을 활성화하기만 하면 됩니다.