Kolaborasi..Saat Ini Juga

Disclaimer: Semua tulisan saya hanya mewakili konsep dalam bahasa paling awam, untuk menggambarkan konsep rumit yang digunakan Teknologi Informasi. Referensi lebih lanjut bisa anda cari di Internet atau source yang lebih valid daripada saya 🙂

Real-time collaboration? Pertama kali saya mendengar istilah ini, pikiran saya terlintas teknologi yang rumit, setidaknya, melibatkan teknik yang jelimet. Saya terpesona ketika pertama kali Google memperkenalkan istilah ini dan mendemonstrasikan secara langsung dengan Wave-nya. dan buat saya, ini adalah pengalaman ‘wow’ saya yang membuat saya merinding (damn, mereka benar-benar pintar cipta-in sesuatu :p) Sayang baby project ini tidak sempat berkembang menjadi real aplikasi karena sambutan yang tidak terlalu banyak untuk menggunakannya. Semenjak itu banyak orang mencoba menawarkan tekniknya untuk membuat suatu web bisa menjadi lebih real-time.

Namun waktu membuat saya untuk memahami-nya bahwa teknik ini, sebenarnya, tidak terlalu rumit (walau dulu-nya saya menganggap bahwa ada teknik ‘sulap’ tingkat tinggi untuk bisa membuat hal seperti itu, atau bahasa teknis-nya adalah, bagaimana membuat dua (atau lebih) pemakai berbeda, saling berkirim pesan sedemikian rupa, sehingga saling memperbarui konten yang mereka buat?)

Saya berpikir (dulu) bahwa infrastruktur mereka pasti bagus, setidaknya ada protokol XMPP dibalik teknik seperti ini. Dan tebakan saya tidak terlalu meleset, bahwa hal seperti ini membutuhkan infrastruktur teknologi. Sampai satu ketika, waktu mengenalkan saya dengan HTTP REST, salah satu infrastruktur yang saya sebut-sebut tadi. REST sendiri adalah akronim dari REpresentational State Transfer yang artinya Pertukaran Keadaan yang Terwakilkan. Bingung? bahasa awam-nya adalah, data-dalam-banyak-rupa, tetapi sama secara isi/konteks, dan dapat dipertukarkan dengan mengubahnya menjadi format yang diinginkan (tanpa bentuk fisik sebuah file yah). Bayangkan begini, anda punya data dalam bentuk CSV (kumpulan data dengan pemisah koma) seperti ini:

Nama depan, Nama belakang, Alamat surel
Budi, Doe, budidoe@contoh.com
Tuti, Doe, tutidoe@contoh.com

Nah, untuk menukar data, katakanlah, cabang anda menggunakan sistem yang hanya membaca format XML sehingga kita perlu mengubah data kita, menjadi format yang diperlukan, dan dibaca oleh orang yang kita berikan datanya (dalam contoh ini, cabang anda) . Kita akan mengubah data-nya menjadi format seperti ini:

<?xml version="1.0" encoding="utf-8" ?>
<data>
<record>
<nama depan>Budi</nama depan>
<nama belakang>Doe</nama belakang>
<alamat surel>budidoe@contoh.com</alamat surel>
</record>
<record>
<nama depan>Tuti</nama depan>
<nama belakang>Doe</nama belakang>
<alamat surel>tutidoe@contoh.com</alamat surel>
</record>
</data>

Jelas sekali terlihat bagaimana data berubah bentuk tanpa kehilangan isi (baca: state) yang dikandungnya, dalam hal ini konversi CSV menjadi XML. Inilah state yang dimaksud dan coba dijelaskan oleh konsep REST, bahwa data dapat berubah (transisi) , dan disebut state, dan dapat dipertukarkan dengan mudah antar sistem. Tidak ada file fisik yang menyimpan data itu karena semuanya hasil olahan dari basis data yang kita gunakan. Dan jika ditambahkan dengan HTTP menjadi HTTP REST, ini berarti maksudnya…, yup, benar sekali, pertukaran lewat protokol HTTP.

Pernah mencoba Amazon Web Service? (disclaimer: saya bukan marketing-nya :p) Saya sudah. Saya menggunakannya untuk meng-upload data saya, berupa berkas, atau gambar, atau musik atau lainnya dan semuanya melalui jalur protokol HTTP. Artinya, anda mengirim data, dan mengaksesnya melalui sebuah alamat URL, katakanlah: http://contoh.com/datasaya/gambar/koleksi1. Walau ini sedikit membahas Cloud Computing, namun yang saya mau coba jelaskan adalah konsep bagaimana melakukan pertukaran melalui protokol HTTP. Anda bisa menambahkan album dari koleksi1 menjadi koleksi2 dan dapat mengaksesnya di alamat url: http://contoh.com/datasaya/gambar/koleksi2. keren? yup, Hal ini yang benar-benar mengubah saya dan membuat saya berhasil menyingkap teknik yang mungkin, untuk aplikasi semacam Wave.

Belum ‘ngeh’ dengan penjelasan saya, bagaimana mungkin kolaborasi real-time dapat dilakukan sejauh ini? Bung, bagaimana pengguna dapat berkomunikasi, kalau setiap request harus dibuka ulang? (protokol http bilang, anda hanya di-ijinkan melakukan request POST atau GET dengan membuka ulang halaman web) Anda juga harus melewati larangan untuk mengirim AJAX request, seandainya anda menggunakan AJAX, melewati domain yang berbeda atau lintas domain.

Jawabannya, adalah melalui teknik AJAX (untuk teknik ini, pembahasannya mungkin lain kali ya) Push Server-side Proxy. Untuk melewati domain, anda membutuhkan proxy untuk melakukan request yang membuat server mengira anda adalah server. Umumnya, browser adalah client yang melakukan request (meminta) halaman kepada server untuk ditampilkan. Maksudnya istilah client di sini adalah, selama anda masih di-url, katakanlah, http://contoh.com, anda dapat bebas mengakses halaman(resource) di http://contoh.com. Kalau anda anda di-url http://contoh.com dan melakukan request dari http://contoh.com ke http://example.com (ilustrasi) langsung dari browser, maka anda akan mendapatkan pesan error mengabarkan bahwa anda melakukan panggilan lintas domain (dan tidak bisa untuk alasan keamanan). Ada banyak teknik untuk meng-akali kondisi ini seperti menggunakan IFrame atau melakukan long-polling (Anda bingung kenapa browser sekarang ini reloadnya seperti lama karena indikator-nya berjalan terus? ini mungkin artinya, website itu melakukan teknik long-polling dengan membuka terus connection-nya) . Saya sendiri menemukannya mudah jika menggunakan server proxy.

Itu artinya, begini:

  • Saya harus menulis proxy-call untuk website saya
  • Saya harus mengamankan port-nya untuk Unauthorized Request (artinya, private hanya untuk saya yang guna-in)
  • Saya harus meng-enkripsi datanya
  • Saya harus mengompress data-nya untuk menghemat bandwitdh dan storage
  • Saya harus membangun REST Server saya pribadi
  • Saya harus membangun AJAX-call service di server saya
 
Sebelum checklist saya menjadi bertambah panjang, itulah daftar yang harus saya kerjakan, sebelum saya membangun tutorial Menulis Source Real-Time di website saya. Dan dengan ini saya memperkenalkan sebuah demo aplikasi real-time pertama saya :p, yaitu: 
Chilik Channel <http://goo.gl/wveJO>


Creative Commons License 
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. 
Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: