[GCP]처음 시작하는 이를 위한 Google Cloud Platform 과 Decision Tree 1/2

이정운 (Jungwoon Lee)
9 min readFeb 15, 2018

--

안녕하세요 이정운 입니다.

저는 거의 10년 넘게 미들웨어만 열심히 하다가 요즘들어 클라우드 공부를 강제로 많이 하고 있는데(특히나 Google Cloud Platform) 하다보니 공부한 내용을 가지고 있기 보다는 조금씩 정리하고 공유하는 것이 좋을 것 같다는 생각이 들었습니다. 그렇지만 어디서 부터 시작할지가 늘 고민이였습니다. 그러다가 하단의 좋은 자료를 찾았고 여기서 부터 시작하면 좋겠다라고 생각하고 이제 시작해보려고 합니다.

A GCP flowchart a day
https://medium.com/google-cloud/a-gcp-flowchart-a-day-2d57cc109401

보시면 아시겠지만 제목이 GCP flowchart 라고 되어 있으며 다양한 Google Cloud Platform(GCP) 의 컴포넌트를 사용할 때 어떤 기준으로 선택하면 좋을지에 대한 간략한 흐름도 형태의 정리가 되어 있습니다. 사실 이전 회사에 있을때 이런 류의 흐름도를 Decision Tree(한국말로는 결정트리인데 이게 직역하면 이해가 잘안되어서) 라고 불렀는데 이와 매우 유사한 형태로 정리가 잘 되어 있습니다.

Decision Tree 란 그림을 보시면 바로 이해가 되는데, 다양한 질문이 있고 그 질문에 Yes 냐 No 냐의 여부에 따라서(뭐 세상 일이 100% Yes/No 로 갈라지지는 않겠지만…) 옵션중에 어느 것을 선택할지에 대한 도움을 줄수 있는 하나의 가이드로 보시면 됩니다. 당연히, 일종의 가이드이지 반드시 그렇게 해야 하는 것은 아니지만 그래도 초기 GCP 사용자에게는 서비스를 고를때 많은 도움이 되지 않을까 합니다. 그래서 여기서 부터 한번 정리를 해보고 부족한 지식이라도 공유해보는 것이 좋지 않을까 하고 무턱대고 시작합니다.

참고로 요즘에는 이미 클라우드에 대한 기본 개념을 알고 계시는 분들이 많고 GCP 에 대해서도 이미 좋은 자료들도 많이 공유되어 있어서 기본적인 부분들은 하단의 좋은 자료들을 사전에 참고하시기 바라며 저는 조금 더 필요한 부분만 다뤄보고자 합니다.
(사실 좋은 자료가 너무 많아서 굳이 제가 다시 정리하지 않아도…^^;)

[E-Book]빠르게 훑어보는 구글 클라우드 플랫폼

[Blog]조대협 님의 블로그

[Blog]Jaeyeon Back 님의 블로그

[Site]Google Cloud Platform 사이트

[Book]구글 클라우드 플랫폼 입문

참고로 영어이긴 하지만 Coursera.org 나 Udemy.com 에도 다양한 GCP 관련 강좌가 올라와 있어서 차근 차근 공부하는 것을 좋아하시는 분들에게는 도움이 될듯 합니다.

#1) 컴퓨트 옵션

우선 처음으로 살펴볼 부분은 컴퓨트 옵션 부분입니다. 컴퓨트 옵션은 말 그대로 실제 계산이나 프로그래밍이 수행될 수 있는 컴퓨트 자원으로 일반적으로 클라우드 벤더들은 다양한 컴퓨트 옵션을 제공하며 GCP 도 마찬가지 입니다. 하단에 보시는 것과 같이 GCP 는 Google Compute Engine(GCE), Google Container Engine(GKE), Google App Engine(GAE), Google Cloud Functions 등을 제공합니다.
(Google Container Engine 은 Google Kubernetes Engine 이라고도 합니다. 그리고 Firebase 는 모바일 업무에 적합한 Cloud 서비스로 GCP 와 별도로 관리되고 제가 아직은 잘 몰라서 상세 설명은 생략하겠습니다. )

https://medium.com/google-cloud/a-gcp-flowchart-a-day-2d57cc109401

보시면 각 컴퓨트 관련 컴포넌트는 관리와 자유도를 기준으로 구분될 수 있습니다. 이를 좀 더 자세히 말씀드리면 왼쪽에 있는 컴포넌트 일수록 마음대로 할 수 있는 커스터마이징의 자유도가 높은 대신에 사용자가 직접 관리해야 할 것들이 많으며(손이 많이 간다는 이야기죠.) 오른쪽으로 갈 수록 커스터마이징 할 수 있는 것들이 없어지는 대신에 사용자가 직접 관리해야 할 것들이 줄어듭니다. 즉, 오른쪽으로 갈 수록 Google Cloud 가 알아서 관리해주는 형태로 갑니다.(손 안대고 코 푼다는 이야기죠.)

아주 조금 더 각 컴포넌트 개별적으로 들어가보면 GCE 는 서버와 유사한 일반 VM(가상머신) 으로 보시면 되며 CPU 와 Memory/Disk 설정, OS 등을 선택하시면 사용 가능한 VM 을 바로 만들어 줍니다. 그 위에서 원하는 것은 마음대로 할 수 있어서 자유도가 굉장히 높지만 반대로 Google Cloud 가 해주는 것은 Infrastructure 를 제공해주는 것뿐이고 그 이상은 고객이 직접 설치/사용, 관리해야 합니다.
(간단히 살펴보시기에는 GCP 사이트의 소개 내용이 한글로 잘 나와있습니다. 제가 여러 부연 설명을 하는 것보다 좀 더 자세한 사항이 궁금하시면 하단의 링크를 참고해 보세요.)

