डेटाबेस बिलिंग त्यांच्या खऱ्या वापरानुसार
Mythex वरील प्रत्येक ॲपला डेटा साठवायचा असेल तर स्वतःचा Postgres डेटाबेस मिळतो, आणि प्रकाशित ॲपच्या डेटाबेस वापराचे पैसे बिल्ड करण्याच्या त्याच क्रेडिट शिल्लकीतून जातात. सप्टेंबरच्या उत्तरार्धापर्यंत आम्ही तो वापर त्या ॲपचा सर्व्हर किती वेळ चालला यावरून अंदाजे काढत होतो. तो अंदाज अशा पद्धतीने चुकीचा निघाला की ज्याने फरक पडला, म्हणून आम्ही तो बदलला: आता प्रत्येक डेटाबेसचे बिल त्याच्या प्रदात्याने प्रत्यक्ष मोजलेल्या कंप्यूटवरून, एका पूर्ण झालेल्या तासाने होते, आणि प्रत्येक तासाचे शुल्क एकदाच आकारले जाऊ शकते.
डेटाबेस कसे काम करतात
प्रत्येक डेटाबेस scales to zero असलेल्या सर्व्हरलेस Postgres वर चालतो: काही निष्क्रिय मिनिटांनंतर तो झोपतो, आणि पुढील क्वेरीवर जागा होतो. जागे असताना, भारानुसार त्याचा कंप्यूट वर-खाली होऊ शकतो. त्यामुळे “प्रत्येक ॲपसाठी एक डेटाबेस” परवडणारा ठरतो: बहुतेक ॲप्स बहुतेक वेळ शांत असतात, आणि झोपलेल्या डेटाबेसचा खर्च जवळपास शून्य असतो.
याचा अर्थ डेटाबेसचा खर्च दोन गोष्टींवर अवलंबून असतो, ज्या बाहेरून दिसत नाहीत: तो किती वेळ जागा होता आणि जागा असताना तो किती मोठा होता.
अंदाज काय चुकीचा होता
आमच्या मूळ मीटरने एक गृहीतक धरले होते: प्रकाशित ॲपचा सर्व्हर चालत असलेल्या प्रत्येक तासासाठी, डेटाबेसचा सर्वात लहान कंप्यूट आकार आकारायचा.
ते तीन प्रकारे चुकीचे होते:
- आकार चुकीचा होता. डेटाबेस अंदाजात गृहीत धरलेल्या आकारापेक्षा मोठ्या डिफॉल्ट आकारावर चालत होते.
- डेटाबेस ऑटोस्केल होतात. भाराखाली ते वाढतात, आणि अंदाजाला ते कधीच दिसले नाही.
- डेटाबेस ॲप सर्व्हरच्या मागे राहत नाहीत. डेटाबेस जागा राहतो जेव्हा काहीही त्याच्यावर क्वेरी करते: ॲप, एखादा शेड्युल्ड जॉब, किंवा सतत पोल करणारी स्क्रिप्ट, ॲप सर्व्हर चालू असो वा नसो.
परिणाम असा: अंदाजाने वापरकर्त्यांकडून डेटाबेसच्या खऱ्या खर्चाच्या सुमारे निम्मेच शुल्क आकारले होते. ते आमच्यासाठी टिकाऊ नव्हते, आणि त्यामुळे ॲपमधील वापराचे आकडे लोकांना वाटत होते तसे अर्थ देत नव्हते.
अंदाजाऐवजी मोजणे
आमचा डेटाबेस प्रदाता प्रत्येक प्रोजेक्टसाठी प्रति तास कंप्यूट-युनिट-सेकंद कळवतो: त्याने प्रत्यक्षात किती कंप्यूट वापरले, आकारासह. त्यामुळे मीटर आता असे चालते:
- डेटाबेस असलेल्या प्रत्येक प्रकाशित ॲपसाठी, ॲप लाइव्ह झाल्यापासूनच्या प्रत्येक पूर्ण झालेल्या तासाचा मोजलेला वापर आणा.
- तो वापर प्रदात्याच्या किमतीनुसार खर्चात बदला, प्लॅनचा दर लावा आणि ॲप मालकाच्या क्रेडिट्समधून आकारा.
- प्रत्येक वेळी एक दिवसापर्यंत मागे पाहा, त्यामुळे आमचा API रीस्टार्ट होत असताना चुकलेले तास नंतर बिल होतात.
स्टोरेज वेगळे बिल होते, त्याच्या आकारानुसार, कारण ते क्रियाकलापावर अवलंबून नसते.
एक तास दोनदा कधीच आकारला जात नाही
जो बिलिंग मीटर एकापेक्षा जास्त सर्व्हरवर चालतो आणि क्रॅश होऊन पुन्हा प्रयत्न करू शकतो, त्याने दुहेरी शुल्क टाळायला काळजी घ्यावी लागते. डेटाबेसचा प्रत्येक तास त्याचे शुल्क आकारण्याआधी स्वतःच्या डेटाबेस रोमध्ये दावा केला जातो, (database, hour) या जोडीवर एक युनिकनेस बंधन असते. दोन सर्व्हर किंवा एक पुन्हा प्रयत्न एकाच तासाचे बिल करण्याचा प्रयत्न करत असतील, तर फक्त एकच दावा यशस्वी होतो.
दुर्मिळ अपयशाच्या केससाठी आम्ही जाणीवपूर्वक एक निवड केली: तास दावा केल्यानंतर आणि त्याचे शुल्क आकारण्याआधी प्रक्रिया मध्येच क्रॅश झाली, तर तो तास दावा केलेला आणि न आकारलेला राहतो. दुर्मिळ क्रॅशमध्ये थोडा महसूल गमावणे, कोणाला दोनदा शुल्क आकारण्यापेक्षा चांगले आहे.
आणि मोजलेले बिलिंग सुरू झाले तेव्हा ते पुढच्या पूर्ण तासापासून सुरू केले. त्याआधीचे तास जुन्या अंदाजाने आधीच आकारले गेले होते; ते मोजलेल्या डेटावरून पुन्हा बिल केले असते, तर तो कालावधी दोनदा आकारला गेला असता.
तुम्ही Mythex वर बिल्ड करत असाल तर याचा अर्थ काय
- तुमचे डेटाबेस बिल तुमच्या डेटाबेसने काय केले ते दाखवते. क्वचित वापरला जाणारा ॲप कमी खर्च करतो; सतत क्वेरी करणारा ॲप डेटाबेस जागा ठेवतो आणि जास्त खर्च करतो.
- सर्वात मोठा लीव्हर म्हणजे तुमचा ॲप डेटाबेस कसा वापरतो. डेटाबेसला दर काही सेकंदांनी पोल केल्याने तो दिवसभर जागा राहतो. AI कडून गरजेनुसार डेटा मागवणे, किंवा तो कॅश करणे, डेटाबेसला झोपू देते. डेटाबेस म्हणजे काय हे आमचे मार्गदर्शक मूलभूत गोष्टी सांगते.
- Pro प्लॅन होस्टिंग, डेटाबेस आणि स्टोरेजसाठी Free दराच्या अर्धा दर भरतात. तपशील क्रेडिट्स डॉक्समध्ये आहेत.
आम्ही यातून काय शिकलो
- वापरावर आधारित खर्चाचे अंदाज कालांतराने चुकतात. वरच्या प्रदात्याला काय वापरले ते सांगता येत असेल, तर त्यावरूनच बिल करा.
- तुम्ही आकारत असलेल्या सर्वात लहान एककावर बिलिंग idempotent करा. आमच्यासाठी ते एक डेटाबेस-तास आहे.
- अपयशी व्हावे लागलेच तर ग्राहकाच्या बाजूने अपयशी व्हा.