Sedang Diserang DDoS, tetapi Tidak Melakukan Apa Pun
- Selama beberapa minggu, seseorang terus mencoba melakukan serangan DDoS.
- Mereka membanjiri server dengan jutaan request untuk mencoba mengunduh file konfigurasi jutaan kali.
- Hanya dalam 5 hari terakhir, ada lebih dari 800 ribu percobaan unduhan, dan file konfigurasi tersebut berukuran sekitar 200MB per unduhan.
- Sebagian besar trafik berasal dari UE, terutama Jerman dan Inggris.
- Serangan masih berlangsung hingga saat tulisan blog ini dibuat.
Apa yang Kami Lakukan dalam Situasi Mendesak Ini
- Tidak memblokir alamat IP penyerang.
- Menggunakan Cloudflare, tetapi tidak mengaktifkan mode "Under Attack".
- CPU server hampir menganggur hampir sepanjang waktu selama serangan.
- Secara umum, hampir tidak melakukan apa pun.
Mengapa?
- Layanan dapat menangani miliaran request per bulan tanpa masalah dan tanpa biaya besar.
- Ada sekitar 8 layanan API dan database, dan semuanya dapat menangani miliaran request per bulan bahkan tanpa caching.
- Menggunakan Cloudflare dan bandwidth tak terbatas.
Bagaimana Ini Bisa Terjadi?
- Desain aplikasi TablePlus sederhana, dan filosofi ini juga diterapkan pada layanan backend yang dibuat seminimal mungkin.
- Tidak menggunakan layanan pihak ketiga seperti Vercel atau Netlify. Sebagai gantinya, menggunakan web server tanpa pembatasan.
- Di masa lalu, monolitik menjadi bottleneck karena VPS/prosesor yang lemah, tetapi saat ini VPS yang kuat dapat menangani miliaran request per bulan dalam satu instance.
- Karena itu, dibangun layanan monolitik untuk setiap aplikasi. Mudah untuk deployment dan pemeliharaan.
Mari Bicara soal Monolitik
- Ada kecenderungan untuk membuat semuanya rumit, tetapi itu bukan masalah sampai ada tekanan atau batasan.
- Karena tidak menyukai kompleksitas, dipilih pendekatan monolitik. Semua yang dibutuhkan aplikasi digabungkan ke dalam satu layanan.
- Deployment sederhana. Hanya perlu satu file konfigurasi, build, dan deployment.
- Dengan sedikit dependensi, debugging dan identifikasi bottleneck menjadi lebih mudah.
Satu Web Framework dalam Go atau Rust yang Diimplementasikan dengan Benar Bisa Menangani Miliaran Request per Bulan
- Memilih framework berperforma tinggi.
- Mengindeks database untuk mengurangi waktu pengambilan saat data set membesar.
- Memisahkan database utama dari database log/data penggunaan agar masalah performa tidak memengaruhi bisnis inti.
- Menggunakan reverse proxy yang kuat seperti Nginx untuk menangani dan mendistribusikan request ke API inti.
- Menempatkan semuanya di belakang Cloudflare dan mengonfigurasinya dengan tepat.
- Menggunakan CDN dengan perlindungan DDoS.
- Tidak menaruh file unduhan besar di VPS tanpa CDN atau caching.
Mari Bicara soal Deployment
- Di TablePlus, proses deployment disederhanakan semaksimal mungkin.
- Tidak menggunakan Docker, Kubernetes, atau container, dan tidak memerlukan pengaturan environment.
- Menggunakan binary. Binary bisa disalin lalu dijalankan sebagai proses di server Linux.
- Memilih Go dan Rust. Keduanya adalah bahasa berperforma tinggi dan dapat menghasilkan file binary untuk deployment.
Pembaruan
- Vercel telah menghubungi dan mengatakan mereka memiliki fitur yang dapat melindungi situs dalam situasi seperti ini.
- Melalui pengelolaan pengeluaran, kita bisa menetapkan batas pengeluaran, dan ada mode tantangan serangan yang mirip dengan mode "Under Attack" milik CF.
Opini GN⁺
- Artikel ini menekankan pentingnya infrastruktur yang kuat dan strategi deployment yang disederhanakan agar layanan tetap stabil meskipun menghadapi serangan DDoS.
- Arsitektur monolitik ditunjukkan mampu mengurangi kompleksitas, menyederhanakan deployment, dan menguntungkan untuk optimasi performa.
- Pemanfaatan efektif layanan cloud dan CDN untuk membangun ketahanan terhadap serangan DDoS dapat menjadi contoh yang baik bagi perusahaan lain.
- Pendekatan ini terutama dapat memberi wawasan tentang pembangunan infrastruktur yang hemat biaya bagi startup tahap awal atau perusahaan kecil dan menengah.
- Namun, pendekatan monolitik tidak cocok untuk semua sistem atau aplikasi, sehingga penting untuk memilih arsitektur yang sesuai dengan kebutuhan dan situasi masing-masing.
1 komentar
Opini Hacker News
Ringkasan komentar pertama:
Ringkasan komentar kedua:
Ringkasan komentar ketiga:
Ringkasan komentar keempat:
Ringkasan komentar kelima:
Ringkasan komentar keenam:
Ringkasan komentar ketujuh:
Ringkasan komentar kedelapan:
Ringkasan komentar kesembilan:
Ringkasan komentar kesepuluh: