5 poin oleh GN⁺ 2024-01-16 | 1 komentar | Bagikan ke WhatsApp
  • 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-1 adalah $0.09 per GB, dan bisa mencapai $0.154 per GB di af-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 di af-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-1a ke us-east-1b memerlukan $10 di sisi kirim dan $10 di sisi terima, total $20
  • 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

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 bucket us-east-1a atau us-east-1b
    • AWS secara internal mereplikasi data ke minimal 3 Availability Zone dalam region tersebut
  • Data dalam bucket S3 standar dapat diakses secara sama dari semua Availability Zone AWS di region yang sama; baik diunduh dari us-east-1a maupun us-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-1a mengirim 1TB langsung ke instance EC2 di us-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-1 adalah $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
  • 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 cp menangani 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-1a dan us-east-1b, lalu dibuat file 1TB acak di instance us-east-1a
  • Dua pendekatan dibandingkan
    • Yang pertama adalah VPC dengan subnet privat di dua AZ, menjalankan server netcat di instance us-east-1b, lalu instance us-east-1a mentransfer file 1TB secara langsung
    • Yang kedua adalah VPC dengan S3 Gateway endpoint, membuat bucket S3, lalu instance us-east-1a mengunggah file 1TB, setelah itu instance us-east-1b mengunduh dan menghapusnya
  • 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

 
GN⁺ 2024-01-16
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”

    • https://aws.amazon.com/service-terms/
      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
    • Cara lain, memakai free tier CloudFront memungkinkan download gratis 1TB per bulan dari AWS
      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
    • Kalau dihitung detail, 2TB seharga $5 lebih bagus daripada 3TB seharga $10
    • Ini memang trik yang bagus, tapi karena syarat AWS, rasanya seperti main api
  • 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

    • Sepertinya kecil kemungkinannya
      “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 tahu cara mengeluarkan data dari GCP secara gratis, tapi belum pernah benar-benar mencobanya
      Saya penasaran apakah ada pembeli yang mau membayar informasi ini
    • Rasanya ini bukan celah, melainkan AWS memang mengoptimalkan S3 dan berniat agar instance EC2 memakai S3 sebagai storage
      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

    • Saya sudah memakai cara ini dan teknik lain selama bertahun-tahun, dan belum pernah diblokir
      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

    • Saya bisa membayangkan mungkin ada kasus untuk konfigurasi seperti “DB di zona b, satu-satunya server di zona a”, tapi cukup sulit dibayangkan
      Karena biaya? Tapi rasanya juga bukan penghematan biaya
    • Sebagai poin nomor 4, Anda juga bisa mengaktifkan kelas penyimpanan S3 Intelligent-Tiering
  • 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

    • Ini bukan celah, melainkan desain yang disengaja
      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

    • Kalau Anda sedang melakukan analisis biaya cloud yang rinci, justru itu berarti Anda menggunakan cloud dengan semestinya
      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
    • “Kalau sudah sampai titik menganalisis biaya cloud secara rinci, tinggalkan cloud” berarti kehilangan sebagian alasan awal memakai cloud
      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
    • Solusi dalam tulisan ini relatif mudah diterapkan
      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
    • Untuk self-hosting, jika Anda benar-benar menggunakan kemampuan cloud yaitu managed service, Anda harus membangun departemen TI dengan kapabilitas yang banyak perusahaan tidak miliki
      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
    • Dalam kasus ini, “self-hosting” tampaknya tidak akan membantu
      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

    • Itu tampaknya cukup tidak biasa
      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 punya “gravitasi”
      Data membuat Anda tetap terikat di tempat data itu berada, dan seperti perlu biaya untuk lepas dari gravitasi, memindahkan data juga butuh uang
    • Jika semua VM dan container ada di AWS, dan S3 didukung sangat matang apa pun bahasa, framework, atau konfigurasi yang dipakai, sangat sulit meminta tim menggunakan penyedia object storage lain
      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
    • Kami membangun fitur baru untuk SaaS yang memakai bandwidth cukup besar di R2, dan hasilnya sangat baik
      Penghematannya juga benar-benar besar
      Kami tetap memakai AWS-SDK(Node.js) dan hanya menggunakan endpoint R2
    • Saya jauh kurang percaya pada Cloudflare dibanding AWS
      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
    • R2 masih cukup baru
      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