Cloudflare R2 eller Amazon S3: gratis uttrafik löser inte allt

|Författare: QUASA:s redaktion|6 min läsning| 1
Cloudflare R2 eller Amazon S3: gratis uttrafik löser inte allt

Cloudflare R2 är ofta det billigare valet när många objekt hämtas direkt över internet. Cloudflares prislista för R2 anger avgiftsfri uttrafik för R2 Standard, men tar betalt för lagring med 0,015 dollar per GB-månad, skrivliknande anrop med 4,50 dollar per miljon och läsliknande anrop med 0,36 dollar per miljon. Varje månad ingår 10 GB-månader lagring, en miljon anrop av klass A och tio miljoner av klass B utan kostnad.

Amazon S3 kan vara mer ändamålsenligt när objekten redan används av tjänster inom AWS eller distribueras genom CloudFront. Enligt AWS prisvillkor för S3 ingår de första 100 GB utgående internettrafik per månad, sammanräknat över berörda AWS-tjänster och regioner; överföring från S3 till CloudFront eller till AWS-tjänster i samma region är också undantagen, medan ett prisexempel anger 0,09 dollar per GB för direkt internettrafik från Irland. Därför avgör trafikvägen hur stor betydelse R2:s fria uttrafik får.

Tre månadskalkyler för lagring i EU

Exemplen är villkorade arbetslaster, inte uppmätt användning. De jämför R2 Standard med S3 Standard i AWS-regionen Irland. För S3 används 0,023 dollar per GB-månad, den irländska nivån i FinOps regiontabell för S3 Standard. För PUT och GET används 0,005 respektive 0,0004 dollar per tusen anrop i Irland, enligt CloudCostDB:s regionala anropspriser. Beloppen nedan är i dollar före skatt.

Alla tre kalkyler antar att AWS-kontots hela fria kvot för internettrafik finns kvar och att varje angivet PUT eller GET är ett debiterbart anrop. Lagrad mängd avser genomsnittlig användning under månaden. Varje scenario gäller direkt trafik från objektlagret till internet, utan CloudFront, annan cache eller tilläggstjänster. Med andra trafikvägar blir summorna annorlunda.

  • Måttligt filbibliotek: Anta 500 GB-månader lagring, 200 000 PUT, en miljon GET och 50 GB direkt ut till internet. R2 kostar 7,35 dollar: 490 debiterade GB-månader efter den fria kvoten och inga debiterbara anrop. S3 kostar 12,90 dollar, fördelat på 11,50 för lagring, 1,00 för PUT och 0,40 för GET. Internettrafiken ryms inom den antagna fria AWS-kvoten.
  • Stor direktdistribution: Anta 2 000 GB-månader, 100 000 PUT, två miljoner GET och 3 000 GB direkt ut till internet. R2 kostar 29,85 dollar efter sin fria lagringskvot. S3 kostar 308,30 dollar: 46,00 för lagring, 0,50 för PUT, 0,80 för GET och 261,00 för de 2 900 GB som återstår efter den fria trafikkvoten. I detta scenario dominerar uttrafiken S3-räkningen.
  • Många små objekt: Anta 100 GB-månader, fem miljoner PUT, 200 miljoner GET och 80 GB direkt ut till internet. R2 kostar 87,75 dollar: 1,35 för lagring, 18,00 för skrivningar och 68,40 för läsningar efter de fria kvoterna. S3 kostar 107,30 dollar: 2,30 för lagring, 25,00 för PUT och 80,00 för GET. Här är uttrafiken gratis i båda kalkylerna, men anropen kostar betydligt mer än lagringen.

Beräkningarna visar också varför en prisrad för uttrafik inte räcker som beslutsunderlag. Om AWS-kontot redan har förbrukat sin fria trafikkvot ökar S3-kostnaden även i de mindre exemplen. Om distributionen i stället sker via CloudFront försvinner just överföringsavgiften från S3 till CloudFront, samtidigt som distributionens egna avgifter behöver räknas separat. Exemplen kan därför inte användas som pris för en komplett webbapplikation.

