APLIKASI INSTANT MESSAGING DAN REAL TIME DOODLE DENGAN TEKNIK NON BLOCKING MENGGUNAKAN NODE.JS DI LINGKUNGAN JARINGAN WLAN Triatmaji Dewantoro Yoshua Norza Ricky Adrian Robby Saleh Universitas Bina Nusantara, Jl. Syahdan No. 9, 021-5345830,
[email protected];
[email protected];
[email protected];
ABSTRAK Platform node.js memiliki beberapa keunggulan yang dapat membatu sebuah aplikasi web berjalan lebih baik dengan tidak membebani server dan jaringan. Selain node.js, penelitian ini juga menggunakan framework dan template engine pendukung lainnya. Seperti socket.io, express.js, jade dan stylus. Metodologi penelitian menggunakan metode incremental development yang merupakan salah satu metode dalam software development lifecycle. Tujuan dari penelitian ini adalah untuk menghasilkan sebuah aplikasi instant messaging dengan fitur real time doodle yang diujicobakan dalam sebuah jaringan WLAN. Pada tahap evaluasi dilakukan uji coba terhadap kinerja aplikasi, fitur-fitur unggulan yang dimiliki node.js dan framework pendukung lainnya. Dari penelitian ini hasil yang didapatkan adalah CPU usage lebih kecil 79.16% di sisi server dan 33.33% di sisi client dibandingkan dengan aplikasi instant messaging yang menggunakan PHP. Selain itu dihasilkan juga bahwa aplikasi ini tidak mengharuskan server untuk selalu melakukan check terhadap request karena menggunakan teknologi push. Berbeda dengan teknologi pull yang selalu melakukan check sehingga terjadi perubahan memory dalam beberapa waktu meskipun dalam kondisi tidak ada activity. Kata kunci: Instant Messaging, Doodle, Non-Blocking, Node.js, Socket .io, Express.js.
1. PENDAHULUAN
1.1
Latar Belakang
Jejaring sosial dalam satu dekade terakhir seolah menjadi sebuah fenomena di seluruh dunia. Dari berbagai macam jejaring sosial yang kini tersedia, Instant Messaging (IM) adalah salah satu yang paling banyak digunakan. Dalam sebuah laporan analysysmason.com dinyatakan bahwa 45% dari pengguna smartphone lebih memilih menggunakan fasilitas instant messaging dibandingkan dengan text messaging tradisional (SMS) (analysysmason.com). Dari hasil laporan tersebut, disimpulkan bahwa aplikasi chat (instant messaging) secara real time dengan tidak membebani jaringan dan client devices sudah menjadi alternatif yang signifikan dalam teknologi komunikasi. Selain itu hadir pula teknologi Node.js. Sebuah platform yang dirancang untuk pengembangan aplikasi web dan diimplementasikan di server. Node.js mampu melakukan proses baik secara blocking (synchronous) maupun non-blocking (asynchronous). Dengan kemampuan Node.js yang dapat melakukan non-blocking, maka terbuka kemungkinan untuk membuat aplikasi web instant messaging yang ringan, real-time dan efisien (nodejs.org). Node.js juga dapat diintegrasikan dengan socket.io yang merupakan framework dari websocket. Dengan websocket, antara client dan server dapat saling melakukan push message kapan saja (WebSocket.org). Aplikasi ini akan dibuat berdasarkan ide untuk membuat aplikasi instant messaging dan doodle dengan menggunakan teknologi yang dapat mengurangi beban server, jaringan dan client. Dengan penelitian ini, diharapkan terbentuk sebuah sistem baru yang dapat menjadi alternatif di antara aplikasi instant messaging yang sudah ada.
1.2
Kajian Pustaka
Node.js merupakan sebuah platform yang dirancang untuk web server. Platform ini ditulis dalam bahasa JavaScript dan menggunakan teknik non-blocking atau asynchronous untuk mempercepat proses. Dalam asynchronous sebuah operasi tidak harus menunggu selesai dikerjakan untuk melakukan operasi yang lain (Leonard, A. 2011. p216). Tidak seperti PHP, ASP.NET, Java, ColdFusion, Perl, Ruby dan Python yang masih banyak digunakan sebagai aplikasi web server, penggunaan Node.js sebagai aplikasi web server masih sangat jarang karena Node.js baru diperkenalkan pertama kali awal tahun 2011 oleh Ryan Lienhart Dahl. Menurut hasil survey dari W3Techs.com, penggunaan PHP sebagai server-side programming language adalah yang paling banyak hingga mencapai 78.7 %. Kemudian diikuti oleh ASP.NET sebanyak 20.1 %, Java 4.1 %, ColdFusion 1.1 %, Perl 0.8 %, Ruby 0.5 % dan Phyton 0.2 %. (W3Techs.com) Node.js bukanlah yang pertama kali menerapkan teknik non-blocking ini. Perl, Ruby dan Phyton juga menerapkan teknik non-blocking. Perbedaannya adalah implementasi. Node.js lebih mudah karena menggunakan JavaScript dan kebanyakan web programmer sudah terbiasa menggunakan Javascript. Selain itu, Node.js juga dapat diintegrasikan dengan teknologi WebSocket. Salah satu framework WebSocket yang dapat digunakan oleh Node.js adalah socket.io. Dengan WebSocket, antara client dan server dapat saling melakukan push message kapan saja (WebSocket.org). Keunggulan lain dari socket.io adalah cross browser yang berarti aplikasi web yang dibuat dapat dijalankan di browser manapun. Melihat kelebihan-kelebihan tersebut ada peluang yang memungkinkan untuk dibuatnya sistem yang lebih baik dengan tidak membebani kerja server. Untuk pembuktian hipotesis tersebut, maka dibuatlah sebuah aplikasi web instant messaging dan real time doodle yang diperuntukkan dan akan diuji coba pada jaringan WLAN.
1.3 Tujuan dan Manfaat Penelitian Tujuan dari penelitian ini adalah membuat aplikasi web instant messaging dan doodle dengan teknik non-blocking dengan menggunakan Node.js. Manfaat yang diharapkan dari hasil penelitian ini adalah dihasilkannya sebuah aplikasi web instant messaging dan doodle yang bekerja secara real time namun tetap tidak membebani server, jaringan dan client. Selain itu, dengan adanya fitur doodle pada aplikasi instant messaging diharapkan dapat melakukan chat dengan lebih efektif dan interaktif.
2. METODE PENELITIAN Metodologi yang digunakan untuk mencapai tujuan dan manfaat adalah sebagai berikut: 1. Studi Pustaka Studi pustaka dilakukan dengan pengkajian skripsi, jurnal dan text book yang berhubungan dengan penelitian. 2. Perancangan Perancangan aplikasi yang kami lakukan menggunakan incremental model yang terdiri dari: a. Communication Mengumpulkan requirement yang dibutuhkan untuk pembangunan aplikasi. b. Planning Membuat estimasi dan perencanaan kerja. c. Modelling Analisis: melakukan analisis terhadap requirement yang dibutuhkan. Desain: membuat perancangan sesuai dengan hasil dari analisis. Perancangan dilakukan dengan menggunakan UML. d. Construction Coding. Testing. e. Deployment
3. HASIL DAN BAHASAN Untuk membuktikan kelebihan dari teknologi node.js yaitu non-blocking dan push, maka dilakukan pengujian terhadap aplikasi yang telah kami buat. Pengujian atau evaluasi yang kami lakukan diantaranya adalah pengujian teknik non-blocking, pengujian kompatibilitas browser, pengujian fitur doodle, pengujian pemakaian CPU, pengujian teknologi push, evaluasi kuesioner, evaluasi tampilan antarmuka. Berikut adalah ulasan dari masing-masing pengujian atau evaluasi.
3.1 Pengujian Teknik Non-Blocking Tujuan dari pengujian ini adalah untuk membuktikan bahwa dengan teknik non-blocking transaksi yang dilakukan client yang memerlukan proses pada server, seperti chatting yang memerlukan proses penyimpanan pada database server, akan terproses dengan cepat. Pengujian ini tidak dilakukan langsung terhadap aplikasi instant messaging. Alasannya karena membutuhkan user yang banyak untuk menjalankan aplikasi instant messaging agar perbedaan kecepatan terlihat jelas. Pengujian ini dilakukan dengan menjalankan 2 program sederhana yang dicode dengan teknik non-blocking dan blocking dari node.js. Proses yang pertama menjalankan looping yang selanjutnya menampilkan kata “Thanks for waiting!” pada browser. Proses yang kedua menampilkan kata “Hello!”. Program yang dijalankan dengan teknik blocking menggunakan port 8000, sedangkan program yang dijalankan dengan teknik non-blocking menggunakan port 8080. Dari hasil yang didapat, program yang dijalankan dengan teknik blocking berjalan dengan sequence. Artinya proses yang kedua harus menunggu proses pertama sampai selesai untuk dapat dieksekusi. Sedangkan pada teknik non-blocking, proses kedua dapat langsung dieksekusi setelah proses pertama dieksekusi tanpa harus menunggu proses pertama selesai dieksekusi. Dengan demikian dapat disimpulkan bahwa teknik non-blocking program yang dibuat dapat berjalan lebih optimal dan cepat dibandingkan dengan teknik blocking.
3.2 Pengujian Kompatibilitas Browser Tujuan dari pengujian ini adalah untuk membuktikan bahwa aplikasi yang dibuat dapat dijalankan oleh user di browser manapun. Untuk menguji seberapa kompatibel aplikasi instant messaging dan doodle yang dibuat dengan browser maka dilakukan pengujian dengan cara menjalankan aplikasi tersebut pada beberapa browser. Dalam pengujian aplikasi web akan dijalankan pada browser Google Chrome, Mozilla Firefox dan Internet Explorer. Berikut adalah hasil dari pengujian yang dilakukan untuk di setiap browser.
Gambar 1 Halaman Chat in Room pada Google Chrome
Gambar 2 Halaman Chat in Room pada Mozilla Firefox
Gambar 3 Halaman Chat in Room pada Internet Explorer Berdasarkan hasil pengujian yang didapat, aplikasi instant messaging yang dibuat dengan node.js dapat berjalan di Google Chrome, Mozilla Firefox dan Internet Explorer. Demikian juga dengan fitur doodle, setiap browser yang diujikan juga dapat menjalankan fitur ini. Perbedaannya hanya dari tampilan yang tidak begitu mencolok. Hal ini menunjukkan bahwa aplikasi web yang dibuat dengan teknologi Node.js mempunyai kompatibilitas yang baik terhadap setiap browser.
3.3 Pengujian Fitur Doodle Tujuan dari pengujian ini adalah untuk membuktikan apakah fitur doodle yang dibuat sudah dapat berjalan dengan baik atau belum. Pengujian fitur doodle dilakukan dengan menggunakan 2 komputer yang sedang aktif menggunakan aplikasi ini. Kedua komputer tersebut kemudian mengaktifkan fitur chat personally agar dapat mengaktifkan fitur doodle. Setelah itu, masing-masing komputer mengaktifkan fitur doodle dengan mengklik fitur doodle. Pengujian dilakukan sebanyak dua kali. Pada pengujian I komputer pertama menggambar garis lurus dari atas ke bawah di sebelah kiri sehingga garis lurus yang digambar juga muncul secara real time pada layar komputer dua. Kemudian komputer kedua menggambar garis lurus dari atas ke bawah di sebelah kanan sehingga garis lurus yang digambar juga muncul secara real time pada layar komputer satu. Pada pengujian II juga dilakukan hal yang sama seperti pengujian I. Berikut adalah data hasil pengujian doodle yang didapatkan setelah melakukan pengujian.
Gambar 4 Tampilan Doodle di Komputer 1 pada Pengujian Doodle
Gambar 5 Tampilan Doodle di Komputer 2 pada Pengujian Doodle
Pada pengujian doodle yang pertama, garis yang dibuat oleh komputer 1 menampilkan garis yang sama di komputer 2. Begitu juga sebaliknya, garis yang dibuat oleh komputer 2 menampilkan garis yang sama di komputer 1. Dan pada pengujian yang kedua, garis yang dibuat oleh komputer 1 menampilkan garis yang sedikit berbeda di komputer 2. Pada komputer 2 muncul garis tambahan yang menghubungkan garis pertama dan garis kedua yang dibuat oleh komputer 1. Begitu juga sebaliknya, garis yang dibuat oleh komputer 2 menampilkan garis yang sedikit berbeda di komputer 1. Pada komputer 1 muncul garis tambahan yang menghubungkan garis pertama dan garis kedua yang dibuat oleh komputer 2. Berdasarkan hasil tersebut dapat disimpulkan bahwa fitur doodle yang dikembangkan masih mengandung bugs sehingga hasil yang didapatkan belum sempurna. Hal tersebut kemungkinan besar dikarenakan adanya perintah-perintah pemrograman yang tidak terkirim dari komputer 1 ke komputer
2, ketika di komputer 1 dilakukan aksi penggambaran lalu dilakukan penggambaran selanjutnya. Begitu pula yang terjadi sebaliknya jika aksi penggambaran dilakukan oleh komputer 2. Sehingga terjadi kesalahan dalam menampilkan penggambaran dari aksi komputer 1 di komputer 2 atau sebaliknya. Dengan demikian fitur doodle ini masih membutuhkan perbaikan untuk mendapatkan hasil yang lebih baik sehingga user dapat menggunakan fitur ini dengan nyaman.
3.4 Pengujian Pemakaian CPU (CPU Usage) Tujuan dari pengujian ini adalah untuk membuktikan bahwa aplikasi instant messaging dan doodle yang dibangun memiliki CPU usage atau pemakaian CPU yang kecil baik dari sisi server maupun client. Pada pengujian ini dilakukan perbandingan antara aplikasi instant messaging yang dibuat dengan Node.js dan aplikasi yang dibuat dengan PHP versi 3.01. Aplikasi PHP yang diuji menggunakan teknik blocking dan teknologi pull. Web server yang digunakan pada aplikasi PHP adalah Apache versi 2.2. Sedangkan aplikasi yang dibuat dalam penelitian ini menggunakan teknik non-blocking dan teknologi push. Dengan demikian akan terlihat perbandingan CPU usage antara aplikasi instant messaging yang dibangun dengan Node.js dan yang dibangun dengan PHP. Berikut adalah data hasil pengujian yang dilakukan. Tabel 4.1 Penggunaaan CPU Server Aplikasi Instant Messaging Node.js pada Pengujian I Proses CPU Usage (%) node.exe 0 cmd.exe 0 conhost.exe 0 Tabel 4.2 Penggunaan CPU Server Aplikasi Instant Messaging PHP pada Pengujian I Proses CPU Usage (%) httpd.exe 0.08 Tabel 4.3 Penggunaaan CPU Client Aplikasi Instant Messaging Node.js pada Pengujian I Proses CPU Usage (%) Tab:beeChat 0 Tabel 4.4 Penggunaaan CPU Client Aplikasi Instant Messaging PHP pada Pengujian I Proses CPU Usage (%) Tab: Chat 2 Tabel 4.5 Penggunaaan CPU Server Aplikasi Instant Messaging Node.js pada Pengujian II Proses CPU Usage (%) node.exe 0.05 cmd.exe 0 conhost.exe 0 Tabel 4.6 Penggunaan CPU Server Aplikasi Instant Messaging PHP pada Pengujian II Proses CPU Usage (%) httpd.exe 0.24 Tabel 4.7 Penggunaaan CPU Client Aplikasi Instant Messaging Node.js pada Pengujian II Proses CPU Usage (%) Tab:beeChat 6 Tabel 4.8 Penggunaaan CPU Client Aplikasi Instant Messaging PHP pada Pengujian II Proses CPU Usage (%) Tab: Chat 8 Berdasarkan hasil pengujian, pada pengujian I server Node.js memiliki CPU usage 0 % dan client memiliki CPU usage 0%. Sedangkan server PHP memiliki CPU usage 0.08 % dan client memiliki CPU usage 2 %. Pada pengujian II, server Node.js memiliki CPU usage 0.05 % dan client memiliki CPU usage 6%. Sedangkan server PHP memiliki CPU usage 0.24 % dan client memiliki CPU usage 8%.
Dengan demikian dapat disimpulkan bahwa aplikasi instant messaging yang dibangun dengan Node.js di sisi server memiliki CPU usage yang lebih kecil 79.16 % dibandingkan dengan aplikasi instant messaging PHP. Dan aplikasi instant messaging yang dibangun dengan Node.js di sisi client memiliki CPU usage yang lebih kecil 33.33 % dibandingkan dengan aplikasi instant messaging PHP.
3.5 Pengujian Teknologi Push Tujuan dari pengujian ini adalah untuk membuktikan bahwa aplikasi yang dibuat menggunakan teknologi push. Pada pengujian ini dilakukan perbandingan dengan teknologi pull. Untuk pembandingnya adalah aplikasi instant messaging sederhana dengan teknologi pull dan teknologi blocking yang menggunakan PHP versi 3.01. Web server yang digunakan adalah Apache versi 2.2. Pengujian ini dilakukan dengan menggunakan task manager dari browser Google Chrome. Pada task manager terdapat memory yang menjadi indikator apakah aplikasi menggunakan teknologi push atau menggunakan teknologi pull. Aplikasi yang menggunakan teknologi push, akan terjadi perubahan pada memory setiap kali ada activity yang dilakukan oleh client. Sedangakan aplikasi yang menggunakan teknologi pull akan terjadi perubahan pada memory setiap beberapa waktu walaupun tidak ada activity yang dilakukan oleh client. Masing-masing aplikasi diuji dalam keadaan idle dan dilihat perubahan memory yang terjadi dalam waktu 5 detik. Pada aplikasi instant messaging Node.js, saat t = 0 detik memiliki memory = 16448 KB. Kemudian saat t = 5 detik, memory = 16448 KB. Sedangkan pada aplikasi instant messaging PHP, saat t = 0 detik memiliki memory = 15804 KB. Kemudian saat t = 5 detik, memory = 15924 KB. Berdasarkan hasil pengujian, pada aplikasi instant messaging Node js tidak terjadi perubahan memory dalam waktu 5 detik. Sedangkan pada aplikasi instant messaging PHP terjadi perubahan memory dalam waktu 5 detik. Dengan demikian dapat disimpulkan bahwa aplikasi instant messaging yang dibuat menggunakan teknologi push yang tidak mengharuskan server untuk selalu mengecek apakah ada request yang masuk atau tidak. Berbeda dengan teknologi pull yang selalu mengecek request dari client sehingga terjadi perubahan memory setiap beberapa waktu.
4. SIMPULAN DAN SARAN 4.1 Simpulan Berdasarkan hasil evaluasi , dapat ditarik kesimpulan sebagai berikut: 1. Aplikasi dapat melakukan chat secara real-time antar penggunanya. Baik secara personal maupun secara kelompok. 2. Aplikasi dapat digunakan untuk melakukan doodle secara real-time antar 2 penggunanya tapi masih mengandung bugs sehingga hasil yang didapat belum sempurna. 3. Aplikasi ini memiliki CPU usage lebih efisien dengan presentasi sebesar 79.16% di sisi server dan 33.33% di sisi client dibandingkan dengan aplikasi instant messaging yang menggunakan PHP. 4. Aplikasi menggunakan teknologi push yang tidak mengharuskan server melakukan check terhadap request. Hal ini dibuktikan dengan tidak adanya perubahan memory saat aplikasi tidak melakukan activity. Sedangkan pada aplikasi yang menggunakan teknologi pull, terdeteksi adanya perubahan memory meskipun dalam kondisi tidak melakukan activity.
4.2 Saran Berdasarkan penelitian yang telah dilakukan dan hasil evaluasi, maka disarankan: 1. Aplikasi dapat diimplementasikan pada suatu jaringan Wi-Fi internal yang telah memiliki jumlah pengguna tetap yang banyak. 2. Aplikasi dapat dibuat sebagai client native application pada berbagai platform mobile device seperti Android, Blackberry, atau iOS.
5. REFERENSI Analysys Mason. (2012).Almost Half of Consumers with Smartphones Use Instant or Over-The-Top Messaging Services and One in Five Use VOIP Apps. Diperoleh (22-01-2012) dari http://www.analysysmason.com/About-Us/News/Press-releases1/Consumer-voice-messaging-PROct2012/. Kaazing Corporation. (n.d). Diperoleh (12-24-2013) dari http:// websocket.org. Leonard, A. (2011). Pro Java 7 NIO 2. New York: Apress. Node.JS Org. (n.d). Diperoleh (01-07-2013) dari http://nodejs.org/.
6. RIWAYAT PENULIS Nama Tempat Tanggal Kelahiran Pendidikan Akhir Pekerjaan Pengalaman Organisasi • 2007-2009
: : : : : :
Triatmaji Dewantoro Jakarta, 11 April 1991 Teknik Informatika S1, BINUS UNIVERSITY Mahasiswa
Nama Tempat Tanggal Kelahiran Pendidikan Akhir Pekerjaan Pengalaman Organisasi • 2006-2009 • 2009-2010
: : : : : : :
Yoshua Norza Jakarta, 11 Mei 1991 Teknik Informatika S1, BINUS UNIVERSITY Wiraswasta dan Instruktur Binus Center paruh waktu
Nama Tempat Tanggal Kelahiran Pendidikan Akhir Pekerjaan Pengalaman Organisasi • 2010-2011 • 2011-2012 • 2013-2014
: : : : : : : :
Anggota Divisi Dakwah Majlis Ta’lim Al-Khawarizmi Ketua Umum Dakwah Majlis Ta’lim Al-Khawarizmi Ketua Divisi Kaderisasi IKRIMA
Nama Tempat Tanggal Kelahiran Pendidikan Akhir Pekerjaan
: : : :
Robby Saleh, S.Kom., M.T Jakarta, 28 Januari 1978 Teknik Elektro S2, Universitas Indonesia SCDC Manager BINUS UNIVERSITY
OSIS SMAN 65 Jakarta
Anggota klub basket SMAN 65 Aktivis HIMTI Binus Ricky Adrian Jakarta, 21 Juni 1990 Teknik Informatika S1, BINUS UNIVERSITY Guru Prima Privat