Apa itu Pemrograman Terdistribusi?

Pemrograman terdistribusi adalah salah satu bentuk pemrograman paralel atau komputasi paralel. Pemrograman paralel melibatkan komputer dan unit komputasi di dalam komputer yang bekerja secara bersamaan pada masalah tertentu, seperti memprediksi cuaca besok. Unit komputasi dapat ditempatkan dan dikoordinasikan dengan sangat dekat atau dapat ditempatkan terpisah. Ketika unit komputasi terpisah, itu disebut pemrograman terdistribusi. Dalam skenario seperti itu, sangat sering unit komputasi berbeda satu sama lain, dan sistem operasi dan pengaturan jaringan juga berbeda, membuat pemrograman aktivitas komputasi menjadi sangat menantang.

Saat memecahkan masalah secara terdistribusi, program perlu dipecah sehingga bagian dari program dapat berjalan pada unit komputasi yang berbeda; bagian-bagian ini sering disebut “proses”. Proses berjalan secara bersamaan tetapi perlu mengkomunikasikan input dan hasil satu sama lain. Jika proses berjalan pada perangkat keras yang berbeda, seperti satu bagian berjalan pada Intel dan lainnya berjalan pada SUN, maka program harus dikompilasi dan dioptimalkan secara berbeda.

Salah satu cara untuk memecahkan masalah yang cukup sulit adalah dengan memecah bagian input, dan membuat unit komputasi yang berbeda bekerja pada bagian yang berbeda menggunakan algoritma yang sama, seperangkat aturan atau langkah untuk pemecahan masalah. Misalnya, untuk memecahkan genom 10,000 pasangan, 1,000 pasangan pertama dapat ditetapkan ke unit komputasi pertama, 1,000 pasangan kedua ditugaskan ke unit komputasi kedua, dan seterusnya, semuanya menggunakan algoritme yang sama. Dengan pemrograman terdistribusi, satu keuntungannya adalah bahwa unit komputasi yang berbeda dapat menjalankan algoritma yang berbeda untuk memecahkan masalah yang sama, sehingga menghasilkan solusi yang jauh lebih baik. Ini mirip dengan memecahkan teka-teki gambar dengan beberapa orang menyatukan perbatasan sementara yang lain menyatukan potongan-potongan warna tertentu.

Koordinasi proses komputasi terdistribusi dapat menjadi tugas yang sangat sulit. Beberapa unit komputasi mungkin gagal atau mungkin terganggu untuk menangani pekerjaan lain. Pesan yang berisi input atau hasil komputasi mungkin gagal mencapai tujuannya. Jika program ditulis dengan cara yang naif, maka hilangnya unit komputasi atau beberapa pesan dapat menyebabkan seluruh rangkaian komputer hang.

Dalam pemrograman terdistribusi, satu proses bisa menjadi proses pengendalian, pada dasarnya menyelesaikan pekerjaan oleh proses lain, atau, semua proses dapat bekerja secara peer-to-peer tanpa proses menjadi “master”. Beberapa contoh masalah yang dicoba dengan pemrograman terdistribusi termasuk menganalisis data geologi untuk sumber daya seperti minyak bumi, pemodelan protein dan molekul biologis, pemecahan pesan kode, dan simulasi militer. Proyek SETI untuk mencari kehidupan di luar bumi yang cerdas dari pesan radio yang diterima oleh Bumi mungkin adalah salah satu contoh paling terkenal.