2 poin oleh GN⁺ 2023-07-02 | 2 komentar | Bagikan ke WhatsApp
  • Saat feed beranda Twitter sempat tumbang hampir sepanjang pagi itu, teramati situasi di mana klien web terus mengulang permintaan konten dan tampak memicu DDOS pada dirinya sendiri
  • Bahkan di layar yang gagal dimuat, percobaan ulang tidak berhenti, dan pada video pertama terlihat error rate limited serta scrollbar yang bergetar
  • Pada video kedua, terlihat Twitter mengirim sekitar 10 permintaan per detik ke dirinya sendiri saat mencoba mengambil konten yang tidak kunjung tiba
  • Kemungkinan penyebabnya ditunjuk pada pembatasan pembacaan untuk pengguna yang tidak login yang baru diterapkan dan mungkin menciptakan kondisi tak terduga
  • Pada video lanjutan, konsol jaringan Firefox juga menunjukkan permintaan yang terus membanjir, sehingga ditafsirkan sebagai situasi self-DDOS di mana browser pengguna berulang kali mengirim permintaan ke Twitter

Permintaan berulang yang terlihat di klien web Twitter

  • Feed beranda Twitter tumbang hampir sepanjang pagi itu, dan bahkan saat tidak ada apa pun yang dimuat, situs web tersebut tidak berhenti mencoba ulang permintaan
  • Video pertama menampilkan pesan error bahwa pengguna berada dalam kondisi rate limited serta scrollbar di sisi kanan yang bergetar
  • Video kedua menunjukkan alasan scrollbar bergetar, yaitu Twitter mengirim sekitar 10 permintaan per detik ke dirinya sendiri saat mencoba mengambil konten
  • Perubahan yang dituding sebagai latar belakang konten yang tidak kunjung datang adalah pemblokiran agar pengguna yang tidak login tidak bisa membaca Twitter

Verifikasi lanjutan dan materi terlampir

  • Post lanjutan menampilkan tambahan bukti melalui tampilan konsol jaringan Firefox bahwa permintaan jaringan terus terjadi
  • Disertakan pula tafsiran bahwa kode yang dirilis memicu race condition, yang pada akhirnya membuat para pengguna menjalankan permintaan bergaya DDOS ke Twitter
  • Pengunggah menyatakan awalnya sempat menutup koneksi, tetapi setelah itu Twitter tetap memicu permintaan terus-menerus untuk sementara waktu
  • Materi terlampir:
    • Video 4: error rate limited dan scrollbar yang bergetar
    • Video 5: adegan Twitter mengirim permintaan berulang ke dirinya sendiri
    • Video 6: adegan permintaan terus terjadi di konsol jaringan Firefox

