Sistem Terdistribusi

Assalamu’alaykum,

Nilai matakuliah SisTer ini dapat dilihat di http://sister.ijcst.id/NPM_Anda/. Tanggapan alias konfirmasi terhadap nilai ini hanya akan diproses sebelum Selasa (09 07 2019) jam 10.00.

Terima Kasih

———————————————————————————-

TIK-604 adalah kuliah pengantar Sistem Terdistribusi (SisTer). 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 anda (Mahasiswa) 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 (penggandaan data dan aplikasi), konsistensi dan toleransi kegagalan. Jadi, anda 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.

Anda 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 anda akan memahami secara lebih konkrit apa dan bagaimana SisTer bekerja.

Adakah tugas pengembangan perangkat lunak pada matakuliah ini? ADA, hanya sampai tahapan perancangan sistem, penulisan kode program hanya sebagai nilai tambah.

Jadwal Kuliah (Tentatif):

Pekan Tanggal Topik Bentuk Keterangan
1. 11-13/Feb/19 Pengantar Perkuliahan Kuliah
 2. Prinsip Jaringan Komputer Kuliah
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.

Kuliah
4. Arsitektur Sistem Terdistribusi Kuliah
 5. Penamaan (Naming)

Distributed Hash Tables (DHT)

Mengenal Blockchain

Kuliah
6. Sinkronisasi Kuliah
7. Sinkronisasi (Lanj.): MuTex Kuliah
Ujian Tengah Semester (UTS) Ujian
8. Message Passing Interface (MPI) Kuliah
9. Caching (Replikasi Sisi Client) Kuliah
10. Replikasi   Kuliah
11. Toleransi Kegagalan Kuliah
12. Konsep Web Service Kuliah
13. Pemrograman RESTful API WS Kuliah
 14. Basis Data Terdistribusi Kuliah
 Ujian Akhir Semester (UAS) Ujian

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 Anda pada area sistem terdistribusi. Anda 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 Anda 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:

  • Mahasiswa akan memahami konsep inti dari sistem terdistribusi, yaitu bagaimana agar beberapa mesin dapat diatur dengan benar untuk memecahkan masalah yang kompleks secara efisien, andal dan terukur (scalable).
  • Mahasiswa 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

Mahasiswa akan mempelajari konsep inti yang menyusun sistem terdistribusi. Anda 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, mahasiswa akan mempelajari konsep berikut:

  • Transparansi Akses & Lokasi
  • Paralelisasi Tugas
  • Toleransi kesalahan/Kegagalan

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 Anda menjelajahi informasi yang tersebar di wilayah geografis yang luas. Dalam kuliah ini, mahasiswa akan mengkaji bagaimana mengabstraksikan data dan lokasi mesin (yang mungkin berada pada tempat fisik yang berbeda) serta replikasi data dan mesin tersebut.

Secara khusus, mahasiswa akan mempelajari topik berikut:

  • Proses dan Komunikasi: mahasiswa akan menjelaskan dan membandingkan mekanisme komunikasi antara proses dan sistem yang berbeda.
  • Penamaan: mahasiswa 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, mahasiswa akan mempelajari topik berikut:

  • Concurrency and Synchronization: Mahasiswa akan mengidentifikasi masalah tentang bagaimana mengkoordinasikan dan menyinkronkan banyak tugas dalam sistem terdistribusi.
  • Caching, Replikasi dan Konsistensi: Mahasiswa 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. Mahasiswa akan belajar bagaimana menghindari dan pulih dari kegagalan parsial, sebuah konsep yang disebut sebagai fault-tolerance.

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

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

  • Kerangka Terdistribusi: Mahasiswa 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: Mahasiswa 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: Mahasiswa 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 gratis dan sudah diupload ke situs web kuliah. 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 Mahasiswa 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 (mahasiswa) 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
  5. 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. Kami juga akan membaca bab buku (ditulis oleh Instruktur), tutorial, dan makalah penelitian mengenai topik yang dibahas.

