Google Cloud Storage

Google Cloud Storage, selanjutnya kita singkat GCS, dengan icon seperti berikut:

Jika ada famiiar dengan AWS, maka GCS mirip dengan Amazon S3 Bucket. GCS digunakan untuk menyimpan unstructured data seperti images, videos dan lainnya. Diakses melalui API atau programmatic SDK untuk berbagai bahasa programming yang umum digunakan.

Fitur-fitur dari GCS

  • Fully Managed Object Storage, tidak perlu melakukan setting apapun, hanya perlu membuat logical bucket.
  • Multiple storage classes, cara untuk menghemat biaya untuk file yang jarang diakses. Masing-masing classes memiliki performa yang sama. Anda juga bisa mengatur automatic life cycle management untuk memindahkan objects ke class tujuan berdasarkan umur file.
  • Secure dan durable, secure karena menggunakan access control.

Konsep GCS

  • GCS bucket adalah logical container untuk menyimpan objects/files.
  • Bucket dibuat dalam GCP projects. Setiap bucket milik dari project.
  • Nama bucket harus unik untuk scope global namespace, tips: gunakan prefix nama project untuk setiap nama bucket.

Bucket Region

  • regional, adalah default opsi dari regional dan merupakan solusi termurah, namun tetap durable. Data disimpan dalam multiple physical device dengan lokasi minimal dalam dua zona. Cocok digunakan jika akses berasal dari satu region.
  • dual-regional, akan membagi data dalam dua region berbeda. Solusi high availability untuk data Anda. Kedua region masih dalam belahan bumi yang sama, atau berdekatan.
  • multi-regional, akan menggunakan hampir semua data center yang tersedia dalam region, contoh region US, maka akan digunakan multiple data center dari region US. Cocok digunakan jika akses berasal dari multiple region untuk mengurangi latency dalam mengakses data.

Storage Classes

Seperti yang sudah dijelaskan diatas, classes berguna menghemat biaya untuk data yang jarang diakses. Anda dapat memberikan class default untuk bucket, dan individual class untuk setiap objects dalam bucket.

  • Standard, secara default bucket akan menggunakan standard storage class, yaitu frequently access data (diakses lebih dari satu kali setiap 30 hari).
  • Nearline, data akses lebih jarang (hanya sekali dalam 30 hari).
  • Coldline, tipe data archive (hanya diakses sekali dalam setahun).

Perhatian: Harga storage semakin murah dari standard ke coldline. Namun kebalikan untuk biaya retrieval, biaya lebih mahal dari coldline ke standard.

Performa untuk masing-masing class adalah sama, yaitu standard class.

Objects dalam Cloud Storage

  • Objects disimpan sebagai opaque data, berupa chunk of zero and one dan terenkripsi.
  • Immutable, tidak dapat diubah. Untuk mengubah harus dilakukan overwrite.
  • Overwrite adalah atomic operation. Jadi selama upload object baru belum selesai, object lama yang di overwrite masih dapat diakses.
  • Secara opsional, dapat menggunakan versioning pada objects.

Mengakses Buckets dan Objects

  • Melalui Google Cloud Console (GUI).
  • HTTP API request.
  • SDKs untuk berbagai bahasa pemrograman umum.
  • gsutil (melalui command line).

Advanced Fitur

  • Paralel uploads untuk object yang besar. Object dipecah menjadi beberapa bagian, lalu diupload secara parallel, setelah upload selesai object akan disusun kembali menjadi object utuh.
  • Integrity checking (md5, crc32). Upload dinyatakan berhasil jika hash yang dihitung oleh sistem sesuai dengan hash yang kita sediakan.
  • gzip Transcoding, file dapat disimpan bentuk terkompresi, dan dekompres saat di download.
  • Requestor pays, biaya network dapat dibebankan kepada pihak yang mengakses data.

GCS Costs

Biaya-biaya yang perlu diperhatikan ketika menggunakan GCS:

  • Operation Charges, contohnya melakukan perubahan, retrieve informasi mengenai bucket atau object. Terdapat 3 class, yaitu class A, B dan Free. Class A paling mahal, contohnya uploading data. Class B, contohnya downloading data. Sementara class Free contohnya menghapus data.
  • Network Charges, terjadi dalam data egress, ketika me-retrieve object dari lokasi yang sama, tidak ada biaya egress. Namun ada biaya kecil ketika memindahkan data dalam kontinen yang sama, sementara untuk worldwide, biaya egress adalah standard.
  • Data retrieval charges, ketika melakukan download dari nearline atau coldline bucket.

Lifecycle management

Berguna untuk mengatur storage classes.

  • Konfigurasi diaplikasikan pada bucket.
  • GCS secara periodik akan memeriksa konfigurasi.
  • Rule yang match akan diaplikasikan pada objects.
  • Dapat digunakan untuk menghapus objects atau mengatur storage class pada objects.

Berikut contoh lifecycle management config

"lifecycle": {
  "rule": [
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "NEARLINE"
    },
    "condition": {
       "age": 30,
       "matchesStorageClass": ["MULTI_REGIONAL", "STANDARD", "DURABLE_REDUCED_AVAILABILITY"]
    }
  },
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "COLDLINE"
    },
    "condition": {
       "age": 365,
       "matchesStorageClass": ["NEARLINE"]
    }
  }
  ]
}

Dapat Anda lihat, menggunakan format JSON yang dapat diaplikasikan melalui melalui command line atau Google Cloud GUI.

Config diatas memiliki dua action dan dua condition. Jika kondisi dipenuhi, action akan dijalankan. Contoh jika age mencapai 30, untuk storage class “MULTI_REGIONAL”, “STANDARD”, “DURABLE_REDUCED_AVAILABILITY” akan diubah menjadi “NEARLINE”.

Security dan Access Control

Jika Anda memiliki data yang sensitif, anda perlu ekstra perhatian mengenai security dan access control.

  • Menggunakan IAM untuk manage bulk access untuk semua buckets.
  • Menggunakan ACL untuk manage granular access.
  • Gunakan Signed URL untuk temporary access, yaitu public access url yang memiliki waktu expired.
  • Anda juga dapat menggunakan Signed policy documents, untuk memastikan file yang dapat diupload.

Pub/Sub Notifications

Pub/Sub digunakan untuk mengotomasi tahap ingestion. Event dari bucket akan mengirim message ke Pub/Sub. Dimana Pub/Sub dapat menggunakan DataFlow untuk melakukan transformasi atau Anda dapat mengkofigurasi Custom Function sebagai subcriber Pub/Sub Topic

External Source

Sharing is caring: