20
PERTEMUAN 5 PENGEMBANGAN APLIKASI ENTERPRISE PATTERN UNTUK MEMBANGUN APLIKASI BERKINERJA TINGGI

Ead pertemuan-5

Embed Size (px)

Citation preview

Page 1: Ead pertemuan-5

PERTEMUAN 5PENGEMBANGAN APLIKASI ENTERPRISE

PATTERN UNTUK MEMBANGUNAPLIKASI BERKINERJA TINGGI

Page 2: Ead pertemuan-5

Tujuan I nstruksional

Setelah mengikuti pertemuan ini, diharapkan mahasiswa dapat : Mendeskripsikan Kontributor Latency Mendeskripsikan Skalabilitas Aplikasi Mendeskripsikan Ketersediaan Aplikasi

Page 3: Ead pertemuan-5

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)

Page 4: Ead pertemuan-5

Kontributor Latency : Tier-ing

Page 5: Ead pertemuan-5

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. 

Page 6: Ead pertemuan-5

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

Page 7: Ead pertemuan-5

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)

Page 8: Ead pertemuan-5

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.

Page 9: Ead pertemuan-5

Bottleneck

cache thrashing poor algorithms data bloating wrong dimensioning

“The architect needs to take a call based on the latency requirements”

Page 10: Ead pertemuan-5

Skalabilitas Aplikasi

Skalabilitas berarti kemampuan aplikasi untuk menangani pertumbuhan jumlah data dan concurrency tanpa memberikan dampak pada kinerja.

Page 11: Ead pertemuan-5

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

Page 12: Ead pertemuan-5

Solusi Skalabilitas : Stateless Application/Service

Page 13: Ead pertemuan-5

Solusi Skalabilitas : Load Balancing

Page 14: Ead pertemuan-5

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.

Page 15: Ead pertemuan-5

Ketersediaan Aplikasi

Faktor-faktor yang berpengaruh pada Availability : Redudancy Fault Tolerance Monitoring and Testing Data Konfigurasi

Page 16: Ead pertemuan-5

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.

Page 17: Ead pertemuan-5

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.

Page 18: Ead pertemuan-5

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

Page 19: Ead pertemuan-5

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.

Page 20: Ead pertemuan-5

SELESAI PERTEMUAN 5