1. 개요
최종 업데이트: 2020년 7월 23일
Cloud Spanner란 무엇인가요?
Google Cloud Spanner는 복제본, 샤딩, 트랜잭션 처리를 자동으로 처리하는, 전 세계에 분산된 ACID 규격 데이터베이스로, 사용 패턴에 맞게 신속하게 확장하여 제품의 성공을 보장할 수 있습니다.
주요 특징
- 확장을 위해 설계된 관계형 데이터베이스: 고객이 관계형 데이터베이스에서 기대하는 모든 기능(스키마, SQL 쿼리, ACID 트랜잭션)에 대해 철저한 테스트를 거쳤으며 글로벌 단위로 확장할 준비가 되었습니다.
- 99.999% 가용성: Cloud Spanner는 멀티 리전 인스턴스에 업계 최고의 99.999% 가용성을 제공하며(99.999%의 다운타임보다 다운타임이 10배 더 적음), 리전 및 멀티 리전 구성 전반에서 투명한 동기식 복제를 제공합니다.
- 자동 샤딩: Cloud Spanner는 요청 부하 및 데이터 크기에 따라 데이터를 자동으로 샤딩하여 성능을 최적화합니다. 따라서 데이터베이스 확장 방법을 고민하는 시간을 줄이고 비즈니스 확장에 집중할 수 있습니다.
학습할 내용
- Google Cloud Terraform 제공업체를 사용하는 방법
- Terraform을 사용하여 Cloud Spanner 인스턴스 및 데이터베이스 생성
- Terraform을 사용하여 Cloud Spanner 리소스 수정
- Terraform을 사용하여 Cloud Spanner 리소스 삭제
2. 설정 및 요구사항
자습형 환경 설정
아직 Google 계정(Gmail 또는 Google Apps)이 없으면 계정을 만들어야 합니다. Google Cloud Platform 콘솔 ( console.cloud.google.com)에 로그인하고 새 프로젝트를 만듭니다.
모든 Google Cloud 프로젝트에서 고유한 이름인 프로젝트 ID를 기억하세요(위의 이름은 이미 사용되었으므로 사용할 수 없습니다). 이 이름은 나중에 Codelab에서 PROJECT_ID로 참조됩니다.
다음으로 Google Cloud 리소스를 사용할 수 있도록 Cloud 콘솔에서 결제를 사용 설정해야 합니다.
이 codelab을 실행하는 과정에는 많은 비용이 들지 않지만 더 많은 리소스를 사용하려고 하거나 실행 중일 경우 비용이 더 들 수 있습니다(이 문서 마지막의 '삭제' 섹션 참조).
Google Cloud Platform의 신규 사용자에게는 $300의 무료 체험판이 제공됩니다.
인증
아직 설치하지 않았다면 gcloud 명령줄 도구를 설치합니다. gcloud가 설치되면 터미널에서 다음 명령어를 실행하여 애플리케이션 기본 사용자 인증 정보를 활성화합니다.
$ gcloud auth application-default login
Terraform
이전에 Terraform을 설치하지 않았다면 Terraform을 설치합니다.
3. Google Cloud Terraform 제공업체
Google Cloud Terraform 제공업체는 4가지 Cloud Spanner 리소스를 제공합니다.
- google_spanner_instance
- google_spanner_database
- google_spanner_instance_iam
- google_spanner_database_iam
이 Codelab에서는 Cloud Spanner 인스턴스와 데이터베이스를 만들고 관리합니다.
환경
개발 환경에서 Terraform 구성 파일을 위한 새 디렉터리를 만듭니다.
$ mkdir ~/terraform-spanner $ cd ~/terraform-spanner
그런 다음 'main.tf'라는 파일을 만듭니다. PROJECT_ID를 자신의 Google Cloud 프로젝트 ID로 바꿉니다.
$ cat >> main.tf <<'EOF' provider "google" { project = "PROJECT_ID" } EOF
이 Codelab의 나머지 부분에서는 이 파일을 수정하고 변경사항을 적용합니다.
4. 인스턴스 및 데이터베이스 만들기
다음 콘텐츠로 main.tf를 수정하여 새 Cloud Spanner 인스턴스를 추가합니다.
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 3 }
다음 명령어를 실행하여 변경사항을 적용합니다.
$ terraform apply # ... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes # ... Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
변경사항이 적용되면 Google Cloud 콘솔에서 인스턴스를 볼 수 있습니다. 인스턴스를 만든 후에는 리전 구성을 수정할 수 없습니다.
인스턴스를 만든 후 다음 단계에서 데이터베이스를 만듭니다. 다음 내용으로 main.tf를 수정합니다.
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 3 } resource "google_spanner_database" "database" { instance = google_spanner_instance.main.name name = "my-first-database" }
다시 다음 명령어를 사용하여 변경사항을 적용합니다.
$ terraform apply # ... Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
성공하면 인스턴스에서 my-first-database를 사용할 수 있습니다.
5. 인스턴스 수정하기
이전 섹션에서 설명한 것처럼 모든 인스턴스 속성을 수정할 수 있는 것은 아닙니다. 하지만 노드 수를 늘리거나 줄여 인스턴스에서 사용하는 리소스를 조정할 수 있습니다. 생성된 인스턴스에는 3개의 노드가 있었습니다. main.tf 파일을 수정하여 노드 수를 5로 늘리겠습니다.
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 5 } resource "google_spanner_database" "database" { instance = google_spanner_instance.main.name name = "my-first-database" }
다음 단계는 변경사항을 적용하는 것입니다.
$ terraform apply # ... Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
성공하면 인스턴스가 노드 5개를 사용합니다.
6. 데이터베이스 삭제
더 이상 필요하지 않은 데이터베이스는 영구적으로 삭제할 수 있습니다. main.tf에서 데이터베이스를 삭제하고 변경사항을 적용하기만 하면 됩니다.
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 5 }
$ terraform apply # ... Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
성공하면 데이터베이스가 영구적으로 삭제됩니다.
7. 인스턴스 삭제
더 이상 필요하지 않은 인스턴스는 영구적으로 삭제할 수 있습니다. main.tf에서 인스턴스를 삭제하고 변경사항을 적용하기만 하면 됩니다.
provider "google" { project = "PROJECT_ID" }
$ terraform apply # ... Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
성공하면 인스턴스가 영구적으로 삭제됩니다.
8. 축하합니다.
Terraform을 사용하여 Cloud Spanner 리소스를 생성, 수정, 삭제했습니다.
학습한 내용
- Google Cloud Terraform 제공업체를 사용하는 방법
- Terraform을 사용하여 Cloud Spanner 인스턴스 및 데이터베이스 생성
- Terraform을 사용하여 Cloud Spanner 리소스 수정
- Terraform을 사용하여 Cloud Spanner 리소스 삭제
자세히 알아보기
- Google Cloud Spanner 문서 보기
- Google Cloud Spanner Terraform 리소스에 대해 읽어보세요.
- 인스턴스 및 데이터베이스에 대한 IAM 규칙 설정에 대해 알아보세요.