2 poin oleh GN⁺ 2025-03-18 | 1 komentar | Bagikan ke WhatsApp
  • HTTP/3 telah dikembangkan sejak 2016, dan protokol dasarnya, QUIC, pertama kali diperkenalkan oleh Google pada 2013
  • Saat ini sudah distandardisasi dan mendapat dukungan luas seperti berikut
    • Didukung oleh 95% browser
    • 32% dari permintaan HTTP Cloudflare menggunakan HTTP/3
    • 35% situs web menampilkan dukungan HTTP/3 (melalui alt-svc atau DNS)
  • Namun, pustaka standar di bahasa-bahasa utama masih kurang mendukung QUIC dan HTTP/3
    • Tidak disertakan dalam pustaka standar Node.js, Go, Rust, Python, Ruby, dan lainnya
    • Curl baru-baru ini menambahkan dukungan HTTP/3, tetapi masih berstatus eksperimental dan dinonaktifkan secara default
    • Server populer Nginx masih dalam status dukungan eksperimental dan dinonaktifkan secara default
    • Apache tidak memiliki rencana dukungan HTTP/3
    • Ingress-Nginx milik Kubernetes telah membatalkan rencana dukungan HTTP/3

Kebutuhan setelah HTTP/1.1

  • HTTP/3 berguna untuk browser web dan trafik CDN dengan latensi tinggi
  • Keuntungan utama yang diberikan HTTP/2 dan HTTP/3:
    • Multiplexing untuk mengurangi latensi waktu tunggu respons
    • Kompresi header HTTP untuk mengurangi trafik (menggunakan HPACK, QPACK)
    • Streaming dua arah memungkinkan pertukaran data real-time antara klien dan server
    • Prioritisasi memungkinkan permintaan penting diproses lebih dulu
  • Keuntungan tambahan HTTP/3:
    • Penanganan stream yang independen sehingga packet loss pada satu stream tidak memengaruhi stream lain
    • TLS handshake 0-RTT untuk mempercepat inisialisasi koneksi
    • Migrasi koneksi memungkinkan koneksi tetap dipertahankan saat alamat IP berubah
    • Perbaikan kontrol kemacetan untuk meningkatkan performa dan stabilitas

Dampak peningkatan performa HTTP/3

  • Hasil benchmark RequestMetric:
    • HTTP/3 memberikan kecepatan respons yang lebih cepat dibanding HTTP/1.1 dan HTTP/2
  • Contoh nyata dari Fastly:
    • Waktu ke byte pertama pada HTTP/3 berkurang 18%

Masalah kurangnya dukungan HTTP/3

  • HTTP/3 didukung luas di browser dan CDN, tetapi sulit digunakan oleh developer pada umumnya
  • Saat ini ada dua jenis trafik web:
    • Web hyperscale: berbasis browser utama dan server besar (Google, Meta, Amazon, dll.)
    • Web long-tail: berbasis server dan klien skala kecil hingga menengah (API backend, aplikasi mobile, IoT, dll.)
  • Perbedaan utamanya:
    • Trafik long-tail mencakup 67% dari total trafik
    • Hyperscale dapat mengembangkan dan menerapkan dengan cepat, sedangkan long-tail kekurangan sumber daya dan lebih mengutamakan stabilitas
    • Sangat bergantung pada alat open source

OpenSSL dan masalah QUIC

  • OpenSSL adalah fondasi bagi sebagian besar alat jaringan open source
  • BoringSSL merilis API dukungan QUIC pada 2018, tetapi OpenSSL memperkenalkan API QUIC versinya sendiri
  • Masalah utamanya:
    • Tidak kompatibel dengan implementasi berbasis BoringSSL yang sudah ada
    • Curl dan bahasa-bahasa utama sulit mengubah dependensi OpenSSL mereka
    • Node.js sempat mempertimbangkan penggunaan BoringSSL sebagai pengganti OpenSSL, tetapi tidak terwujud

