Isu Latency Pada Arsitektur Multitier dan Solusinya


Suatu sistem informasi dikatakan berkinerja tinggi jika memenuhi kriteria : (1) sistem bekerja dengan latency rendah dengan kata lain jika sistem tersebut berupa aplikasi web, maka aplikasi tersebut memberikan waktu loading halaman web yang rendah atau aplikasi tersebut dapat melayani pengguna yang terus bertambah secara signifikan; (2) aplikasi tidak pernah down ketika adanya penambahan layanan baru (highly available atau continuously available). Ada beberapa isu latency yang muncul pada arsitektur multitier. Arsitektur multitier merupakan pattern arsitektur yang ditujukan untuk meningkatkan skalabilitas atau ketersediaan. Namun, isu latency muncul pada arsitektur ini.

multiter
Gambar 1. Arsitektur multitier

Salah satu solusi untuk menangani latency adalah dengan membawa data lebih dekat ke aplikasi. Menurut [1], aplikasi dapat me-cache data sehingga pemangilan ke database dapat dikurangi. Sebagian besar saat ini database masih disimpan di disk sehingga pemanggilannya harus melalui I/O. Pemanggilan I/O inilah kontributor latency. Lebih lanbjut lagi [1] menjelaskan bahwa web tier dapat me-cache data seperti static HTML fragments/images/javascript/CSS files, application tier dapat me-cache data non-transactional seperti lookup maps. OR Mapping tool seperti EclipseLink dan Hibernate juga mendukung data caching, dan aplikasi internet web dapat menggunakan CDN (content delivery networks)/ Edge Networks ( seperti Akamai) untuk mempercepat pengiriman konten statik.  Teknik ini ditunjukkan pada Gambar 2 berikut.

Cache
Gambar 2. Solusi untuk mengurangi latency dengan data caching.

Solusi kedua yang dapat diterapkan untuk mengurangi latency adalah dengan menyimpan data di memori [1]. Gunakan in Memory databases (Volt DB, Solid DB, atau Oracle TimesTen), XTP solutions (Oracle coherence, IBM eXtreme Scale, GigaSpaces eXtreme Application Platform) untuk teknik ini. Solusi ketiga adalah melakukan parelelisasi tugas. Request sebuah layanan dapat dibagi ke dalam pekerjaan-pekerjaan kecil yang dieksekusi secara paralel dan hasil-hasinya lalu dikombinasikan kembali. Contoh teknik ini adalah mempartisi sistem secara fungsional dan secara independen melakukan komputasi untuk memproses request. Map Reduce seperti Hadoop, CouchDB  memungkinkan pekerjaan dibagi ke dalam smaller chucks dan hasilnya dikombinasikan kembali sebelum dikirim sebagai respon. Bahasa pemrograman Scala dan  ERLang mendukung bahasa konstruksi untuk  concurrency. Concurrency library seperti Akka untuk  Java tersedia mulai dari Java 1.5 (ExecutorService).

Solusi lainnya adalah optimasi hardware-hardware yang menjalankan aplikasi dengan melakukan tune up untuk mengurangi latency, optimasi 10G/20G network, fiber channel, low latency switches, SSD (Solid State Drives), tidak menggunakan virtualisasi dapat mengurangi latency. Selain itu perlu dipertimbangkan mekanisme Transport. Mekanisme transport dapat menambah latency aplikasi. Sebagai contoh, komunikasi aman seperti https dapat menyebabkan latency karena adanya penambahan  overhead dari proses decipher  data pada sisi penerima. Satu cara untuk ini adalah mematikan SSL pada Load Balancer/Firewall [1].

Pustaka :
[1] ___________. Patterns for Building High Performance Applications. TechSpot. http://java.sys-con.com/node/2116436


Tinggalkan Balasan