4. Google Cloud 스토리지 옵션 비교

이대현·2024년 5월 20일
1

Cloud Computing

목록 보기
10/14

모든 애플리케이션은 데이터를 저장한다. 애플리케이션에 따라 적절한 클라우드 Storage DB 솔루션을 선택하는 것이 중요하다.

  • 구조화된 데이터 (Structured Data) vs 구조화되지 않은 데이터 (Unstructured Data)

  • 관계형 데이터 (Relational Data) vs 트랜잭션 데이터 (Transaction Data) 등

    위와 같은 데이터 유형의 차이를 이해한 뒤, 적절히 활용할 수 있도록 알맞은 스토리지 옵션을 선택하면 된다.

이 섹션에서는 Google Cloud의 5가지 스토리지 제품인 Cloud Storage, Cloud SQL, Cloud Spanner, Firestore, Cloud Bigtable에 대해 알아본다.


1. Cloud Storage

1.1. 객체 스토리지?

객체 스토리지는 파일 및 폴더 계층 구조(File storage)나 디스크 청크(Block storage) 대신 '객체'로 데이터를 관리하는 스토리지 아키텍처다.

  • 객체는 실제 데이터 바이너리 형식, 생성 날짜, 작성자, 리소스 유형, 권한 등의 메타데이터와 전역 고유 식별자를 포함하는 패키지 형식으로 저장된다.
  • 이 고유 식별자로 사용하는 Key는 URL 형식으로 되어 있어 웹 기술과 원활하게 상호작용할 수 있다.

1.2. 객체 스토리지의 주요 용도

  • 웹사이트 콘텐츠 제공: URL 전역고유식별자(GUID)
  • 데이터 보관 및 재해 복구: 무한한 확장성, 메타데이터 관리, 데이터무결성 제공
  • 대규모 데이터 객체의 최종 사용자 직접 다운로드 배포

1.3. Google Cloud Storage 특징

버킷(메타데이터) / 버전 관리 등의 개념이 존재하기 때문에 데이터 백업 및 검색에 장점이 있다.

  • 동영상, 사진 등 온라인 콘텐츠 저장
  • 데이터 백업 및 보관
  • 워크플로 진행 과정에서 중간 결과 저장

1.3.1. 버킷 구성

Cloud Storage 파일은 버킷으로 구성된다. 버킷에는 전역적으로 Unique Name과 저장될 특정 Geographic Location이 필요하다.

  • 지연 시간이 최소화되는 위치가 이상적이다. 예를 들어, 사용자가 대부분 유럽에 있다면 유럽의 특정 Google Cloud 리전이나 EU 멀티 리전을 선택하는 것이 좋다.

1.3.2. 버전 관리

Cloud Storage의 스토리지 객체는 수정할 수 없고, 변경사항이 생길 때마다 새로운 버전이 생성된다. 새 버전이 이전 버전을 덮어쓰도록 되며, 버전 관리를 설정해 변경사항(수정, 덮어쓰기, 삭제)을 기록할 수 있다.

  • 버전 관리의 장점

    • 보관된 객체의 버전 나열

    • 객체를 이전 상태로 복원

    • 객체 버전 영구 삭제

1.3.3. 보안 및 접근 제어

저장된 데이터에 대한 접근을 제어하기 위해 IAM Role액세스 제어 목록(ACL)을 사용할 수 있다. 대부분의 경우 IAM으로 충분하지만, 더 세밀한 제어가 필요하면 ACL을 만들 수 있다.

  • ACL 구성
    1. Scope (범위): 작업에 액세스하는 사용자 정의
    2. Permission (권한): 읽기 또는 쓰기와 같은 수행 가능한 작업 정의

1.3.4. 수명 주기 관리

Cloud Storage는 수명 주기 관리 정책을 제공한다. 예를 들어, 365일이 넘은 객체를 삭제하거나 특정 날짜 이전에 생성된 객체를 삭제하거나, 버전 관리가 설정된 버킷에서 각 객체의 최신 버전 3개만 유지하도록 설정할 수 있다. 이를 통해 실제로 필요한 것보다 더 많은 비용을 지불하지 않도록 제어할 수 있다.

1.3.5. 스토리지 클래스

Cloud Storage에는 4가지 스토리지 클래스가 있으며, 각 스토리지마다 적합한 데이터 유형이 존재하고, 스토리지 요금은 데이터의 스토리지 클래스와 버킷 위치에 따라 다르기 때문에 공식 문서를 확인하는게 제일 좋다. 다음 링크 참고

  • 이 블로그 글에는 각 클래스의 특징이 잘 정리되어 있으니 참고하면 좋을 듯
    • 예) Coldline Storage 클래스는 가끔 액세스되는 데이터의 저장 비용을 절감하기 위해 사용한다.

4.2. Cloud SQL

Cloud SQL은 MySQL, PostgreSQL, SQL Server 등의 관계형 db를 클라우드에서 쉽게 배포, 확장, 관리할 수 있도록 한다. 즉, 완전 관리형 관계형 데이터베이스 서비스이다.

패치 및 업데이트 적용, 백업 관리, 복제본 구성 같은 일상적이지만 시간이 많이 소요되는 작업은 Google에 맡기고, 사용자는 애플리케이션 개발에 집중할 수 있다.

주요 특징

  • 완전 관리형 서비스: 소프트웨어 설치 및 유지보수 불필요.
  • 확장성: 최대 128개 프로세서 코어, 864GB를 초과하는 RAM, 64TB 스토리지로 확장 가능.
  • 자동 복제: Cloud SQL 기본 인스턴스, 외부 기본 인스턴스, 외부 MySQL 인스턴스를 통한 자동 복제 지원.
  • 관리형 백업: 안전하게 저장된 백업 데이터에 쉽게 액세스 가능. 하나의 인스턴스 비용에 7개 백업 포함.
  • 데이터 암호화: Google 내부 네트워크, 데이터베이스 테이블 임시 파일, 백업 데이터 암호화.
  • 네트워크 방화벽: 데이터베이스 인스턴스에 대한 네트워크 액세스 제어.

3. Cloud Spanner

Cloud Spanner는 관계형 데이터베이스의 ACID 트랜잭션과 표준 SQL을 사용한 조회기능을 제공하면서도 NoSQL 데이터베이스의 수평 확장성과 데이터 복제를 통해 고가용성을 제공하는 완전관리형RDB 이다.

DB 복습하고 가는 코너가 됐다. 😇

3.1. NoSQL

NoSQL은 "Not Only SQL"의 약자로, 전통적인 관계형 데이터베이스가 아닌 데이터베이스 관리 시스템을 의미한다. NoSQL 데이터베이스는 다양한 데이터 모델을 지원하며, 주로 대규모 데이터 저장과 처리에 최적화되어 있다. 이는 스키마가 없는 데이터 저장, 수평적 확장성, 고가용성, 빠른 읽기/쓰기를 특징으로 한다.

  • 주요 유형

    • 문서형 데이터베이스: JSON, BSON 같은 형식으로 데이터를 저장. (예: MongoDB)

    • 키-값 스토어: 단순한 키-값 쌍으로 데이터를 저장. (예: Redis)

    • 열 기반 스토어: 열 중심 저장 방식으로 대규모 읽기/쓰기에 최적. (예: Apache Cassandra)

    • 그래프 데이터베이스: 그래프 구조로 데이터를 저장하며, 복잡한 관계와 쿼리를 처리. (예: Neo4j)

  • 주요 특징

    • 유연한 스키마: 데이터 모델이 고정되지 않아 유연하게 데이터를 저장.

    • 수평적 확장성: 여러 서버에 걸쳐 데이터를 분산하여 저장하고 처리.

    • 고성능: 빠른 읽기/쓰기 성능을 제공.

    • 고가용성: 데이터 복제를 통해 높은 가용성과 내결함성을 제공.

  • 사용 사례

    • 빅 데이터 처리: 대규모 데이터를 실시간으로 처리.

    • IoT 데이터 저장: 다양한 형식의 데이터를 유연하게 저장하고 빠르게 처리.

    • 소셜 네트워크: 사용자 간의 복잡한 관계를 효율적으로 관리.

3.2. ACID 트랜잭션

ACID 트랜잭션은 데이터베이스 트랜잭션의 신뢰성과 일관성을 보장하기 위해 중요한 네 가지 속성을 말한다. 이 속성들은 트랜잭션이 안전하고 정확하게 처리되도록 보장한다. ACID는 다음 네 가지 속성의 약자다:

  1. Atomicity (원자성): 트랜잭션이 완전히 수행되거나 전혀 수행되지 않아야 한다는 것을 의미한다. 트랜잭션의 일부라도 실패하면 수행된 모든 작업이 롤백(취소)되어야 한다.

    • 예를 들어, 은행 계좌 이체 트랜잭션에서 돈을 한 계좌에서 출금하고, 다른 계좌에 입금하는 두 가지 작업이 모두 성공하거나 모두 실패해야 한다.
  2. Consistency (일관성): 트랜잭션이 성공적으로 완료되면, 데이터베이스의 모든 제약 조건이 트랜잭션이 끝난 후에도 여전히 유효해야 한다.

    • 이는 데이터 무결성을 보장한다.
  3. Isolation (격리성): 트랜잭션들이 동시에 실행되더라도, 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않아야 한다.

    • 격리성은 각 트랜잭션이 독립적으로 실행되는 것처럼 보이게 한다.
    • 여러 트랜잭션이 동시에 실행될 때, 다른 트랜잭션의 중간 상태를 볼 수 없도록 한다.
  4. Durability (지속성): 시스템 장애가 발생하더라도, 완료된 트랜잭션의 결과는 손실되지 않고 보존되어야 한다.

    • 이는 주로 로그 파일과 같은 지속적 저장 매체에 데이터를 기록함으로써 보장된다.

