SolusiBackend per pengguna
Satu instans untuk setiap pengguna
Kunci dalam permintaan mengarahkan setiap pengguna, tenant, atau agen ke instansnya sendiri, yang menyimpan memori dan disknya serta tidur di antara permintaan.
from glac import Glac
glac = Glac()
app = glac.cube.deploy(
"ghcr.io/acme/notes:2", name="notes", port=8080,
keys={"from": {"header": "X-User"}, # the key
"delete_after_idle_ms": 30 * 86_400_000},
scale={"suspend_after_ms": 1000}) # sparse traffic: asleep a second after
# a request with X-User: ada reaches ada's own instance
ada = app.instance("ada") # or make or wake it from codeState per pengguna, tagihan jalan terus per jam
Satu proses untuk setiap pengguna adalah desain paling sederhana, dan jika terus berjalan, proses itu tetap dibayar saat penggunanya pergi. Di sini instans setiap kunci tidur di antara permintaan dan hanya dikenai biaya untuk yang disimpannya.
Cara kunci mengarahkan permintaan
Atur keys.from ke sebuah header atau segmen path. Permintaan pertama dari kunci baru membuat instansnya; setiap permintaan berikutnya diarahkan ke instans yang sama, beserta memori dan disknya. Permintaan tanpa kunci berbagi instans aplikasi.
Apa yang didapat instans setiap pengguna
Pilih bentuknya: instans bersama, atau satu instans untuk setiap kunci pengguna.
Kunci dari permintaan, di header atau path; permintaan pertama membuat instansnya.
State per pengguna: memori yang tetap ada selama tidur, disk sendiri, dan sebuah volume.
Biayanya: saat tidur, tanpa CPU, hanya yang disimpannya.
Masa hidup pilihan Anda: dihapus setelah tidur selama itu, dibuat lagi oleh kuncinya.
Penggunaan per kunci, dari kunci yang dibawa setiap instans sebagai label.
Pratinjau ilustratif
Diukur, bukan dijanjikan
Median di bare metal tanpa beban lain: kasus terbaik, dan kami menyatakannya terus terang. Instans per kunci sejenis dengan sandbox, tempat angka-angka ini diukur. Cara kami mengukur
- untuk membangunkan instans yang tidur2
- 3.5 ms
- untuk panggilan yang membangunkannya, dari dikirim sampai direspons2
- 6.7 ms
- untuk menidurkannya, beserta memori dan prosesnya2
- 2.3 ms
Lihat sendiri untuk kunci Anda begitu layanan dibuka: baris log untuk permintaan yang membangunkan instans menyebutkan berapa lama proses bangunnya.
glac cube logs notes -f
# one line a request; one that woke an instance says how long it tookProduk yang digunakan
- KubusImage kontainer apa pun sebagai aplikasi yang tidur di antara permintaanAplikasinya, dengan kunci: satu instans untuk setiap pengguna, tenant, atau agen.
- VolumeDisk Kubus yang tetap ada setelah instansnya dihapusDisk untuk data yang harus tetap ada setelah instans pengguna dihapus.
- SandboxKomputer sendiri untuk setiap agenAgen untuk setiap pengguna, dikendalikan lewat API.
Contoh hitungan sebulan
Sepuluh ribu pengguna, masing-masing dengan instansnya sendiri, dengan harga resmi. Hitung perkiraan Anda sendiri
Asumsi pemakaian
- 10 000 pengguna, masing-masing dengan instansnya sendiri, 256 MiB terpakai.
- Setiap pengguna membuat 300 permintaan sehari selama 30 hari, masing-masing dengan 20 ms CPU dan respons 5 KB, pada waktu acak.
- Aplikasi diatur agar benar-benar tidur satu detik setelah instans berhenti (scale.suspend_after_ms 1000), pengaturan yang cocok untuk lalu lintas sejarang ini: permintaan seorang pengguna datang berselang beberapa menit, dan instans yang tetap dijeda di memori di antara permintaan itu ditagih untuk memorinya sepanjang waktu. Jadi setiap instans terjaga selama melayani permintaan dan 1 detik sesudahnya, dijeda 1 detik lagi, lalu tidur dengan memorinya disimpan, sekitar 100 MB per instans.
- Konsekuensinya: permintaan yang mendapati instansnya sedang tidur dilayani dalam 6.7 ms, sedangkan jika instansnya dijeda, dalam 0.43 sampai 1.72 ms; dan setiap kali tidur lalu bangun memakan 25.6 ms CPU, yang sudah masuk hitungan CPU bulan itu.
Sebulan dengan harga resmi
- CPU4.3 miliar milidetik CPU × $0.01 / juta$42.95
- Memori12 581 GiB-jam × $0.008$100.65
- Permintaan90 juta × $0.30 / juta$27.00
- Lalu lintas keluar450 GB × $0.004$1.80
- Disimpan saat tidur1 000 GB-bulan × $0.02$20.00
Di paket Berbayar, total bulan ini $189.60: biaya $5, ditambah $184.60 untuk pemakaian di luar jatah, dibayar dari saldo Anda dengan harga yang sama.
Beri setiap pengguna instansnya sendiri
Buat kunci, lalu deploy aplikasi dengan keys.from lewat satu panggilan.