Ιστολόγιο

Χρέωση βάσεων δεδομένων με βάση τη χρήση τους

Κάθε εφαρμογή του Mythex που χρειάζεται να αποθηκεύει δεδομένα παίρνει τη δική της βάση Postgres, και η κατανάλωση της βάσης μιας δημοσιευμένης εφαρμογής βγαίνει από το ίδιο υπόλοιπο credits με το χτίσιμο. Μέχρι τα τέλη Σεπτεμβρίου εκτιμούσαμε αυτή την κατανάλωση από το πόσο ώρα έτρεχε ο διακομιστής της εφαρμογής. Η εκτίμηση αποδείχθηκε λανθασμένη με τρόπο που είχε σημασία, και την αντικαταστήσαμε: κάθε βάση χρεώνεται πλέον από τον υπολογιστικό χρόνο που μέτρησε πραγματικά ο πάροχός της, μία ολοκληρωμένη ώρα τη φορά, και κάθε ώρα μπορεί να χρεωθεί μόνο μία φορά.

Πώς λειτουργούν οι βάσεις

Κάθε βάση τρέχει σε serverless Postgres που κλιμακώνεται στο μηδέν: μετά από λίγα λεπτά αδράνειας κοιμάται, και ξυπνά στο επόμενο query. Όσο είναι ξύπνια, μπορεί να αυξομειώνει τον υπολογιστικό της χώρο ανάλογα με το φορτίο. Αυτό κάνει το «μια βάση για κάθε εφαρμογή» προσιτό, γιατί οι περισσότερες εφαρμογές είναι ήσυχες τις περισσότερες ώρες, και μια κοιμισμένη βάση κοστίζει σχεδόν τίποτα.

Σημαίνει επίσης ότι το κόστος μιας βάσης εξαρτάται από δύο πράγματα που δεν βλέπουμε από έξω: πόση ώρα ήταν ξύπνια και πόσο μεγάλη ήταν όσο ήταν ξύπνια.

Τι έκανε λάθος η εκτίμηση

Το αρχικό μας μετρητή έκανε μία υπόθεση: για κάθε ώρα που έτρεχε ο διακομιστής μιας δημοσιευμένης εφαρμογής, χρέωνε βάση στο μικρότερο μέγεθος υπολογιστικού χώρου.

Ήταν λάθος με τρεις τρόπους:

  1. Το μέγεθος ήταν λάθος. Οι βάσεις έτρεχαν στην πράξη σε μεγαλύτερο προεπιλεγμένο μέγεθος από όσο υπέθετε η εκτίμηση.
  2. Οι βάσεις κλιμακώνονται αυτόματα. Υπό φορτίο μεγαλώνουν, και η εκτίμηση δεν το έβλεπε ποτέ.
  3. Οι βάσεις δεν ακολουθούν τον διακομιστή της εφαρμογής. Μια βάση μένει ξύπνια όποτε την ερωτά οτιδήποτε, η εφαρμογή, μια προγραμματισμένη εργασία, ένα script που την ελέγχει περιοδικά, ανεξάρτητα από το αν ο διακομιστής της εφαρμογής ήταν σε λειτουργία.

Το συνολικό αποτέλεσμα: η εκτίμηση χρέωνε τους χρήστες περίπου το μισό από όσο κόστιζαν πραγματικά οι βάσεις. Αυτό δεν είναι βιώσιμο για εμάς, και σήμαινε επιπλέον ότι οι αριθμοί χρήσης μέσα στην εφαρμογή δεν σήμαιναν αυτό που νόμιζε ο κόσμος.

Μέτρηση αντί για εικασία

Ο πάροχος της βάσης μας αναφέρει για κάθε έργο τα compute-unit-seconds ανά ώρα, δηλαδή πόσο υπολογιστικό χώρο χρησιμοποίησε πραγματικά, συμπεριλαμβανομένου του μεγέθους. Έτσι ο μετρητής λειτουργεί τώρα ως εξής:

  1. Για κάθε δημοσιευμένη εφαρμογή με βάση, ανακτάται η μετρημένη χρήση για κάθε ολοκληρωμένη ώρα από τότε που η εφαρμογή πήγε live.
  2. Η χρήση μετατρέπεται σε κόστος με την τιμή του παρόχου, εφαρμόζεται η τιμή του πλάνου και χρεώνεται στα credits του ιδιοκτήτη της εφαρμογής.
  3. Κάθε φορά κοιτάμε πίσω έως μία ημέρα, ώστε οι ώρες που χάθηκαν όσο το API μας κάνει επανεκκίνηση να χρεωθούν αργότερα.