예시

은행에서 계좌 이체를 수행하는 상황을 통해 ACID 속성을 이해해 보자.

  • 원자성: 고객 A의 계좌에서 100달러를 출금하고, 고객 B의 계좌에 100달러를 입금하는 트랜잭션에서, 두 작업이 모두 성공하거나 둘 다 실패해야 한다. 하나의 작업만 수행되는 경우 데이터 불일치가 발생한다.
  • 일관성: 트랜잭션이 시작되기 전과 완료된 후 데이터베이스는 제약 조건을 만족해야 한다. 예를 들어, 두 계좌의 합계 잔액이 동일하게 유지되어야 한다.
  • 격리성: 동시에 여러 계좌 이체 트랜잭션이 발생하더라도, 각 트랜잭션은 다른 트랜잭션의 중간 결과를 볼 수 없어야 한다.
  • 지속성: 트랜잭션이 완료된 후, 시스템이 다운되더라도 계좌 이체 결과는 데이터베이스에 영구적으로 반영되어야 한다.

ACID 속성은 관계형 데이터베이스에서 매우 중요하며, 데이터의 정확성과 신뢰성을 유지하는 데 핵심적인 역할을 한다.


4. Firestore

Firestore는 모바일, , 서버 개발용으로 설계된 수평적으로 확장 가능한 NoSQL 클라우드 데이터베이스다.

  • 데이터는 문서(Document) 형태로 저장되며, 이 문서들은 컬렉션(Collection)으로 구성된다.

4.1. 주요 특징

  • 데이터 구조: DocumentCollection으로 구성.
    • Document는 하위 컬렉션과 중첩된 Document 객체를 포함할 수 있다.
  • 쿼리 기능: NoSQL 쿼리를 통해 특정 문서 또는 조건에 맞는 컬렉션의 모든 문서를 가져올 수 있다. 여러 필터와 정렬 옵션을 결합할 수 있으며, 색인이 기본적으로 생성되어 쿼리 성능이 뛰어나다.
  • 데이터 동기화: 연결된 모든 기기의 데이터를 실시간으로 업데이트. 오프라인 상태에서도 데이터 읽기, 쓰기, 쿼리가 가능하며, 온라인으로 전환되면 로컬 변경사항을 자동으로 동기화한다.
  • 인프라: Google Cloud의 멀티 리전 데이터 복제, 높은 일관성, 원자적 일괄 작업, 실제 트랜잭션 지원을 활용한다.

4.2. 가격 책정

  • 요금 부과 방식: 문서 읽기, 쓰기, 삭제 건별로 요금 부과. 쿼리당 하나의 문서를 읽는 요율로 요금이 청구된다.
  • 추가 비용: 데이터 저장 용량과 네트워크 대역폭 사용량에 따라 추가 요금이 발생. 인그레스는 무료이며, 대부분의 이그레스도 무료.
  • 무료 할당량: 매월 10GB의 네트워크 이그레스, 일일 50,000건의 문서 읽기, 20,000건의 문서 쓰기, 20,000건의 문서 삭제, 1GB의 저장된 데이터. 무료 할당량을 초과한 경우에만 요금이 청구된다.

5. Cloud Bigtable

  • Cloud Bigtable은 Google의 NoSQL, 빅데이터, 데이터베이스 서비스

  • Google의 핵심 서비스인 검색, 애널리틱스, 지도, Gmail 등을 운영하는 데 사용되는 데이터베이스다.

  • 대규모 데이터 처리 및 분석에 특화되어 있으며, 사물 인터넷, 사용자 분석, 회계 자료 분석 등 다양한 운영 및 분석 애플리케이션에 적합하다.

주요 특징

  • 고속 처리: 대용량 데이터를 일관된 짧은 지연 시간과 높은 처리량 수준에서 처리할 수 있다.
  • 적합한 용도: 데이터가 대개 1TB를 초과하고, 고속 처리가 필요하거나 빠르게 변화하는 NoSQL 데이터 작업을 수행하는 경우에 적합하다.
  • 다양한 상호작용: 다른 Google Cloud 서비스나 서드 파티 클라이언트와 상호작용이 가능하며, API를 통해 데이터를 읽고 쓸 수 있다.
  • 스트리밍 및 일괄 처리: 널리 사용되는 스트림 처리 프레임워크나 일괄 처리를 통해 데이터를 스트리밍하거나 처리할 수 있다.
profile
삽질의 기록들 👨‍💻

0개의 댓글