Organisasi Kuliah

Partisipasi mahasiswa dalam kuliah ini akan melibatkan lima bentuk kegiatan:

  • Menghadiri kuliah dan bimbingan/arahan/turorial (jika diperlukan)
  • Menyelesaikan tugas personal (termasuk tugas menulis dan membaca)
  • Menyelesaikan tugas kelompok: biasanya berupa proyek khusus
  • Mengikuti ujian (UTS dan UAS) dan kuis (jika dilaksanakan)
  • Berpartisipasi dalam diskusi kelas

Penilaian

Metode Penugasan dan Penilaian Kelas Akhir

Setiap mahasiswa akan menerima nilai numerik dan nilai huruf yang bersesuaian, berdasarkan rata-rata berbobot sebagai berikut:

  1. Tugas Kelompok:
  1. Perancangan Aplikasi Terdistribusi

Proyek akan dihitung total 40% dari nilai akhir Anda. Akan ada 1 proyek sepanjang kuliah ini yaitu mengajukan gagasan berupa rancangan suatu sistem terdistribusi sederhana. Proyek tersebut dikerjakan secara kelompok yang terdiri 3 sampai dengan 4 mahasiswa. Setiap kelompok harus membuat desain aplikasi terdistribusi sederhana dan tidak DIBOLEHKAN dua atau lebih tim mengerjakan proyek yang sama.

Anda dianjurkan untuk menyerahkan proyek tepat waktu. Deadline awal pengumpulan semua hasil proyek (berupa paper / makalah) adalah Rabu, 15 Mei 2019 jam 23:59. Presentasi dari proyek tersebut dapat dilakukan setelahnya dan tidak lebih dari jadwal UAS. Keterlambatan pengumpulan hasil proyek akan dikenakan pengurangan nilai. Keterlambatan sehari mendapatkan diskon nilai proyek 25%, keterlambatan 2 hari mendapatkan potongan nilai 50%. Keterlambatan lebih dari 2 hari, maka kelompok anda dianggap tidak mengerjakan proyek, nilai 0.

Ingat, nilai proyek ini adalah 40% dari total nilai akhir anda!

  1. Membaca, Merangkum dan Presentasi

Setiap kelompok akan mendapatkan tugas untuk membaca dan memahami topik tertentu di bidang Sistem Terdistribusi.  Salah satu contohnya adalah mengkaji makalah tentang Arsitektur aplikasi terintegrasi. Hasil kajian ditulis dan dipresentasikan.

Nilai tugas ini dapat mencapai 20%.

  1. Ujian:

Akan ada dua ujian di kelas: tengah dan akhir semester – yang akumulasinya akan mempengaruhi 40% dari nilai akhir Anda. Nilai UTS berbobot 20%, demikian pula nilai UAS. Kedua ujian itu bersifat buku terbuka. Artinya, Anda diperbolehkan membawa buku teks, slide, dan dokumen pendukung Anda sendiri. Setiap peralatan elektronik tidak diperbolehkan.

  1. Kuis:

Tidak ada kuis di tahun 2019!

  1. Partisipasi dan Kehadiran Kelas Resitasi:

Kehadiran Anda di kelas tidak mempengaruhi nilai akhir. Namun, sesuai peraturan yang berlaku, anda diwajibkan hadir setidaknya 80% agar nama Anda ada di dalam presensi UAS dan berhak mendapatkan nilai akhir. Ketidakhadiran lebih 20% mengakibatkan nama Anda tidak muncul pada sistem pengisian nilai (SIAKAD).

Keaktifan di kelas, terutama keterlibatan dalam diskusi topik tertentu yang dipresentasikan oleh kelompok lain mendapatkan Apresiasi 10% dari total nilai akhir anda.

