Skalabilitas dan Availabilitas Sistem Enterprise


Skalabilitas berarti kemampuan sistem untuk menangani pertumbuhan jumlah data dan concurrency tanpa memberikan dampak pada kinerja. Ada dua istilah skalabilitas, yaitu skalabilitas dlam persfektif latency dan skalabilitas dalam persfektif throughput. Stabilitas dalam persfektif latency mendefinisikan bahwa idealnya jika penambahan pengguna yang signifikan, aplikasi tersebut memberikan latency yang relatif konstan. Sedangkan persfektif throughput mendefinisikan bahwa idealnnya jika penambahan pengguna yang signifikan, aplikasi dapat meningkatkan kemampuan menangani jumlah request per detik secara linier. Persfektif tersebut dijelaskan dalam Gambar 1 berikut.

Latency and Throughput in scalability
Gambar 1  Skalabilitas dalam istilah latency dan throughput.

Salah satu teknik untuk meningkatkan skalabilitas adalah dengan menerapkan aplikasi atau service yang stateless. Jika di Java EE, digunakan stateless session bean. Aplikasi seharusnya menyimpan state-nya dalam repositori yang tersentalisasi, tetapi aplikasi sendiri bersifat stateless, sehingga tidak ada penyimpanan data atau state pada sistem file lokal. Aplikasi Stateless memungkinkan penambahan jumlah instan aplikasi untuk mengakomodasi pertumbuhan pengguna. Namun, repository tersentarlisai akan menyebabkan bottleneck karena penambahan data,repositori seperti RDBMS dapat memperlambat proses. Satu pendekatan untuk menyelesaikan isu ini adalah menimalisasi mutable state dalam database melalui teknik data sharding yaitu membagi database besar ke dalam database kecil yang cepat dan mudah dikelola dan penggunaan NoSQL data stores untuk beberapa atau semua data aplikasi [1] .

Teknik lain adalah implementasi redundancy dan load balancer, seperti ditunjukkan pada Gambar 2 , pada semua layer, baik software, hardware, power maupun data center untuk meningkatkan ketersediaan (availability) layanan. Meskipun data center sedang down, pengguna masih harus dapat mengakses aplikasi. Tingkat redundancy dan down time adalah faktor yang menentukan berapa dana investasi yang ditanamkan untuk sebuah solusi. Beberapa masalah tidak memiliki solusi dalam konteks teknologi saat ini, misalnya real time data mirroring atau sinkronisasi data antar data center yang terpisah secara geografis.

Redudancy
Gambar 2. Redudancy dengan Load Balancing

Sistem perlu menerapkan fault tolerance (contoh mekanisme retry) untuk menjamin bahwa aplikasi mengambil manfaat dari sumber daya yang dialokasikan sehingga layanan tetap berjalan.  Salah satu teknik untuk menerapkan fault tolerance ini adalah dengan menerapkan repositori meta data secara terpusat yang memiliki informasi tentang sumber daya baru alternatif ketika skala infrastruktur aplikasi akan ditingkatkan. Selain itu, perlu adanya monitoring sistem karena jika sistem tidak dimonitor dengan baik, maka kegagalan sistem tidak terdeteksi sehingga menyebabkan aplikasi menjadi unavailabe. Untuk itu, fasilitas untuk memonitor stack aplikasi dan mengambil aksi korektif sangat penting. SSelain itu, sistem juga harus memiliki fitur auto-scaling dan testing untuk menjamin bahwa aplikasi bekerja meskipun. Sedang dilakukan penambahan layanan baru. Salah satu produk software berbasis Java yang cukup baik untuk memonitor sistem adalah ManageEngine.

Terakhir, Jika aplikasi memperkenalkan antarmuka layanan baru, aplikasi harus memiliki kemampuan menggunakan antarmuka baru atau menggunakan yang lama dengan melalui mekanisme konfigurasi data, tanpa harus mengubah kode program aplikasi. Fitur konfigurasi data ini menjadi penting ketika rolling out fitur/layanan baru.

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


Tinggalkan Balasan