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.
| Kategori | AWS | Google Cloud | Azure |
|---|---|---|---|
| Warehouse analitik | Amazon Redshift | BigQuery | Azure Synapse Analytics |
| Penyimpanan objek | Amazon S3 | Cloud Storage | Azure Blob Storage |
| Orkestrasi pipeline | Amazon MWAA | Cloud Composer | Azure Data Factory |
| Streaming kejadian | Amazon Kinesis Data Streams | Pub/Sub | Azure 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.
| Model | Cara membayar | Cocok untuk | Risiko utama |
|---|---|---|---|
| pay-as-you-go | per unit pemakaian nyata | beban tidak tetap dan eksperimen | biaya mengikuti lonjakan pemakaian |
| provisioned | kapasitas per periode waktu | beban tetap dan terduga | kapasitas menganggur yang tetap dibayar |
| serverless | per pemakaian dengan pengelolaan penuh | beban berfluktuasi yang jarang berjalan | harga 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.
# 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")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 hariBentuk 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#
- Introduction to Amazon Redshift — Amazon Web Services — Layanan warehouse analitik terkelola AWS.
- BigQuery overview — Google Cloud — Layanan warehouse analitik Google Cloud.
- What is Azure Synapse Analytics? — Microsoft — Layanan analitik terpadu pada Azure.
- What is Amazon S3? — Amazon Web Services — Layanan penyimpanan objek AWS.
- Cloud Storage overview — Google Cloud — Layanan penyimpanan objek Google Cloud.
- Azure Data Lake Storage overview — Microsoft — Penyimpanan objek Azure untuk beban kerja data lake.
- What Is Amazon Managed Workflows for Apache Airflow? — Amazon Web Services — Orkestrasi Airflow terkelola pada AWS.
- Managed Airflow overview — Google Cloud — Orkestrasi Airflow terkelola pada Google Cloud.
- Introduction to Azure Data Factory — Microsoft — Layanan orkestrasi dan integrasi data pada Azure.
- What is Amazon Kinesis Data Streams? — Amazon Web Services — Layanan streaming kejadian AWS.
- What is Pub/Sub? — Google Cloud — Layanan perpesanan dan streaming kejadian Google Cloud.
- What is Azure Event Hubs — Microsoft — Layanan streaming kejadian pada Azure.