2 komentar

 
GN⁺ 2023-07-02
Komentar Hacker News
  • Dari pengalaman pribadi yang sangat menyakitkan, jarang ada hal yang lebih mengguncang daripada dipaksa menjalankan sesuatu yang jelas-jelas merupakan ide yang mengerikan
    Terutama ketika Anda mencoba memberi tahu orang yang menekan Anda untuk melawan penilaian terbaik Anda, tetapi gagal, lalu belakangan orang itu dengan lantang menyangkal pernah meminta hal tersebut meski ada bukti tertulis
    Saya tidak tahu apakah orang-orang yang sekarang bekerja di Twitter sudah memperingatkan bahwa langkah terbaru ini bisa menimbulkan efek samping sebesar ini, tetapi melihat cara kepemimpinannya beroperasi, saya sama sekali tidak terkejut
    Saya sangat tidak suka dengan perubahan Twitter dalam beberapa bulan terakhir, dan bahkan sebelum akuisisi pun saya tidak menyukainya karena format pendeknya menghilangkan nuansa dan beberapa tweet yang mudah di-embed bisa jadi dasar sebuah artikel, tetapi saya benar-benar kasihan pada orang-orang yang harus bekerja di bawah manajemen seperti itu

    • Orang-orang di Twitter yang memahami sistem dan bisa memprediksi efek sampingnya kemungkinan semuanya sudah dipecat atau pergi
      Tebakan saya, Elon berkata “situsnya terlalu lambat”, para engineer melihat bahwa permintaan home feed memang lambat, tetapi mereka tidak memahami strukturnya, tidak punya alat profiling, dan ditekan untuk memperbaikinya dalam tenggat yang tidak realistis
      Jadi satu-satunya hal yang hampir bisa mereka lakukan adalah mengirim beberapa permintaan paralel dan berharap salah satunya cepat
      Setelah bekerja di industri game, saya jadi paham kenapa game bisa dirilis setelah menghabiskan uang dan waktu dalam jumlah besar tetapi bahkan fungsi dasarnya pun rusak
      Tekanan jadwal ekstrem seperti ini secara paradoks menciptakan kubangan raksasa di mana mengubah satu hal merusak sepuluh hal lain, dan pada akhirnya kemajuan pun berhenti
    • Kalau mau jadi pembela setan, para developer frontend juga seharusnya lebih cerdas
      Ini adalah penanganan error dasar yang seharusnya sudah ada sejak beberapa tahun lalu
      Entah itu 403 atau respons apa pun yang memblokir tweet, seharusnya sama sekali tidak memicu retry tak terbatas dengan interval pendek
    • Saat diminta melakukan hal yang benar-benar bodoh, saya pernah mengirim CC bomb sekali sebagai semacam perlindungan
    • Saya sedang mengalami situasi persis seperti ini di tempat kerja sekarang
      Saya membuat alat untuk mengelola tiket kerentanan tim, dan use case pertamanya justru menghapus semua tiket kerentanan meski saya menentangnya
      Orang yang menjalankannya lebih peduli membuat semuanya tampak bagus di atas kertas daripada benar-benar meningkatkan keamanan
    • Jauh lebih buruk daripada arus ikut mencaci sesuatu yang dipakai dan diperhatikan semua orang adalah situasi ketika Anda tahu solusinya, tetapi bahkan terlalu takut untuk mencoba bertindak
      Anda sudah tahu sejak lama dan berulang kali mengusulkannya, tetapi bahkan tidak diizinkan mencoba, malah dikucilkan dan diperlakukan sebagai “orang itu”
      Saya pernah mengalaminya dengan pendekatan teknis dan bisnis yang “cara lama”-nya entah bagaimana masih berjalan, tetapi perlahan membunuh perusahaan
      Namun jika atasan secara jelas mengambil tanggung jawab atas sesuatu yang dinilai berisiko tetapi perlu, akan ada jauh lebih banyak ruang untuk merespons dengan baik saat masalah muncul, dan developer juga tidak harus terlalu menanggung sindiran belakangan
      Tentu saja, yang seperti ini memang lebih mudah untuk dicaci
  • Kita harus melihat bahwa kali ini terjadi pada akhir pekan libur
    Elon memaksakan rilis besar, dan pada dasarnya membuat para engineer masuk kerja lalu terus mengulang berbagai patch selama 12 jam terakhir

    • Kesombongannya begitu besar sampai kata sombong pun rasanya kurang
      Saya khawatir untuk para programmernya
      Yang lebih mengejutkan adalah betapa engineering Twitter akhir-akhir ini terlihat seperti serangkaian tambal sulam
      Masalah muncul karena mereka tidak mengerahkan upaya untuk menyelami codebase secara mendalam dan hanya memilih perbaikan yang paling sederhana dan paling singkat
    • Para engineer Twitter sudah punya waktu lebih dari setahun untuk mencari pekerjaan lain
      Pada titik ini, baik syarat kerja maupun ekspektasi dari atasan sudah sangat jelas
      Sulit merasa simpati pada orang-orang yang tetap bertahan, apa pun alasan mereka masih tinggal
    • Setidaknya mereka bisa deploy langsung ke environment produksi
  • Kemungkinan bug ini adalah penyebabnya sangat kecil
    Rate limiter di sisi server biayanya kecil, dan bug frontend hanya terpicu saat rate limiting aktif
    Saya pernah melihat bug serupa di sistem yang saya kelola karena library jaringan suka me-retry permintaan secara default tanpa batasan yang masuk akal
    Tetapi retry itu tidak pernah sampai membebani rate limiter
    Kalau API yang dipukul melakukan pekerjaan mahal dulu sebelum mengembalikan error, memang jadi sedikit lebih menyebalkan, dan itulah sebabnya semua endpoint publik diberi rate limiting
    Web app kemungkinan adalah bagian paling kecil dari traffic Twitter, dan native app mungkin tidak punya masalah ini

    • Saya rasa ini tidak harus berarti DDoS yang dipicu sendiri sampai menyebabkan masalah teknis yang memblokir akses
      Bisa saja pemblokiran akses anonim memicu DDoS, itu menyebabkan lonjakan besar pada suatu metrik, lalu Elon menyimpulkan itu sebagai kenaikan scraping dan kemudian memasang batas 600 tweet per hari untuk menghukum scraper
      Jatah saya tampaknya sudah di-reset atau kebijakannya berubah, karena saya bisa mengakses situs lagi
    • Jika Anda punya kepemimpinan yang dikenal suka berbohong kapan pun merasa itu menguntungkan secara pribadi, maka konsep kebenaran itu sendiri akan hancur
      Saya setuju kemungkinan bug ini adalah akar penyebab semuanya rendah
      Tetapi saya juga tidak percaya pada cerita yang dijual Musk sebagai alasan menutup situs secara efektif
      Keduanya bisa saja benar, dan itu membuat saya terus memikirkan alasan potensial lain, yang sepenuhnya buang-buang waktu tetapi terasa seperti umpan mental yang aneh
      Buku "Nothing is true and everything is possible" membahas bagaimana Putin menggunakan disinformasi untuk mengendalikan publik dan menyingkirkan politik demokratis, dan rasanya itu juga berlaku di sini
      Penggemar Musk akan mengulang persis apa pun yang dia suruh katakan, tetapi kebanyakan orang akan tahu itu cuma omong kosong demi kepentingan dirinya sendiri
      Dan orang yang mencoba mencari akar masalah akan mudah terseret ke narasi seperti bug ini, yang terasa masuk akal tetapi sama sekali tidak punya data pendukung
      Jika Anda ingin melihat kemungkinan jalur masa depan Amerika, saya sangat merekomendasikan buku ini
      https://en.wikipedia.org/wiki/Nothing_Is_True_and_Everything...
    • Tergantung pada skala keseluruhan sistemnya
      Saya pernah melihat langsung dan mencoba memitigasi kasus degeneratif di mana retry seperti ini membanjiri backend sampai server bahkan tidak sanggup menge-拒绝 permintaan
      Karena retry dari banyak lapisan pemanggil di hulu, situasinya memburuk sedemikian rupa sehingga permintaan pada dasarnya timeout di buffer/antrian TCP bahkan sebelum sempat diproses oleh aplikasi
      Saya tidak tahu apakah backend homepage Twitter berada di skala yang mirip
  • Situasi yang menarik.
    Dari tangkapan layar, terlihat jumlah GET /TweetDetail yang sangat besar, dan seperti yang terlihat dari 429, ini tampaknya memicu semacam pembatasan laju.
    Jika ini disebabkan oleh keputusan baru-baru ini untuk mewajibkan autentikasi pada semua pemanggilan API, pelakunya sebenarnya bisa jadi API gateway atau komponen serupa di bawahnya.
    Perilaku ini juga tampaknya tidak berhenti, yang bukan perilaku yang diharapkan dari retry dengan exponential backoff.
    Bukannya saya mengklaim sebagai insinyur yang lebih baik daripada orang-orang yang bekerja di Twitter, tetapi bahkan tanpa mempertimbangkan faktor Musk, menarik melihat fenomena seperti ini di lingkungan produksi.

    • Secara teori, exponential backoff itu optimal, tetapi saya rasa dalam praktiknya itu tidak terlalu sering dipakai.
      Saya terlalu sering melihat kasus di mana orang lebih memilih backoff acak yang konstan daripada exponential backoff karena dianggap jauh lebih penting untuk melayani permintaan pengguna dengan latensi rendah.
      Saya juga pernah melihat dalam berbagai rapat desain dan dokumen bahwa ada keputusan eksplisit untuk tidak menggunakan exponential backoff sambil tetap memahami trade-off antara overload dan pemulihan sistem.
    • Frontend sepertinya ditulis dengan asumsi bahwa backend akan terus berjalan bahkan tanpa autentikasi.
      Bisa jadi perubahan backend, yaitu autentikasi wajib + pembatasan laju, diterapkan tanpa pengujian frontend dan backend bersama yang memadai.
    • Apakah Elon membayar tagihan AWS?
      Itu tampak seperti tersangka yang masuk akal.
      Bisa jadi instance Twitter sedang dipaksa dimatikan.
  • Platformer melaporkan pada 10 Juni bahwa “Twitter menolak membayar biaya layanan cloud Google menjelang tanggal perpanjangan kontraknya pada 30 Juni.”
    Disebut juga bahwa “kontrak Google Cloud Twitter telah berjalan sejak 2018.”
    https://www.engadget.com/twitter-has-supposedly-started-payi...
    Ah, rasanya ini menjelaskan seluruh kekacauan ini.

    • Seperti dalam artikel itu dan laporan Bloomberg, Twitter pada akhirnya berdamai dengan Google dan masalahnya terselesaikan.
      Mereka mungkin sedang mencoba keluar dari GCP, tetapi ini tampaknya bukan karena mereka tiba-tiba kehilangan akses ke GCP akibat menolak membayar.
    • https://www.reuters.com/technology/twitter-resumes-paying-go...
      Ini artikel dari seminggu lalu.
    • Twitter tidak menggunakan Google Cloud sebagai layanan backend utamanya.
      Semuanya di-host sendiri.
      Gcloud hanya mendukung pekerjaan batch dan analitik data.
    • Layanan inti Twitter berada di pusat data on-premises.
  • Ini teori yang menarik, tetapi DDoS sudah terjadi sebelum keputusan untuk menonaktifkan akses anonim.
    Sebenarnya, keputusan itu diambil untuk mitigasi DDoS yang sedang berlangsung[0][1].
    Jadi, logika retry web frontend yang mencurigakan mungkin memperparah situasi, tetapi bukan akar penyebabnya.
    [0] https://twitter.com/elonmusk/status/1674865731136020505
    “Ini adalah tindakan darurat sementara. Penjarahan data sudah sangat parah sampai menurunkan kualitas layanan bagi pengguna biasa!”
    [1] https://twitter.com/elonmusk/status/1674942336583757825
    “Ini akan segera dicabut. Seperti posting sebelumnya, tingkat scraping data yang ekstrem memerlukan tindakan yang tegas dan segera.”
    “Hampir setiap perusahaan yang bergerak di AI, dari startup sampai beberapa perusahaan terbesar di bumi, melakukan scraping data dalam jumlah besar.”
    “Cukup menjengkelkan harus buru-buru menambah server dalam jumlah besar hanya untuk membantu valuasi konyol dari suatu startup AI.”

    • Sejujurnya, saya rasa ini lebih berkaitan dengan keputusan yang pada dasarnya menutup akses API kecuali dengan biaya yang tidak masuk akal, ketimbang soal startup AI dan semacamnya.
      Arsip besar dari semua tweet sebelum tanggal tertentu yang dipakai startup-startup itu pasti beredar di suatu tempat.
    • Itu adalah klaim yang diajukan Elon Musk setelah ada reaksi keras, jadi perlu disaring dengan sangat hati-hati.
  • Adakah yang tahu apakah permintaan seperti ini sudah ada sebelum perubahan menjadi khusus login?
    Akan sangat lucu jika operasi scraping besar itu ternyata sebenarnya adalah bug JavaScript mereka sendiri.

    • Dalam beberapa minggu terakhir saya melihat frontend cukup sering menghantam backend.
      Saya tidak akan kaget sama sekali kalau sebagian besar “lonjakan scraping” itu justru kesalahan Twitter sendiri.
    • Sebagian scraping terjadi karena Twitter merusak API-nya sehingga bot-bot beralih ke scraping.
      Hasil yang bodoh tapi sudah jelas.
    • Pada alur tertentu, misalnya layar profil, menekan “kembali” di Firefox untuk Android benar-benar memicu loop redirect tak terbatas.
      Puluhan permintaan mungkin terkirim selama beberapa detik sampai pembatasan laju aktif.
      Banyak bug kecil seperti ini jika terkumpul bisa saja tampak seperti DDoS atau scraping.
  • Mungkin ini memang bukan bug.
    Elon mengatakan ada batas 600 tweet yang bisa dilihat per hari, dan itu batas yang gila.
    Kebanyakan orang mungkin bisa melewati jumlah itu hanya dengan scroll selama 5 menit.

    • Mungkin ini saatnya merenungkan berapa banyak informasi tak berguna yang kita konsumsi.
    • Mungkin 5 menit agak berlebihan.
      Saat Tweetbot menampilkan bahwa ada lebih dari 500 item di feed saya, seingat saya itu sudah cukup omong kosong untuk dibaca selama beberapa perjalanan trem masing-masing 20 menit.
    • Karena saya melihat frontend menghantam backend dalam beberapa minggu terakhir, saya curiga pembatasan laju baru ini adalah respons terhadap itu, meskipun Musk tidak akan mengakuinya secara terbuka.
      Saya tidak meragukan bahwa Twitter baru-baru ini melihat lonjakan trafik yang sangat besar, tetapi saya cukup yakin bahwa sebagian besar dari itu adalah masalah yang mereka ciptakan sendiri.
  • Elon sebenarnya tinggal membiarkannya saja, tapi oh iya, ada 44 miliar dolar
    Parag Agrawal dan timnya tahu persis apa yang mereka lakukan
    Ini benar-benar contoh pepatah bahwa orang bodoh dan uangnya akan segera berpisah

    • Apakah mereka memainkan catur 5 dimensi dengan klausul racun itu
    • Ada juga teori yang melihat ini secara berbeda
      Setelah Elon dipaksa oleh pengadilan Delaware untuk membeli Twitter, dia pergi ke para diktator kaya, mengambil 44 miliar dolar dari mereka, lalu berjanji akan membakar habis Twitter atas nama mereka
      Tanpa Twitter, tidak ada Arab Spring, tidak ada pembaruan bencana secara real-time, dan tidak perlu mematikan internet untuk mencegah suara-suara oposisi menyebar
  • Tidak terlalu berarti, tapi batas kecepatan mulai dilonggarkan lagi
    6k/600/300 → 8k/800/400 (sekitar tengah hari) → 10k/1k/500 (sekitar jam 3 sore)
    https://twitter.com/elonmusk/status/1675214274627530754 dan berdasarkan balasan dirinya sendiri

    • Tidak bisa dibaca
      Muncul “Something went wrong”
      Di bawah aturan baru yang hanya untuk pengguna login, sepertinya tetap tidak akan bisa dibaca meski situsnya hidup
      Sekarang tautan Twitter menjadi tautan tercemar dan pada dasarnya tidak berguna
    • Saya cuma mengetuk tautan itu, lalu langsung kena batas kecepatan yang tampaknya baru saja dinaikkan
      Ini benar-benar sirkus total
    • Sempat bisa diakses lagi, lalu mungkin 5~6 menit kemudian kena batas kecepatan lagi di bawah batas baru ini