클라우드

구글 클라우드 플랫폼(GCP) 총정리

김구티2 2024. 2. 22. 20:57

1. 클라우드 컴퓨팅의 개념

구글 클라우드 플랫폼, 약칭 GCP에 대해 학습하기 이전에, 우리는 클라우드 컴퓨팅이 정확히 무엇인지 짚고 넘어가야 한다. 클라우드 컴퓨팅은 기본적으로 인터넷을 통해 다른 사람의 컴퓨터를 사용하는 것이다. 이것만 보면 원격 컴퓨팅이랑 다를 바 없어 보이는데, 몇 가지 특징을 통해 클라우드 컴퓨팅의 개념을 짚고 넘어간다.

 

① 주문형 컴퓨팅 리소스와 셀프 서비스를 제공한다. 고객은 간단한 사용자 인터페이스를 사용해야 하며, 사람의 개입 없이 필요한 컴퓨팅 성능, 스토리지 요구 사항 및 네트워크를 얻는다.

② 전 세계 어디에서나 인터넷을 통해 이러한 클라우드 리소스에 액세스할 수 있다.

③ 이러한 리소스의 제공자는 리소스의 엄청난 컬렉션을 보유하고 있으며, 해당 모음에서 고객에게 할당하는 개념이다.
④ 이때의 리소스는 아주 탄력적인 것이다. 만약 더 많은 리소스가 필요하면 빠르게 더 많은 리소스를 얻을 수도 있을 것이다. 반대로, 필요한 리소스가 적다면, 그것을 축소하면 될 일이다.

⑤ 고객들은 그들이 사용하거나 예약한 것에 대해서만 돈을 지불한다. 만약 고객이 리소스 사용을 중단한다면, 당연히 돈을 지불하는 것을 중단한다.

2. 구글 클라우드 플랫폼(GCP)의 개념

구글이 세계에서 가장 크고 강력한 IT 인프라를 개발 및 운영하고 있다는 것은 모두가 인정하는 사실일 테다. 그들이 만든 인프라를 통해 매일 수십억 명의 사용자들은 지메일, 유투브, 구글 맵 같은 서비스를 사용하고 있다. 나도 마찬가지고 말이다. 2008년에 구글은 네트워크와 IT 서비스를 비즈니스 고객을 위해 개방하기로 결정했다. 이것이 구글 클라우드 플랫폼의 시작이라 할 수 있다. 모든 서비스를 구글에서 제공하니까 이름도 단순하게 구글 클라우드 플랫폼인 것이다. 뜬금없지만, 이름은 단순하게 지을 때 가장 강력한 법이라고 생각한다. 아무튼 GCP를 더욱 이해하기 위해 Regions와 Zones에 대해 이해해 보도록 한다.

가장 작은 단계는 Zone이라 한다. 계층 구조의 가장 작은 단계이면서 첫번째 단계이기도 하다. Zone은 가상 머신이나 스토리지와 같은 구글 클라우드 플랫폼 리소스가 배포되는 영역이다.

 

예를 들어, 컴퓨팅 엔진을 사용하여 GCP에서 가상 시스템을 실행하면, 지정한 영역에서 실행이 될 것이다. 예를 들어 서유럽B에서 실행한다고 가정하자. 사람들은 Zone을 일종의 GCP 데이터 센터로 간주하기도 하지만, Zone이 항상 하나의 물리적 건물과 일치하는 것은 아니다. 그렇기에 앞선 말은 정확하지 않다. 다만, 그렇다 해도 그런 방식으로 어느 정도 Zone이라는 것에 대해 시각화할 수는 있을 것이다.

 

Zone은 독립적인 지역인 Region안에서 그룹화되는 것이며, 당연히 이것은 Zone보다 상위 개념이다. 그림에서의 모든 Zone이 단일 Region인 서유럽에 그룹화된 것처럼 말이다. GCP 리소스를 배치할 때 우리는 Region을 선택할 수 있다. 그리고 이웃 내의 모든 Zone은 그들 사이에서 네트워크 연결이 빠르다. 하나의 그룹이기 때문이다. 실제로 Region 내에서는 일반적으로 5ms 미만의 네트워크 지연 시간을 갖는다.

 

그리고 Fault-tolerant application을 개발하는 과정에서 Region의 여러 Zone에 리소스를 분산해야 한다. 여기서 Fault-tolerant application는 컴포넌트 에러가 발생하면, 그 즉시 백업 컴포넌트가 작동하거나 대체되어 손실 없는 서비스를 제공하기 위한 것으로 이해하면 된다. 일종의 백업 서버 개념인 건데, 이는 예상치 못한 장애로부터 보호하는 데 도움이 된다. 그렇기에 다른 Region에서도 리소스를 실행할 수 있게 된다. 많은 GCP 고객들은 애플리케이션을 전 세계 사용자들에게 더 가깝게 제공하기 위해 이 작업을 수행한다. 예를 들어 자연 재해로 인해 전체 Region 손실되는 것을 방지하기 위한 것 말이다.

