AWS में डेटा ट्रांसफ़र लागत को बड़े पैमाने पर कम करना
(bitsand.cloud)- AWS के एक ही region के भीतर Availability Zones के बीच transfer पर भेजने और पाने, दोनों तरफ़, प्रति GB $0.01 लगता है, इसलिए 1TB direct transfer में लगभग $20 खर्च होते हैं; लेकिन अगर S3 को अस्थायी मध्यवर्ती स्थान की तरह इस्तेमाल किया जाए तो लागत को cents के स्तर तक घटाया जा सकता है
- मानक S3 bucket region स्तर पर काम करते हैं, और AWS region के भीतर कम से कम 3 Availability Zones में replication करता है, इसलिए एक ही region के कई AZ से एक जैसा access संभव है
- अगर EC2 उसी region के S3 पर upload करे और किसी दूसरे AZ से download किया जाए, तो data transfer charge मुफ़्त होता है; वास्तविक लागत छोटे retention समय की S3 storage cost और API request cost तक सीमित रह जाती है
us-east-1में 1TB को 1 घंटे से कम समय तक रखने पर S3 Standard की $23/TB-month कीमत का 1/720, यानी लगभग $0.03 ही लगता है, और 1PB का खर्च भी direct transfer के $20,000 की जगह लगभग $32 तक आ जाता है- यह तरीका network transfer code का drop-in replacement नहीं है और latency बढ़ सकती है, लेकिन जहाँ लागत सर्वोच्च प्राथमिकता हो, वहाँ बड़े पैमाने के cross-AZ transfer में 99% से अधिक बचत दे सकता है
AWS डेटा ट्रांसफ़र लागत कहाँ बढ़ती है
- AWS में डेटा को लापरवाही से इधर-उधर ले जाने पर transfer cost तेज़ी से बढ़ सकती है
- लिखे जाने के समय प्रमुख data transfer charges इस प्रकार हैं
- AWS से public internet पर जाने वाले transfer की कीमत
us-east-1में प्रति GB $0.09 औरaf-south-1में प्रति GB $0.154 तक है, यानी 1TB transfer पर $90~$154 खर्च हो सकता है - एक AWS region से दूसरे region में जाने वाले transfer की कीमत
us-east-1में प्रति GB $0.02 औरaf-south-1में प्रति GB $0.147 तक है; AWS network से बाहर गए बिना भी 1TB पर $20~$147 लग सकते हैं - एक ही region के अलग-अलग Availability Zones के बीच transfer पर हर दिशा में प्रति GB $0.01 लगता है; 1TB को
us-east-1aसेus-east-1bभेजने पर sender के $10 और receiver के $10, कुल $20 बनते हैं
- AWS से public internet पर जाने वाले transfer की कीमत
- internet transfer और inter-region transfer में केवल बाहर जाने वाले data पर egress charge लगता है, लेकिन एक ही region के भीतर AZ-to-AZ transfer पर दोनों दिशाओं में लागत लगती है
- कई Availability Zones में resources तैनात करने वाली architecture stability और availability बढ़ाती है, लेकिन अगर अलग-अलग AZ के resources आपस में data exchange करें तो cross-AZ cost आती है
PrivateLink और VPC endpoints पर ध्यान देने योग्य बातें
- अगर किसी EC2 instance से दूसरे region के public S3 bucket में 1TB भेजा जाए, तो अपेक्षित inter-region transfer cost $20 की जगह internet egress cost $90 आ सकती है
- AWS PrivateLink और VPC endpoints यह सुनिश्चित करने में उपयोगी हैं कि inter-region data AWS network से बाहर न जाए, इसलिए pricing और security दोनों के लिहाज़ से लाभदायक हो सकते हैं
- लेकिन ये सुविधाएँ मुफ़्त नहीं हैं, और इनके अपने limits और pricing details हैं
- संबंधित सामग्री
S3 के ज़रिए cross-AZ transfer cost को bypass करना
- ज़्यादातर S3 storage classes bucket को Availability Zone नहीं बल्कि region स्तर पर store करती हैं
- उपयोगकर्ता
us-east-1aयाus-east-1bbucket में नहीं, बल्किus-east-1bucket में upload करते हैं - AWS अंदरूनी तौर पर data को region के भीतर कम से कम 3 Availability Zones में replicate करता है
- उपयोगकर्ता
- मानक S3 bucket का data उसी region के सभी AWS Availability Zones से एक जैसा access किया जा सकता है;
us-east-1aसे download करें याus-east-1bसे, S3 के नज़रिए से कोई फ़र्क़ नहीं है - S3 Standard में उसी region के भीतर download मुफ़्त है, जबकि दूसरे region या public internet पर download करने पर सामान्य data transfer charges लगते हैं
- S3 upload पर सभी storage classes में data transfer cost मुफ़्त है
- हालाँकि S3 API request cost लगती है
- request cost तुलनात्मक रूप से कम होती है
1TB और 1PB की लागत गणना
us-east-1aके EC2 instance सेus-east-1bके EC2 instance को 1TB direct भेजने पर $20 लगते हैं- वही data पहले S3 पर upload करके दूसरे AZ के instance से download किया जाए, तो upload और download की data transfer cost मुफ़्त होती है
- बची हुई लागत S3 storage cost होती है
us-east-1में S3 Standard storage की कीमत प्रति GB प्रति माह $0.023, यानी प्रति TB प्रति माह $23 है- billing घंटे के आधार पर होती है
- अगर architecture इस तरह बनाई जाए कि data S3 में 1 घंटे से कम रहे, तो 720 घंटे के हिसाब से $23 का 1/720, यानी लगभग $0.03 बनता है
- transfer के बाद S3 object को delete करना होगा
- इस गणना में transfer cost प्रति GB $0.02 से घटकर $0.000032/GB रह जाती है, जो मूल शुल्क का लगभग 0.15% है
- एक चरम उदाहरण में 1PB transfer की लागत सामान्य तरीके के $20,000 की जगह इस तरीके से लगभग $32 आती है
विस्तार क्षमता और सीमाएँ
- S3 बहुत scalable है, इसलिए यह उस pattern के लिए भी उपयुक्त है जहाँ एक AZ से upload किए गए object को दूसरे AZ के बहुत सारे instances एक साथ download करें
- दूसरे AZ के हज़ारों instances उसी S3 object को download कर सकते हैं
- S3 storage cost वही रहती है
- download cost भी मुफ़्त रहती है
- S3 object size पर limits हैं
- एक single object 5TB से बड़ा नहीं हो सकता
- 5TB से बड़ी files को हिस्सों में बाँटना होगा
- एक single upload 5GB से बड़ा नहीं हो सकता, इसलिए इससे बड़ी files के लिए multipart upload ज़रूरी है
aws s3 cpmultipart upload को अंदरूनी तौर पर संभाल लेता है
- S3 One Zone-Infrequent Access और S3 Express One Zone data को केवल एक single Availability Zone में store करते हैं
- storage cost कम होती है, लेकिन availability के मामले में इसकी कीमत चुकानी पड़ती है
us-east-1में S3 One Zone-Infrequent Access की कीमत प्रति GB $0.01 है, और S3 Infrequent Access की प्रति GB $0.0125- S3 One Zone-Infrequent Access को 99.5% availability और S3 Infrequent Access को 99.99% availability लक्ष्य के साथ डिज़ाइन किया गया है
प्रयोग की संरचना और पुष्टि की गई लागत
- प्रयोग में cost noise कम करने के लिए हर भाग में 2 नए AWS accounts इस्तेमाल किए गए
- हर account में
us-east-1aऔरus-east-1bमें 2 EC2 instances रखे गए, औरus-east-1aवाले instance पर एक यादृच्छिक 1TB file बनाई गई - दो तरीकों की तुलना की गई
- पहले तरीके में दो AZ के private subnets वाले VPC में
us-east-1binstance पर netcat server चलाया गया, औरus-east-1ainstance ने 1TB file direct transfer की - दूसरे तरीके में S3 Gateway endpoint वाले VPC में S3 bucket बनाई गई, फिर
us-east-1ainstance ने 1TB file upload की, जिसके बादus-east-1binstance ने उसे download करके delete किया
- पहले तरीके में दो AZ के private subnets वाले VPC में
- AWS Free Tier से प्रयोग के नतीजों पर थोड़ा प्रभाव पड़ सकता है
- S3 Free Tier 12 महीनों तक 5GB-months है
- 5GB-months, 1TB-hours से कम है, लेकिन अंतर बहुत बड़ा नहीं है
- Cost Explorer update के बाद direct transfer वाले प्रयोग में अपेक्षित $20 के क़रीब $21.49 दिखाई दिया
- transfer को एक बार बीच में रोककर फिर शुरू करने से अतिरिक्त लागत के एक हिस्से की व्याख्या होती है
- बनाई गई file तकनीकी रूप से 1024GB थी, इसलिए base cost $20.48 थी
- S3 आधारित transfer वाले प्रयोग में शुरुआत में $0.08 दिखा, और कोई data transfer cost नहीं दिखी
- बाद में यह पुष्टि हुई कि S3 storage cost bucket-वार दैनिक आधार पर रिपोर्ट होती है और Cost Explorer में इसका प्रतिबिंब अन्य लागतों की तुलना में देर से आता है
- अपेक्षा के अनुसार रिपोर्ट की गई storage cost कुछ cents के स्तर पर थी
- S3 storage Free Tier पूरी तरह समाप्त हो गई
- इस संभावना की ओर FinOps समुदाय के Dieter Matzion ने ध्यान दिलाया
यह कब उपयोगी है
- AWS, S3 data को अंदरूनी तौर पर Availability Zones के बीच replicate करता है, और उसकी लागत उपयोगकर्ता द्वारा चुकाई जाने वाली S3 storage cost में शामिल होती है
- S3 के माध्यम से जाने वाला तरीका इस बात का लाभ उठाता है कि upload के समय cross-AZ cost अप्रत्यक्ष रूप से पहले ही चुकाई जा चुकी होती है
- अगर data को S3 में लंबे समय तक रखा जाए, तो यह direct cross-AZ transfer की तुलना में कहीं ज़्यादा महँगा हो सकता है
- transfer के तुरंत बाद object delete कर दिया जाए, तो लक्षित 99% लागत बचत हासिल की जा सकती है
- इसके नुकसान भी स्पष्ट हैं
- यह मौजूदा data transfer code का drop-in replacement नहीं है
- direct network connection की तुलना में latency काफ़ी ज़्यादा हो सकती है
- जहाँ लागत सर्वोच्च प्राथमिकता हो, वहाँ यह AWS में cross-AZ data transfer cost को 99% से अधिक घटाने का एक व्यावहारिक तरीका हो सकता है
1 टिप्पणियां
Hacker News की राय
अपना ट्रिक शेयर करूं तो, Lightsail instance को दूसरे AWS resources, जैसे EC2 instance या S3 bucket के डेटा को “proxy” करने के लिए इस्तेमाल किया जा सकता है
हर Lightsail instance में कीमत में शामिल data transfer मात्रा होती है; $3.5 instance 1TB, $5 वाला 2TB, $10 वाला 3TB, $20 वाला 4TB, और $40 वाला 5TB देता है
प्रति transfer मात्रा कीमत के हिसाब से $10 instance का 3TB सबसे अच्छा है
लेख के डेटा के आधार पर EC2 से 3TB traffic us-east-1 में $276.48, और S3 bucket में $69 पड़ता है
कमी यह है कि Lightsail में inbound और outbound traffic दोनों को “traffic” के रूप में गिना जाता है
AWS terms 51.3 के अनुसार, दूसरी services के data fees से बचने के तरीके के रूप में Amazon Lightsail का उपयोग नहीं किया जाना चाहिए
उदाहरण के लिए, दूसरी services से public internet या अन्य destinations तक network traffic proxy करना, या load balancing/CDN services के जरिए अत्यधिक डेटा process करना इसमें आता है; उल्लंघन होने पर data services सीमित की जा सकती हैं या account suspend किया जा सकता है
S3 या अपनी पसंद के HTTP server को origin के रूप में सेट कर दें
पहले यह पहले 12 महीनों के लिए प्रति माह 50GB था, लेकिन Cloudflare द्वारा https://blog.cloudflare.com/aws-egregious-egress पोस्ट करने के तुरंत बाद यह स्थायी रूप से free 1TB हो गया
GCP ने भी 2023 में ऐसा ही loophole बंद किया था, और शायद इसलिए कि कुछ customers ने उसका दुरुपयोग किया होगा
अगर यह तरीका पर्याप्त रूप से फैल गया, तो मुझे लगता है AWS भी वैसा ही करेगा
https://cloud.google.com/storage/pricing-announce#network
GCP ने जो “loophole” बंद किया था, वह GCS के जरिए एक ही continent के भीतर regions के बीच data transfer मुफ्त कर पाने वाला था, और AWS में यह पहले से paid है
मूल लेख में कहा गया है कि एक ही region के अंदर availability zones के बीच transfer भी $0.02 प्रति GB पड़ता है, और इसे bypass किया जा सकता है
सोच रहा हूं कि क्या इस जानकारी को खरीदने वाला कोई मिल सकता है
हालांकि शायद उसे transfer gateway की तरह इस्तेमाल करने के लिए नहीं, बल्कि डेटा को वहां डालकर वहीं रखते रहने की अपेक्षा के लिए
लागत घटाने और resources मुफ्त पाने के ऐसे tricks बहुत हैं
ये clever हैं, लेकिन भरोसेमंद नहीं
यह उसी तरह की hacking है जैसे OSS repository के जरिए GitHub Actions पर cryptocurrency mining करवाना
इसे एक दिलचस्प hacking exercise की तरह लें, लेकिन ऐसे solution को production में deploy न करना बेहतर है
कम से कम account manager की मंजूरी लेनी चाहिए; वरना किसी दिन जागेंगे और AWS account बंद मिला सकता है
S3 के रास्ते जाने वाला तरीका कई destinations पर डेटा distribute करते समय synchronization process चलाने की तुलना में आम तौर पर ज्यादा efficient भी होता है
S3 storage cost GB-month के आधार पर charge होती है, इसलिए 1TB × $0.023 प्रति GB ÷ महीने के 730 घंटे करने पर bucket में एक घंटे रखने की लागत लगभग 3 cents होनी चाहिए
हालांकि लगता है कि इसे लगभग तुरंत delete कर दिया गया था, इसलिए अगर डेटा करीब 1 minute रहा हो तो यह 0.03 ÷ 60 के स्तर का हो सकता है
आम तौर पर उम्मीद होगी कि AWS इसे round up करके $0.01 कर दे
cost and usage report का TimedByteStorage value अंतिम निर्णायक होगा
https://handbook.vantage.sh/aws/services/s3-pricing/
S3 भी अच्छा trick है, और इसके अलावा भी हैं
बड़े AWS customer, उदाहरण के लिए सालाना $1 million से ज्यादा खर्च करने वाले, discount मांग सकते हैं
एक समय availability zones के बीच transfer पर discount बहुत बड़ा था
जहां तक संभव हो, एक ही availability zone में resources इकट्ठा करना भी एक तरीका है
DB “b” zone में और अकेला server “a” zone में हो, ऐसी configuration सिर्फ एक zone पर standardize करने से भी खराब है
कई availability zones इस्तेमाल करते समय load-aware availability zone balancing करनी चाहिए
cost की वजह से? लेकिन वह भी cost saving जैसा नहीं लगता
यह तकनीकी दुनिया का tax avoidance जैसा लगता है
अगर बहुत सारे लोग ऐसा करेंगे, तो AWS “बस loophole बंद कर देगा”
AWS एक इकाई नहीं है; यह अपने-अपने KPI वाली दर्जनों या सैकड़ों AWS इकाइयों जैसा है
कोई team खर्च घटाना चाहती है, लेकिन खर्च सच में कैसे घटाएं, यह नहीं बताती
AWS जैसी पर्याप्त जटिल चीज़ बना दें तो सब कुछ आपस में उलझा होता है, इसलिए customer के लिए किसी एक हिस्से को optimize करना असंभव हो जाता है
AWS चाहता है कि कुछ services को कुछ खास तरीकों से इस्तेमाल किया जाए, इसलिए वैसा इस्तेमाल करने पर उन्हें बहुत सस्ता रखा गया है
S3 endpoint का उपयोग भी AWS द्वारा S3 service इस्तेमाल करवाने के पसंदीदा तरीकों में से एक है
CloudFront भी एक और उदाहरण है
AWS चाहता है कि लोग CloudFront इस्तेमाल करें, इसलिए CloudFront को बाकी data outbound से सस्ता बनाता है
जटिल cloud cost minimization सिस्टम का विकल्प बस cloud का उपयोग न करना है
खुद host करें, या Cloudflare का उपयोग करें जहाँ outbound fee प्रति GB 0 cent है
या फिर कई काफ़ी सस्ते VPS hosting providers से cloud servers किराए पर लें, और प्रति GB 9 cent, 12 cent, 17 cent खींचते हुए lock-in को बढ़ावा देने वाली महंगी और जटिल cloud services का उपयोग न करें
गंभीरता से, अगर आप उस मुकाम पर आ गए हैं जहाँ cloud cost का सूक्ष्म विश्लेषण करना पड़ रहा है, तो cloud छोड़ने पर विचार करना चाहिए
क्योंकि दूसरी जगहों पर ऐसा analysis अपने-आप में पूरी तरह असंभव होता है
on-premises जाने की सलाह देने वाले लोग शायद नहीं जानते कि datacenter को home lab की तरह न扱ने वाले व्यक्ति की labour cost कितनी होती है
Apple iCloud तक AWS और GCP का उपयोग इसलिए करता है क्योंकि यह आर्थिक रूप से सही है
या तो वे सोचते हैं कि cloud इस्तेमाल नहीं कर सकते इसलिए on-premises लौटना होगा, या reliability में उनकी ज्यादा रुचि नहीं है
पहले 10G से ऊपर की DDoS protection cost की गणना करके भी कहें कि cloud ज्यादा महंगा है
हम AWS bandwidth पर $100,000 से अधिक खर्च करते हैं, लेकिन 3 availability zones संभालने वाले network engineers की cost नहीं देनी पड़ती, इसलिए dedicated internet line से अब भी सस्ता है
कई organizations cloud-based hosting पर इसलिए जाती हैं क्योंकि कई फायदों में से FinOps और cost control को कहीं ज्यादा गहराई से किया जा सकता है
infrastructure के हिसाब से, अगर storage या compute demand बदलती रहती है, तो cloud-based solution अच्छी तरह फिट हो सकता है
आखिरकार यह सिर्फ एक tool है
मैंने ऐसी जगहों पर भी काम किया है जहाँ production bare-metal servers में SSH करके software update किया जाता था, firewall manage किया जाता था और storage check किया जाता था; और ऐसी जगहों पर भी जहाँ hosting का अधिकांश हिस्सा cloud providers से संभाला जाता था; और एक से दूसरे में transition भी किया है
“cloud” bare-metal server या VPS से बेहतर या खराब नहीं है, यह use case पर निर्भर करता है
क्यों एक पक्ष ज्यादा सही है, इसकी due diligence करें, और environment बदलने पर हर बार फिर से evaluate करें
इस तरह का “cloud खराब है” वाला रवैया बचकाना है
अगर आप पहले से AWS में locked-in हैं, तो बाहर निकलने की cost काफी होती है, और कुछ मामलों में यह तरीका अच्छा middle ground हो सकता है
वह cost कई मामलों में savings को आसानी से बराबर या उससे ज्यादा कर सकती है
इसलिए companies के लिए cloud चुनना इतना obvious decision बन जाने का यह एक बड़ा कारण भी है
ऐसा लगता है कि AWS इस case में loss में operate कर रहा है
लेखक ने AWS pricing structure की एक loophole खोजी, इसलिए यह इतना सस्ता है
खुद करते तो संभवतः ज्यादा महंगा पड़ता
AWS pricing ऐसी क्यों है, इस पर केवल अनुमान लगाया जा सकता है, लेकिन संभवतः उद्देश्य एक service को दूसरी से ज्यादा इस्तेमाल करवाना है
अगर आप bandwidth बहुत ज्यादा इस्तेमाल करने वाले user हैं, तो Leaseweb, PhoenixNAP, Hetzner, OVH जैसी जगहों को देखना worthwhile है
bandwidth pricing हास्यास्पद रूप से बहुत सस्ती है
पहले एक अजीब स्थिति थी जहाँ standard pricing पर company viable नहीं होती, फिर भी AWS sales reps bandwidth price बिल्कुल कम नहीं कर रहे थे
transfer costs ज्यादातर negotiable item लगती हैं
एक और trick ECR इस्तेमाल करना है
हर महीने internet पर 5TB free transfer किया जा सकता है
container images public होनी चाहिए, लेकिन contents encrypted हो सकते हैं
Glacier में media archive store करते समय उपयोगी है
समझ नहीं आता कि AWS ऐसे absurd data transfer charges से लोगों को लगातार कैसे निचोड़ पा रहा है
बिल्कुल बगल में Cloudflare R2 100 गुना बेहतर terms दे रहा है
जहाँ data है, वहाँ बाँधे रखती है; जैसे gravity से निकलने के लिए पैसा लगता है, वैसे data move करने के लिए भी पैसा खर्च करना पड़ता है
R2 में data loss या slow transfer जैसी समस्या हो जाए तो दोष मुझ पर आएगा, या कम से कम मदद के लिए मुझे बुलाया जाएगा
इसके उलट S3 data खो दे या किसी particular case में slow हो, तो लोग सोचते हैं कि हम कुछ गलत इस्तेमाल कर रहे हैं, और सुधार का तरीका खोज लेते हैं
किसी को दोष नहीं मिलता
ईमानदारी से कहें तो अगर business कोई भी value बना रहा है, तो data transfer charges ignore करने लायक होते हैं, और उन्हें खास optimize करने की जरूरत नहीं होती
savings भी वाकई बहुत बड़ी हैं
AWS-SDK(Node.js) को जस का तस इस्तेमाल किया और सिर्फ R2 endpoint उपयोग किया
data AWS में आ जाए तो उसी region में मौजूद सभी applications बिना transfer cost के data इस्तेमाल कर सकती हैं
साथ ही लेख में quoted prices list prices हैं, और अगर customer contract के जरिए bandwidth pre-purchase करे तो यह काफी ज्यादा सस्ता हो जाता है
real production में performance और availability कितनी अच्छी है, यह ठीक से नहीं पता
खासकर durability का आकलन करना मुश्किल या लगभग असंभव है
S3 का history और track record कहीं लंबा है, इसलिए उसे advantage है
अगर पहले से सब कुछ AWS के अंदर है, तो data को पास रखने का भी फायदा है
data use करने के तरीके के आधार पर outbound cost हमेशा इतनी बड़ी cost नहीं भी हो सकती
लेकिन अगर सच में significant outbound traffic बनना शुरू हो जाए, तो यह बेतुका महंगा हो जाता है
अगर R2 जैसे competitors reasonable रूप से competitive reliability और performance दे सकें, तो उनके market share बढ़ने की उम्मीद है