Back to IF3130 Sistem Paralel dan Terdistribusi

Arsitektur, Prinsip Desain, dan Skalabilitas ST

Questions/Cues

  • Mengapa kita butuh ST?

  • Apa itu Inherent Distribution?

  • Apa itu Distribusi sebagai Artifak?

  • Apa tantangan utama (kesulitan) ST?

  • Apa itu Middleware?

  • Apa 4 goals utama desain ST?

  • Apa itu Distribution Transparency?

  • Sebutkan jenis-jenis transparansi!

  • Apa itu Openness?

  • Apa itu Scalability (Skalabilitas)?

  • Apa 3 dimensi Skalabilitas?

  • Apa saja teknik skalabilitas?

  • Teknik: Hiding Latency?

  • Teknik: Distribution?

  • Teknik: Replication/Caching?

Reference Points

  • Slides 23-33

Mengapa Membangun Sistem Terdistribusi?

Ada dua alasan utama:

  1. Inherent Distribution (Distribusi Alami): Aplikasinya secara alami memang membutuhkan penyebaran informasi atau pembagian sumber daya antar entitas yang tersebar secara geografis.

    • Contoh: ATM (bank di lokasi beda-beda), sistem reservasi tiket, World Wide Web (WWW), game online.
  2. Distribusi sebagai Artifak (Alat): Distribusi digunakan sebagai “alat” untuk solusi masalah tertentu, meskipun masalahnya sendiri awalnya tidak terdistribusi.

    • Contoh: Replicated servers (server yang digandakan) digunakan untuk mencapai fault tolerance (jika satu server mati, yang lain mengambil alih) atau untuk meningkatkan performance/cost ratio dan QoS (Quality of Service).

Tantangan Utama (Mengapa Sulit?)

Tiga hal utama yang membuat sistem terdistribusi sulit dirancang:

  1. Konkurensi: Banyak hal terjadi bersamaan. Perlu penanganan khusus untuk akses bersama ke sumber daya (data, file) agar tetap konsisten.

  2. Sinkronisasi: Karena tidak ada global clock, mengoordinasikan waktu dan urutan kejadian antar komputer yang berbeda itu sangat sulit.

  3. Failures: Komponen (komputer, jaringan) bisa gagal kapan saja secara independen. Sistem harus bisa mendeteksi dan pulih dari kegagalan ini.

Arsitektur: Middleware

  • Banyak sistem terdistribusi modern menggunakan lapisan (layer) perangkat lunak yang disebut Middleware.

  • Posisinya berada di antara Local OS (Sistem Operasi lokal di tiap komputer) dan Aplikasi.

  • Tujuannya adalah untuk menyembunyikan kompleksitas dan heterogenitas (perbedaan) dari sistem terdistribusi. Middleware menyediakan tampilan yang seragam dan konsisten bagi aplikasi, seolah-olah semuanya berjalan di satu mesin.

  • Contoh arsitektur modern adalah Kubernetes Cluster, yang mengabstraksi Control Plane (manajemen) dan Compute Machines (tempat aplikasi/container berjalan).

Goals (Tujuan) Desain Sistem Terdistribusi

Ada empat tujuan utama saat mendesain ST:

  1. Making resources available (Membuat sumber daya tersedia/dapat diakses)

  2. Distribution Transparency (Transparansi Distribusi)

  3. Openness (Keterbukaan)

  4. Scalability (Skalabilitas)

Desain Goal: Distribution Transparency

Tujuan: Menyembunyikan fakta bahwa proses dan sumber daya sebenarnya tersebar di banyak komputer. Sistem harus terlihat satu dan utuh bagi pengguna.

Jenis-jenis TransparansiDetail
AccessMenyembunyikan perbedaan representasi data dan cara pemanggilan (misal: beda OS, beda bahasa)
LocationMenyembunyikan di mana sebuah objek (data/layanan) berada
MigrationMenyembunyikan fakta bahwa sistem bisa memindahkan objek ke lokasi lain saat sedang digunakan
RelocationMirip migration, tapi menyembunyikan dari client bahwa lokasi objek telah berubah
ReplicationMenyembunyikan fakta bahwa sebuah data/layanan digandakan (direplikasi) di banyak lokasi
ConcurrencyMenyembunyikan fakta bahwa banyak pengguna lain mungkin sedang mengakses objek yang sama secara bersamaan
FailureMenyembunyikan kegagalan dan proses pemulihan (recovery) dari sebuah objek

Peringatan: Transparansi penuh itu berlebihan dan seringkali tidak mungkin (misal: menyembunyikan kegagalan total) dan bisa mengorbankan kinerja.

Desain Goal: Openness (Keterbukaan)

  • Tujuan: Sistem harus conform (patuh) pada interface (antarmuka) yang terdefinisi dengan baik.

  • Ini memungkinkan sistem untuk:

    • Portability: Mudah dipindahkan.

    • Interoperability: Mudah dihubungkan/berinteraksi dengan sistem lain.

  • Intinya adalah membuat sistem independen terhadap heterogenitas (perbedaan) hardware, platform (OS), dan bahasa pemrograman.

Desain Goal: Scalability (Skalabilitas)

  • Tujuan: Sistem harus tetap efisien dan berkinerja baik meskipun terjadi peningkatan beban yang signifikan.

  • Tiga Dimensi Skalabilitas:

    1. Size Scalability: Kemampuan menangani penambahan jumlah pengguna atau proses.

    2. Geographical Scalability: Kemampuan untuk tetap berfungsi baik meskipun jarak maksimal antar node sangat jauh (misalnya, antar benua).

    3. Administrative Scalability: Kemampuan untuk tetap mudah dikelola meskipun berada di bawah banyak domain administratif yang berbeda (misal: beda perusahaan, beda departemen).

Teknik-Teknik Skalabilitas

  1. Hide Communication Latency (Menyembunyikan Latensi):

    • Gunakan komunikasi asinkron. Pengirim tidak perlu menunggu balasan dan bisa lanjut bekerja.

    • Gunakan handler terpisah untuk memproses balasan yang datang nanti.

  2. Distribution (Distribusi):

    • Partisi data dan komputasi: Pecah data dan pekerjaan ke banyak mesin.

    • Pindahkan komputasi ke client (misal: JavaScript di browser, applet).

    • Contoh data terdesentralisasi: DNS (Domain Name System).

  3. Replication / Caching (Replikasi / Caching):

    • Gandakan data/layanan di banyak lokasi (replicated file servers).

    • Gunakan cache untuk menyimpan salinan data yang sering diakses lebih dekat ke pengguna (web cache, file cache).

Summary

Sistem terdistribusi dibangun karena kebutuhan alami (inherent) atau sebagai alat (artifact) untuk mencapai fault tolerance dan kinerja, namun memiliki tantangan konkurensi, sinkronisasi, dan failure. Arsitektur modern seperti middleware bertujuan untuk mencapai Openness (keterbukaan/interoperabilitas) dan Distribution Transparency (menyembunyikan kompleksitas). Tujuan utamanya adalah Scalability, yang dicapai melalui tiga teknik utama: hiding latency (komunikasi asinkron), distribution (partisi data), dan replication/caching (menggandakan data).