Prospek ke depan

  • Saat web hyperscale mengadopsi HTTP/3, ada kemungkinan muncul kesenjangan performa dengan web long-tail
  • Kurangnya dukungan HTTP/3 dapat menimbulkan masalah seperti berikut:
    • Memperkuat keunggulan kecepatan dan stabilitas situs hyperscale
    • Jika framework berbasis HTTP/3 menjadi umum, web long-tail akan sulit mengaksesnya
    • Tidak adanya dukungan HTTP/3 berpotensi digunakan sebagai kriteria pemblokiran klien
  • Solusi yang diperlukan:
    • Perlu menyelesaikan masalah API QUIC di OpenSSL
    • Perlu mengembangkan alat dan adaptor yang meningkatkan kompatibilitas dengan implementasi QUIC dan HTTP/3 yang sudah ada
    • Perlu upaya memperluas dukungan HTTP/3 di alat open source

Kesimpulan

  • HTTP/3 jelas menawarkan keuntungan performa dan stabilitas, tetapi saat ini hanya perusahaan hyperscale yang bisa menggunakannya dengan mudah
  • Diperlukan perbaikan alat dan standar agar HTTP/3 dapat digunakan dengan mudah juga di web long-tail

1 komentar

 
GN⁺ 2025-03-18
Opini Hacker News
  • Ada pendapat bahwa sulit menemukan alat open source populer yang sepenuhnya mendukung HTTP/3

    • Administrator TI dan insinyur DevOps umumnya mengakhiri koneksi HTTP/3 di load balancer, melakukan terminasi SSL, lalu meneruskan HTTP 1.1 ke layanan backend
    • HTTP/3 dan IPv6 adalah teknologi yang berfokus pada seluler, sehingga lebih berguna pada koneksi yang sementara dan tidak stabil daripada di data center
  • QUIC atau HTTP/3 belum disertakan dalam pustaka standar bahasa-bahasa utama

    • .NET menyediakan dukungan yang cukup baik untuk HTTP/3
    • Sebagian besar tim pengembang tidak membangun produk yang berfokus pada jaringan, sehingga HTTP/3 menjadi prioritas rendah
  • Masalah terbesar dalam deployment HTTP/3 skala besar adalah bertambahnya permukaan kode yang berpotensi rentan

    • Lebih diinginkan jika sistem operasi menyediakan lapisan socket yang aman dan pustaka SSL yang ditautkan secara dinamis
    • Pada sebagian besar aplikasi klien, latensi beberapa milidetik pada permintaan bukanlah masalah besar
  • Lambatnya adopsi QUIC disebabkan OpenSSL tidak menyediakan komponen dasar yang diperlukan oleh implementasi QUIC yang ada

    • Baru-baru ini OpenSSL 3.5 mulai menyediakan API untuk stack QUIC pihak ketiga
  • HTTP/2 dan HTTP/3 tidak lagi dipandang sebagai protokol lapisan aplikasi, melainkan pada tingkat TCP dan TLS

    • Pengembang masih hidup di dunia "HTTP 1.1 plaintext"
  • nginx masih belum menyediakan dukungan HTTP/3 yang siap produksi

  • Di Python, ada yang menggunakan niquests dan itu mendukung HTTP/3

    • Ekosistem Python tetap bertahan pada paket requests karena inertia
  • Node.js telah mempublikasikan pembaruan tentang status QUIC, dan mengalami kesulitan karena lambatnya dukungan API dari OpenSSL

  • Jika menggunakan load balancer dari penyedia cloud publik, secara default akan menggunakan HTTP/3

    • Situs yang menggunakan server sendiri belum menikmati manfaat HTTP/3
  • Semua proyek sampai tingkat tertentu digerakkan oleh open source dan komunitas

    • Tidak merasa perlu mendesak untuk segera mendukung HTTP/3