Back to IF3130 Sistem Paralel dan Terdistribusi

8 Fallacies (Kesalahpahaman) dalam Sistem Terdistribusi

Questions/Cues

  • Apa itu ‘Fallacies of Distributed Computing’?

  • Siapa yang merumuskan?

  • Fallacy 1?

  • Fallacy 2?

  • Fallacy 3?

  • Fallacy 4?

  • Fallacy 5?

  • Fallacy 6?

  • Fallacy 7?

  • Fallacy 8?

Reference Points

  • Slides 34-38

Pengantar 8 Fallacies

  • Dirumuskan oleh L. Peter Deutsch.

  • Ini adalah delapan asumsi atau kepercayaan yang salah yang sering dimiliki oleh programmer saat pertama kali membangun aplikasi terdistribusi.

  • Mempercayai hal-hal ini akan menyebabkan desain sistem yang rapuh, tidak andal, dan tidak aman.

  • Programmer sistem terdistribusi yang baik harus selalu berasumsi bahwa kebalikan dari fallacy inilah yang benar.

Fallacy 1: Network is reliable (Jaringan itu andal)

  • Kesalahpahaman: Menganggap jaringan akan selalu berfungsi.

  • Realitas: Jaringan pasti akan gagal.

  • Contoh: Switch canggih mungkin punya MTBF (Mean Time Between Failures) 50.000+ jam, tapi itu bukan tak terbatas. Kegagalan bisa terjadi karena: power failure (listrik mati), human error (salah konfigurasi), burst traffic, faktor eksternal (kabel putus), atau serangan (DDoS attack).

  • Implikasi: Aplikasi harus bisa menangani paket yang hilang, koneksi yang putus, dan timeout.

Fallacy 2: Latency is zero (Latensi adalah nol)

  • Kesalahpahaman: Menganggap pengiriman data via jaringan itu instan.

  • Realitas: Selalu ada penundaan (latency), dan bisa jadi sangat besar.

  • Contoh: Komunikasi dalam satu Data Center mungkin (misal) < 1ms, tapi komunikasi antar benua (WAN) bisa ratusan milidetik. Bahkan request AJAX di web yang terlihat cepat pun memiliki latensi.

  • Implikasi: Desain harus memperhitungkan latensi. Terlalu banyak bolak-balik (chatty) antar servis akan membunuh kinerja.

Fallacy 3: Bandwidth is infinite (Bandwidth tidak terbatas)

  • Kesalahpahaman: Menganggap kita bisa mengirim data sebanyak apapun secepat apapun.

  • Realitas: Bandwidth adalah sumber daya yang terbatas dan mahal.

  • Implikasi: Aplikasi harus efisien dalam penggunaan data. Hindari pengiriman data besar yang tidak perlu. Pertimbangkan kompresi dan serialisasi yang efisien.

Fallacy 4: Network is secure (Jaringan itu aman)

  • Kesalahpahaman: Menganggap tidak ada orang jahat di jaringan, terutama di jaringan internal (intranet).

  • Realitas: Jaringan (terutama internet) adalah lingkungan yang hostile (bermusuhan).

  • Contoh: Serangan internet tumbuh 64% per tahun (data Rip Tech).

  • Implikasi: JANGAN PERNAH percaya input dari jaringan. Selalu asumsikan data bisa disadap (butuh enkripsi), diubah (butuh verifikasi/integritas), atau dipalsukan (butuh autentikasi).

Fallacy 5: Topology does not change (Topologi tidak berubah)

  • Kesalahpahaman: Menganggap tata letak jaringan, IP address, dan rute bersifat statis.

  • Realitas: Topologi jaringan berubah secara konstan.

  • Contoh: Node baru ditambahkan, node lama mati, rute jaringan berubah karena kegagalan, laptop/HP berpindah jaringan (WiFi ke 4G).

  • Implikasi: Aplikasi tidak boleh melakukan hardcode pada alamat IP atau rute. Gunakan service discovery (seperti DNS) untuk menemukan layanan lain.

Fallacy 6: There is one administrator (Hanya ada satu administrator)

  • Kesalahpahaman: Menganggap seluruh sistem (client, server, jaringan) dikelola oleh satu orang atau satu tim yang maha tahu dan terkoordinasi.

  • Realitas: Dalam sistem besar, ada banyak admin dari tim, departemen, atau bahkan perusahaan yang berbeda (misal: admin jaringan, admin database, admin server, admin di sisi client).

  • Implikasi: Sistem harus bisa dikelola, di-debug, dan di-upgrade tanpa memerlukan koordinasi penuh dari semua pihak. Logging dan monitoring yang baik menjadi sangat penting.

Fallacy 7: Transport cost is zero (Biaya transport adalah nol)

  • Kesalahpahaman: Menganggap biaya (CPU, memori) untuk mengirim dan menerima data di jaringan itu gratis.

  • Realitas: Proses packing (serialisasi), sending (menjalankan network stack OS), receiving, dan unpacking (deserialisasi) data membutuhkan sumber daya CPU dan memori yang signifikan.

  • Implikasi: Mengirim banyak pesan kecil bisa jadi lebih boros CPU daripada mengirim satu pesan besar.

Fallacy 8: Network is homogeneous (Jaringan itu seragam)

  • Kesalahpahaman: Menganggap semua komputer dan perangkat di jaringan itu sama (hardware, OS, arsitektur CPU, bahasa).

  • Realitas: Jaringan (terutama internet) sangat heterogen. Ada server Linux, PC Windows, Mac, HP Android, iPhone, IoT, dll.

  • Implikasi: Gunakan protokol dan format data standar (seperti HTTP, JSON, Protobuf) untuk memastikan interoperabilitas. Waspadai hal-hal seperti endianness (byte order) jika mengirim data biner.

Summary

Terdapat delapan asumsi salah (Fallacies) yang dirumuskan oleh Peter Deutsch, yang harus dihindari saat membangun sistem terdistribusi. Programmer harus berasumsi bahwa jaringan itu tidak andal, memiliki latensi, bandwidth terbatas, dan tidak aman. Selain itu, topologi jaringan selalu berubah, ada banyak administrator, proses transport data itu memakan biaya (CPU), dan jaringan itu heterogen (beragam). Mengabaikan realitas ini akan menghasilkan sistem yang gagal.