Mata Kuliah Sistem Terdistribusi, Apa sih Isinya?


Di Universitas Trunojoyo Madura (UTM), Mata kuliah “pengantar” Sistem Terdistribusi (SisTer) mempunyai kode TIK-604. Artinya disediakan untuk Kita Semester 6. Penekanannya adalah pada teknik atau konsep fundamental untuk mewujudkan suatu sistem terdistribusi yang berfungsi, bermanfaat, dan berkinerja tinggi. Matakuliah SisTer ini hanya mempunyai satu tujuan utama, yaitu Kita (Kita) memperoleh pemahaman mengenai prinsip dan paradigma yang mendasari Sistem Terdistribusi, seperti Komunikasi antar entitas dalam dan antar jaringan, konkurensi (kebersamaan), sinkronisasi (penyelerasan), replikasi dan caching (penggKitaan data dan aplikasi), konsistensi dan toleransi kegagalan. Jadi, Kita harus betul-betul memahami konsep atau cara kerja dari SisTer. Terdengar Abstrak? Tidak juga, beberapa contoh akan memudahkan kita mendiskusikan konsep-konsep klasik dan modern di bidang yang sedang sangat dibutuhkan ini.

Kita dianjurkan mengambil mata kuliah “Pengembangan Aplikasi Terdistribusi” (PAD) pada semester depan (semester 7). Matakuliah PAD berisi sedikit konsep, panduan pengembangan aplikasi modern, penjelasan mengenai berbagai perangkat yang harus digunakan untuk menyelesaikan satu atau dua proyek aplikasi terdistribusi yang membutuhkan rancangan dan implementasi dari konsep yang dibahas pada Semester 6 (Matakuliah SisTer). Saat menempuh dan menyelesaikan PAD Kita akan memahami secara lebih konkrit apa dan bagaimana SisTer bekerja.

Tujuan

Sistem terdistribusi menggabungkan kekuatan komputasi beberapa komputer untuk memecahkan masalah yang kompleks. Komputer tunggal dalam sistem terdistribusi biasanya tersebar di wilayah geografis yang luas, dan memiliki arsitektur dan sistem operasi yang heterogen. Oleh karena itu, tantangan penting dalam sistem terdistribusi adalah merancang model sistem, algoritma dan protokol yang memungkinkan komputer mengkomunikasikan dan mengkoordinasikan tindakan mereka melalui komputer jaringan heterogen sehingga dapat memecahkan masalah berskala besar.

Tujuan kita dalam kuliah ini adalah mengenalkan Kita pada area sistem terdistribusi. Kita akan memeriksa dan menganalisis bagaimana satu set komputer berjejaring dapat membentuk sistem terdistribusi fungsional, berguna dan berkinerja tinggi.

Kuliah ini memiliki tiga tujuan, yaitu:

  • Mempelajari prinsip, arsitektur, algoritma dan model pemrograman yang digunakan dalam membangun sistem terdistribusi.
  • Memahami bagaimana sistem terdistribusi mutakhir bekerja, seperti Google File System.
  • Memberikan gagasan dan merancang suatu sistem terdistribusi skala kecil/menengah.

Melalui tujuan ini, tentu saja akan mengubah pemikiran komputasi Kita dari merancang aplikasi untuk satu komputer, untuk merancang aplikasi terdistribusi yang berjalan di komputer berjejaring.

Capaian Pembelajaran:

Kuliah ini mencakup dua capaian hasil belajar utama:

  • Kita akan memahami konsep inti dari sistem terdistribusi, yaitu bagaimana agar beberapa mesin dapat diatur dengan benar untuk memecahkan masalah yang kompleks secara efisien, Kital dan terukur (scalable).
  • Kita akan menjelaskan bagaimana cara kerja dan kinerja dari sistem yang telah menerapkan konsep inti dari sistem terdistribusi, dan selanjutnya akan menerapkan konsep semacam itu dalam perancangan aplikasi terdistribusi (memberikan contoh).

Memahami Konsep Inti Sistem Terdistribusi

Kita akan mempelajari konsep inti yang menyusun sistem terdistribusi. Kita akan mengenali kendala sistem, trade-off dan teknik yang tepat untuk membangun sistem terdistribusi yang paling sesuai dengan kebutuhan komputasi kelas aplikasi yang berbeda. Secara khusus, Kita akan mempelajari konsep berikut:

  • Transparansi Akses & Lokasi
  • Paralelisasi Tugas
  • Toleransi kesalahan

Transparansi Akses & Lokasi

Mengekspos kemampuan mesin, namun menyembunyikan detailnya adalah salah satu langkah awal dalam merancang sistem terdistribusi. Sistem semacam itu menembus bisnis dan masyarakat yang secara transparan mempengaruhi kekuatan mereka. Misalnya, di Internet, yang merupakan sistem terdistribusi yang sukses, antarmuka web browser (peramban) yang sederhana akan memungkinkan Kita menjelajahi informasi yang tersebar di wilayah geografis yang luas. Dalam kuliah ini, Kita akan mengkaji bagaimana mengabstraksikan data dan lokasi mesin (yang mungkin berada pada tempat fisik yang berbeda) serta replikasi data dan mesin tersebut.

Secara khusus, Kita akan mempelajari topik berikut:

  • Proses dan Komunikasi: Kita akan menjelaskan dan membandingkan mekanisme komunikasi antara proses dan sistem yang berbeda.
  • Penamaan: Kita akan mengidentifikasi mengapa entitas dan sumber daya dalam sistem terdistribusi diberi nama, dan memeriksa konvensi penamaan serta beberapa mekanisme penyelesaian penamaan.

Paralelisasi Tugas

Algoritma tradisional yang bekerja pada prosesor tunggal sudah tidak efisien – atau bahkan gagal bekerja – dalam sistem di mana beberapa mesin bekerja secara paralel. Dalam sistem terdistribusi, masalah / pekerjaan dapat diselesaikan dengan menggunakan paralelisasi. Umumnya pekerjaan dibagi menjadi beberapa tugas, dan semua tugas dijalankan secara paralel pada mesin yang berbeda. Tugas dapat mengakses sumber daya umum, seperti data yang terdapat dalam file bersama. Akibatnya, dua tantangan utama muncul. Pertama, kita harus memastikan bahwa tugas yang berjalan bersamaan dikoordinasikan dan disinkronkan dengan cara yang benar untuk mencapai tujuan pekerjaan. Kedua, kita berpotensi mereplikasi (menggandakan) dan menempatkan sumber daya di banyak komputer dengan cara yang memungkinkan tugas-tugas mengaksesnya dengan lebih efektif.

Secara khusus, Kita akan mempelajari topik berikut:

  • Concurrency and Synchronization: Kita akan mengidentifikasi masalah tentang bagaimana mengkoordinasikan dan menyinkronkan banyak tugas dalam sistem terdistribusi.
  • Caching, Replikasi dan Konsistensi: Kita akan mengerti bagaimana replikasi dan caching sumber daya dapat mengoptimalkan kinerja dan skalabilitas, serta menganalisis berbagai model yang memungkinkan konsistensi data yang direplikasi dan di-cache.

Toleransi Kegagalan (Fault-tolerance)

Dalam sistem terdistribusi, kegagalan satu atau sebagian komputer (atau yang dikenal sebagai kegagalan parsial) sangat mungkin terjadi. Jika kegagalan tersebut tidak dapat ditolerir, keseluruhan sistem mungkin akan terhenti atau mengakibatkan perilaku acak dan tidak dapat diprediksi. Kita akan belajar bagaimana menghindari dan pulih dari kegagalan parsial, sebuah konsep yang disebut sebagai fault-tolerance.

Penerapan Praktis Sistem Terdistribusi State-of-the-Art:

Kita juga akan belajar bagaimana menerapkan prinsip-prinsip sistem terdistribusi di lingkungan dunia nyata. Secara khusus, mereka akan mempelajari topik berikut:

  • Kerangka Terdistribusi: Kita akan mempelajari beberapa kerangka kerja terdistribusi seperti MapReduce, GraphLab dan Pregel. Kerangka terdistribusi ini memungkinkan pengembang untuk dengan mudah memprogram masalah / algoritma terdistribusi, sambil memastikan kebenaran, toleransi kesalahan dan efisiensi.
  • Distributed File Systems: Kita akan belajar bagaimana sebuah file dapat di(striped) dan ditempatkan di manapun dalam sistem terdistribusi (atau yang disebut sebagai sistem berkas terdistribusi), namun dapat diakses secara transparan-seolah-olah itu adalah file lokal. Mereka akan memeriksa bagaimana menerapkan prinsip sistem terdistribusi untuk memastikan transparansi, konsistensi dan toleransi kesalahan pada sistem file terdistribusi.
  • Virtualisasi: Kita akan mempelajari konsep virtualisasi sistem, di mana keadaan (state) komputer diabstrakkan dari perangkat keras yang mendasarinya. Hal ini memungkinkan penopengan (masking) mesin heterogen yang menyusun sistem terdistribusi, selain meningkatkan pemanfaatan dan keamanan sistem secara keseluruhan.

Buku Teks

Buku Teks utama untuk kuliah ini adalah

  1. Andrew S. Tannenbaum dan Maarten Van Steen (2007) Distributed Systems: Principles and Paradigms, 2nd Edition, Pearson Education. Khusus kuliah ini lebih baik menggunakan buku edisi ke-3 (terbitan Maret 2017) yang tersedia dan dapat didownload secara gratis. Ringkasan dari buku ini dapat dibaca terlebih dahulu.
  2. George Coulouris, Jean Dollimore, Tim Kindberg, dan Gordon Blair (2012) Distributed Systems: Concepts and Design, 5th  Edition, Addison Wesley.

Dua buku di atas sudah menjadi buku pegangan wajib bagi Dosen dan Kita yang ingin serius mempelajari pengembangan sistem terdistribusi baik hardware maupun software. Namun, bagi pemula, terutama di Indonesia, kedua buku tersebut memerlukan waktu yang banyak untuk menyelesaikan membaca semua isinya. Selain itu, sisi praktis dari pemrograman aplikasi terdistribusi tidak mendapatkan porsi memadai di dalamnya. Sebagai alternatif, kami menganjurkan Anda (Kita) untuk setidaknya membaca dua buku pertama di bawah ini:

  1. Ludwik Czaja (2018) Introduction to Distributed Computer Systems Principles and Features, Springer International Publishing AG
  2. Raja Malleswara dan Rao Pattamsetti (2017) Distributed Computing in Java 9, Packt Publishing
  3. Jan Graba (2013) An Introduction to Network Programming with Java, Java 7 Compatible, 3rd Edition, Springer-Verlag London
  4. Faruque Sarker dan Sam Washington (2015) Learning Python Network Programming, Packt Publishing
  1. Jobinesh Purushothaman (2015) RESTful Java Web Services, 2nd Edition, Packt Publishing

JTIF UTM memiliki beberapa buku referensi di perpustakaan yang mencakup sebagian besar topik kuliah ini. Sebaiknya Kita juga membaca bab buku, tutorial, dan makalah penelitian mengenai topik yang dibahas.

Jika dibagi ke dalam 14 tatap muka di kelas, tabel berikut dapat dijadikan acuan mengenai topik yang sebaiknya dibahas:

Pekan Topik
1. Pengantar Perkuliahan
 2. Prinsip Jaringan Komputer
3. Remote Procedure Calls

Contoh Pemrograman RPC & RMI: RPC (Socket) di Java, RMI di Java, RPC dengan gRPC.

Pemrograman Socket Rinci:

Pemrograman Multithreaded,

Pemrograman Socket Multithreaded,

Pemrograman Client,

Pemrograman Server.

4. Arsitektur Sistem Terdistribusi

 Mengenal Bitcoin dan Blockchain

 5. Penamaan (Naming)
6. Sinkronisasi

Blockchain dan Paxos

7. Sinkronisasi (Lanjutan)
Ujian Tengah Semester (UTS)
8. Message Passing Interface (MPI)
9. Caching (Replikasi Sisi Client)
10. Caching (Lanjutan)
11. Replikasi
12. Toleransi Kegagalan
13. Konsep Web Service
 14. Pemrograman RESTful API WS
 Ujian Akhir Semester (UAS)

Semoga penjelasan di atas membuka wawasan tentang Sistem Terdistribusi dan menjadi acuan awal dalam belajar topik penting di abad Disruptive sekarang ini.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.