4 poin di atas mempengaruhi nilai anda secara kasat mata. Namun, faktor moral & etika dapat menghanguskan semua nilai anda tersebut. Mencontek saat ujian, merokok di ruang kelas, berpakaian tidak pantas, ucapan atau sikap tidak sopan, melakukan plagiasi berat, dan ketidajujuran dalam melaksanakan tugas dan proyek merupakan contoh perbuatan yang dapat mengakibatkan nilai akhir E sebagai hasil anda mengambil mata kuliah ini.

Sebagai rangkuman, tabel di bawah menunjukkan rincian dari lima bentuk kegiatan yang terjadi dalam kuliah ini, di samping kuantitas dan bobot keseluruhan setiap aktivitas. Perhatikan bahwa perbedaan kecil dalam skor dapat membuat perbedaan antara dua nilai huruf. Nilai huruf akan ditentukan berdasarkan standar absolut. Total skor akan diplot sebagai histogram. Poin akhir ditentukan dengan memeriksa kualitas karya mahasiswa di garis batas. Kasus individu, terutama yang dekat dengan titik potong dapat disesuaikan ke atas atau ke bawah berdasarkan faktor-faktor seperti kehadiran, partisipasi kelas, peningkatan yang diamati sepanjang kuliah, kinerja ujian, dan keadaan khusus.

Tipe # Bobot
Proyek + Kajian Topik (kelompok) 1 60%
Ujian *UTS, UAS) 2 40%
Tugas Personal 0
Kuis 0
Kehadiran dan Partisipasi di Kelas/Bimbingan/Tutorial 14 10%

 

Kecurangan

Setiap proyek atau tugas harus menjadi karya unik dari mahasiswa yang mengambil kuliah ini. Proyek dan tugas akan dipantau secara ketat, dan mahasiswa diminta untuk menjelaskan persamaan yang mencurigakan dengan tulisan atau potongan kode yang ada. Berikut ini adalah panduan tentang kecurangan dan tidak:

Apa itu kecurangan?

  1. Berbagi kode atau file elektronik lainnya: baik dengan menyalin, mengetik ulang, melihat, atau menyediakan salinan file.
  2. Berbagi tugas tertulis: baik dengan menulis ulang, melihat, atau menyediakan salinan tugas.

Apa yang TIDAK curang?

  1. Mengklarifikasi ambiguitas atau poin yang samar di handout kuliah.
  2. Membantu orang lain menggunakan sistem komputer, jaringan, kompiler, debugger, profiler, atau fasilitas sistem lainnya.
  3. Membantu orang lain dengan masalah desain tingkat tinggi, tidak rinci dan sangat teknis.
  4. Membantu orang lain men-debug kode mereka.

Konsekuensinya, sadarilah apa yang dikatakan kecurangan (dan apa yang tidak) saat berinteraksi dengan mahasiswa lain yang menjadi kolega Anda (teman kelompok). Aturan kecurangan yang sama seperti di atas berlaku saat berkolaborasi dengan mahasiswa lain. Singkatnya, Anda tidak dapat berbagi tugas tertulis, kode, atau file elektronik lainnya dengan mahasiswa lain. Jika Anda tidak yakin, tanyakan pada staf pengajar (Dosen pengampu). Akhirnya, pastikan untuk menyimpan karya Anda di direktori yang terlindungi. Hukuman untuk kecurangan itu berat, dan dapat membahayakan seluruh karir Anda sebagai mahasiswa. Kecurangan tidak diperlukan untuk menyelesaikan masalah yang dihadapi. Dengan menipu dalam kuliah ini, Anda menipu diri sendiri; hasil terburuk dari kecurangan adalah kehilangan kesempatan untuk belajar di UTM. Selain itu, Anda akan dikeluarkan dari kuliah dan dianggap gagal (diberi nilai E). Kami juga mencatatkan kejadian tersebut dalam profil Anda, sebagai catatan saat rapat kelulusan nanti (Yudisium).

Deskripsi dan Silabus Matakuliah (halaman ini) harus dipahami dengan sebaik-baiknya.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

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