Kesadaran cloud

Peta layanan data terkelola di cloud beserta model biayanya.

Daftar isi

Layanan yang dipakai sepanjang jalur ini berjalan di komputer sendiri, yaitu DuckDB sebagai warehouse, berkas di direktori sebagai penyimpanan, dan skrip Python sebagai pipeline. Ketiganya memiliki padanan terkelola di cloud. Topik ini menyusun peta kategori layanan data pada tiga penyedia besar dan menjabarkan model biayanya secara konseptual. Tujuannya adalah peta mental untuk membaca penawaran cloud dengan tenang, bukan panduan harga, karena angka biaya terus berubah dan bergantung pada penawaran yang berlaku.

Empat kategori layanan data#

Empat kategori yang dipakai sepanjang jalur ini, yaitu warehouse analitik, penyimpanan objek, orkestrasi, dan streaming, cukup untuk memetakan sebagian besar penawaran layanan data di cloud. Setiap penyedia menyediakan padanan untuk setiap kategori dengan nama yang berbeda, dan tabel berikut memetakan yang paling umum dijumpai.

KategoriAWSGoogle CloudAzure
Warehouse analitikAmazon RedshiftBigQueryAzure Synapse Analytics
Penyimpanan objekAmazon S3Cloud StorageAzure Blob Storage
Orkestrasi pipelineAmazon MWAACloud ComposerAzure Data Factory
Streaming kejadianAmazon Kinesis Data StreamsPub/SubAzure Event Hubs

Tabel ini menyimpan beberapa catatan yang berguna. Orkestrasi pada AWS dan Google Cloud sama-sama berupa Apache Airflow terkelola, yaitu Amazon MWAA dan Cloud Composer, sedangkan Azure Data Factory memakai model orkestrasinya sendiri yang berbasis alur visual. Layanan streaming pun berbagi konsep kejadian, topik, dan konsumen, meskipun jaminan penguliran dan retensinya berbeda antar layanan. Nama-nama pada tabel juga bukan perincian sepele, karena pencarian dokumentasi hampir selalu dimulai dari nama kategori dan nama layanannya.

Tiga model biaya#

Tawaran biaya cloud menumpang pada tiga model dasar, yaitu pay-as-you-go, provisioned, dan serverless. Memahami ketiganya lebih berguna daripada menghafal harga. Pay-as-you-go berarti membayar per unit pemakaian nyata, misalnya jam komputasi atau data yang dipindai, sehingga tagihan mengikuti pemakaian. Provisioned berarti memesan kapasitas untuk jangka waktu tertentu dan membayarnya penuh, meskipun kapasitas itu menganggur. Serverless berarti pengelolaan infrastruktur diserahkan penuh kepada penyedia, sehingga skala naik-turun tanpa tindakan pengguna dan pembayarannya tetap mengikuti pemakaian.

ModelCara membayarCocok untukRisiko utama
pay-as-you-goper unit pemakaian nyatabeban tidak tetap dan eksperimenbiaya mengikuti lonjakan pemakaian
provisionedkapasitas per periode waktubeban tetap dan terdugakapasitas menganggur yang tetap dibayar
serverlessper pemakaian dengan pengelolaan penuhbeban berfluktuasi yang jarang berjalanharga per unit biasanya lebih tinggi

Ketiga model dapat dipadukan pada satu sistem, dan pemaduan itu justru yang paling lazim. Warehouse dapat menyediakan kapasitas provisioned untuk beban transformasi harian yang terduga, lalu melayani analisis sesaat dengan model pemakaian. Keputusannya bukan memilih satu model untuk selamanya, melainkan mencocokkan model dengan bentuk pemakaian setiap komponen.

Membandingkan model dengan perhitungan sederhana#

Perbedaan antar model paling mudah dipahami lewat perhitungan kecil, dan skrip berikut memperagakannya dengan harga fiktif yang sengaja dibulatkan. Angka pada skrip ini bukan harga layanan mana pun, melainkan contoh perhitungan untuk menunjukkan bentuk keputusannya. Skalanya pun dipilih kecil agar mudah dihitung ulang dengan tangan.

python kalkulator-biaya.py
# Harga pada skrip ini FIKTIF dan hanya memperagakan bentuk perhitungan,
# bukan harga layanan cloud yang berlaku.
HARGA_PEMAKAIAN_PER_JAM = 4000
HARGA_TERPROVISI_PER_JAM = 800
HARI = 30


def fmt(angka: int) -> str:
    # pemisah ribuan gaya Indonesia
    return f"{angka:,}".replace(",", ".")


def biaya_pemakaian(jam: int) -> int:
    # pay-as-you-go: dibayar hanya saat komputasi dipakai
    return jam * HARGA_PEMAKAIAN_PER_JAM


def biaya_terprovisi(hari: int = HARI) -> int:
    # provisioned: kapasitas dibayar penuh sepanjang masa provisinya
    return hari * 24 * HARGA_TERPROVISI_PER_JAM


total_terprovisi = biaya_terprovisi()
print(f"kapasitas provisioned {HARI} hari : {fmt(total_terprovisi)}")
for jam_per_hari in (2, 6, 12):
    total_pemakaian = biaya_pemakaian(jam_per_hari * HARI)
    catatan = "lebih murah" if total_pemakaian < total_terprovisi else "lebih mahal"
    print(f"pemakaian {jam_per_hari:2d} jam/hari      : {fmt(total_pemakaian)} ({catatan})")

titik_keseimbangan = total_terprovisi // HARGA_PEMAKAIAN_PER_JAM
print(f"titik keseimbangan              : {titik_keseimbangan} jam pemakaian per {HARI} hari")
text Keluaran
kapasitas provisioned 30 hari : 576.000
pemakaian  2 jam/hari      : 240.000 (lebih murah)
pemakaian  6 jam/hari      : 720.000 (lebih mahal)
pemakaian 12 jam/hari      : 1.440.000 (lebih mahal)
titik keseimbangan              : 144 jam pemakaian per 30 hari

Bentuk keputusannya terlihat jelas pada keluarannya. Pada pemakaian dua jam per hari, model pemakaian lebih murah karena kapasitas terprovisi sebagian besar menganggur. Pada pemakaian dua belas jam per hari, arahnya berbalik, dan titik keseimbangannya berada di 144 jam per bulan, atau sekitar 4,8 jam per hari, dengan angka contoh ini. Harga sungguhan dan bentuk pembiayaannya dihitung melalui kalkulator biaya resmi setiap penyedia, tetapi struktur pertimbangannya tetap seperti yang ditunjukkan skrip ini, yaitu total biaya diperbandingkan pada tingkat pemakaian yang sama.

Pertimbangan memilih layanan#

Pemilihan layanan cloud jarang berputar pada satu faktor, dan empat pertimbangan berikut paling sering menentukan. Pertama, pengetahuan tim yang ada, karena beralih ke layanan yang modelnya asing menambah risiko kesalahan operasional. Kedua, kecocokan beban kerja dengan model layanannya, misalnya batch harian tidak membutuhkan layanan streaming. Ketiga, wilayah dan kepatuhan, karena data tertentu hanya boleh berada di wilayah tertentu. Keempat, biaya pemindahan data keluar (egress), yakni biaya yang timbul ketika data dipindahkan keluar dari cloud tersebut.

Kekhawatiran keterikatan pada satu penyedia (vendor lock-in) berkurang dengan disiplin yang sederhana, yaitu menyimpan data dalam format terbuka pada penyimpanan objek. Kumpulan berkas Parquet terpartisi di penyimpanan objek dapat dibaca oleh hampir semua mesin analitik, sehingga lapisan penyimpanannya tetap portabel meskipun lapisan komputasinya berganti. Disiplin inilah yang membuat investasi pada skema partisi dan format berkas sepanjang jalur ini tetap berharga pada cloud mana pun data itu ditempatkan.

Kesalahan umum#

Kesalahan berikut paling sering muncul ketika penawaran cloud baru dihadapi, dan masing-masing menyertakan perbaikannya.

  • Membiarkan kapasitas provisioned menganggur. Kluster yang dinyalakan terus untuk pekerjaan harian sekali berjalan tetap dibayar penuh sepanjang 24 jam. Jadwalkan siklus hidupnya, atau pindahkan ke model pemakaian apabila beban tidak terduga.
  • Mencoba mempelajari semua layanan sekaligus. Katalog layanan cloud sangat luas, dan mempelajarinya serentak berujung pada pemahaman yang dangkal pada semuanya. Kuasai dua kategori inti terlebih dahulu, yaitu penyimpanan objek dan warehouse, lalu tambahkan kategori lain sesuai kebutuhan.
  • Menyimpan data tanpa memikirkan keluarnya. Data yang tertanam pada format milik satu layanan sulit dipindahkan dan memperbesar keterikatan. Simpan dalam format terbuka pada penyimpanan objek, dan perlakukan layanan lain sebagai lapisan komputasi yang dapat diganti.

Ringkasan#

  • Empat kategori, yaitu warehouse, penyimpanan objek, orkestrasi, dan streaming, cukup untuk memetakan layanan data pada AWS, Google Cloud, dan Azure.
  • Model biayanya terbagi atas pay-as-you-go, provisioned, dan serverless, dan pilihannya ditentukan oleh bentuk pemakaian, bukan oleh harga satuan semata.
  • Perhitungan sederhana menunjukkan titik keseimbangannya, yaitu pemakaian rendah lebih murah pada model pemakaian dan pemakaian tinggi lebih murah pada model provisi.
  • Format terbuka pada penyimpanan objek menjaga data tetap portabel meskipun penyedia komputasinya berganti.

Referensi#