När små objekt gör anropen dyra

Objektens storlek påverkar förhållandet mellan trafik och anrop. Få stora nedladdningar kan skapa mycket utgående trafik med ett begränsat antal GET. Många små filer kan ge miljontals läsningar utan att den sammanlagda datavolymen blir särskilt stor. I det tredje exemplet står läsningarna för merparten av R2-kostnaden, trots att själva uttrafiken är avgiftsfri.

För R2 räknas PUT till klass A och GET till klass B. Även andra operationer kan tillkomma: en objektlista eller en uppladdning i flera delar kan innebära fler debiterbara anrop än ett enkelt uppladdningsflöde antyder. På S3-sidan påverkar också LIST och HEAD antalet fakturerade begäranden. En jämförelse bör därför utgå från de anrop som faktiskt når lagret, särskilt om innehåll cachas mellan lagret och användaren.

Antalet objekt kan dessutom ändra vad som är ett rimligt sätt att lagra dem. En arbetslast med många ersatta små filer kan ha låg genomsnittlig lagringsvolym men högt antal PUT. En tjänst som läser samma filer genom en cache kan däremot få färre GET mot ursprungslagret än antalet användarhämtningar antyder. Det är de debiterade operationerna, inte sidvisningar eller nedladdningar i sig, som hör hemma i kalkylen.

Svarstid och placering måste bedömas separat

En lägre månadsnota säger inget säkert om svarstiden för en viss applikation. I Tuists öppna benchmark mättes från Berlin ett genomsnitt på 201 ms för PutObject och 89 ms för GetObject med R2:s Eastern Europe location hint och objekt på 1 024 byte. Det är resultat för den testade konfigurationen och testvägen. Benchmarken innehåller ingen motsvarande S3-mätning som avgör vilken av de två tjänsterna som är snabbast för en svensk applikation.

Svarstiden får olika betydelse beroende på hur objekten används. Flera läsningar som måste ske efter varandra kan göra väntan på varje anrop märkbar. Vid stora filer kan överföringshastigheten efter första svaret väga tyngre, medan en cache kan göra att många användare sällan kontaktar objektlagret alls. Ett relevant prestandatest behöver därför använda applikationens verkliga åtkomstväg, objektstorlekar och grad av parallellitet.

Regionen är också en del av jämförelsen. En S3-bucket i Irland har ett bestämt förhållande till beräkning som körs i samma AWS-region, men en användare i Sverige når den över en annan väg. För R2 påverkar vald placering och sättet att hämta objekten den väg som mäts. Latensresultatet från Berlin kan ge en anledning att testa, men bör inte förvandlas till en generell svarstid för alla platser eller arbetslaster.

När AWS-kopplingen väger tyngre

S3 kan ge ett enklare driftupplägg när lagrade objekt redan används av AWS-tjänster i samma region. Då är den direkta internetöverföring som gör R2 särskilt fördelaktigt inte nödvändigtvis den dominerande trafikposten. Behörigheter, befintliga arbetsflöden och kostnaden för att flytta data eller ändra applikationens anslutning blir en del av valet, även om de inte syns i de tre räkneexemplen.

För ett filbibliotek som ofta skickas direkt till användare talar kalkylen tydligt för R2. För objekt som främst stannar inom en AWS-region eller går vidare via CloudFront är skillnaden i lagrings- och anropskostnad mer relevant än priset för direkt uttrafik. Valet beror då på den faktiska trafikvägen, antalet operationer och vilken svarstid applikationen behöver, snarare än på en enda avgiftsfri post i prislistan.

Läs också:

Dela:

Prenumerera på vårt nyhetsbrev

Få de senaste nyheterna om Web3, AI och krypto direkt i din inkorg.

0