Saturday, January 26, 2008

Application Delivery Service untuk Mempercepat Kinerja Aplikasi-Aplikasi berbasiskan Jaringan

Bekerja Mobile tanpa Laptop
Draft tulisan ini dibuat menggunakan HP Nokia e61i selama perjalanan di dalam taxi menuju airport di Yogyakarta, kemudian diselesaikan di Borobudur Lounge menggunakan keyboard lipat... Semua tanpa laptop :)

Aplikasi Jaringan
Anyway, kemarin ada diskusi pendek tentang bagaimana membuat experience yang memuaskan untuk para user yang menggunakan aplikasi jaringan.

Aplikasi jaringan memang sangat menyenangkan bila ditinjau dari sisi kemudahan operasi, manajemen, serta biaya. Dengan aplikasi berbasis jaringan, maka tidak ada lagi server2 yang bertebaran di setiap kantor cabang. Jika perusahaan mengimplementasikan thin client, malah tidak ada lagi aplikasi yang berjalan secara stand alone di setiap PC. Perusahaan akan mendapatkan penghematan yang luar biasa, karena lisensi software akan jauh berkurang, dan penggunaan pc/laptop yang kelas low end saja. PC kelas atas yang menggunakan processor terbaru dan memory raksasa tidak diperlukan lagi.

Namun demikian, aplikasi jaringan menjadi pengalaman yang tidak menyenangkan untuk para user jika aplikasi berjalan dengan lebih lambat. Selain itu, perusahaan juga akan dirugikan, karena produktivitas karyawan juga menurun. Akibatnya, keuntungan dari konsolidasi server/applikasi tadi menjadi hilang...

Jadi kunci sukses dari implementasi aplikasi jaringan adalah : KECEPATAN !

Secara teknis kecepatan ini bergantung pada banyak hal di bawah ini :

Latency
Latency adalah kecepatan transmisi suatu paket data di dalam suatu medium, diukur secara end-to-end, biasanya dalam mikro atau mili-second. Latency ini sangat berpengaruh terhadap throughput, apalagi untuk aplikasi2 yang menggunakan TCP protocol, karena cara pengiriman paket melalui TCP yang selalu mengharapkan berita balasan. Hal ini menjelaskan mengapa jaringan VSAT (satelit) dengan bandwidth yang sama dengan rekannya di terestrial (lewat darat) memiliki throughput jauh lebih rendah...

Latency yang buruk bisa diatasi dengan beberapa perangkat accelerator yang mengurangi latency, seperti AVS (application velocity system), dan WAAS (wide area application system), atau kombinasi keduanya.

WAN Bandwidth Bottleneck
Bandwidth, biasa diukur dengan parameter bit per second (bps), merupakan laju pengiriman data di dalam suatu medium. Bandwidth merupakan satu kunci paling penting di dalam kesuksesan implementasi aplikasi jaringan.

Link dengan bandwidth yang congested akan menyebabkan semua aplikasi jaringan menjadi lambat atau terputus2.

Untuk memastikan bahwa setiap aplikasi berjalan dengan memuaskan, maka bandwidth yang tersedia harus sama atau lebih besar dari jumlah total guaranteed minimum bandwidth dari setiap aplikasi. Jika bandwidth tidak cukup, maka hal ini akan menimbulkan packet drop atau packet resending yang akan menyebabkan jaringan semakin lambat.

Kekurangan bandwidth obatnya adalah : Menambah kapasitas jaringan ! Namun jika penambahan kapasitas ini mahal atau tidak memungkinkan (misalnya karena tidak adanya kapasitas lebih), maka AVS, WAAS, atau keduanya bisa digunakan untuk mengurangi penggunaan bandwidth secara significant.

I/O Throughput Bottleneck
Nah kalau ini masalahnya sudah di luar jaringan. I/O throughput merupakan masalah yang sangat umum, apalagi jika server yang digunakan bukan dari jenis mini atau mainframe...

Masalah seperti ini dirasakan user sebagai aplikasi yang berjalan lambat, walaupun utilisasi jaringan masih rendah.

I/O bottleneck bisa diatasi dengan mendistribusikan konten ke dalam banyak I/O devices. Jaringan sendiri bisa membantu dengan cara melakukan load balancing, atau memberikan interface yang diperlukan.

Load Balancing multiple servers bisa dilakukan dengan mudah menggunakan ACE (application control engine) ataupun CSS (content service switches). Perbedaan yang dirasakan user hanyalah aplikasi sekarang berjalan jauh lebih cepat karena tidak ada lagi bottleneck I/O. ACE/CSS juga meningkatkan availability, karena jika satu server mati, maka server2 lainnya akan menggantikan posisinya secara otomatis.

Cara lain meningkatkan kapasitas I/O adalah mengganti koneksi storage dengan yang lebih besar kecepatannya. Misalnya dengan memparalel koneksinya utk mendapat bandwidth lebih besar.

Cara lainnya lagi adalah mengganti file systemnya, misalnya dari NFS menjadi GPFS yang mampu memberikan throughput sampai Tbps...

