Upload
yudha-arif-budiman
View
117
Download
2
Embed Size (px)
Citation preview
PERTEMUAN 5PENGEMBANGAN APLIKASI ENTERPRISE
PATTERN UNTUK MEMBANGUNAPLIKASI BERKINERJA TINGGI
Tujuan I nstruksional
Setelah mengikuti pertemuan ini, diharapkan mahasiswa dapat : Mendeskripsikan Kontributor Latency Mendeskripsikan Skalabilitas Aplikasi Mendeskripsikan Ketersediaan Aplikasi
Aplikasi Berkinerja Tinggi
Aplikasi dengan Low web latency Berarti memberikan waktu loading halaman
web yang rendah
Aplikasi yang dapat melayani pengguna meskipun jumlah pengguna bertambah secara signifikan (scalability)
Aplikasi tidak down (highly available atau continuously available)
Kontributor Latency : Tier-ing
Solusi untuk Latency
Bawa data lebih dekat ke Aplikasi Aplikasi dapat me-cache data untuk mengurangi pemanggilan
ke DB. ▪ memcached / ehCache to cache data at the Web/application Tier. ▪ 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 Hibernate juga mendukung data caching▪ Aplikasi Internet Web dapat menggunakan CDN (content delivery
networks)/ Edge Networks ( seperti Akamai) mempercepat pengiriman konten statik.
Kontributior Latency : Disk I/O
Solusi : Menyimpan data di Memori Gunakan in Memory databases (Volt DB,
Solid DB, atau Oracle TimesTen), XTP solutions (Oracle coherence, IBM eXtreme Scale, GigaSpaces eXtreme Application Platform) untuk meningkatkan kinerja aplikasi
Solusi Low Latency : Parallelization of Task request sebuah layanan dapat dibagi ke dalam pekerjaan-pekerjaan
kecil yang dieksekusi secara paralel dan hasil-hasinya lalu dikombinasikan kembali.
Contoh teknik partisi sistem secara fungsional yang secara independent
melakukann komputasi dan memproses request, Map Reduce seperti Hadoop, CouchDB memungkinkan pekrjaan
dibagi ke dalam smaller chucks dan hasilnya dikombinasikan kembali sebelum dikirim sebagai respon.
Bahasa pemrograman Scala, ERLang, Ada dan sebagainya mendukung bahasa konstruksi untuk concurrency.
Concurrency library seperti Akka untuk Java, API terbaru tersedia mulai dari Java 1.5 (ExecutorService)
Solusi Low Latency : Konfigurasi Hardware dan Network
Optimasi Hardware – Hardware yang menjalankan aplikasi dapat di tune up untuk mengurangi latency.
Optimasi 10G/20G network, fiber channel, low latency switches, SSD (Solid State Drives), tidak menggunakan virtualisasi dapat mengurangi latency.
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.
Bottleneck
cache thrashing poor algorithms data bloating wrong dimensioning
“The architect needs to take a call based on the latency requirements”
Skalabilitas Aplikasi
Skalabilitas berarti kemampuan aplikasi untuk menangani pertumbuhan jumlah data dan concurrency tanpa memberikan dampak pada kinerja.
Solusi Skalabilitas : Stateless Application/Service
Aplikasi seharusnya menyimpan state-nya dalam repositori yang tersentalisasi, tetapi aplikasi sendiri bersifat stateless. 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. Dengan penambahan data, repositori seperti RDBMS dapat memperlambat proses.
Satu pendekatan untuk menyelesaikan isu ini adalah menimalisasi mutable state dalam database melalui teknik : data sharding : membagi database besar ke dalam database
kecil yang cepat dan mudah dikelola Penggunaan NoSQL data stores untuk beberapa atau semua
data aplikasi
Solusi Skalabilitas : Stateless Application/Service
Solusi Skalabilitas : Load Balancing
Solusi Skalabilitas : Fault Tolerance / Dynamic Discoverable Element
Ketika menjalankan sistem dalam cluster yang besar, sangat penting untuk mengurangi intervensi manual. Sebagai contoh ketika beban aplikasi mencapai beban maksmimal yang ditentukan, monitoring aplikasi seharusnya mampu menambah instan baru dan load balancer baru seharusnya mampu mengenali hal yang sama untuk menanggulanginya.
Ketika aplikasi tidak dapat terhubung dengan resource yang diinginkan, aplikasi seharusnya secara intelligent mengenali kegagalan dan mencoba mengakses alternatif resource yang tersedia. Aplikasi membutuhkan meta data repository terpusat untuk skenario fault tolerance.
Ketersediaan Aplikasi
Faktor-faktor yang berpengaruh pada Availability : Redudancy Fault Tolerance Monitoring and Testing Data Konfigurasi
Redudancy
Redundancy perlu dibangun pada semua layer, software, hardware, power dan data center. 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.
Fault Tolerance
Aplikasi perlu fault tolerance (contoh mekanisme retry) untuk menjamin bahwa aplikasi mengambil manfaat dari sumber daya yang dialokasikan dinamis untuk tetap berjalan.
Menerapkan repositori meta data terpusat yang memiliki informasi tentang sumber daya baru alternatif ketika meningkatkan nskala infrastruktur aplikasi.
Monitoring dan Testing
Jika Aplikasi tidak dimonitor dengan baik, maka kegagalan sistem tidak terdeteksi sehingga menyebabkan aplikasi menjadi unavailabe.
Kemampuan untuk memonitor stack aplikasi dan mengambil aksi korektif sangat penting.
Aplikasi harus memiliki fitur-fitur monitoring, auto-scaling, dan testing untuk menjamin bahwa aplikasi bekerja
Data Konfigurasi
Jika aplikasi memperkenalkan antarmuka layanan baru, aplikasi harus memiliki kemampuan menggunakan antarmuka baru atau menggunakan yang lama. Faktor ini menjadi penting ketika rolling out fitur/layanan baru.
SELESAI PERTEMUAN 5