Mengurangi Biaya Transfer Data di AWS Secara Drastis
(bitsand.cloud)- Transfer antar Availability Zone (AZ) dalam region AWS yang sama dikenai biaya $0.01 per GB di sisi pengirim dan penerima, sehingga transfer langsung 1TB memakan biaya sekitar $20, tetapi jika S3 digunakan sebagai perantara sementara, biayanya bisa ditekan hingga level sen
- Bucket S3 standar beroperasi pada tingkat region dan AWS mereplikasi data ke minimal 3 Availability Zone dalam region tersebut, sehingga dapat diakses secara sama dari beberapa AZ dalam region yang sama
- Jika EC2 mengunggah ke S3 di region yang sama lalu mengunduhnya dari AZ lain, biaya transfer data gratis, sehingga biaya riil menyempit menjadi biaya penyimpanan S3 untuk durasi singkat dan biaya permintaan API
- Di
us-east-1, menyimpan 1TB kurang dari 1 jam hanya memakan sekitar $0.03, yaitu 1/720 dari tarif S3 Standard $23/TB-bulan, dan bahkan 1PB bisa turun dari transfer langsung $20,000 menjadi sekitar $32 - Cara ini bukan pengganti drop-in untuk kode transfer jaringan dan latensinya bisa lebih tinggi, tetapi untuk transfer cross-AZ dalam jumlah besar saat biaya adalah prioritas utama, penghematannya bisa melebihi 99%
Titik saat biaya transfer data AWS mulai membengkak
- Jika data dipindahkan di AWS tanpa perhatian, biaya transfer dapat cepat terakumulasi
- Pada saat penulisan, tarif transfer data utama adalah sebagai berikut
- Transfer keluar dari AWS ke internet publik di
us-east-1adalah $0.09 per GB, dan bisa mencapai $0.154 per GB diaf-south-1, sehingga biaya transfer 1TB menjadi $90~$154 - Transfer keluar dari satu region AWS ke region lain adalah $0.02 per GB di
us-east-1, dan bisa mencapai $0.147 per GB diaf-south-1, sehingga meski tidak keluar dari jaringan AWS, 1TB tetap bisa menelan biaya $20~$147 - Transfer antar Availability Zone berbeda dalam region yang sama dikenai $0.01 per GB per arah, sehingga mengirim 1TB dari
us-east-1akeus-east-1bmemerlukan $10 di sisi kirim dan $10 di sisi terima, total $20
- Transfer keluar dari AWS ke internet publik di
- Untuk transfer internet dan antar region, hanya ada biaya egress pada data yang keluar, tetapi untuk transfer antar AZ dalam region yang sama, biaya dikenakan di kedua arah
- Menempatkan resource di beberapa Availability Zone meningkatkan ketahanan dan ketersediaan, tetapi jika resource di AZ berbeda saling bertukar data, biaya cross-AZ akan muncul
Hal yang perlu diperhatikan soal PrivateLink dan VPC endpoint
- Jika instance EC2 mentransfer 1TB ke bucket S3 publik di region lain, alih-alih terkena biaya transfer antar region sebesar $20 seperti yang diharapkan, bisa saja muncul biaya internet egress sebesar $90
- AWS PrivateLink dan VPC endpoint berguna dari sisi biaya dan keamanan karena menjamin data antar region tidak keluar dari jaringan AWS
- Namun, fitur ini tidak gratis dan memiliki batasan serta detail tarifnya sendiri
- Materi terkait
Mengakali biaya transfer cross-AZ dengan S3
- Sebagian besar kelas penyimpanan S3 menyimpan bucket pada tingkat region, bukan Availability Zone
- Pengguna mengunggah ke bucket
us-east-1, bukan ke bucketus-east-1aatauus-east-1b - AWS secara internal mereplikasi data ke minimal 3 Availability Zone dalam region tersebut
- Pengguna mengunggah ke bucket
- Data dalam bucket S3 standar dapat diakses secara sama dari semua Availability Zone AWS di region yang sama; baik diunduh dari
us-east-1amaupunus-east-1b, dari sudut pandang S3 tidak ada perbedaan - Unduhan dari S3 Standard dalam region yang sama gratis, sedangkan unduhan ke region lain atau ke internet publik dikenai tarif transfer data biasa
- Unggahan ke S3 gratis dari sisi biaya transfer data di semua kelas penyimpanan
- Namun biaya permintaan API S3 tetap ada
- Biaya permintaan relatif kecil
Perhitungan biaya untuk 1TB dan 1PB
- Jika instance EC2 di
us-east-1amengirim 1TB langsung ke instance EC2 dius-east-1b, biayanya $20 - Jika data yang sama diunggah ke S3 lalu diunduh oleh instance di AZ lain, biaya transfer data untuk unggah dan unduh adalah gratis
- Biaya yang tersisa adalah biaya penyimpanan S3
- S3 Standard Storage di
us-east-1adalah $0.023 per GB per bulan, atau $23 per TB per bulan - Penagihan dihitung per jam
- Jika sistem dirancang agar data berada di S3 kurang dari 1 jam, maka biayanya sekitar $0.03, yaitu 1/720 dari $23 berdasarkan 720 jam
- Objek S3 harus dihapus setelah transfer selesai
- S3 Standard Storage di
- Dalam perhitungan ini, biaya transfer turun dari $0.02 per GB menjadi $0.000032/GB, sekitar 0.15% dari tarif semula
- Sebagai contoh ekstrem, transfer 1PB dengan cara ini memakan sekitar $32, bukan $20,000 seperti metode standar
Skalabilitas dan batasan
- S3 sangat skalabel, sehingga cocok untuk pola di mana objek yang diunggah dari satu AZ diunduh secara bersamaan oleh banyak instance di AZ lain
- Ribuan instance di AZ kedua dapat mengunduh objek S3 yang sama
- Biaya penyimpanan S3 tetap sama
- Biaya unduh juga tetap gratis
- Ukuran objek S3 memiliki batas
- Satu objek tidak boleh melebihi 5TB
- File yang lebih besar dari 5TB harus dipecah
- Satu unggahan tidak boleh melebihi 5GB, sehingga file yang lebih besar memerlukan multipart upload
aws s3 cpmenangani multipart upload secara internal
- S3 One Zone-Infrequent Access dan S3 Express One Zone hanya menyimpan data di satu Availability Zone
- Biaya penyimpanannya lebih rendah, tetapi ada konsekuensi dari sisi ketersediaan
- Di
us-east-1, S3 One Zone-Infrequent Access adalah $0.01 per GB, dan S3 Infrequent Access adalah $0.0125 per GB - S3 One Zone-Infrequent Access dirancang dengan target ketersediaan 99.5%, sedangkan S3 Infrequent Access menargetkan 99.99%
Konfigurasi eksperimen dan biaya yang terkonfirmasi
- Eksperimen menggunakan 2 akun AWS baru untuk setiap bagian agar noise biaya berkurang
- Di tiap akun, ditempatkan 2 instance EC2 di
us-east-1adanus-east-1b, lalu dibuat file 1TB acak di instanceus-east-1a - Dua pendekatan dibandingkan
- Yang pertama adalah VPC dengan subnet privat di dua AZ, menjalankan server netcat di instance
us-east-1b, lalu instanceus-east-1amentransfer file 1TB secara langsung - Yang kedua adalah VPC dengan S3 Gateway endpoint, membuat bucket S3, lalu instance
us-east-1amengunggah file 1TB, setelah itu instanceus-east-1bmengunduh dan menghapusnya
- Yang pertama adalah VPC dengan subnet privat di dua AZ, menjalankan server netcat di instance
- AWS Free Tier mungkin sedikit memengaruhi hasil eksperimen
- Free Tier S3 adalah 5GB-months selama 12 bulan
- 5GB-months lebih kecil daripada 1TB-hours, tetapi perbedaannya tidak besar
- Setelah Cost Explorer diperbarui, eksperimen transfer langsung menunjukkan $21.49, mendekati perkiraan $20
- Transfer sempat dihentikan sekali lalu dimulai lagi, yang menjelaskan sebagian biaya tambahan
- File yang dibuat secara teknis berukuran 1024GB, sehingga biaya dasar memang $20.48
- Eksperimen transfer berbasis S3 awalnya terkonfirmasi $0.08, dan tidak ada biaya transfer data yang muncul
- Setelah itu dikonfirmasi bahwa biaya penyimpanan S3 dilaporkan per hari per bucket, dan pencerminan di Cost Explorer lebih lambat dibanding biaya lain
- Sesuai perkiraan, biaya penyimpanan yang dilaporkan hanya beberapa sen
- Free Tier penyimpanan S3 habis sepenuhnya
- Kemungkinan ini diinformasikan oleh Dieter Matzion dari komunitas FinOps
Kapan cara ini layak dipakai
- AWS mereplikasi data S3 secara internal antar Availability Zone, dan biaya tersebut sudah tercakup dalam biaya penyimpanan S3 yang dibayar pengguna
- Pendekatan lewat S3 memanfaatkan fakta bahwa biaya cross-AZ secara tidak langsung sudah dibayar pada saat unggah
- Jika data disimpan lama di S3, biayanya bisa jauh lebih mahal daripada transfer langsung cross-AZ
- Jika objek dihapus segera setelah transfer, maka target pengurangan biaya 99% dapat tercapai
- Kekurangannya juga jelas
- Bukan pengganti drop-in untuk kode transfer data yang ada
- Latensinya bisa jauh lebih tinggi dibanding koneksi jaringan langsung
- Jika biaya adalah prioritas utama, ini bisa menjadi cara praktis untuk memangkas biaya transfer data cross-AZ di AWS lebih dari 99%
1 komentar
Opini Hacker News
Trik saya adalah memakai instance Lightsail untuk “mem-proxy” data dari resource AWS lain, misalnya instance EC2 atau bucket S3
Setiap instance Lightsail memiliki kuota transfer data yang sudah termasuk dalam harga: instance $3.5 mendapat 1TB, $5 mendapat 2TB, $10 mendapat 3TB, $20 mendapat 4TB, dan $40 mendapat 5TB
Dari sisi harga per jumlah transfer, 3TB pada instance $10 adalah yang paling menguntungkan
Berdasarkan data pada artikel, trafik 3TB dari EC2 di us-east-1 memakan biaya $276.48, sedangkan dari bucket S3 memakan $69
Kekurangannya, di Lightsail trafik inbound dan outbound sama-sama dihitung sebagai “trafik”
Menurut syarat AWS 51.3, Amazon Lightsail tidak boleh digunakan dengan cara yang bertujuan menghindari biaya data layanan lain
Misalnya mem-proxy trafik jaringan dari layanan lain ke internet publik atau tujuan lain, atau memproses data secara berlebihan melalui layanan load balancing/CDN; jika melanggar, layanan data bisa dibatasi atau akun bisa ditangguhkan
Cukup jadikan S3 atau server HTTP pilihan Anda sebagai origin
Dulu batasnya 50GB per bulan selama 12 bulan pertama, tetapi tak lama setelah Cloudflare menerbitkan https://blog.cloudflare.com/aws-egregious-egress, itu berubah menjadi gratis permanen 1TB
GCP juga menutup celah serupa pada 2023, kemungkinan karena ada pelanggan yang menyalahgunakannya
Jika cara ini cukup meluas, AWS kemungkinan akan melakukan hal yang sama
https://cloud.google.com/storage/pricing-announce#network
“Celah” yang ditutup GCP adalah transfer data antarzona regional dalam benua yang sama lewat GCS yang dulu gratis, sedangkan di AWS itu memang sudah berbayar
Yang dibahas artikel asli adalah transfer antar availability zone dalam region yang sama pun dikenai $0.02 per GB, dan ini bisa diputar balik
Saya penasaran apakah ada pembeli yang mau membayar informasi ini
Hanya saja mungkin bukan untuk dipakai sebagai jalur transfer, melainkan agar data dimasukkan ke sana dan tetap disimpan di sana
Ada banyak trik seperti ini untuk menekan biaya dan mendapatkan resource gratis
Memang cerdik, tapi tidak bisa diandalkan
Ini sejenis dengan aksi meretas agar bisa menambang kripto di GitHub Actions lewat repositori OSS
Anggap saja sebagai latihan hacking yang menarik, tapi jangan deploy solusi seperti ini ke production
Setidaknya harus ada persetujuan account manager; kalau tidak, ada risiko suatu hari bangun dan mendapati akun AWS sudah ditutup
Metode lewat S3 juga umumnya lebih efisien daripada menjalankan proses sinkronisasi saat mendistribusikan data ke banyak tujuan
Biaya penyimpanan S3 ditagih per GB-bulan, jadi 1TB × $0.023 per GB ÷ 730 jam per bulan berarti jika disimpan satu jam di bucket biayanya sekitar 3 sen
Namun karena tampaknya hampir langsung dihapus, jika datanya hanya ada sekitar 1 menit maka nilainya bisa sekitar 0.03 ÷ 60
Biasanya AWS kemungkinan akan membulatkannya naik menjadi $0.01
Nilai TimedByteStorage di cost and usage report adalah acuan penentu akhirnya
https://handbook.vantage.sh/aws/services/s3-pricing/
S3 juga trik yang bagus, dan masih ada tambahan lain
Jika Anda pelanggan AWS besar, misalnya membelanjakan lebih dari $1 juta per tahun, Anda bisa meminta diskon
Dulu diskon untuk transfer antarzona ketersediaan sangat besar
Mengumpulkan resource sebisa mungkin dalam satu availability zone juga bisa jadi cara
Konfigurasi seperti DB di zona “b” dan satu-satunya server di zona “a” bahkan lebih buruk daripada sekadar menstandarkan semuanya ke satu zona
Saat memakai banyak availability zone, Anda perlu melakukan balancing antar availability zone yang sadar beban
Karena biaya? Tapi rasanya juga bukan penghematan biaya
Rasanya ini seperti penghindaran pajak versi teknologi
Jika terlalu banyak orang melakukan ini, AWS akan “menutup celahnya begitu saja”
AWS itu bukan satu entitas, melainkan lebih mirip puluhan atau ratusan AWS yang masing-masing punya KPI sendiri
Sebagian tim ingin mengurangi pengeluaran, tapi tidak sampai mengajarkan cara benar-benar menguranginya
Jika Anda membangun sesuatu yang cukup kompleks seperti AWS, semuanya akan saling terkait sehingga pelanggan menjadi tidak mungkin mengoptimalkan hanya satu unsur saja
AWS ingin layanan tertentu dipakai dengan cara tertentu, dan karena itu dibuat sangat murah jika dipakai seperti itu
Memakai endpoint S3 juga merupakan salah satu cara AWS ingin layanan S3 digunakan
CloudFront adalah contoh lain
AWS ingin Anda memakai CloudFront, jadi AWS membuatnya lebih murah dibanding outbound data lainnya
Alternatif untuk sistem minimisasi biaya cloud yang rumit adalah tidak memakai cloud saja
Cukup self-hosting, atau gunakan Cloudflare yang mengenakan biaya outbound 0 sen per GB
Atau sewa server cloud dari berbagai penyedia hosting VPS yang jauh lebih murah, dan jangan gunakan layanan cloud yang mahal dan rumit yang menyedot uang 9 sen, 12 sen, 17 sen per GB sambil mendorong lock-in
Serius, kalau sudah sampai di titik harus menganalisis biaya cloud secara sangat rinci, sebaiknya pertimbangkan untuk meninggalkan cloud
Di tempat lain, analisis seperti itu sendiri sepenuhnya mustahil dilakukan
Orang-orang yang menyuruh pindah ke on-prem tampaknya tidak tahu berapa mahal biaya tenaga kerja untuk orang yang tidak akan memperlakukan data center seperti homelab
Bahkan Apple iCloud pun memakai AWS dan GCP karena itu masuk akal secara ekonomi
Kalau merasa tidak bisa memakai cloud lalu harus kembali ke on-prem, berarti Anda tidak terlalu peduli pada keandalan
Coba hitung dulu biaya mitigasi DDoS di atas 10G, lalu katakan cloud masih lebih mahal
Kami menghabiskan lebih dari 100 ribu dolar untuk bandwidth AWS, tetapi itu tetap lebih murah daripada jalur internet dedicated karena kami tidak perlu membayar engineer jaringan untuk mengelola 3 availability zone
Banyak organisasi pindah ke hosting berbasis cloud karena, di antara banyak kelebihannya, mereka bisa melakukan FinOps dan kontrol biaya jauh lebih mendalam
Tergantung infrastrukturnya, jika kebutuhan storage atau komputasi berubah-ubah, solusi berbasis cloud bisa sangat cocok
Pada akhirnya ini hanya alat
Saya pernah bekerja di tempat yang masuk ke server bare metal produksi lewat SSH untuk memperbarui software, mengelola firewall, dan memeriksa storage, juga di tempat yang sebagian besar hosting-nya ditangani penyedia cloud, dan pernah juga berpindah dari satu sisi ke sisi lainnya
“Cloud” tidak lebih baik atau lebih buruk daripada server bare metal atau VPS; semuanya bergantung pada use case
Cukup lakukan due diligence untuk memahami kenapa salah satunya lebih cocok, lalu evaluasi ulang setiap kali lingkungannya berubah
Sikap seperti “cloud itu buruk” seperti ini kekanak-kanakan
Jika Anda sudah terlanjur terkunci di AWS, biaya untuk keluar bisa cukup besar, dan dalam beberapa kasus pendekatan ini bisa menjadi titik tengah yang baik
Biaya itu dalam banyak kasus bisa dengan mudah menghapus atau bahkan melampaui penghematan yang didapat
Itu juga salah satu alasan besar kenapa memilih cloud menjadi keputusan yang sangat wajar bagi banyak perusahaan
AWS kelihatannya menjalankan kasus ini sambil merugi
Penulis menemukan celah dalam struktur harga AWS, itulah sebabnya bisa semurah ini
Kalau dilakukan sendiri kemungkinan justru lebih mahal
Kita hanya bisa menebak kenapa harga AWS disusun seperti ini, tetapi kemungkinan besar tujuannya untuk mendorong penggunaan satu layanan dibanding layanan lain
Jika Anda pengguna dengan konsumsi bandwidth besar, ada baiknya melihat Leaseweb, PhoenixNAP, Hetzner, OVH
Harga bandwidth mereka jauh lebih murah sampai terasa tidak masuk akal
Dulu pernah ada situasi aneh ketika pada harga standar perusahaan hampir tidak mungkin berjalan, tetapi account manager AWS sama sekali tidak mau menurunkan harga bandwidth
Biaya transfer kelihatannya termasuk hal yang umumnya bisa dinegosiasikan
Trik lain adalah memakai ECR
Anda bisa mentransfer 5TB per bulan ke internet secara gratis
Image container memang harus bersifat publik, tetapi isinya bisa dienkripsi
Ini berguna saat menyimpan arsip media di Glacier
Saya tidak paham bagaimana AWS bisa terus memeras orang dengan biaya transfer data yang konyol seperti ini
Di sebelahnya ada Cloudflare R2 yang menawarkan syarat 100 kali lebih baik
Data membuat Anda tetap terikat di tempat data itu berada, dan seperti perlu biaya untuk lepas dari gravitasi, memindahkan data juga butuh uang
Jika di R2 terjadi masalah seperti kehilangan data atau transfer lambat, saya yang akan disalahkan atau setidaknya dimintai bantuan
Sebaliknya, jika S3 kehilangan data atau lambat pada kasus tertentu, orang akan mengira kami menggunakannya dengan cara yang salah lalu mencari cara memperbaikinya
Tidak ada yang disalahkan
Sejujurnya, jika bisnisnya menghasilkan nilai apa pun, biaya transfer data itu cukup bisa diabaikan dan tidak perlu dioptimalkan secara khusus
Penghematannya juga benar-benar besar
Kami tetap memakai AWS-SDK(Node.js) dan hanya menggunakan endpoint R2
Jika data masuk ke AWS, semua aplikasi di region yang sama bisa menggunakannya tanpa biaya transfer
Selain itu, harga yang dikutip dalam tulisan adalah harga list, dan jika pelanggan membeli bandwidth di muka lewat kontrak, biayanya bisa jauh lebih murah
Saya belum tahu seberapa baik performa dan availability-nya dalam operasi nyata
Terutama durability, itu sulit atau hampir mustahil dinilai
S3 punya sejarah dan rekam jejak yang jauh lebih panjang, dan itu merupakan keunggulan
Jika semuanya sudah ada di AWS, ada juga keuntungan menempatkan data tetap dekat
Tergantung cara data digunakan, biaya outbound belum tentu selalu menjadi biaya yang begitu besar
Tetapi begitu benar-benar mulai menghasilkan traffic outbound yang signifikan, biayanya menjadi sangat tidak masuk akal
Jika pesaing seperti R2 bisa menawarkan keandalan dan performa yang cukup kompetitif secara masuk akal, saya perkirakan pangsa pasarnya akan meningkat