CPU Bottleneck
CPU merupakan satu komponen yang jarang mengalami masalah performansi, karena teknologi CPU sekarang memang maju sekali. Walaupun demikian, masalah ini kerap muncul pada server2 tertentu yang diakses banyak orang. Misalnya billing server.

Masalah ini bisa diatasi dengan melakukan upgrade CPU. Jika hasilnya masih tidak memuaskan, kita bisa memilih untuk mengganti operating system dan aplikasinya yang bisa jalan secara parallel menggunakan clustering (aplikasi high performance computing atau HPC).

HPC mudah sekali diatasi dengan menggabungkan banyak komputer dengan jaringan gigabit/10 gigabit ethernet atau yang lebih baik lagi dengan menggunakan Infiniband.

Aplikasi yang bisa berjalan di lingkungan HPC akan melahap pekerjaan apapun dengan kecepatan superkomputer dengan biaya yang sangat ekonomis.

WAN Error Rate
Ini satu faktor yang turut menyumbang kelambatan di aplikasi jaringan. Mengatasinya dengan mengganti link dengan yang lebih berkualitas, atau bisa juga dengan menggunakan beberapa link sekaligus. Protokol routing yang canggih seperti EIGRP mampu memilah2 mana link yang jelek dan mana yang bagus. EIGRP akan memilih link yang bagus lebih sering, sehingga aplikasi akan berjalan lebih cepat.

Inefficient Application Algorhytm
Faktor ini seringkali dilupakan. Algoritma aplikasi yang belum optimal bisa menyebabkan aplikasi berjalan lambat. Misalnya mekanisme locking pada database yang menyebabkan pencarian record hanya satu persatu sebenarnya bisa dioptimumkan sehingga percarian record bisa dilakukan secara parallel yang akan jauh mempercepat aplikasi database.

Storage
Storage juga turut menyumbang kelambatan di dalam aplikasi jaringan. Semakin penuh suatu storage media, maka aksesnyapun akan makin lambat.

Untuk memelihara kecepatan yang tetap tinggi pada storage, kita perlu melakukan manajemen yang cukup rapih, misalnya buang file2 yang tidak diperlukan, melakukan file system check secara berkala, dan menambah kapasitas jika utilisasi storage sudah mendekati batas (misalnya sudah di atas 70%).

Penambahan kapasitas storage dapat dilakukan dengan mudah, karena di masa sekarang storagepun dibuat virtual dengan menggunakan SAN/VSAN.

Thin Client
Pemilihan thin client juga menentukan kecepatan aplikasi. Silahkan bereksperimen dengan bermacam2 thin client. Thin client berbasis open source (rdesktop) yang berjalan di Linux merupakan satu alternatif yang bagus (dan free).

Untuk mempercepat aplikasi thin client ini kita bisa memanfaatkan WAAS.

Virtualization Server Software
Nah software virtualization ini adalah kunci efisiensi perusahaan. Namun perlu diingat bahwa semua software akan menurun performancenya jika divirtualisasikan, sehingga kita harus cermat memilih software mana saja yang baik untuk dijalankan di dalam virtual machine. Jika satu physical machine akan menjalankan beberapa operating system atau aplikasi sekaligus di dalam virtual machinenya, maka kita juga harus memilih mana aplikasi yang bisa dipasangkan dengan aplikasi yang lain. Semata2 hal ini dilakukan supaya pembagian beban CPUnya menjadi merata. Misalnya aplikasi A CPU intensive berjalan pada jam kantor, sementara aplikasi B juga CPU intensive, bisa dipasangkan dengan aplikasi A asalkan aplikasi B berjalannya setelah jam kantor. Dengan demikian resource CPU menjadi efisien penggunaannya.

Pemasangan aplikasi di dalam virtual machine yang asal2an saja akan menyebabkan aplikasi berjalan secara tersendat2.

Malware dan Aplikasi Non Standard
Malware seperti spam, virus, worm, trojan dan lain2, ditambah aplikasi non standard seperti Peer-to-peer, multimedia, file sharing, dan lain2 juga menambah beban jaringan dan berpotensi menghambat aplikasi standard perusahaan.

Untuk mengatasi hal ini, kita bisa mendaftarkan semua aplikasi resmi, dan melakukan konfigurasi QoS yang tepat, dan memonitor penggunaan jaringan dengan menggunakan tool yang tepat juga, seperti NetFlow based tools. Tool berbasiskan NetFlow mampu mendeteksi kehadiran aplikasi2 non-standard yang membahayakan dan membuat lambat jaringan.

Penanganan yang lebih lanjut membutuhkan implementasi NAC (Network Admission Control) sebagai salah satu bagian dari network security yang sangat berguna untuk mengatur para user supaya taat pada peraturan yang berlaku.

Kesimpulan
Jadi sudah jelas sekarang bahwa kecepatan aplikasi jaringan tergantung pada banyak hal. Jika ada yang bilang bahwa untuk mempercepat aplikasi anda hanya diperlukan pemasangan sebuah bandwidth accelerator dengan caching dan compression saja, maka bisa dipastikan bahwa orang yang bersangkutan sedang asal bunyi, sok tau, atau untung2an saja..... (kecuali jika network audit sudah dilakukan dan kesimpulannya memang demikian :)

No comments: