• Tidak ada hasil yang ditemukan

Implementasi Protocol Buffers pada Aplikasi Weblog Client dan Server

N/A
N/A
Protected

Academic year: 2021

Membagikan "Implementasi Protocol Buffers pada Aplikasi Weblog Client dan Server"

Copied!
5
0
0

Teks penuh

(1)

Implementasi Protocol Buffers pada Aplikasi Weblog Client dan

Server

Canggih Puspo Wibowo, Lukito Edi Nugroho, Bimo Sunarfri Hantono Jurusan Teknik Elektro dan Teknologi Informasi, Fakultas Teknik, Universitas Gadjah Mada

Jl. Grafika 2 Yogyakarta

canggih@te.gadjahmada.edu, lukito@mti.ugm.ac.id, bimo@te.ugm.ac.id

Abstract—The purpose of this study was to determine how

to implement Protocol Buffers in communication of weblog application client and server, moreover, knowing the performance of Protocol Buffers than XML and JSON in weblog applications. Weblog applications are created using the Java programming language on the client and Python on the server. Whilst the web service used is Restful web service created using webpy framework on the weblog server. The results show that Protocol Buffers could be used as a data serialization format of a weblog client and server communication. In terms of performance testing, can be observed that Protocol Buffers serialization file size is smaller than XML and JSON, so it is faster to use in data communications.

Keywords-blog; web services; protocol buffers

I. PENDAHULUAN

Di internet, terdapat berbagai macam situs yang menyediakan layanan pengelolaan artikel-artikel seperti Wordpress.com, Blogger.com, Blogspot.com, dan lain-lain. Melalui situs-situs yang biasa disebut weblog tersebut, pengguna dapat menulis artikel kemudian mempublikasikannya ke internet dengan mudah. Penggunaan aplikasi weblog tersebut sekarang tidak hanya tersedia dalam bentuk web, pengguna juga dapat memanfaatkan aplikasi weblog client berbasis desktop untuk berkomunikasi dengan aplikasi weblog server yang dimiliki penyedia layanan dalam internet. Aplikasi weblog client ini memungkinkan pengguna mengelola blog tanpa harus selalu terkoneksi dengan jaringan internet. Windows Live Writer, BlogDesk, Zoundry Raven, Ecto, merupakan beberapa jenis aplikasi weblog client berbasis desktop yang sering digunakan.

Web service merupakan teknologi yang memun-gkinkan aplikasi client dan server dapat berkomunikasi sehingga memungkinkan pertukaran informasi diantara keduanya. Beberapa contoh web service yang umum di-gunakan aplikasi-aplikasi dalam web adalah XML-RPC, SOAP, dan RESTful. Aplikasi weblog merupakan salah satu aplikasi yang menggunakan web service di dalamnya untuk berkomunikasi antara client dan server. Web ser-vice yang digunakan pada aplikasi weblog, seperti Word-press, adalah XML-RPC yang memanfaatkan XML

seba-gai format serialisasi data. Dalam kaitannya sebaseba-gai penghubung komunikasi aplikasi client dengan aplikasi server, web service menggunakan suatu format serialisasi data untuk mengirimkan data. Sebelum data dikirimkan, baik dari client menuju server atau sebaliknya, harus diu-bah dalam format data tertentu dahulu sesuai dengan web service yang digunakan. Jenis format serialisasi data yang digunakan dalam web service diantaranya XML dan JSON.

Penggunaan format serialisasi data berbasis plain text seperti XML dan JSON memiliki ukuran yang relatif le-bih besar, hal tersebut berimbas pada kecepatan data ketika dikirim. Di jaman dimana komunikasi data dalam internet begitu kompleks seperti sekarang ini, sementara tidak dapat dibantah bahwa faktor kecepatan juga men-jadi hal yang sangat penting, semua pihak menginginkan komunikasi data yang cepat agar layanan yang diberikan dapat maksimal. Sementara itu, Google merilis format serialisasi data baru berbasis biner yang digunakan untuk komunikasi web service, yaitu Protocol Buffers (Proto-buf). Menurut Google, Protobuf memiliki kecepatan melebihi format serialisasi data berbasis plain text serta ukuran file yang kecil sehingga tepat untuk digunakan dalam web service.

II. DASAR TEORI

A. Serialisasi Data

Serialisasi adalah suatu proses mengubah data ke dalam bentuk stream bits untuk kemudian dikirim melalui suatu media baik kabel maupun nirkabel atau disimpan dalam media penyimpanan [1]. Sedangkan untuk deserialisasi adalah proses sebaliknya, yaitu mengubah data stream bits menjadi data semula. Dalam jaringan internet, semua komunikasi data melalui proses serialisasi-deserialisasi.

Ada dua macam serialisasi, yaitu serialisasi ke dalam human-readable format (teks) dan non-human-readable format (biner) [1]. Contoh untuk serialisasi ke teks adalah format XML dan JSON, sedangkan untuk biner adalah Protocol Buffers, BSON, Thrift, dan lain-lain. Perbedaan paling utama adalah bahwa format serialisasi yang berupa

(2)

teks masih dapat dibaca meskipun dalam bentuk format serial sedangkan untuk biner tidak.

B. Protocol Buffers

Protocol Buffers, adalah suatu format data biner yang digunakan untuk serialisasi data. Pada awalnya, protobuf dikembangkan oleh Google untuk menangani permasalahan internal dalam hal protokol request/response pada server yang mengalami perkembangan versi. Format data yang digunakan sebelumnya, hanya dapat mendukung satu versi, sehingga ketika protokol mengalami perkembangan, format data harus disesuaikan [2]. Hal tersebut sangat merepotkan dalam perkembangan sistem. Sistem yang menggunakan protobuf akan mengabaikan field data baru yang tidak didukungnya, sehingga dalam satu waktu, sebuah format protobuf dapat digunakan baik oleh sistem lama maupun sistem baru. Dalam perkembangannya, protobuf sangat tepat digunakan pada sistem yang membutuhkan pertukaran data dalam jumlah banyak dengan waktu yang singkat dan hemat bandwidth [3].

Protobuf menggunakan sebuah dokumen protobuf messages definition yang berisi definisi struktur data yang akan dikirim dalam bentuk pasangan name-value. Messages definition tersebut disimpan dalam dokumen .proto. Contoh sederhana dari dokumen .proto yang berisi informasi tentang struktur data.

message Person {

required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber {

required string number = 1; optional PhoneType type = 2; }

repeated PhoneNumber phone = 4; }

Dokumen .proto kemudian di-compile untuk menghasilkan data access class yang sesuai dengan bahasa pemrograman yang digunakan sistem. Untuk sementara, bahasa yang didukung oleh compiler ini hanya Java, C++, dan Python [4]. Meskipun telah banyak pihak yang membuat compiler sendiri untuk bahasa pemrograman lain. Melalui data access class yang telah dihasilkan oleh compiler, data dapat diolah dengan mudah untuk menghasilkan data biner protobuf.

Protobuf pada dasarnya sama dengan XML, tetapi lebih simpel, lebih kecil, dan lebih cepat. Penggunaan protobuf sekarang telah banyak, misalnya terdapat pada sistem web services sebagai format serialisasi data baru, menggantikan peran XML yang selama ini digunakan.

XML dinilai terlalu lambat jika digunakan pada sistem skala besar [5]. Beberapa keunggulan protobuf dibanding XML adalah [6] :

• Menggunakan data access class yang memungkinkan data diakses dengan mudah melalui program.

Protobuf Message Definition dapat diubah tanpa mempengaruhi sistem yang sudah ada.

Tidak membutuhkan meta-data, sehingga data yang dikirim lebih kecil.

Grafik dibawah ini menunjukkan contoh perbandingan performa antara protobuf dengan PDBML (Protein Data Bank Markup Language) dalam

merepresentasikan data bioinformatik. [6]

Figure 1. Rata-rata ukuran file protobuf dan PDBML

Figure 2. Rata-rata waktu serialisasi protobuf dan PDBML

III. RANCANGAN SISTEM

A. Arsitektur

Sistem yang dibuat sebagai implementasi berupa aplikasi weblog untuk client (berbasis desktop) dan server. Antara aplikasi weblog client dan server terhubung oleh web service dengan menggunakan protobuf sebagai format serialisasi data. Skema rancangan sistem terlihat pada gambar berikut.

(3)

Figure 3. Rancangan sistem

Web service yang digunakan untuk mengirimkan dan menerima protobuf messages adalah RESTful web service yang merupakan teknologi web service yang ringan dan mudah diimplementasikan.

Client mengirimkan data yang telah diserialisasikan dalam bentuk protobuf message melalui HTTP request kepada RESTful service pada server. Protobuf message kemudian diubah menjadi data semula dengan program deserialisasi yang telah ada di server. Proses pengiriman terlihat pada Figure 4.

Figure 4. Skema komunikasi data antara client dan server

Untuk mengakses dan menginisiasi nilai ke dalam protobuf message, data access class menyediakan builder yang dapat digunakan dengan mudah melalui set dan get method. Data access class di Java menyediakan fungsi untuk secara langsung menuliskan protobuf message dalam output stream. Dalam RESTful web services, untuk mengakses sumber daya server, client cukup mengirimkan http request dengan method yang sudah didukung seperti POST dan GET. Dalam hal ini, client mengirimkan POST request dengan protobuf message pada request body yang dikirimkan melalui output stream.

