sungwony

[GCP] Google Cloud Plaform - Cloud Bigtable, Cloud SQL, Cloud Spanner, Cloud Datastore 본문

cloud & devops/google cloud

[GCP] Google Cloud Plaform - Cloud Bigtable, Cloud SQL, Cloud Spanner, Cloud Datastore

일상이상삼상 2019. 10. 11. 19:24

이 포스팅은 Coursera의 Google Cloud Platform Fundamentals:Core Infrastructure 강의를 요약 정리 한 것입니다.


Cloud Bigtable

 

클라우드 빅테이블은 빅데이터 데이터베이스 서비스로 구글의 NoSQL이다. NoSQL에 대한 포스트는 다음 링크에 정리되어있다.(NoSQL) NoSQL에 대해 간략하게 설명한다면 관계형 데이터베이스는 정형화된 스키마를 가진 테이블셋에 데이터를 저장하는 반면 NoSQL은 모든 행(row)이 동일한 스키마를 갖지 않고 유동적인 형태의 데이터를 저장한다. NoSQL은 실제로 행을 분산 저장하는데 이점을 갖도록 설계되었다. Bigtable안의 데이터베이스에는 수천만의 행과 수천개의 컬럼으로 확장이 가능한 테이블이 분산 저장되고 여기에 페타바이트의 데이터를 저장할 수 있다. GCP에서 이를 전적으로 관리하기 때문에 별도의 설정이나 조정이 불필요하다. 이는 단일(single) lookup key를 갖는 데이터베이스에 매우 이상적이다. 일부 개발자들은 빅테이블이 영구적인 해치(hatch)테이블로 생각한다. 클라우드 빅테이블은 아주 거대한 데이터를 최소한의 지연으로 저장하기 이상적이다. 클라우드 빅테이블은 데이터는 읽기와 쓰기 모두 높은 처리량을 가지고있어 성능중심의 어플리케이션과 분석위주의 어플리케이션에 있어 최선의 선택이다.

 

클라우드 빅테이블은 Apache Hadoop 프로젝트의 기본 데이터베이스인 HBase와 동일한 오픈 소스 API를 통해 제공된다. 그러면 Apache HBase 설치를 통해 직접 관리할 수 있는데 왜 굳이 클라우드 빅테이블을 써야할까? 클라우드 빅테이블을 사용함으로 얻을수 있는 몇가지 이점이 있기 때문이다. 첫번째는 확장성이다. 만약 별도로 HBase를 설치해 사용할 경우 초당 특정 쿼리 이상을 수행하는 확장은 어렵지만 빅테이블에서는 중지 시간이 필요하지 않는 머신을 늘리기만 하면 된다. 다음으로 관리의 용이성이 있다. 클라우드 빅테이블은 업그레이드 같은 관리 작업을 처리하고 투명하게 재시작한다. 클라우드 빅테이블의 데이터는 기내 및 유휴 상태에서 모두 암호화된다. 권한관리에서의 이점도 얻을 수 있다. 빅테이블에서는 IAM 권한을 사용하여 빅테이블 데이터로의 접근을 막을 수 있다.

 

클라우드 빅테이블은 실제 구글의 코어 서비스인 검색, 분석, 지도, 메일등과 동일한 데이터베이스를 사용한다. 클라우드 빅테이블은 GCP 에코 시스템의 일부이기 때문에 다른 GCP 서비스 및 타사 클라이언트와 상호 작용할 수 있다. 애플리케이션 API 관점에서 HBase 클라이언트를 사용하는 Managed VM, HBase Rest 서버 또는 Java 서버와 같은 데이터 서비스 계층을 통해 Cloud Bigtable에서 데이터를 읽고 쓸 수 있다. 일반적으로 이것은 애플리케이션, 대시 보드, 데이터 서비스로 데이터를 제공하는 것이다. 이런 데이터는 Cloud Dataflow Streaming, Spark Streaming, Storm과 같이 다양한 대중적인 스트림 프로세싱 프레임워크를 통해 스트리밍 가능하다. 스트리밍이 필수적이라면 하둡 맵리듀스, Dataflow, Spark와 같은 배치 프로세스를 통해 빅테이블에 읽고 쓰는것도 가능하다. 요약되거나 새로 계산된 데이터는 종종 Cloud Bigtable 또는 다운 스트림 데이터베이스에 다시 기록된다.

 

Google Cloud SQL 와 Google Cloud Spanner

 

다시 관계형 데이터베이스 서비스에 대해 알아보자. 관계형 데이터베이스는 데이터의 영속성과 정합성을 위해 스키마를 사용한다. 또 다른 특징으로 트렌젝션이라는 특별한 목적 달성을 돕는 특징이 있다. 데이터베이스의 트렌젝션 없이는 온라인 뱅킹에서 송금조차 이루어질 수 없다. 예를들어 만약 트렌젝션이 없다면 100만원을 송금할 때 계좌에서 100만원을 삭감후 다른 계좌에 더하는 과정에서 오류가 발생한다면 단지 나의 계좌의 100만원만 삭감되는 것이다. 관계형 데이터베이스는 설치, 유지보수, 관리에 많은 비용을 지불하지만 만일 관계형 데이터베이스의 보호를 원한다면 Cloud SQL을 고려할 수 있다. Cloud SQL은 완벽하게 관리된 서비스로 MySQL 또는 ProstgreSQL 엔진을 선택할 수 있다. Cloud SQL은 테라바이트 단위의 저장소를 안전하게 처리할 수 있는 MySQL과 ProstrgreSQL을 모두 제공한다. 물론 컴퓨팅 엔진 가상 머신의 개인 데이터베이스 서버를 구동할 수도 있다. 그렇지만 Cloud SQL 관리 서비스를 활용하여 얻을 수 있는 몇가지 장점이 있다. 먼저, Cloud SQL에서 read, failover, external replica와 같은 relica 서비스를 제공한다. 즉, 정전 발생과 같은 상황에서 Cloud SQL은 자동 장애 조치를 통해 여러 존간에 데이터를 복제할 수 있다. Cloud SQL은 또한 온디멘드또는 자동 스케쥴 데이터 백업과 같은 기능을 제공하고 machine type 변경을 통한 스케일 업과 read replica를 통한 스케일 아웃 기능을 제공한다. 보안 측면에서 Cloud SQL 인스턴스는 네트워크 방화벽을 포함하고 있으며 Google의 내부 네트워크에서 또 데이터베이스 테이블, 임시 파일, 백업 등에 저장시에 고객 데이터는 모두 암호화된다. Cloud SQL 인스턴스의 또다른 장점으로는 다른 GCP 서비스와 외부 서비스의 접근이 가능하다는 점이다. Cloud SQL 인스턴스에 엑세스 할 수 있도록 컴퓨팅 엔진 인스턴스에 권한을 부여하고 Cloud SQL 인스턴스가 가상 머신과 동일한 영역에 있도록 구성할 수 있다. Cloud SQL은 또한 다른 어플리케이션과 SQL WorkBench, Toad와 같은 외부 툴 사용을 지원한다.

 

만약 Cloud SQL이 스케일아웃과 같은 요구사항을 충족하지 못한다면 Cloud Spanner을 고려할 수 있다. Cloud Spanner는 글로벌 스케일에서 트렌젝션 유지, 스키마, SQL, 고가용성을 위한 replication 자동 동기화를 제공하며 페타바이트의 데이터 수용능력을 제공한다. 만약 관계형 데이터베이스를 능가하거나 처리 성능을 높이기 위해 데이터베이스를 샤딩하거나 트랜잭션 일관성, 글로벌 데이터 및 강력한 일관성이 필요하거나 데이터베이스를 통합하려는 경우에 Cloud Spanner가 적절게 사용될 수 있다.

 

Cloud Datastore

 

앞서 GCP의 NoSQL 데이터베이스 서비스인 Cloud Bigtable에 대해 알아보았다. 다른 높은 확장성을 가진 NoSQL 데이터베이스로 Cloud Datastore 서비스가 존재한다. 이것의 주된 사용처는 App Engine 앱으로 부터 구조화된 데이터를 저장하는데 사용된다. Cloud Datastore를 통합 지점으로 사용하여 App Engine 및 Compute Engine에 걸친 솔루션을 구축할 수도 있다. 완전하게 관리된 서비스에 기대하는 것과 같이 Cloud Datastore는 샤딩 및 복제를 자동으로 처리하여 로드에 대응하도록 자동 확장되는 고 가용성 및 내구성이 뛰어난 데이터베이스를 제공한다. Cloud Bigtable과 달리 여러 데이터베이스 행에 영향을 주는 트랜잭션도 제공하며 SQL과 같은 쿼리를 수행 할 수 있다. Cloud Bigtable 서비스의 본격적인 활용에 앞서 체험을 위해 무료로 매일 할당량을 제공해 스토리지, 읽기, 쓰기, 삭제 및 소규모 작업을 무료로 제공한다.