Ο αποθηκευτικός χώρος χρεώνεται ξεχωριστά, ανά μέγεθος, επειδή δεν εξαρτάται από τη δραστηριότητα.

Καμία ώρα δεν χρεώνεται δύο φορές

Ένας μετρητής χρέωσης που τρέχει σε περισσότερους από έναν διακομιστές, και μπορεί να κρασάρει και να ξαναδοκιμάσει, πρέπει να προσέχει να μην χρεώνει διπλά. Κάθε ώρα κάθε βάσης δεσμεύεται στη δική της γραμμή της βάσης δεδομένων πριν χρεωθεί, με μοναδικότητα στο ζεύγος (βάση, ώρα). Αν δύο διακομιστές, ή μία επανάληψη, προσπαθήσουν να χρεώσουν την ίδια ώρα, μόνο μία δέσμευση πετυχαίνει.

Επίσης κάναμε μια συνειδητή επιλογή για τη σπάνια περίπτωση αποτυχίας: αν η διεργασία κρασάρει ανάμεσα στη δέσμευση μιας ώρας και τη χρέωσή της, η ώρα μένει δεσμευμένη και μη χρεωμένη. Καλύτερα να χαθεί ένα μικρό κομμάτι εσόδων σε σπάνιο κρασάρισμα, παρά να χρεωθεί κάποιος δύο φορές.

Και όταν ενεργοποιήθηκε η μετρημένη χρέωση, ξεκίνησε από την επόμενη πλήρη ώρα. Οι προηγούμενες ώρες είχαν ήδη χρεωθεί με την παλιά εκτίμηση· η νέα χρέωση από μετρημένα δεδομένα θα χρέωνε ξανά εκείνο το διάστημα.

Τι σημαίνει αυτό αν χτίζετε στο Mythex

  • Ο λογαριασμός της βάσης σας τώρα αντανακλά τι έκανε η βάση σας. Μια εφαρμογή που σπάνια χρησιμοποιείται κοστίζει πολύ λίγο· μια εφαρμογή που ερωτά τη βάση της συνεχώς θα την κρατά ξύπνια και θα κοστίζει περισσότερο.
  • Ο μεγαλύτερος μοχλός είναι το πώς χρησιμοποιεί η εφαρμογή σας τη βάση. Το να ερωτά η βάση κάθε λίγα δευτερόλεπτα την κρατά ξύπνια όλο το 24ωρο. Το να ζητά η εφαρμογή δεδομένα όταν χρειάζονται, ή να τα αποθηκεύει προσωρινά, επιτρέπει στη βάση να κοιμάται. Ο οδηγός μας για το τι είναι η βάση δεδομένων καλύπτει τα βασικά.
  • Τα πλάνα Pro πληρώνουν τη μισή τιμή του Free για φιλοξενία, βάσεις και αποθήκευση. Οι λεπτομέρειες είναι στα docs των credits.

Τι κρατήσαμε από όλο αυτό

  • Οι εκτιμήσεις για κόστη βασισμένα στη χρήση παρεκκλίνουν. Όταν ο πάροχος στην πηγή μπορεί να πει τι χρησιμοποιήθηκε, χρεώστε με βάση αυτό.
  • Κάντε τη χρέωση ιδεμπότεντ στη μικρότερη μονάδα που χρεώνετε. Για εμάς είναι μία ώρα βάσης.
  • Όταν πρέπει να αποτύχετε, αποτύχετε υπέρ του πελάτη.

Mythex · Pricing · Χτίστε οτιδήποτε με AI · Πρότυπα ιστοσελίδων και εφαρμογών · Το Mythex σε σύγκριση · Γλωσσάρι δημιουργίας εφαρμογών με AI · Δωρεάν εργαλεία δημιουργίας εφαρμογών με AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Í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 简体中文 繁體中文(香港) 繁體中文(台灣)