Faturimi i bazave të të dhënave sipas asaj që përdorin vërtet
Çdo aplikacion Mythex që ka nevojë të ruajë të dhëna merr bazën e vet Postgres, dhe përdorimi i bazës së një aplikacioni të publikuar del nga i njëjti bilanc kreditesh me ndërtimin. Deri në fund të shtatorit vlerësonim atë përdorim nga sa kohë ishte aktiv serveri i aplikacionit. Vlerësimi doli i gabuar në një mënyrë që kishte rëndësi, kështu që e zëvendësuam: çdo bazë tani faturohet nga llogaritja që furnizuesi i saj e ka matur vërtet, një orë e përfunduar në çdo herë, dhe çdo orë mund të ngarkohet vetëm një herë.
Si funksionojnë bazat e të dhënave
Çdo bazë ekzekutohet në Postgres pa server që zvogëlohet në zero: pas disa minutash joaktiviteti fle, dhe zgjohet në pyetjen e radhës. Ndërsa është zgjuar, mund të rritë ose zvogëlojë llogaritjen sipas ngarkesës. Kjo e bën të përballueshme idenë "një bazë për çdo aplikacion" — shumica e aplikacioneve janë të qeta pjesën më të madhe të kohës, dhe një bazë në gjumë kushton pothuajse asgjë.
Kjo do të thotë gjithashtu se kostoja e një baze varet nga dy gjëra që nuk i shohim nga jashtë: sa kohë ka qenë zgjuar dhe sa e madhe ka qenë kur ishte zgjuar.
Çfarë e gabonte vlerësimi
Matësi ynë i parë bënte një supozim: për çdo orë kur serveri i një aplikacioni të publikuar ishte duke punuar, faturonte një bazë në madhësinë më të vogël të llogaritjes.
Kjo ishte e gabuar në tre mënyra:
- Madhësia ishte e gabuar. Bazat po punonin në një madhësi parazgjedhje më të madhe se sa supozonte vlerësimi.
- Bazat zgjerohen vetvetiu. Nën ngarkesë rriten, dhe vlerësimi nuk e shihte kurrë këtë.
- Bazat nuk ndjekin serverin e aplikacionit. Një bazë mbetet zgjuar sa herë që çdo gjë e pyet — aplikacioni, një punë e planifikuar, një skriptë që e kontrollon — qoftë ose jo aktiv serveri i aplikacionit.
Neto: vlerësimi u faturonte përdoruesve rreth gjysmën e asaj që kushtonin vërtet bazat. Kjo nuk ishte e qëndrueshme për ne, dhe bënte që numrat e përdorimit në aplikacion të mos thoshin atë që njerëzit mendonin se thoshin.
Matja në vend të supozimit
Furnizuesi ynë i bazës raporton sekonda-njësi llogaritjeje për orë për çdo projekt — sa llogaritje përdori vërtet, duke përfshirë madhësinë. Kështu funksionon tani matësi:
- Për çdo aplikacion të publikuar me bazë të dhënash, merr përdorimin e matur për çdo orë të përfunduar që nga çastit kur aplikacioni u publikua.
- Konverto atë përdorim në kosto sipas çmimit të furnizuesit, zbato normën e planit, dhe ngarko pronarit të aplikacionit në kreditet e tij.
- Kthehu deri në një ditë pas çdo herë, që orët e humbura ndërsa API-ja jonë po rinisej të faturohen më vonë.
Ruajtja faturohet veçmas, sipas madhësisë, sepse nuk varet nga aktiviteti.
Mos e fatura kurrë një orë dy herë
Një matës faturimi që punon në më shumë se një server — dhe që mund të ç'rregullohet dhe të riprovohet — duhet të jetë i kujdesshëm që të mos faturojë dy herë. Çdo orë e çdo baze rezervohet në rreshtin e vet të bazës së të dhënave përpara se të faturohet, me një kufizim unikiteti mbi çiftin (bazë, orë). Nëse dy servera, ose një riprovim, përpiqen të faturojnë të njëjtën orë, vetëm një rezervim përfundon me sukses.
Gjithashtu bëmë një zgjedhje të qëllimshme për rastin e rrallë të dështimit: nëse procesi ç'rregullohet mes rezervimit të një ore dhe faturimit të saj, ajo orë mbetet e rezervuar dhe e pafaturuar. Humbja e një pjese të vogël të të ardhurave në një ç'rregullim të rrallë është më mirë sesa të faturosh dikë dy herë.
Dhe kur faturimi i matur u ndez, filloi nga orët e plota të ardhshme. Orët para tij ishin faturuar tashmë nga vlerësimi i vjetër; t'i faturonim sërish nga të dhënat e matura do të thoshte ta faturonim dy herë atë pjesë kohe.
Çfarë do të thotë kjo nëse ndërton me Mythex
- Fatura jote për bazën tani pasqyron atë që bëri baza jote. Një aplikacion që përdoret rrallë kushton shumë pak; një aplikacion që pyet bazën vazhdimisht do ta mbajë zgjuar dhe do të kushtojë më shumë.
- Levioja më e madhe është mënyra si aplikacioni yt përdor bazën. Pyetja e bazës çdo disa sekonda e mban zgjuar gjatë gjithë kohës. T'i kërkosh AI-së të marrë të dhënat sipas kërkesës, ose t'i ruash në cache, e lejon bazën të flejë. Udhëzuesi ynë për atë që është një bazë të dhënash mbulon bazat.
- Planet Pro paguajnë gjysmën e çmimit Free për hostimin, bazat e të dhënave dhe ruajtjen. Detajet janë te dokumentacioni i kredive.
Çfarë morëm nga kjo
- Vlerësimet e kostove të bazuara në përdorim devijojnë. Kur furnizuesi më lart mund të të thotë çfarë u përdor, fatura sipas asaj.
- Bëje faturimin idempotent në njësinë më të vogël që faturon. Për ne, kjo është një orë-bazë të dhënash.
- Kur duhet të dështosh, dështo në favor të klientit.