Ketika ada request POST ke server, data yang diterima, masih dalam format protobuf, diubah menjadi plain data kemudian disimpan dalam database. Kemudian ketika terdapat GET request, dalam hal ini berasal dari web browser yang mengakses melalui URL, maka server

akan mengambil data dari database untuk ditampilkan dalam halaman web.

B. Aplikasi Server

Untuk dapat terhubung dengan client, aplikasi server menggunakan RESTful web service. Dalam implementasinya, digunakan webpy, yaitu sebuah framework untuk Python yang secara default telah mendukung RESTful web services. Aplikasi server menyediakan layanan untuk mengolah HTTP request dari client berupa POST dan GET.

C. Aplikasi Client

Pada aplikasi client, terdapat isian untuk masing-masing field yang didefinisikan pada protobuf message definition. Dengan menggunakan data access class yang telah ada, sesuai dengan protobuf message definition, data-data diserialisasikan untuk kemudian dikirim melalui http POST request ke server.

IV. HASIL

A. Aplikasi weblog

Aplikasi weblog client terdiri dari sebuah halaman yang berisi masukan-masukan untuk protobuf message. Username dan Password selain digunakan sebagai autentikasi pada weblog server, tetapi juga digunakan un-tuk autentikasi pada aplikasi weblog client ini. Sebelum dapat menggunakan weblog client untuk mengirim artikel, terlebih dahulu memasukkan Username dan Pass-word yang sesuai. Tampilan aplikasi weblog client ter-dapat pada Figure 5.

Figure 5. Tampilan aplikasi client

Aplikasi weblog server menggunakan bahasa pemro-graman Python dengan framework webpy. Secara de-fault, webpy telah mendukung RESTful web service, di-mana request yang datang akan dilihat method-nya untuk menentukan apa yang harus dilakukan oleh server. Tampilan halaman web ketika weblog server diakses melalui web browser (melalui GET request) ada pada Figure 6.

(4)

Figure 6. Tampilan aplikasi server

B. Pengujian

Pengujian yang dilakukan ada dua macam, yaitu men-guji lama waktu pembentukan file serialisasi kemudian pengujian tentang ukuran file serialisasi tersebut. Masing-masing pengujian, penulis membandingkan antara Proto-buf, XML, dan JSON. Pengujian dilakukan menggun-akan PC dengan spesifikasi sistem : prosesor Intel Core 2 Duo T7500 (2,2 Ghz, 800Mhz FSB, 4MB Cache), 2GB DDR2 RAM, serta menggunakan sistem operasi Ubuntu 11.04. Selain itu, pengujian dilakukan pada aplikasi web-log client dengan bahasa pemrograman Java.

Pengujian pertama dilakukan dengan menghitung lama waktu pembuatan file yang berisi sebuah artikel dalam format Protobuf, XML, dan JSON. Artikel dibuat secara acak dengan jumlah kata yang ditentukan pada bagian isi artikel. Pengujian dilakukan 15 kali, dengan jumlah kata 30, 55, 80, 105, 130, 155, 180, 205, 230, 255, 280, 305, 330, 355, dan 380 kata. Kemudian untuk masukan lain, seperti judul, kategori, dan lain-lain menggunakan data yang sama.Hasil pengujian terlihat pada Figure 7.

30 55 80 105130155180205230255280305330355380 0 20000 40000 60000 80000 100000 120000 140000 160000 180000 Protobuf XML JSON Banyak kata w a kt u ( n s )

Figure 7. Perbandingan lama waktu pembuatan file

Lama waktu pembentukan file serialisasi pada Proto-buf lebih cepat dibandingkan XML dan JSON. Hasil pen-gujian lama waktu pembentukan file sangat dipengaruhi oleh metode yang dilakukan. Dalam hal ini penulis mem-batasi pengujian hanya pada satu metode tertentu pada masing-masing format data, yaitu penggunaan Protobuf builder pada Protobuf, XMLSerializer pada XML, serta JSONObject pada JSON.

Ketika jumlah kata dalam artikel semakin besar, lama waktu pembentukan file JSON bertambah secara signifik-an, sehingga pada suatu titik lama waktu JSON sama dengan XML, meskipun sebelumnya XML memiliki waktu terlama dibandingkan JSON dan Protobuf. Sedangkan pada Protobuf, pertambahan lama waktu tidak terlalu besar meskipun jumlah kata yang digunakan ber-tambah banyak.

Selanjutnya pada pengujian kedua dihitung ukuran file serialisasi dari masing-masing format data dalam mengirimkan sebuah artikel. Hasil pengujian terlihat pada Figure 8. 30 130 230 0 500 1000 1500 2000 2500 3000 523 1279 2255 881 1635 2607 734 1497 2477 Protobuf XML JSON Jumlah Kata B yt e s

Figure 8. Perbandingan ukuran file serialisasi

Dari grafik terlihat bahwa Protobuf memiliki ukuran file yang lebih kecil dibanding XML dan JSON meskipun perbedaan diantara ketiga format tidak begitu besar. Hal itu terjadi karena pada pengujian ini, hanya satu field yang diubah secara signifikan, yaitu isi artikel. Ketika isi artikel ditambah, dari awal 30 kata menjadi 130 dan kemudian 230, hal itu berarti menambah panjang string pada bagian isi.Sedangkan dari hasil kajian teori didapat bahwa suatu data string diserialisasikan sama pada Protobuf, XML, maupun JSON. Itu sebabnya mengapa selisih ukuran file antara ketiga format cenderung sama meskipun jumlah kata pada isi bertambah banyak.

V. KESIMPULAN

Dalam pembuatan aplikasi weblog client dan server dengan memanfaatkan protocol buffers dapat disim-pulkan beberapa hal sebagai berikut :

• Protocol buffers dapat digunakan sebagai format serialisasi data pada aplikasi weblog client dan server dengan menggunakan bahasa pemrogra-man Java pada client serta Python pada server.

• Protocol buffers memiliki ukuran file serialisasi yang relatif lebih kecil dibandingkan format serialisasi data XML dan JSON. Kemudian pada lama waktu yang dibutuhkan untuk membuat file tersebut, Protocol Buffers jauh lebih cepat dibandingkan XML dan JSON terutama untuk data-data yang besar.

• Performa Protocol buffers untuk digunakan se-bagai format serialisasi data cukup bagus dilihat

(5)

dari lama waktu pembentukan file yang cepat serta ukuran file yang kecil.

VI. DAFTAR PUSTAKA

[1] Cline Marshall, “Serialization and Unserializetion”, http://www.parashift.com/c++-faq-lite/serialization.html, diakses tanggal 7 Mei 2011.

[2] Google,

http://code.google.com/apis/protocolbuffers/docs/overview.html diakses tanggal 8 Mei 2011

[3] O'Brien Tim, “The Common Java Cookbook”, Chapter 14: Protocol Buffers, Discursive.

[4] Google,

http://code.google.com/p/protobuf/wiki/ThirdPartyAddOns diakses tanggal 8 Mei 2011

[5] Varda Kenton, “Protocol Buffers: Google's Data Interchange

Format”,

http://google- opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html diakses tanggal 8 Mei 2011

[6] Oreskovic Mile, “Evaluation of Google Protocol Buffers as a potential data serialization technique for wide use in bioinformatics”, unpublished.

Gambar

Grafik   dibawah   ini   menunjukkan   contoh  perbandingan performa antara protobuf dengan PDBML  (Protein   Data   Bank   Markup   Language)  dalam
Figure 5.  Tampilan aplikasi client
Figure 7.  Perbandingan lama waktu pembuatan file

Referensi

Dokumen terkait

Hubungan pengendalian dapat timbul sebagai akibat hubungan kepengurusan. Komisaris, Direksi dan atau Pejabat Eksekutif Bank beserta keluarganya ditetapkan sebagai

Penelitian yang dilakukan meliputi melakukan pengukuran terhadap power link budget untuk 96 core yang digunakan pada setiap link Telkom kotamubagu sampai dengan

Mahasiswa dapat memahami Pengertian Ushul Fiqh, Fiqh dan bisa membedakan anatar fiqh dengan ushul fih serta memahami metode pembelajaran fiqh dalam islam.. Menyimak

Hasil hutan kayu adalah hasil hutan yang diperoleh dari tegakan hutan / pohon berupa bahan-bahan berkayu / selulosa yang dapat langsung dimanfaatkan atau diolah kembali

Dari Tabel 4.3 dapat dilihat bahwa pada tahun 2010 semua variabel independen mempunyai nilai VIF kurang dari 10 dan nilai tolerance lebih besar dari 0,1, artinya data penelitian

2 Ali Musnal, Fitrianti Optimasi Gas Injeksi Pada Sembur Buatan Gas Lift Untuk Meningkatkan Besarnya Laju Produksi Minyak Maksimum Dan Evaluasi penghentian Kegiatan Gas Lift,

Busyairuddin Usman, op.. c) Penilaian hasil belajar PAI Akidah Akhlak ialah upaya pengumpulan informasi untuk menentukan tingkat penguasaan siswa terhadap suatu kompetensi

Berdasarkan hasil analisis dari penelitian yang dilakukan, maka dapat disimpulkan bahwa work family conflict berpengaruh negatif terhadap kepuasan kerja pada karyawan