Peer-to-peer menjelaskan bagaimana paket aplikasi bergerak, tidak lebih. Para peer tetap harus saling menemukan, membuktikan siapa mereka, dan kadang beralih ke relai ketika jalur langsung tidak dapat dibangun. Itu tiga layanan terpisah, dan satu penerapan bisa peer-to-peer untuk data sementara sepenuhnya tersentralisasi untuk hal lain. Membandingkan rancangan berarti membandingkan tugas-tugas itu, bukan panah pada diagram.

Diagram tanpa panah penerusan pusat bisa menyembunyikan otoritas pendaftaran, layanan penemuan, dan relai, yang semuanya ketergantungan operasional.

Jalur langsung, bidang kendali bersama

Dua mesin yang bertukar paket secara langsung masih bisa bergantung pada otoritas bersama yang menerbitkan sertifikat mereka dan pada layanan yang memberi tahu masing-masing di mana yang lain berada. Tak satu pun dari kedua peran itu meneruskan lalu lintas aplikasi, karena itulah gambar topologi melewatkannya. Ketika otoritas atau layanan itu mati, sesi yang ada bisa berlanjut sementara peer baru tidak dapat bergabung. Perbedaan antara memulai sesi dan melanjutkannya adalah pertanyaan pertama untuk setiap rancangan.

Gambarkan tiap tugas secara terpisah meski satu host mengerjakan semuanya. Jika tidak, gambar menunjukkan bidang data terdesentralisasi dan menyembunyikan kenyataan operasional bahwa setiap peer baru membutuhkan dua layanan yang sama.

Penemuan, kepercayaan, dan relai adalah tiga tugas

Rancangan Nebula adalah contoh berguna karena dokumentasinya memisahkan ketiganya. Host membawa sertifikat untuk identitas, mercusuar menjawab pertanyaan di mana dan membantu menembus NAT, dan relai meneruskan lalu lintas ketika jalur langsung tidak dapat dibangun. Peran relai sengaja dibedakan dari peran mercusuar, jadi mercusuar yang terjangkau tidak menjamin pasangan tertentu dapat berbicara. Produk lain menarik batas di tempat lain, karena itu ini contoh, bukan templat.

Untuk penerapan yang diusulkan, catat jalur cadangan yang didukung bagi pasangan yang tidak dapat terhubung langsung. Pelubangan lubang yang gagal adalah satu titik data tentang satu jaringan, bukan bukti bahwa dua peer di balik NAT tidak akan pernah bertemu; klaim sebaliknya, bahwa konektivitas langsung bekerja di bawah kebijakan apa pun, sama-sama tidak berdasar.

Apa yang gagal pada tiap ketergantungan

Nilai empat kasus secara terpisah saat ketergantungan yang diuji tidak tersedia: lalu lintas peer yang ada, koneksi peer yang sama sekali baru, peer yang titik akhirnya berubah, dan akses yang baru saja dicabut. Masing-masing bergantung pada layanan berbeda dan gagal dengan cara berbeda. Sesi yang ada bisa bertahan dari gangguan penemuan sementara kunci yang dicabut tetap ditolak, dan peer baru bisa gagal karena alasan yang tidak ada hubungannya dengan penerusan. Uji satu per satu alih-alih menyimpulkan dari satu kasus.

Koneksi yang bertahan dari satu gangguan tidak membuktikan kemandirian tanpa batas. Itu membuktikan bahwa gangguan yang Anda sebabkan bukan yang memutus jalur tersebut, yang tetap merupakan informasi berguna asalkan Anda mencatat apa yang Anda sebabkan.

Tanyakan gangguan mana yang bisa Anda tahan

Persyaratan yang terdengar mirip menghasilkan rancangan berbeda. Menghindari satu kemacetan penerusan tidak sama dengan menghindari bidang kendali yang dihosting vendor, dan keduanya tidak sama dengan terus beroperasi saat koordinator mati. Sebutkan mana dari ketiganya yang harus dipenuhi penerapan, lalu periksa pemetaannya. Rancangan yang memenuhi yang pertama dan gagal pada yang kedua itu umum dan tidak curang, selama tidak ada yang menyebutnya sepenuhnya terdesentralisasi.

Catat siapa yang mengoperasikan penemuan, kepercayaan, dan relai, serta bagaimana masing-masing diganti. Catatan itulah yang memungkinkan orang berikutnya menjawab pertanyaan nyata: kegagalan apa yang bertahan di jaringan ini, dan siapa yang memelihara keadaan yang tetap dibagi?

Kata terdesentralisasi baru layak dipakai ketika ia menyebut kegagalan-kegagalan itu. Tanpa daftar itu, ia menjelaskan diagram, bukan sistem.

Artikel terkait