Blog

Menagih Database Berdasarkan Apa yang Benar-Benar Dipakai

Setiap aplikasi Mythex yang membutuhkan penyimpanan data mendapat database Postgres sendiri, dan pemakaian database aplikasi yang dipublikasikan berasal dari saldo kredit yang sama dengan saat membangun. Sampai akhir September, kami memperkirakan pemakaian itu dari lamanya server aplikasi berjalan. Perkiraan itu ternyata keliru dengan cara yang berarti, sehingga kami menggantinya: setiap database sekarang ditagih dari komputasi yang diukur penyedianya, satu jam yang sudah selesai dalam satu waktu, dan setiap jam hanya bisa ditagih sekali.

Cara kerja database

Setiap database berjalan di Postgres serverless yang diskalakan ke nol: setelah beberapa menit menganggur, ia tidur, dan bangun saat ada query berikutnya. Saat aktif, ia bisa menaikkan dan menurunkan komputasinya sesuai beban. Itulah yang membuat “satu database per aplikasi” terjangkau: sebagian besar aplikasi sepi sebagian besar waktu, dan database yang tidur hampir tidak memakan biaya.

Artinya, biaya database bergantung pada dua hal yang tidak bisa kami lihat dari luar: berapa lama ia terjaga dan seberapa besar ia saat terjaga.

Apa yang salah dari perkiraan

Meter awal kami membuat satu asumsi: untuk setiap jam server aplikasi yang dipublikasikan berjalan, tagih database pada ukuran komputasi terkecil.

Itu salah dalam tiga hal:

  1. Ukurannya salah. Database sebenarnya berjalan pada ukuran default yang lebih besar daripada yang diasumsikan perkiraan.
  2. Database melakukan autoscale. Di bawah beban, mereka membesar, dan perkiraan tidak pernah melihatnya.
  3. Database tidak mengikuti server aplikasi. Database tetap terjaga setiap kali apa pun melakukan query padanya, yaitu aplikasi, job terjadwal, atau skrip yang terus-menerus memeriksanya, terlepas dari apakah server aplikasi sedang berjalan.

Hasil bersihnya: perkiraan itu menagih pengguna sekitar setengah dari biaya sebenarnya database. Itu tidak berkelanjutan bagi kami, dan juga membuat angka pemakaian di aplikasi tidak berarti seperti yang dipikirkan orang.

Mengukur, bukan menebak

Penyedia database kami melaporkan compute-unit-seconds per jam untuk setiap proyek, yaitu berapa banyak komputasi yang benar-benar dipakai, termasuk ukurannya. Jadi meter sekarang bekerja seperti ini:

  1. Untuk setiap aplikasi yang dipublikasikan dan memiliki database, ambil pemakaian terukur untuk setiap jam yang sudah selesai sejak aplikasi live.
  2. Konversi pemakaian itu menjadi biaya dengan harga penyedia, terapkan tarif paket, dan tagihkan ke kredit pemilik aplikasi.
  3. Lihat ke belakang hingga satu hari setiap kali, sehingga jam yang terlewat saat API kami sedang restart tetap ditagih kemudian.

Penyimpanan ditagih terpisah, berdasarkan ukuran, karena tidak bergantung pada aktivitas.

Tidak pernah menagih jam yang sama dua kali

Meter penagihan yang berjalan di lebih dari satu server, dan bisa crash lalu mencoba lagi, harus berhati-hati agar tidak menagih ganda. Setiap jam dari setiap database diklaim di baris database-nya sendiri sebelum ditagih, dengan constraint unik pada pasangan (database, jam). Jika dua server, atau sebuah percobaan ulang, mencoba menagih jam yang sama, hanya satu klaim yang berhasil.

Kami juga membuat pilihan yang disengaja untuk kasus gagal yang jarang: jika proses crash di antara mengklaim sebuah jam dan menagihnya, jam itu tetap diklaim dan belum ditagih. Kehilangan sedikit pendapatan dalam crash yang jarang lebih baik daripada menagih seseorang dua kali.

Dan ketika penagihan terukur diaktifkan, ia dimulai dari jam penuh berikutnya. Jam-jam sebelumnya sudah ditagih oleh perkiraan lama; menagihnya lagi dari data terukur akan menagih rentang itu dua kali.

Apa artinya jika Anda membangun di Mythex

  • Tagihan database Anda sekarang mencerminkan apa yang dilakukan database Anda. Aplikasi yang jarang dipakai biayanya sangat kecil; aplikasi yang terus-menerus melakukan query ke database akan membuatnya tetap terjaga dan biayanya lebih besar.
  • Pengungkit terbesar adalah cara aplikasi Anda memakai database. Melakukan polling ke database setiap beberapa detik membuatnya tetap terjaga sepanjang waktu. Meminta AI mengambil data saat dibutuhkan, atau menyimpannya di cache, membiarkan database tidur. Panduan kami tentang apa itu database membahas dasarnya.
  • Paket Pro membayar setengah dari tarif Free untuk hosting, database, dan penyimpanan. Rinciannya ada di dokumentasi kredit.

Yang kami pelajari

  • Perkiraan biaya yang berbasis pemakaian akan menyimpang. Ketika penyedia di hulu bisa memberi tahu apa yang dipakai, tagihlah dari situ.
  • Buat penagihan idempoten pada satuan terkecil yang Anda tagih. Bagi kami, satuan itu adalah satu jam database.
  • *Ketika harus gagal, gagallah demi kepentingan pelanggan.

Mythex · Pricing · Bangun apa pun dengan AI · Template website dan aplikasi · Mythex dibandingkan · Glosarium membuat aplikasi dengan AI · Alat gratis untuk membuat aplikasi dengan AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)