MAKALAH SISTEM KOMPUTASI GRID
Disusun Oleh: Agus Khumaidi 2215205204
JARINGAN CERDAS MULTIMEDIA FAKULTAS TEKNIK ELEKTRO INSTITUT TEKNOLOGI SEPULUH NOPEMBER
2016
1. Topik Pembahasan: Tugas: Buatlah makalah pendek tentang sejenis layanan GRID yang bersifat komersial dengan struktur layanan yang cukup rumit seperti contoh Microsoft Azure untuk Machine Learning platform Topik yang akan dibahas pada makalah ini adalah: Layanan Basis Data Real-Time NoSQL (Firebase dan CouchDB) untuk Kolaborasi Web Audio Editor.
2. Tinjauan Pustaka A. Komputasi Grid Komputasi Grid adalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar[1]. Komputasi grid memungkinkan organisasi virtual (virtual organization) untuk menggunakan secara bersama sumber daya yang tersebar secara geografis dengan berasumsi ketidakhadiran dari lokasi terpusat, kontrol terpusat, pengetahuan menyeluruh terhadap sumber daya dan hubungan kepercayaan. Organisasi virtual dapat meliputi suatu departemen dari suatu perusahaan yang berada pada satu lokasi yang sama sampai dengan kumpulan besar orang-orang dari berbagai organisasi yang tersebar diberbagai belahan bumi. Komputasi grid memiliki tiga karakteristik penting yaitu [2]:
1. Pemakaian bersama sumber daya yang terkoordinasi (setara) yang tidak berada di bawah suatu kendali terpusat.
2. Menggunakan protokol-protokol dan interface yang standar, terbuka dan serbaguna. 3. Dapat memberikan kualitas layanan (QoS) yang tinggi.
Pokok pertama berasal dari sifat alami grid dimana pemakai dan sumber daya berada pada daerah administrasi yang berbeda. Pokok kedua adalah penting untuk membangun secara dinamis susunan/struktur pemakaian bersama sumber daya dengan orang/kelompok apa saja yang saling berkepentingan dan memungkinkan penyediaan pelayanan dan fungsi serba-guna. Pokok ketiga berhubungan dengan penyediaan jumlah kemampuan komputasi sehingga besarnya utilitas dari sistem perpaduan adalah cukup berarti dibandingkan dengan utilitas dari komponen penyusunnya. Pemakaian bersama sumber daya yang tersebar diberbagai tempat terpisah yang diatur di bawah administrasi yang berbeda adalah bukan masalah yang mudah. Permasalahanpermasalahan yang harus dijawab dalam melaksanakan pemakaian bersama tersebut misalnya, bagaimana cara memilih sumber daya komputasi yang diinginkan? untuk berapa lama sumber daya tersebut dapat digunakan? siapa yang dapat menggunakan sumber daya tersebut? bagaimana cara komunikasi antar sumber daya? dan lain sebagainya. Komputasi grid memungkinkan kita untuk mengakses berbagai jenis sumber daya dari berbagai jenis organisasi dengan cara menyediakan protokol, teknologi dan metodologi yang dapat menjawab semua pertanyaanpertanyaan diatas.
B. FireBase Firebase adalah penyedia layanan cloud dengan backend sebagai servis yang berbasis di San Fransisco, California. Perusahaan ini membuat sejumlah produk untuk pengembangan aplikasi mobile ataupun web. Firebase di dirikan oleh Andrew Lee dan James Tamplin pada tahun 2011 dan diluncurkan dengan cloud database secara realtime di tahun 2012. Produk utama dari Firebase yakni suatu database yang menyediakan API untuk memungkinkan pengembang menyimpan dan mensinkronisasi data lewat multiple client. Perusahaan ini diakusisi oleh Google pada Oktober 2014. Firebase adalah layanan yang memungkinkan pengembang membuat API untuk disinkronisasikan untuk client yang berbeda – beda dan disimpan pada cloudnya Firebase.
Firebase
memiliki
banyak
library
yang
memungkinkan
untuk
mengintegrasikan layanan ini dengan Android, iOS, Javascript, Java, Objective-C dan
Node.JS. Database Firebase juga bersifat bisa diakses lewat REST API dan data binding untuk beberapa framework Javascript seperti halnya AngularJS, ReactJS, Ember.JS, dan Backbone.JS. REST API tersebut menggunakan protokol Server-Sent Event dengan membuat koneksi HTTP untuk menerima push notification dari server. Pengembang juga bisa menggunakan database ini untuk mengamankan data mereka menggunakan server Firebase dengan rules yang ada. Saat ini Firebase menyediakan beberapa jasa. Berikut jasa –jasa yang disediakan oleh Firebase[3] : 1. Firebase Analytics Aplikasi solusi pengukur yang menyediakan insight pengunaan applikasi dan user engangement.
2. Firebase Cloud Messaging Sebelumnya dikenal sebagai GCM (Google Cloud Messaging), FCM (Firebase Cloud Messaging) adalah solusi untuk membuat developer mengirimkan dan menerima pesan dan notifikasi tanpa cost secara cross platform dan dapat diandalkan.
3. Firebase Auth Jasa yang dapat mengautentikasi pengguna. Fitur ini didukung dengan login beberapa sosial media terkenal seperti Facebook, Github, Twitter, dan Google. Sebagai tambahan juga terdapat sistem manajemen user dimana pengguna dapat mengaktifkan autentifikasi dengan email dan password yang tersimpan di Firebase.
4. Realtime Database Firebase menyediakan database realtime dan backendnya sebagai fitur. Fiturnya meliputi API yang memperbolehkan data aplikasi dapat di sinkronisasikan antar klien dan tersimpan dalam Firebase cloud. Firebase menyediakan library yang memperbolehkan integrasi dengan aplikasi Android, iOS, JavaScript, Java, ObjectiveC and Node.js. Database juga dapat diakses melalui REST API dan binding untuk beberapa framework JavaScript seperti AngularJS, React, Ember.js and Backbone.js. REST API menggunakan Server-Sent Events protocol, yang dimana merupakan API untuk membuat koneksi HTTP untuk menerima push notificationdari server.
5. Firebase Storage
Firebase Storage menyediakan keamanan upload file dan download, terlepas dari kuliatas jaringannya. Developer dapat menggunakan ini untuk menyimpan gambar, suara, video, atau konten pengguna lainnya. Firebase Storage di bantu oleh Google Cloud Storage, suatu jasa penyimpanan yang kuat, simpel , dan efektif biaya. 3. Pembahasan.
Sistem kerja Web Audio Editor
Kebutuhan informasi yang cepat, skala besar dan selalu tersedia membuat kemunculan jenis basis data yang lebih mengutamakan skalabilitas dan ketersediaan seperti NoSQL. Saat ini, salah satu basis data NoSQL yang sering digunakan adalah document-oriented NoSQL. Salah satu aplikasi yang perlu memanfaatkan data secara real-time adalah Web Audio Editor (WAE). Diperlukan API untuk dapat mengakses basis data secara realtime untuk mendukung kolaborasi online. Beberapa masalah pada aplikasi WAE antara lain perbandingan algoritma sinkronisasi terhadap kinerja aplikasi, penanganan konflik antar pengguna, dan penyimpanan state data saat pengguna offline. Firebase adalah salah satu layanan NoSQL cloud database yang dapat menyediakan data yang tersinkronisasi dengan semua klien secara real-time. Gambar 1 menunjukkan bagaimana firebase bekerja.
Gambar 1. Sistem database untuk Web Audio Editor.
CippyDB merupakan layanan basis data real-time berbentuk API yang dapat digunakan pengembang aplikasi untuk mengakses data pada CouchDB. Makalah ini juga mencakup perbandingan kinerja, dan pengujian API untuk aplikasi WAE. Basis data NoSQL sangat cocok untuk lingkungan yang terdistribusi. Database Management System (DBMS) yang berbasis NoSQL pun mulai bermunculan. NoSQL juga dikembangkan untuk menjadi solusi terhadap basis data yang menjamin konsistensi, availability, atau partition tolerance. NoSQL sendiri terdiri dari beberapa jenis seperti keyvalue, document-oriented, dan column-oriented. Setiap jenis memiliki kelebihan dan kekurangannya masing-masing. Jenis NoSQL yang sering digunakan adalah document-oriented. Terdapat beberapa DBMS yang populer di lingkungan open source seperti CouchDB dan MongoDB. DBMS CouchDB sudah menyediakan Application Programming Interface (API) yang menyediakan akses ke basis data untuk menulis, membaca, dan menghapus data. Kelebihan dari basis data CouchDB dapat melakukan pencarian data dengan metode Map Reduce sehingga waktu pencarian lebih singkat dan efektif. Layanan API mulai berkembang dari operasi sederhana tersebut menjadi layanan real-time yang dapat menangani sinkronisasi data antar klien. Firebase adalah salah satu layanan NoSQL cloud database yang dapat menyediakan data yang tersinkronisasi dengan semua klien secara real-time. Namun, sayangnya Firebase tidak open source sehingga pengembang aplikasi harus bergantung pada server Firebase. Dengan adanya layanan seperti ini, banyak aplikasi kolaboratif berbasis web yang muncul salah satunya adalah Web Audio Editor (WAE). Salah satu aplikasi sound editor web online adalah soundation.com, Gambar 2 menunjukkan tampilan editor dari halaman web.
Gambar 2. Sound editor pada soundation.com
WAE adalah salah satu audio editor berbasis web yang dapat membuat musik atau lagu dari browser dengan berkolaborasi bersama anggota lain atau teman [4]. WAE bersifat open source. WAE saat ini menggunakan basis data Firebase, CouchDB, ExpressJS di atas NodeJS pada sisi server, dan AngularJS pada sisi klien. Terdapat tiga komponen utama WAE yaitu Arrangement, Masalah yang masih terdapat pada aplikasi WAE antara lain kinerja sinkronisasi data, penanganan konflik dan penyimpanan data pada saat pengguna offline.
Algoritma Sinkronisasi
Dalam proses kolaborasi dokumen diperlukan algoritma sinkronisasi agar semua klien mendapatkan state yang sama pada setiap operasi. Dalam menyelesaikan masalah sinkronisasi ada beberapa algoritma yang dapat digunakan antara lain operational transformation, differential synchronization, dan continuous replication.
a. Algoritma Operational Transformation (OT). Algoritma ini adalah algoritma yang paling populer untuk membuat sebuah sistem kolaborasi pada dokumen. Pengguna dapat mengakses dan mengubah sebuah dokumen secara kolaboratif dengan pengguna lainnya pada waktu bersamaan [5]. Dengan algoritma OT, klien dan server dapat mencapai dokumen yang sama pada akhirnya dengan menyelesaikan operasi yang konflik sehingga konvergensinya terjamin. Meskipun demikian, algoritma lebih efektif untuk menangani dokumen berbentuk teks karena sifat transformasinya.
b. Algoritma Differential Synchronization (DS) Differential Syncrhonization (DS) adalah algoritma yang stabil dan cocok untuk aplikasi interaktif. Pada algortima ini, server dan klien mulai dengan versi yang sama dari dokumen. Keduanya lalu membuat salinan dari dokumen yang akan bertindak sebagai shadow document di klien maupun server [6].
c. Algoritma Continuous Replication Continuous replication adalah salah satu fitur yang disediakan oleh CouchDB. Replikasi artinya melakukan sinkronisasi dua salinan dari basis data yang sama sehingga pengguna dapat mempunyai akses dengan latensi rendah
terhadap data di mana mereka berada [7]. Basis data ini dapat berada pada server yang sama maupun server yang berbeda. Jika pengguna melakukan perubahan terhadap suatu salinan dari basis data, replikasi akan mengirim perubahan ini juga ke salinan yang lain.
Mekanisme Komunikasi Real-Time. Beberapa jenis metode komunikasi yang populer untuk mendukung komunikasi secara real-time adalah sebagai berikut. a. Mekanisme Websocket Komunikasi ini bersifat full-duplex atau dua arah, jadi dua pihak dapat mengirim pesan secara bersamaan. b. Mekanisme Long Polling Long polling adalah metode komunikasi yang mempunyai skenario klien melakukan permintaan informasi dari server dan membuaka koneksi selama selang waktu tertentu. Mekanisme ini tergolong sebagai mekanisme yang tradisional sehingga memakan banyak resource dan waktu sehingga tidak efektif.
Desain Sistem dan infrastruktur Aplikasi WAE menggunakan basis data CouchDB yang terhubung dengan server yang menggunakan framework ExpressJS dan berjalan di atas platform NodeJS. Pada saat klien membuka web, aplikasi akan mencoba melakukan koneksi web socket ke server NodeJS untuk mendapatkan data terbaru dari basis data. Representasi data yang digunakan dalam aplikasi hanya berupa key dari file tersebut dan offset posisi dari piece tersebut dalam format JSON. Sinkronisasi data dilakukan baik dalam sisi klien maupun server. Skema arsitektur WAE Skema arsitektur aplikasi Web Audio Editordapat dilihat pada gambar 3 berikut.
Gambar 3. Skema arsitektur aplikasi Web Audio Editor
Berdasarkan skema arsitektur tersebut dan layanan API real-time lain seperti Firebase, dibuatlah rancangan API yang dapat mendukung akses data secara real-time. Rancangan API secara garis besar dapat dilihat pada gambar dibawah ini.
Gambar 4. Rancangan API real-time Untuk menangani offline state, digunakan library PouchDB. PouchDB adalah library basis data dalam browser yang open-source untuk melakukan sinkronisasi dari klien dengan basis data CouchDB sehingga pengguna dapat menggunakan aplikasi meskipun dalam keadaan offline [7]. PouchDB menggunakan IndexedDB untuk menyimpan data pada klien secara lokal sehingga setiap perubahan pada data akan tetap tersimpan secara lokal pada klien. Dari ketiga algoritma sinkronisasi, hanya dipilih DS dan CR untuk percobaan ini karena OT lebih cocok untuk dokumen yang berbasiskan teks. Algoritma DS dan CR pada dasarnya berbeda karena CR membuat salinan secara menyeleluruh sedangkan DS hanya membuat salinan ke shadow saja
sehingga tidak dapat dikombinasikan. CR dapat dioptimasi agar kinerjanya lebih baik. Berdasarkan rancangan API dan arsitektur yang sudah ada, dibuatlah arsitktur solusi yang akan menunjukkan hubungan antara API dan arsitektur WAE yang sudah ada. API ini diberi nama CippyDB dan sudah dibungkus agar dapat digunakan untuk aplikasi real-time lainnya. Arsitektur umum sistem solusi dapat dilihat pada gambar berikut ini.
Gambar 5. Rancangan arsitektur umum solusi.
Berdasarkan gambar di atas, API CippyDB menggabungkan AngularJS dan PouchDB pada suatu node klien. Sehingga API ini tidak lagi membutuhkan server untuk sinkronisasi jika dibandingkan dengan arsitektur sebelumnya. Klien dapat langsung mengakses API ke basis data remote CouchDB secara langsung. Untuk menangani masalah konflik, dilakukan percabangan dokumen sehingga pengguna dapat memilih versi dokumen yang akan dilanjutkan jika terjadi konflik. Alur penanganan konflik secara umum dapat dilihat pada gambar berikut.
Gambar 5. Alur penanganan konflik Web Audio Editor
4. Kesimpulan
Layanan basis data real-time NoSQL dapat diimplementasikan dalam bentuk API untuk frontend sehingga dapat mengakses data yang tersinkronisasi antar semua klien. Dengan layanan ini, pengembang aplikasi dapat menggunakan backend yang generik sehingga dapat fokus mengembangkan fitur dan layanan ke end-user.
Layanan basis data dengan metode continuous replication yang dioptimalisasi dengan replication stream ini dapat meningkatkan kinerja sinkronisasi data antar klien sampai tiga kali lipat lebih cepat dibandingkan websocket dengan differential synchronization. Layanan ini memiliki kebutuhan resource yang lebih kecil untuk klien dan server. Layanan ini juga menangani konflik dengan melakukan percabangan dokumen. Aplikasi dengan layanan basis data ini dapat menyimpan state pengguna pada klien secara lokal sehingga ketika pengguna offline. Data pengeditan yang dilakukan saat offline tidak akan hilang dan akan disinkronisasikan saat kembali online.
Daftar Pustaka. [1] Komputasi Grid, Wikipedia Bahasa Indonesia, ensiklopedia bebas. From http://id.wikipedia.org/wiki/Komputasi_grid [2] FOSTER, I., “What is the Grid? A Three Point Checklist”, GRIDtoday, Vol. 1, No. 6., 22 July 2002. [3] http://cyberits.co.id/index.php/fe/article/getArticleDetail/127 [4] Monschke, J. (2014). Building a Collaborative Music Production Environment Using Emerging Web Standards. Berlin: International Media and Computing [5] Ellis, C. A., & Gibbs, S. J. (1989). Concurrency Control in Groupware System. ACM. [6] Fraser, N. (2009). Differential Synchronization. New York: ACM.
[7] PouchDB. (2014, April). Replication. Diambil kembali dari PouchDB: http://pouchdb.com/guides/replication.html