Cloud Spanner com Terraform

1. Visão geral

Última atualização:23/07/2020

O que é o Cloud Spanner?

O Google Cloud Spanner é um banco de dados distribuído globalmente e em conformidade com ACID que lida automaticamente com réplicas, fragmentação e processamento de transações. Assim, você pode escalonar rapidamente para atender a qualquer padrão de uso e garantir o sucesso dos seus produtos.

Principais características

  • Banco de dados relacional, criado para escalonamento:tudo que você espera de um banco de dados relacional (esquemas, consultas SQL e transações ACID) testado na prática e pronto para escalonamento global.
  • Disponibilidade de 99,999%:o Cloud Spanner oferece disponibilidade de 99,999% líder do setor para instâncias multirregionais, o que significa 10 vezes menos inatividade do que quatro noves. Além disso, ele oferece replicação transparente e síncrona em todas as configurações regionais e multirregionais.
  • Fragmentação automática:o Cloud Spanner otimiza o desempenho ao fragmentar automaticamente os dados com base na carga da solicitação e no tamanho dos dados. Como resultado, você passa menos tempo se preocupando com o escalonamento do seu banco de dados e, em vez disso, se concentra na expansão dos seus negócios.

Confira todos os recursos

O que você vai aprender

  • Como usar o provedor Terraform do Google Cloud.
  • Usar o Terraform para criar instâncias e bancos de dados do Cloud Spanner.
  • Usar o Terraform para modificar recursos do Cloud Spanner.
  • Como usar o Terraform para excluir recursos do Cloud Spanner.

2. Configuração e requisitos

Configuração de ambiente autoguiada

Se você ainda não tem uma Conta do Google (Gmail ou Google Apps), crie uma. Faça login no Console do Google Cloud Platform ( console.cloud.google.com) e crie um projeto:

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID.

Em seguida, será necessário ativar o faturamento no console do Cloud para usar os recursos do Google Cloud.

A execução por meio deste codelab terá um custo baixo, mas poderá ser mais se você decidir usar mais recursos ou se deixá-los em execução. Consulte a seção "limpeza" no final deste documento.

Novos usuários do Google Cloud Platform estão qualificados para uma avaliação sem custo financeiro de US$300.

Authentication

Se ainda não tiver feito isso, instale a ferramenta de linha de comando gcloud. Depois que a gcloud for instalada, ative as credenciais padrão do aplicativo executando o seguinte comando no terminal:

$ gcloud auth application-default login

Terraform

Se você não tiver instalado o Terraform antes, instale o Terraform.

3. Provedor do Google Cloud Terraform

O provedor do Google Cloud Terraform oferece quatro recursos do Cloud Spanner:

Neste codelab, vamos criar e gerenciar instâncias e bancos de dados do Cloud Spanner.

Ambiente

No seu ambiente de desenvolvimento, crie um diretório para os arquivos de configuração do Terraform.

$ mkdir ~/terraform-spanner
$ cd ~/terraform-spanner

Em seguida, crie um arquivo chamado "main.tf" com o conteúdo a seguir e substitua PROJECT_ID pelo ID do seu projeto do Google Cloud:

$ cat >> main.tf <<'EOF'
provider "google" {
  project = "PROJECT_ID"
}
EOF

No restante deste codelab, vamos modificar esse arquivo e aplicar as mudanças.

4. Como criar instâncias e bancos de dados

Modifique o arquivo main.tf com o conteúdo a seguir para adicionar uma nova instância do Cloud Spanner:

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

Execute o comando a seguir para aplicar as mudanças:

$ 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.

Depois que as mudanças forem aplicadas, você poderá ver a instância no Console do Google Cloud. Não é possível modificar a configuração regional depois que uma instância é criada.

48b67416982fa152.png

Depois de criar a instância, vamos criar um banco de dados nas próximas etapas. Modifique main.tf com o conteúdo a seguir:

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"
}

Use o comando a seguir novamente para aplicar as mudanças:

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Se tudo der certo, "my-first-database" vai estar disponível na instância:

9962a71c6b2a3aff.png

5. Como modificar uma instância

Como observado na seção anterior, nem todas as propriedades das instâncias podem ser modificadas. No entanto, é possível aumentar/diminuir o número de nós para ajustar os recursos usados pela instância. A instância criada tinha três nós. Ao modificar o arquivo main.tf, vamos aumentar o número de nós para 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"
}

A próxima etapa é aplicar as mudanças:

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Quando isso acontecer, a instância vai usar cinco nós.

6. Excluir um banco de dados

É possível excluir um banco de dados permanentemente quando ele não for mais necessário. Basta remover o banco de dados de main.tf e aplicar as mudanças.

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.

Se a operação for concluída, o banco de dados será excluído permanentemente.

7. Excluir uma instância

É possível excluir uma instância permanentemente quando ela não for mais necessária. Basta remover a instância de main.tf e aplicar as mudanças.

provider "google" {
  project = "PROJECT_ID"
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

Se a operação for concluída, a instância será excluída permanentemente.

8. Parabéns!

Você criou, modificou e excluiu recursos do Cloud Spanner usando o Terraform.

O que vimos

  • Como usar o provedor Terraform do Google Cloud.
  • Usar o Terraform para criar instâncias e bancos de dados do Cloud Spanner.
  • Usar o Terraform para modificar recursos do Cloud Spanner.
  • Como usar o Terraform para excluir recursos do Cloud Spanner.

Saiba mais