COMPUTE ENGINE — 확장 가능한 고성능 가상 머신
https://cloud.google.com/compute/

GKE 는 OS 위에 컨테이너가 구동되는 형태로 그 위에 원하시는 서비스를 컨테이너 형태로 구동 할 수 있습니다. 특히나 Kubernetes 라는 오픈소스 컨테이너 오케스트레이터 기반으로 환경을 만들어서 제공해주며 이를 통해서 편하게 컨테이너 기반의 애플리케이션을 배포, 관리 확장 할 수 있으며 이 부분은 Google Cloud 가 제공해주고 관리할 수 있게 해줍니다. 즉, 방금 이야기한 서비스를 컨테이너 형태로 만들고 구동하는 부분만 사용자가 하면 됩니다.

KUBERNETES ENGINE — Kubernetes를 기반으로 하는 컨테이너식 애플리케이션을 배포, 관리, 확장
https://cloud.google.com/kubernetes-engine/

다음으로 GAE 는 일반적으로 이야기하면 PaaS(Platform as a Service) 컴포넌트로 여기서 부터는 서비스에 필요한 소스에 대한 부분만 개발하고 올리시면 그 밑단은 전부다 Google Cloud 가 알아서 해줍니다. 사실 다른 곳에서 이야기하는 PaaS 는 Platform 이라는 용어의 정의 차이 때문인지는 모르겠지만 플랫폼만 제공하고 그에 대한 관리 부분은 사용자가 직접 작업하고 관리 해야할 부분이 좀 더 많은데 GAE 는 보다 높은 추상화와 관리 기능을 제공해줄 수 있기 때문에 사용자는 개발에만 집중하시면 됩니다. 예를 들어 운영에서 많이 활용하는 A/B 테스트나 무중단 버전 업그레이드도 GAE 에서 단순 클릭을 통해 제공 가능합니다. 그렇기 때문에 사실 구글에서는 이 부분도 서버리스로 분류하기도 합니다. 관리/자유도의 범위에 따라 GAE 는 GAE standard 와 GAE flexible 과 같이 두 가지 옵션이 존재하는데 하단에 정리된 표만 우선 참고하시기 바라고 나중에 기회가 되면 좀 더 자세히 다루겠습니다.

https://cloud.google.com/appengine/docs/the-appengine-environments

GOOGLE APP ENGINE — Google 인프라에서 언어와 상관없이 확장 가능한 웹 및 모바일 백엔드 구축
https://cloud.google.com/appengine/

컴퓨트옵션에 마지막으로 Google Cloud Functions 는 요즘 유행하는 이벤트 기반의 서비스 수행을 위한 서버리스 환경을 제공해줍니다. 그렇다고 서버가 아예 없는 것은 아니고 서버에 대한 고민/관리가 필요없어서 서버리스라고 이야기 하는 것입니다.(알아서 생성되고 확장되고 소멸되는) 반대로 이 부분은 Google Cloud 가 알아서 한다는 것이니 사용자는 다른거 다 빼고 진정 개발만 고민하시면 됩니다. 설명만 보면 GAE 랑 비슷해 보이지만 GAE 는 그래도 사용자가 서버에 대한 일정 부분의 제어를 할 수 있다면(확장에 대한 정책이나 범위 설정, 클릭 등) Cloud Functions 는 이런 고민이 아예 없다고 보시면 될듯 합니다.

CLOUD FUNCTIONS — 클라우드 서비스를 구축하고 연결하기 위한 서버리스 환경
https://cloud.google.com/functions/

지금까지 이야기한 GCP 의 컴퓨트 옵션에 대한 구분을 잘 구조화해서 표현하면 하단의 차트 형태가 아닐까 합니다.

그럼 지금까지는 컴퓨트 옵션에서 GCE, GKE, GAE, Cloud Functions 에 대해서 이해를 돕기 위해 짤막한 설명을 했다면 어떤 기준으로 해당 옵션중에 선택을 하고 사용할 것인가에 대한 부분이 궁금해질텐데 그때 활용될 수 있는 것이 바로 Decision Tree 입니다.

예를 들어 모바일이나 HTML 5 를 개발할 것은 아니고, 이벤트 기반의 애플리케이션을 만드는 것도 아니고, 특정 OS 나 GPU 사용이 필요하지는 않지만, 여러 환경에 배포될 수 있고 HTTP 서비스를 하고 싶다면, 그런데 컨테이너는 원치 않는다면 컴퓨트 옵션으로 GCE 를 고려해 볼 수 있다는 것입니다.

결국 각 컴퓨트 옵션의 특성을 반영하여 어떤 컴퓨트 옵션을 선택하는 것이 좋을지에 대한 간단한 가이드로 보시면 됩니다. 또 한편으로는 저 질문들이 각 컴퓨트 옵션의 특성을 설명하는 것이기도 하지요. 이에 대한 좀 더 자세한 설명이 필요하면 하단의 링크에 잘나와있으니 참고하시기 바라겠습니다.

Choosing the right compute option in GCP: a decision tree
https://cloudplatform.googleblog.com/2017/07/choosing-the-right-compute-option-in-GCP-a-decision-tree.html?m=1

(내용이 길어지는 것 같아 2부로 이어집니다.)

* Disclaimer: 본 글의 작성자는 Google 직원이지만 Google cloud 를 공부하는 한 개인으로서 작성된 글입니다. 본 글의 내용, 입장은 Google 을 대변하지 않으며 Google 이 해당 콘텐츠를 보장하지 않습니다.

--

--

이정운 (Jungwoon Lee)

Technical engineer who dreams better future. (These thoughts are my own personal opinions, and do not reflect or represent Google’s opinions or plans.)