몇몇 GCP 서비스는 우리가 Multi Region이라고 부르는 곳에 리소스를 배치하는 것을 지원한다. 예를 들어, 구글 클라우드 스토리지를 사용하면 유럽 Multi Region 내에 데이터를 배치할 수 있다. 그것이 의미하는 것은, 유럽 내에서 최소 160km 떨어져 있는 서로 다른 두 곳의 지리적 위치에 중복되어 저장된다는 것이다.

현재의 Region과 Zone은 다음과 같고, 이는 계속 늘어날 예정이다.

(https://cloud.google.com/about/locations?hl=ko)

3. GCP 사용의 장점

① 확장성 및 유연성: 들어오는 트래픽이 많은 경우 부하를 기준으로 서버를 확장할 수 있으며, 트래픽이 적은 경우에는 축소할 수 있으므로 비즈니스 사용에 있어 매우 적합하고, 또한 유연하다.
② 비용 효율성: GCP는 서비스를 사용하는 시간과 수준에 따라 요금을 부과하는 종량제 모델을 따른다.
③ 고성능: 구글의 인프라는 가용성이 높고 전 세계 여러 지역에 퍼져 있기 때문에 매우 안정적으로 사용할 수 있다.
④ 보안: 구글 클라우드 플랫폼은 상대적으로 더 안전하다. 암호화, 접근 제어, 데이터 손실 방지 등의 보안 옵션을 통해 GCP에서 제공하는 서비스를 더욱 신뢰할 수 있다.

⑤ 높은 내구성: 이는 두 개의 디스크가 동시에 손실되어도 데이터가 유지된다는 것을 의미한다.

⑥ 여러 지역별 저장 가능: 데이터를 저장할 수 있는 지역은 북미, 남미, 유럽, 아시아 및 호주 등 다양하다.

4. GCP 사용의 단점

① 비용: 아이러니하다. 비용은 장점이자 단점이 된다. 결국 이것은 GCP를 사용하는 개인 혹은 조직이 '최적화'를 어떻게 하냐에 달려있는 문제로 귀결된다. 가장 핵심 중 하나인 Sliver Class의 경우 월 150달러로, 현 환율 기준 한화 20만원 정도다. 구글 클라우드 스토리지에 데이터를 다운로드하는 것도 비용이 꽤나 든다. GB당 12달러, 한화 1.6만원이다. 그래서 비용에 관한 전략을 짜는 것이 정말 중요하다고 생각한다.

② 복잡한 인터페이스: 솔직히 요며칠 동안 GCP를 체험하며 이것저것 건들다 보니 참 복잡하다는 생각이 들기는 했다. 서브웨이의 각 단계마다 종류가 15가지라면 혼란스러울 수밖에 없는 그런 느낌이랄까. 나처럼 체험을 하고자 하는 사람은 확실히 길을 잡고 가는 것이 좋다.

5. GCP에서 제공하는 서비스의 종류

GCP에 방문해 보면 알겠지만, 정말이지 너무 많은 서비스를 제공한다. 카페로 치면 빽다방 같은 느낌이라고 해야 할까 싶다. 아무튼 GCP의 다양한 서비스는 다음과 같다. 너무 많으니 일부 주요 서비스만 적도록 하기로 결정했다..

 

① Compute

⑴ Compute Engine: 필요한 RAM, ROM 및 보안 그룹에 필요한 애플리케이션을 배포하기 위해 가상 시스템을 프로비저닝하는 데 사용된다.

⑵ Google Kubernetes Engine(GKE): 구글 클라우드는 애플리케이션을 배포할 수 있는 서비스로 쿠버네티스를 제공하고, 자동 스케일링 및 로드 밸런싱과 같은 나머지 사항은 구글 클라우드가 처리한다.

⑶ App Engine: 구글 앱 엔진은 확장 가능한 런타임 환경으로 주로 웹 애플리케이션을 실행하는 데 사용된다. 구글의 방대한 컴퓨팅 인프라로 인해 시간이 지남에 따라 수요는 변화하고 있고, 그것에 따라 동적인 확장이 가능하다. 앱 엔진은 다양한 서비스와 함께 안전한 실행 환경을 제공하기 때문에 확장이 가능한 고성능의 웹 앱을 쉽게 개발할 수 있을 것이다.

 

② Storage

⑴ Cloud Storage: 가용성이 높고 많은 양의 데이터를 저장할 수 있다.

⑵ Persistent Disk: 영구적 디스크는 가상 시스템에 연결할 수 있고, 다른 가상 시스템에 재사용할 수 있는 스토리지 디스크다.

⑶ Cloud SQL: Cloud SQL은 구글 클라우드 플랫폼에 의해 완전히 관리되는 서비스이며, MySQL, PostgreSQL 및 SQL Server와 같은 서비스를 제공한다.


③ Networking

⑴ Virtual Private Cloud (VPC): 구글 클라우드가 달성할 수 있는 사설 네트워크에 애플리케이션을 배포할 수 있다.

⑵ Cloud Load Balancing: 이것은 응용 프로그램의 여러 복제본에 걸쳐 클라우드를 배포하는 데 사용되는 구글 클라우드에서 가장 중요한 서비스라고도 할 수 있는 것이다.

⑶ Cloud CDN: 엣지 위치의 도움을 받아 콘텐츠를 캐시하고 최종 사용자에게 제공하는 서비스다.

 

④ Data Analytics

⑴ Bigquery: 모든 조직은 데이터에서 비즈니스적인 통찰 및 이해를 끌어내기 위해 노력한다. 하지만 데이터가 빠르게 성장하면서 확장성 있게 데이터를 수집하고 저장하고 분석하는 것은 분명 어려운 일이다. 그래서 등장한 빅쿼리라는 구글의 엔터프라이즈 데이터 웨어하우스는 대규모 데이터 분석을 모든 사람이 이용할 수 있도록 설계된 것이다.

⑵ Dataflow: 제어 흐름 그래프에서 데이터의 흐름을 분석하는 것이다. 즉, 프로그램에서 데이터의 정의와 사용에 대한 정보를 결정하는 분석이다. 이 분석의 도움으로 최적화를 수행할 수 있다.

⑶Pub/Sub: Pub/Sub 동기식 메시지 전달 시나리오를 생각해 보자. 시스템에는 서로 통신하는 두 개의 구성 요소가 있다. 이때 송신자와 수신자에게 전화를 걸어 보자. 수신자는 송신자에게 서비스를 요청하고 송신자는 요청을 서비스하고 수신자로부터 확인 응답을 기다린다. 그리고 송신자에게 서비스를 요청하는 또 다른 수신자가 있다. 송신자는 첫 번째 수신자로부터 확인 응답을 아직 받지 못했기 때문에 이는 차단된다. 송신자는 두 번째 수신자에게 서비스를 제공할 수 없으므로 문제가 발생할 수 있다. 이러한 단점을 해결하기 위해 Pub-Sub 모델을 도입한 것이다.

 

⑤ Machine Learning

⑴ Vertex AI Platform: 요근래 아주 핫한 인공지능(AI)이다. AI는 수년 동안 발전을 거듭해 산업의 변화와 비즈니스 운영 방식의 재구성을 주도했다. 클라우드 기반 AI 플랫폼의 출현은 조직이 AI의 잠재력을 활용할 수 있도록 이 혁명을 더욱 가속화했고 말이다.

⑵ AI Platform Training: 구글 클라우드에서 AI 플랫폼 트레이닝의 도움으로 AI 모델을 트레이닝할 수 있다.

⑶AI Platform Prediction: 기계 학습 모델을 사용하여 예측을 할 수 있다.

 

⑥ Productivity and Collaboration

⑴ Google Workspace: 드디어 우리에게 친숙한 서비스가 등장했다. 캘린터, 드라이브, 지메일 등 우리는 다양한 구글 워크스페이스 제품을 사용하고 있다.

⑵Cloud Identity and Access Management (IAM): ID Access Management는 조직의 루트 유저(즉, 관리자)가 사용한다. 사용자는 조직 내에서 한 사람을 나타내며, 모든 사용자가 서비스에 대해 동일한 권한을 갖는다는 점에서 사용자를 그룹화할 수 있다.

6. GCP 시작하는 방법

Google 클라우드 플랫폼을 시작하는 방법은 이전에 클라우드 빌링에 대해서 썼을 때와 비슷하다.

① 구글 클라우드 플랫폼에서 비즈니스 요구에 따라 계정을 생성한다. 이때 GCP가 300달러의 무료 크레딧을 제공한다. 그런데 오류가 생길 때가 은근 많다..

② 무료 계정을 만든 후 90일이 경과할 때까지 유효성을 확인할 수 있으며, 이는 프로젝트에서 모든 리소스를 추적할 수 있음을 의미한다.

③ 청구를 시작해야 서비스를 사용할 수 있으며, 사용할 리소스의 양에 대해 청구가 종량제 모델로 이루어진다.
④ 서비스를 선택할 때 주의해야 한다. 응용 프로그램의 필요에 따라 서비스를 선택해야 한다. 정확히 본인에게 적합한 서비스를 탐색하는 것이 우선이라는 것이다.

⑤ 서비스를 선택한 후에는 클라우드에 애플리케이션을 배포할 수 있다.

⑥ 애플리케이션을 배포한 후 GCP에서 사용할 수 있는 서비스를 사용하여 리소스 사용량을 모니터링할 수 있다.

7. GCP의 보안

위에서도 한 번 이점에 대해 말을 하며 보안에 대해 기술했는데, 여기서 상세히 써보도록 한다.

① 암호화: GCP는 모든 데이터에 대해 그것이 정지 상태건 전송 중이건 무관하게 암호화를 제공한다.
② 액세스 제어: 사용 사례에 따라 액세스할 수 있는 서비스와 액세스할 수 없는 서비스와 같은 개별 사용자에 대한 액세스를 제어할 수 있다.
③ 네트워크 보안: 사설 네트워크에 애플리케이션을 배포하여 애플리케이션을 보호하고, 방화벽 및 보안 그룹 등을 구성할 수 있는 VPC를 만들 수 있다.
④ IAP(Identity-Aware Proxy): 사용자는 자신의 상태와 ID에 따라 애플리케이션 액세스를 관리할 수 있다. 이는 원치 않는 액세스를 방지하는 데 도움이 된다.

8. GCP의 미래

구글 클라우드 플랫폼은 사용자가 사용할 수 있는 동기를 부여하여 전 세계적으로 자원을 확장하고 지역과 가용성 영역을 늘림으로써 끊임없이 진화하고 있다. 구글의 야욕이 GCP를 통해 느껴질 정도다. GCP는 앞으로 몇 년 동안 데이터 중심 및 상호 연결된 세계에서 기업이 번창하는 데 큰 역할을 할 것이라는 시장 동향에 따라 자체 업그레이드하고 있기 때문에 기업에서는 GCP를 선택하는 것을 당연시 여기는 것으로 보인다. 특히 AI와 머신러닝, 엣지 컴퓨팅, 데이터 분석 및 관리, 사이버 보안, 지속 가능성 분야에서 더욱 발전하지 않을까 싶다.

9. GCP의 이용가

과거 성인이 된 후 첫 아르바이트를 할 때 유니클로 강남점에서 일을 했는데, 분 단위로 야간수당을 책정해주던 게 문득 생각난다. 유니클로가 분 단위라면, GCP는 초단위다. 구글은 서비스로서의 가상 머신을 위해 더 많은 시간을 반올림하는 대신, 초 단위로 청구를 하는 클라우드 제공업체였다. 반올림이나 초당 청구나 그게 그거 아니냐고 생각할지도 모른다. 그러나 많은 가상 머신을 생성하고 실행하는 고객에게는 반올림 비용이 실제로 누적이 될 수도 있다는 점이 크다. 컴퓨팅 엔진을 통해 가상 머신을 사용하는 경우와 다른 여러 서비스에서도 초당 청구가 가능하다.

GCP의 청구 파트에서 자세히 알아본 결과, 컴퓨팅 엔진은 자동으로 적용되는 사용 할인을 제공하는데, 이 할인은 청구 월의 상당 부분을 가상 머신을 실행하는 경우에만 적용된다. 컴퓨팅 엔진은 한 달 중 적어도 25% 이상 인스턴스를 실행하면 사용하는 증분 분마다 자동으로 할인을 제공한다. 여기에 컴퓨팅 엔진이 비용을 절약하는 한 가지 방법이 더 있다.

일반적으로 사용자는 일반 가상 머신 유형을 선택하지만 컴퓨팅 엔진에서는 사용하는 가상 머신의 크기를 미세 조정할 수 있도록 '맞춤형' 가상 머신 유형도 제공한다. 이렇게 하면 워크로드에 맞게 가격을 조정할 수도 있을 것이다. 결국 중요한 것은 GCP의 청구 정책에 맞게 최적화를 하는 것이다.

10. GCP의 오픈 API

어떤 사람들은 워크로드가 특정 공급업체에 갇힐까 봐 두려워 클라우드로 가져오는 것을 두려워할지도 모른다. 하지만 구글은 여러 면에서 고객에게 다른 곳에서 애플리케이션을 실행할 수 있는 권한을 부여한다. 구글이 고객이 갇혀 있는 것을 어떻게 방지하는지 보여주는 몇 가지 경우가 있는데, GCP 서비스는 오픈 소스 제품과 호환된다. 예를 들어, 오픈 소스 데이터베이스인 아파치 HBase의 인터페이스를 사용하는 데이터베이스인 Cloud Bigtable을 예로 들어보자. 클라우드 데이터프록은 오픈 소스 빅 데이터 환경인 하둡을 관리형 서비스 등으로 제공한다. 따라서 걱정할 필요가 없다는 것이다. 그렇기에 기업이 GCP를 선택하는 것이다. 글로벌하고, 비용 효율적이고, 오픈 소스 친화적이고, 보안도 우수하니 말이다.

728x90