Cloud 스터디 잼 코리아 Kubernetes Intm

2주차 - 06. 컴퓨팅 옵션 세부정보

ziwookim 2022. 9. 1. 22:45

Google Cloud computing solutions

Compute Engine

Fully customizable virtual machines

  • GCP에서 실행되는 가상 머신을 제공한다. 성능 및 비용 요구사항에 부합하는 커스텀 설정 된 구성을 생성할 수도 있다.

 

Persistent disks and optional local SSDs

  • 가상머신에 필요한 블록 스토리지를 제공한다.
  • 영구 디스크는 수직 확장 가능하며, 네트워크 스토리지를 제공하기 떄문에 백업 및 이동성을 위해 영구 디스크의 스냅샷을 만드는 것이 용이하다. 
  • 초당 입출력 작업 수가 매우 높은 로컬 SSD를 선택할 수도 있다.

 

Global load balancing and autoscaling

  • 오토 스케일링(자동 확장)을 지원하는 글로벌 로드밸런싱(전역 부하 분산)을 제공한다.
  • 수요를 충족하기 위해 자동으로 배포되는 리소스를 정의할 수 있다. 

 

Per-second billing

  • GCP는 Per-second billing(초당 청구)를 제공하여 Compute Engine 리소스 비용을 세부적으로 제어할 수 있는 덕분에 일괄 처리 작업과 같은 짧은 기간에 컴퓨팅 리소스를 배포할 때 비용을 절감할 수 있다.

 

Compute Engine use cases

1. Complete control over the OS and virtual hardware

  • Compute Engine을 사용하면 인프라를 완전히 제어할 수 있다.
  • 운영체제를 맞춤설정하고 여러 운영체제를 사용하는 애플리케이션을 실행할 수도 있다.

 

2. Well suited for lift-and shift migrations to the cloud

  • 애플리케이션을 다시 작성하거나 아무것도 변경하지 않더라도 온프레미스 워크로드를 GCP로 쉽게 lift-and-shift 할 수 있다.
  • lift-and-shift?
    • 리프트 앤 시프트(Lift and Shift)는 애플리케이션을 클라우드로 마이그레이션하는 여러 접근 방식 중 하나이다. 애플리케이션을 다시 설계하지 않고 애플리케이션과 관련 데이터를 클라우드 플랫폼으로 이동하는 것을 의미한다.
    • 참고

 

3. Most flexible compute solution, often used when a managed solution is too retrictive

  • Compute Engine은 가장 유연한 컴퓨팅 옵션 솔루션으로, 다른 컴퓨팅 옵션이 애플리케이션이나 요구사항을 지원하지 않을 때 선택하 수 있는 가장 좋은 옵션이다.

 


App Engine

Provides a fully managed, code-first platform.

  • App Engine은 완전 관리형 애플리케이션 플랫폼으로, App Engine을 사용한다는 것은 실버 관리 및 구성 배포가 필요 없음을 뜻한다.

 

Streamlines application deployment and scalability.

  • 배포에 대해 크게 걱정하지 않고 애플리케이션 빌드에만 집중할 수 있다.

 

Provides support for popular programming languages and application runtimes.

  • 코드를 짜기만 하면 App Engine에서 코드에 필요한 인프라를 배포한다.
  • App Engine은 Java, Node.js Python, PHP, C#, .Net, Ruby, Go 등 많이 사용되는 언어들을 지원하므로, 컨테이너 워크로드를 실행할 수 있다.

 

Supports integrated monitoring, logging, and diagnostics.

  • Stackdriver Monitoring, Logging, 디버깅 및 Error Reporting 같은 진단도 App Engine과 긴밀하게 통합된다.
  • Stackdriver를 실시간 디버깅 기능으로 사용하여 소스 코드를 분석하고 디버깅할 수 있다.
  • Stackdriver는  Cloud SDK, Cloud Source Repositories, Intelligent, Visual Studio, PowerShell 과 같은 도구와 통합된다.

 

Simplifies version control, canary testing, and rollbacks.

  • App Engine은 버전 제어 및 트래픽 분할도 지원한다.
  • 코드 작성에만 집중하길 원하며, 코드가 실행되는 안정성이 높고 확장 가능한 인프라 구축에 대해 걱정하고 싶지 않다면 App Engine이 가장 적합하다.

 

App Engine use cases

1. WebSites

2. Mobile app and gaming backends

3. RESTful APIs

  • RESTful API는 개발자가 쉽게 작업하고 확장할 수 있으며, App Engine을 사용하면 쉽게 운영할 수 있다.

 


Google Kubernetes Engine

Fully managed Kubernetes platform

  • Kubernetes는 컨테이너의 애플리케이션을 위한 컨트롤 시스템으로 배포, 스케일링(확장), 로드밸런싱(부하 분산),  Logging, 모니터링을 자동화 한다.
  • Google Kubernetes Engine은 기능을 추가하고 다른 GCP 서비스와 자동으로 통합하여 GCP에서의 Kubernetes 관리를 확장한다. 

 

Supports cluster scaling, persistent disks, automated upgrades, and auto node repairs.

  • GKE는 클러스터 확장, 영구 디스크, Kubernetes 자동 업데이트, 비정상 노드에 대한 자동 복구를 지원한다.

 

Built-in integration with Google Cloud services

  • GKE는 Cloud Build, Container Registry, Stackdriver Monitoring, Stackdriver Logging 과의 통합 기능이 내장 되어 있다. 

 

Portability across multiple environments

  • 온프레미스(on-premise) 클러스터로 실행되는 기존 워크로드는 GCP로 쉽게 이동할 수 있다. 
  • 벤더(공급업체)에게  종속되지 않는다.
  • Hybrid computing
  • Multi-cloud computing 

 

GKE use cases

GKE는 컨테이너화된 애플리케이션, 클라우드 기반 분산 시스템, 하이브리드 애플리케이션에 매우 적합하다.

1. Containerized application

2. Cloud-native distributed systems

3. Hybrid applications


Cloud Run

Enables stateless containers.

  • 웹 요청 또는 Cloud Pub/Sub 이벤트를 통해 Stateless 컨테이너를 실행할 수 있는 관리형 컴퓨팅 플랫폼이다.
  • Serverless로, 모든 인프라 관리를 추상화하므로 애플리케이션 개발에만 집중할 수 있다.
  • 오픈 소스 Kubernetes 기반 플랫폼인 Knative를 기반으로 구축 되었다.
  • 최신 Stateless 워크로드를 빌드, 배포, 관리 한다.
  • Cloud Run을 사용하면 완전 관리형 또는 자체 GKE 클러스터에서 컨테이너를 실행할 수 있다. 

 

Abstracts away infrastructure management

  • 서버 Provisioning, 구성, 관리 같은 모든 인프라 관리를 추상화하므로, 코드 작성에만 집중할 수 있다.
  • Cloud Run을 사용하면 서버에 대해 걱정할 필요 없이 요청 또는 이벤트 기반 Stateless 워크로드를 실행할 수 있다.

 

Automatically scales up and down.

  • 트래픽에 따라 거의 즉시 0에서 자동으로 확장 및 축소되므로 확장 구성을 걱정할 필요가 없다.
  • 100밀리초 단위로 계산하여 사용하는 리소스에 대해서만 비용을 청구한다. 따라서, 초과 Provisioing된 리소스의 비용을 지불할 필요가 없다.

 

Open API and runtime environment

  • 일괄된 개발자 환경이 포함된 Stateless 컨테이너를 완전 관리형 환경 또는 자체 GKE 클러스터에 배포하도록 선택할 수 있다.
  • Kubernetes 기반으로 구축된 Open API 및 런타임 환경인 Knative를 통해 이러한 공통 환경이 가능해진다. 덕분에 GCP 및 GKE, 또는 Knative의 모든 곳에서 실행되는 다양한 완전 관리형 환경 및 플랫폼에서 워크로드를 자유롭게 이동할 수 있다. (Portability)

 

Cloud Run use cases

1. Deploy stateless containers that listen for requests or events.

  • Cloud Run을 사용하면 HTTP 요청을 통해 전달되는 요청이나 이벤트를 수신 대기하는 Stateless 컨테이너를 배포할 수 있다.

 

2. Build applications in any language using any frameworks and tools.

  • Cloud Run을 사용하면 원하는 프레임워크와 툴들을 사용하여 모든 언어로 애플리케이션을 빌드하고 해당 서버 인프라를 관리 및 유지할 필요 없이, 단 몇 초 만에 배포할 수 있다.

Cloud Functions

Event-driven, serverless compute service

  • 이벤트에 연결된 단순한 단일 목적 기능을 위한 이벤트 기반 서버리스 컴퓨팅 서비스 이다.
  • Cloud Functions에서 자바스크립트, Python 또는 Go로 작성한 코드를 업로드하기만 하면 GCP가 해당 코드를 실행하는 데 적합한 컴퓨팅 용량을 자동을 배포한다.

 

Automatic scaling with highly available and fault-tolerant design

  • 서버는 자동으로 확장되며, 고가용성 및 내결함성 설계에서 배포된다.

 

Charges apply only when your code runs

  • 코드가 실행된 시간에 대해서만 비용이 청구된다.
  • 각 함수에 대해 호출 메모리 및 CPU 사용은 100밀리초 단윌 측정되며 반올림된다.
  • Cloud Functions는 영구 무료 등급도 제공한다. 다양한 사용 사례에서 Cloud Function을 무료로 사용할 수 있다.

 

Triggered based on events in Google Cloud services, HTTP endpoints, and Firebase

  • Cloud Functions를 사용하면 이벤트를 기반으로 단 몇 밀리초 이내에 코드가 트리거된다.
  • Cloud Functions는 정의한 HTTP 엔드포인트와 Firebase 모바일 애플리케이션 백앤드의 이벤트를 기반으로 트리거될 수도 있다.

 

Cloud function use cases

1. Supporting microservice architecture

  • 마이크로서비스의 애플리케이션 또는 아키텍쳐의 일부로 사용 된다.

 

2. Serverless application backends

  • Mobile and IoT backends
    • 서버리스 모바일 IoT 백앤드를 빌드한다.
  • Integrate with third-party services and APIs
    • 타사 서비스 및 API와 통합할 수 있다.

 

3. Intelligent applications

  • Virtual assistant and chat bots
  • Video and image analysis
  • 가상 어시스턴트, 동영상, 이미지 분석, 감정 분석과 같은 지능형 애플리케이션의 일부로 Cloud Functions를 사용한다.

어떤 컴퓨팅 서비스를 채택해야 할까?

how to decide?

Compute Engine

  • 물리적 서버 하드웨어에서 애플리케이션을 실행하는 경우 (Physical servers)
  • 각 VM이 관리되고 유지되는 수명이 긴 가상 머신에서 애플리케이션을 실행하는 경우 (Long-lived VMs)
  • 사용자로부터 컨테이너 이미지를 수락하고 이를 포함하는 가상 머신 인스턴스를 시작한다.이를 통해 생성된 VM을 확장하고 관리할 수 있다. (One container per VM)

 

GKE

  • 밀집된 패킹 또는 컨테이너화된 워크로드를 더 많이 제어할 수 있다. (Rich administration of container workloads)
  • Kubernetes를 GCP의 관리형 서비스로 사용하면 작업이 줄어들고 다른 모든 GCP 리소스도 활용할 수 있다. 
  • On-premises 데이터 센터에서 이미 Kubernetes를 실행하고 있다면 워크로드와 관리 접근 방식을 모두 가져올 수 있으므로 GKE로 전환하는 것이 좋다. (On-premises Kubernetes)

 

App Engine

  • 작업에 대해 전혀 생각하고 싶지 않은 경우 (No-ops)
  • 가변형 환경은 사용자의 컨테이너 이미지를 수락한 다음, App Engine이 코드에 제공하는 것과 동일한 no-ops 환경에서 실행한다. (Containers run by the service)

 

Cloud Run

  • 관리형 컴퓨팅 플랫폼에서 Stateless 컨테이너를 실행할 수 있다. (Stateless Container, Managed)

 

Cloud Functions

  • 작업에 대해 전혀 생각하고 싶지 않은 경우 (No-ops)