Ringkasan dokumen tersebut adalah:
(1) Dokumen tersebut membahas konsep-konsep kinerja dalam manajemen infrastruktur TI, termasuk kinerja yang dirasakan pengguna, kinerja selama desain infrastruktur, dan pola-pola untuk meningkatkan kinerja sistem seperti caching, proksi web, dan basis data dalam memori.
2. Buku Acuan 1
IT Infrastructure Architecture
Infrastructure Building Blocks and Concepts
Third Edition
Sjaak Laan
Lulu Press Inc, 2017
https://s.id/itia3ed
http://www.sjaaklaan.com/
2
3. 3. Konsep Kinerja
3.1 Pendahuluan
3.2 Kinerja yang dirasakan
3.3 Kinerja selama desain infrastruktur
3.4 Kinerja sistem yang sedang berjalan
3.5 Pola kinerja
3
4. 3.1 Pendahuluan
Performa adalah faktor kinerja
yang khas
Tidak ada yang
mempermasalahkan sistem
berkinerja tinggi
Tetapi ketika suatu sistem tidak
berkinerja cukup baik,
pengguna dengan cepat mulai
mengeluh
4
5. 3.1 Pendahuluan
Sebagai contoh, menurut Equation Research:
78% pengunjung situs web telah mengunjungi situs pesaing karena
kinerja yang buruk selama waktu puncak
88% lebih kecil kemungkinannya untuk kembali ke situs setelah
pengalaman pengguna yang buruk
47% tersisa dengan persepsi yang kurang positif terhadap perusahaan
Dalam investigasi serupa pada tahun 2010, Akamai dan PhoCusWright
menemukan bahwa 57% pembeli online akan menunggu tiga detik atau
kurang sebelum meninggalkan situs dan 65% remaja berusia 18 hingga
24 tahun mengharapkan situs dimuat dalam dua detik atau kurang.
5
6. 3.2 Kinerja yang dirasakan
Kinerja yang dirasakan (perceived performance) mengacu pada
seberapa cepat suatu sistem muncul untuk melakukan tugasnya
Secara umum, orang cenderung melebih-lebihkan kesabarannya
sendiri
Orang cenderung menghargai prediktabilitas dalam kinerja
Ketika kinerja sistem berfluktuasi, pengguna mengingat
pengalaman buruk
Bahkan jika fluktuasinya relatif jarang
6
7. 3.2 Kinerja yang dirasakan
Beri tahu pengguna tentang berapa lama tugas akan berlangsung dengan
menggunakan
Bilah kemajuan (progress bars)
Layar percikan (splash screens)
7
8. 3.3 Kinerja selama desain infrastruktur
3.3.1 Pembandingan (Benchmarking)
3.3.2 Menggunakan pengalaman penjual (vendor)
3.3.3 Pembuatan prototipe
3.3.4 Profil pengguna (User profiling)
8
9. 3.3 Kinerja selama desain infrastruktur
Solusi harus dirancang, diimplementasikan, dan didukung
untuk memenuhi persyaratan kinerja
Bahkan di bawah beban yang meningkat
Menghitung performansi suatu sistem pada tahap desain
adalah:
Sangat sulit
Sangat tidak bisa diandalkan
9
10. 3.3 Kinerja selama desain infrastruktur
Kinerja harus diperhatikan:
Ketika sistem bekerja seperti
yang diharapkan
Ketika sistem dalam keadaan
khusus, seperti:
Bagian yang gagal
Kondisi pemeliharaan
Melakukan pencadangan
Menjalankan pekerjaan batch
Beberapa cara untuk
melakukannya adalah:
Pembandingan (Benchmarking)
Menggunakan pengalaman
vendor
Prototipe
Profil Pengguna
10
11. 3.3.1 Pembandingan (Benchmarking)
Tolok ukur (benchmarks) menggunakan program
pengujian khusus untuk menilai kinerja relatif dari
komponen infrastruktur
Perbandingan tolok ukur:
Kinerja berbagai subsistem
Melintasi arsitektur sistem yang berbeda
11
12. 3.3.1 Pembandingan (Benchmarking)
Tolok ukur membandingkan kecepatan bagian infrastruktur
Misalnya perbedaan kecepatan antara berbagai prosesor atau
antara berbagai disk drive
Tidak memperhitungkan penggunaan tipikal komponen tersebut
Contoh:
Operasi Titik Apung Per Detik – FLOPS (Floating Point Operations Per
Second)
Jutaan Instruksi Per Detik – MIPS (Million Instructions Per Second)
12
13. 3.3.2 Menggunakan pengalaman penjual
(vendor)
Cara terbaik untuk menentukan kinerja sistem dalam fase desain:
gunakan pengalaman penjual (experience of vendor)
Penjual (vendor) memiliki banyak pengalaman menjalankan
produk mereka di berbagai konfigurasi infrastruktur
Vendor dapat menyediakan:
Peralatan
Angka-angka
Praktik-praktik terbaik
13
14. 3.3.3 Pembuatan prototipe
Juga dikenal sebagai bukti konsep (proof of concept, PoC)
Prototipe mengukur kinerja sistem pada tahap awal
Membangun prototipe dengan cara:
Meminjam peralatan dari pemasok
Menggunakan kapasitas pusat data di lokasi vendor
Menggunakan sumber daya komputasi awan
Fokus pada bagian-bagian dari sistem yang menimbulkan risiko
tertinggi, sedini mungkin dalam proses desain
14
15. 3.3.4 Profil pengguna (User profiling)
Memprediksi beban yang akan ditimbulkan oleh sistem perangkat
lunak baru pada infrastruktur sebelum perangkat lunak benar-
benar dibangun
Dapatkan indikasi yang baik tentang penggunaan sistem yang
diharapkan
Langkah-langkahnya:
Tentukan jumlah grup pengguna biasa (persona)
Buat daftar tugas yang akan dilakukan persona di sistem baru
Dekomposisi tugas menjadi tindakan infrastruktur
Perkirakan beban per tindakan infrastruktur
Hitung total beban
15
18. 3.4 Kinerja sistem yang sedang berjalan
3.4.1 Mengelola kemacetan (bottlenecks)
3.4.2 Pengujian kinerja (Performance testing)
18
19. 3.4.1 Mengelola kemacetan (bottlenecks)
Kinerja sistem didasarkan pada:
Kinerja semua komponennya
Interoperabilitas berbagai komponen
Komponen yang menyebabkan sistem mencapai batas tertentu
disebut sebagai hambatan (bottleneck) sistem
Setiap sistem memiliki setidaknya satu hambatan yang
membatasi kinerjanya
Jika hambatan tidak berpengaruh negatif terhadap kinerja sistem
lengkap di bawah beban tertinggi yang diharapkan, maka hal ini
tidak apa-apa
19
20. 3.4.2 Pengujian kinerja
(Performance testing)
Pengujian beban (load testing) - menunjukkan bagaimana
kinerja sistem di bawah beban yang diharapkan
Pengujian tekanan (stress testing) - menunjukkan
bagaimana suatu sistem bereaksi ketika berada di bawah
beban yang ekstrim
Pengujian daya tahan (Endurance testing) - menunjukkan
bagaimana suatu sistem berperilaku ketika digunakan pada
beban yang diharapkan untuk jangka waktu yang lama
20
21. 3.4.2 Pengujian kinerja
(Performance testing) - Breakpoint
Tingkatkan beban
Mulai dengan sejumlah kecil
pengguna virtual
Meningkatkan jumlah selama
periode waktu tertentu
Hasil pengujian
menunjukkan bagaimana
kinerja bervariasi dengan
beban, yang diberikan
sebagai jumlah pengguna
versus waktu respons.
21
22. 3.4.2 Pengujian kinerja
(Performance testing)
Perangkat lunak pengujian kinerja biasanya menggunakan:
Satu atau lebih server untuk bertindak sebagai injektor
Masing-masing meniru sejumlah pengguna
Masing-masing menjalankan urutan interaksi
Konduktor/koordinator pengujian
Mengkoordinasikan tugas
Mengumpulkan ukuran (metrics) dari masing-masing injektor
Mengumpulkan data kinerja untuk tujuan pelaporan
22
23. 3.4.2 Pengujian kinerja
(Performance testing)
Pengujian kinerja harus dilakukan di lingkungan seperti
lingkungan produksi
Pengujian kinerja dalam lingkungan pengembangan biasanya
mengarah pada hasil yang sangat tidak dapat diandalkan
Bahkan ketika sistem pengujian kurang bertenaga berkinerja cukup
baik untuk mendapatkan hasil tes yang baik, sistem produksi yang
lebih cepat dapat menunjukkan masalah kinerja yang tidak terjadi
dalam tes
Untuk mengurangi biaya:
Gunakan lingkungan pengujian sementara (menyewa)
23
25. Ada berbagai cara untuk meningkatkan
kinerja system:
caching,
scaling,
load balancing,
cluster kinerja tinggi,
grid,
desain untuk performa, dan
manajemen kapasitas.
25
26. 3.5 Pola kinerja
3.5.1 Meningkatkan kinerja pada
lapisan atas
3.5.2 Caching
3.5.3 Proksi web
3.5.4 Penyimpanan data
operasional
3.5.5 Server ujung depan
3.5.6 Basis data dalam memori
3.5.7 Skalabilitas
3.5.8 Penyeimbangan beban
3.5.9 Cluster berkinerja tinggi
3.5.10 Komputasi Grid
3.5.11 Desain untuk digunakan
3.5.12 Manajemen kapasitas
26
27. Quiz Interaktif
80% masalah kinerja disebabkan oleh aplikasi yang berperilaku
buruk
Jelaskan empat cara untuk meningkatkan kinerja aplikasi
27
28. 3.5.1 Meningkatkan kinerja pada lapisan atas
80% masalah kinerja disebabkan oleh aplikasi yang
berperilaku buruk
Kinerja aplikasi dapat ditingkatkan dengan cara:
Penyetelan basis data dan aplikasi
Memprioritaskan tugas
Bekerja dari memori sebanyak mungkin (berlawanan dengan bekerja
dengan data pada disk)
Memanfaatkan antrian dan penjadwal dengan baik
Biasanya tindakan ini lebih efektif daripada menambahkan
daya komputasi 28
29. 3.5.2 Caching
Disk adalah perangkat mekanis yang pada dasarnya lambat
Caching dapat diimplementasikan pada:
Disks
Pengontrol disk
Sistem operasi
Semua memori yang tidak digunakan dalam sistem operasi digunakan untuk cache
disk
Seiring waktu, semua memori diisi dengan permintaan disk yang disimpan sebelumnya
dan blok disk yang dipilih, hal ini mempercepat aplikasi.
Memori cache:
Menyimpan semua data yang baru dibaca dari disk
Menyimpan beberapa blok disk mengikuti blok disk yang baru dibaca
29
31. 3.5.3 Proksi web
Saat pengguna menelusuri internet, data dapat di-cache pada
server proxy web
Server Proxy Web adalah sejenis cache
Data yang diakses lebih awal dapat diambil dari cache, bukan dari
internet
Manfaat:
Pengguna mendapatkan data dengan lebih cepat
Semua pengguna lain diberikan lebih banyak bandwidth ke internet,
karena data tidak harus diunduh lagi
31
32. 3.5.4 Penyimpanan data operasional
Penyimpanan data operasional (Operational Data Store,
ODS) adalah replika hanya-membaca (read-only) dari bagian
dari database, untuk penggunaan khusus
Informasi yang sering digunakan diambil dari database ODS
yang kecil
Basis data utama digunakan lebih sedikit untuk mengambil informasi
Kinerja basis data utama tidak terdegradasi
32
33. 3.5.5 Server ujung depan
(Front-end server)
Server front-end melayani permintaan data untuk pengguna
akhir
Biasanya adalah server web
Untuk meningkatkan kinerja, simpan data statis di server
front-end
Gambar adalah kandidat yang baik
Secara signifikan menurunkan jumlah lalu lintas ke sistem back-end
Selain itu, proxy terbalik (reverse proxy) dapat digunakan
Secara otomatis melakukan cache untuk data yang paling banyak
diminta 33
34. Pengertian Reverse Proxy
Dalam ilmu jaringan komputer, ketika seseorang mulai mengakses website akan
terjadi proses pertukaran data dari seseorang atau disebut client ke server.
Proses pertukaran data yang dimaksud adalah proses client mengirimkan request
untuk mengakses suatu website ke server. Kemudian server akan mengirimkan
balasan kepada client.
Proses pertukaran data antara client dan server diharapkan bisa berjalan dengan
lancar tanpa ada kendala baik kendala teknis maupun non teknis misalnya load
website yang lama hingga terkena serangan.
Nah dengan bantuan Reverse Proxy, proses pertukaran data antara client dan
server akan berjalan dengan lancar.
Reverse Proxy berada diantara client dan server. Tidak hanya itu, selain menjamin
proses pertukaran data lancar, Reverse Proxy juga dapat mengamankan proses
pertukaran data dari serangan DDoS. Biasanya Reverse Proxy diterapkan pada
web server.
34
35. 3.5.6 Basis data dalam memori
Dalam keadaan khusus, seluruh basis data dapat dijalankan
dari memori alih-alih dari disk
Basis data dalam memori digunakan dalam situasi di mana
kinerja sangat penting – misalnya sistem SCADA real-time
Sistem pemrosesan transaksi online kinerja tinggi (OLTP)
Sebagai contoh, pada tahun 2011 SAP AG memperkenalkan
HANA, basis data dalam memori untuk sistem SAP
Pengaturan khusus harus dibuat untuk memastikan data tidak
hilang saat terjadi kegagalan daya listrik.
35
36. 3.5.7 Skalabilitas
Skalabilitas menunjukkan kemudahan dengan suatu sistem
dapat dimodifikasi, atau komponen dapat ditambahkan, untuk
menangani peningkatan beban
Dua cara untuk men-skala suatu sistem:
Penskalaan vertikal (penskalaan ke atas) - Menambahkan sumber
daya ke satu komponen tunggal
Penskalaan horisontal (penskalaan ke luar) - Menambahkan lebih
banyak komponen untuk infrastruktur
36
37. 3.5.7 Skalabilitas –
Penskalaan vertikal
Menambahkan lebih banyak sumber daya, misalnya:
Server: lebih banyak memori, CPU
Saklar jaringgan (network switch): Menambahkan lebih banyak port
Penyimpanan (storage): Ganti disk kecil dengan disk yang lebih
besar kapasitasnya
Penskalaan vertikal mudah dilakukan
Dengan cepat mencapai batas
Komponen infrastruktur adalah "penuh"
37
38. 3.5.7 Skalabilitas –
Penskalaan horizontal
Menambahkan lebih banyak komponen ke infrastruktur, misalnya:
Menambahkan server ke kumpulan server web (web server farm)
Menambahkan disk ke sistem penyimpanan
Secara teori, skala penskalaan horizontal jauh lebih baik
Waspada/sadar akan munculnya bottleneck
Menggandakan jumlah komponen tidak selalu menggandakan
kinerja
Penskalaan horizontal adalah dasar untuk komputasi awan
Aplikasi harus menyadari penskalaan komponen infrastruktur
38
39. 3.5.7 Skalabilitas –
Penskalaan horizontal
39
Skalabilitas horizontal bekerja paling baik ketika sistem dipartisi.
Dengan cara ini, bagian dari sistem dapat menskala secara
independen dari bagian lain dari sistem.
Di bawah ini adalah contoh khas dari sistem yang dipartisi.
41. 3.5.8 Penyeimbangan beban
(Load balancing)
Penyeimbangan beban (Load Balancing) menggunakan
beberapa server yang melakukan tugas yang identic,
Contohnya:
Kumpulan server web (web server farm)
Kumpulan server surat (mail server Farm)
FTP (File Transfer Protocol) Server Farm
Penyeimbang beban menyebarkan beban pada mesin-mesin
komputer yang tersedia
Periksa beban saat ini di setiap server di kumpulan server
Kirimkan permintaan yang masuk ke server yang paling tidak sibuk 41
43. 3.5.8 Penyeimbangan beban
(Load balancing)
Penyeimbang beban tingkat lanjut (advanced load balancers) dapat
menyebarkan beban berdasarkan:
Jumlah koneksi yang dimiliki server
Waktu tanggap yang diukur dari server
Aplikasi yang berjalan pada sistem yang seimbang beban harus dapat
mengatasi fakta bahwa setiap permintaan dapat ditangani oleh server
yang berbeda
Penyeimbang beban harus mengetahui keadaan aplikasi
Mekanisme penyeimbang beban dapat mengatur bahwa sesi pengguna selalu
terhubung ke server yang sama
Jika suatu server pada server farm mati, informasi sesi menjadi tidak dapat
diakses dan sesi hilang 43
44. 3.5.8 Penyeimbangan beban
(Load balancing)
Penyeimbang beban meningkatkan ketersediaan
Ketika server di server farm tidak tersedia, penyeimbang beban
memperhatikan hal ini dan memastikan tidak ada permintaan
yang dikirim ke server yang tidak tersedia sampai kembali
online lagi
Ketersediaan load balancer itu sendiri sangat penting
Penyeimbang beban biasanya diatur dalam konfigurasi failover
44
45. 3.5.8 Penyeimbangan beban
(Load balancing)
Penyeimbangan beban jaringan:
Menyebarkan beban jaringan melalui beberapa koneksi jaringan
Sebagian besar sakelar (switch) jaringan mendukung trunking port
Beberapa koneksi Ethernet digabungkan untuk mendapatkan koneksi
Ethernet virtual yang menyediakan throughput yang lebih tinggi
Beban diseimbangkan melalui koneksi dengan sakelar jaringan
Penyeimbangan beban penyimpanan:
Menggunakan beberapa disk untuk menyebarkan beban baca dan
tulis
Gunakan banyak koneksi antara server dan sistem penyimpanan
45
46. 3.5.9 Cluster berkinerja tinggi
Cluster berkinerja tinggi menyediakan sejumlah besar daya
komputasi dengan menggabungkan banyak sistem komputer
Sejumlah besar server murah dapat membuat satu
superkomputer besar
Digunakan untuk sistem perhitungan intensif, misalnya:
Ramalan cuaca
Riset Geologi
Penelitian nuklir
Riset Farmasi
TOP500.org 46
48. 3.5.10 Komputasi Grid
(Grid Computing)
Komputasi Grid adalah klaster berkinerja tinggi yang terdiri
dari sistem yang tersebar secara geografis
Bandwidth yang terbatas adalah hal yang menghambatan
Contoh:
SETI@HOME
CERN LHC Computing Grid (140 pusat komputasi di 35 negara)
Perusahaan pialang ada untuk eksploitasi komersial grid
Keamanan menjadi perhatian saat komputer di jaringan (grid)
tidak terkendali
48
49. 3.5.11 Desain untuk digunakan
Aplikasi kinerja kritis harus dirancang sedemikian rupa
Tips:
Ketahui untuk apa sistem akan digunakan
Gudang data yang besar membutuhkan desain infrastruktur yang
berbeda dari sistem pemrosesan transaksi online atau aplikasi web
Sistem interaktif berbeda dari sistem berorientasi batch
Jika memungkinkan, cobalah untuk menyebarkan beban sistem
selama waktu yang tersedia
49
50. 3.5.11 Desain untuk digunakan
Dalam beberapa kasus, produk khusus harus digunakan untuk sistem
tertentu
Sistem operasi waktu nyata (real-time operating systems)
Database dalam memori (in-memory databases)
Sistem file yang dirancang khusus
Gunakan rencana implementasi standar yang terbukti dalam praktik
Ikuti implementasi yang direkomendasikan vendor
Minta vendor memeriksa desain yang Anda buat
Memindahkan data yang jarang digunakan dari sistem utama ke sistem lain
Memindahkan data lama ke database historis yang besar dapat mempercepat database
berukuran lebih kecil
50
51. 3.5.12 Manajemen kapasitas
Manajemen kapasitas menjamin kinerja sistem yang tinggi
dalam jangka panjang
Untuk memastikan kinerja tetap dalam batas yang dapat
diterima, kinerja harus dipantau
Analisis tren dapat digunakan untuk memprediksi penurunan
kinerja
Mengantisipasi perubahan bisnis (seperti kampanye
pemasaran yang akan datang)
51
Editor's Notes
3 Performance Concepts
3.1 Introduction
3.2 Perceived performance
3.3 Performance during infrastructure design
3.4 Performance of a running system
3.5 Performance patterns
Introduction
Performance is a typical hygiene factor
Nobody notices a highly performing system
But when a system is not performing well enough, users quickly start complaining
As an example, according to Equation Research [8]:
· 78% of website visitors have gone to a competitor’s site due to poor performance during peak times
· 88% are less likely to return to a site after a poor user experience
· 47% left with a less positive perception of the company
In a similar investigation in 2010, Akamai and PhoCusWright [9] found that 57% of online shoppers will wait three seconds or less before abandoning the site and 65% of 18- to 24-year-olds expect a site to load in two seconds or less.
Perceived performance
•Perceived performance refers to how quickly a system appearsto perform its task
•In general, people tend to overestimate their own patience
•People tend to value predictability in performance
–When the performance of a system is fluctuating, users remember a bad experience
–Even if the fluctuation is relatively rare
Perceived performance
Inform the user about how long a task will take
Progress bars
Splash screens
5.3 Performance during infrastructure design
5.3.1 Benchmarking
5.3.2 Using vendor experience
5.3.3 Prototyping
5.3.4 User profiling
Performance during infrastructure design
A solution must be designed, implemented, and supported to meet the performance requirements
Even under increasing load
Calculating performance of a system in the design phase is:
–Extremely difficult
–Very unreliable
Performance during infrastructure design
•Performance must be considered:
–When the system works as expected
–When the system is in a special state, like:
•Failing parts
•Maintenance state
•Performing backup
•Running batch jobs
•Some ways to do this are:
–Benchmarking
–Using vendor experience
–Prototyping
–User Profiling
Benchmarking
•A benchmark uses a specific test program to assess the relative performance of an infrastructure component
•Benchmarks compare:
–Performance of various subsystems
–Across different system architectures
Benchmarking
•Benchmarks comparing the raw speed of parts of an infrastructure
–Like the speed difference between processors or between disk drives
–Not taking into account the typical usage of such components
–Examples:
•Floating Point Operations Per Second –FLOPS
•Million Instructions Per Second –MIPS
Vendor experience
•The best way to determine the performance of a system in the design phase: use the experience of vendors
•They have a lot of experience running their products in various infrastructure configurations
•Vendors can provide:
–Tools
–Figures
–Best practices
Prototyping
•Also known as proof of concept (PoC)
•Prototypes measure the performance of a system at an early stage
•Building prototypes:
–Hiring equipment from suppliers
–Using datacentercapacity at a vendor’s premise
–Using cloud computing resources
•Focus on those parts of the system that pose the highest risk, as early as possible in the design process
User profiling
•Predict the load a new software system will pose on the infrastructure before the software is actually built
•Get a good indication of the expected usage of the system
•Steps:
–Definea number of typical user groups (personas)
–Create a list of tasks personas will perform on the new system
–Decompose tasks to infrastructure actions
–Estimate the load per infrastructure action
–Calculate the total load
User profiling personas/tasks
User profiling Infrastructure load
3.4 Performance of a running system
3.4.1 Managing bottlenecks
3.4.2 Performance testing
Managing bottlenecks
•The performance of a system is based on:
–The performance of all its components
–The interoperability of various components
•A component causing the system to reach some limit is referred to as the bottleneck of the system
•Every system has at least one bottleneck that limits its performance
•If the bottleneck does not negatively influence performance of the complete system under the highest expected load, it is OK
Performance testing
•Load testing-shows how a system performs under the expected load
•Stress testing -shows how a system reacts when it is under extreme load
•Endurance testing-shows how a system behaves when it is used at the expected load for a long period of time
Performance testing - Breakpoint
•Ramp up the load
–Start with a small number of virtual users
–Increase the number over a period of time
•The test result shows how the performance varies with the load, given as number of users versus response time.
Performance testing
•Performance testing software typically uses:
–One or more servers to act as injectors
•Each emulating a number of users
•Each running a sequence of interactions
–A test conductor
•Coordinating tasks
•Gathering metrics from each of the injectors
•Collecting performance data for reporting purposes
Performance testing
•Performance testing should be done in a production-like environment
–Performance tests in a development environment usually lead to results that are highly unreliable
–Even when underpowered test systems perform well enough to get good test results, the faster production system could show performance issues that did not occur in the tests
•To reduce cost:
–Use a temporary (hired) test environment
5.5 Performance patterns
There are various ways to improve the performance of systems. This section describes caching, scaling, load balancing, high performance clusters, grids, designing for performance, and capacity management.
But first a quick word on increasing performance on other levels than the infrastructure.
3.5 Performance patterns
3.5.1 Increasing performance on upper layers
3.5.2 Caching
3.5.3 Web proxies
3.5.4 Operational data store
3.5.5 Front-end servers
3.5.6 In-memory databases
3.5.7 Scalability
3.5.8 Load balancing
3.5.9 High performance clusters
3.5.10 Grid Computing
3.5.11 Design for use
3.5.12 Capacity management
Increasing performance on upper layers
•80% of the performance issues are due to badly behaving applications
•Application performance can benefit from:
–Database and application tuning
–Prioritizing tasks
–Working from memory as much as possible (as opposed to working with data on disk)
–Making good use of queues and schedulers
•Typically more effective than adding compute power
Disk caching
•Disks are mechanical devices that are slow by nature
•Caching can be implemented:
–Disks
–Disk controllers
–Operating system
•All non-used memory in operating systems is used for disk cache
•Over time, all memory gets filled with previously stored disk requests and prefetched disk blocks, speeding up applications.
•Cache memory:
–Stores all data recently read from disk
–Stores some of the disk blocks following the recently read disk blocks
Web proxies
•When users browse the internet, data can be cached in a web proxy server
–A web proxy server is a type of cache
–Earlier accessed data can be fetched from cache, instead of from the internet
•Benefits:
–Users get their data faster
–All other users are provided more bandwidth to the internet, as the data does not have to be downloaded again
Operational data store
•An Operational Data Store (ODS) is a read-only replica of a part of a database, for a specific use
•Frequently used information is retrieved from a small ODS database
–The main database is used less for retrieving information
–The performance of the main database is not degraded
Front-end servers
•Front-end servers serve data to end users
–Typically web servers
•To increase performance, store static data on the front-end servers
–Pictures are a good candidate
–Significantly lowers the amount of traffic to back- end systems
•In addition, a reverse proxy can be used
–Automatically cache most requested data
In-memory databases
•In special circumstances, entire databases can be run from memory instead of from disk
•In-memory databases are used in situations where performance is crucial –Real-time SCADA systems
–High performance online transaction processing (OLTP) systems
•As an example, in 2011 SAP AG introduced HANA, an in-memory database for SAP systems
•Special arrangements must be made to ensure data is not lost when a power failure occurs
Scalability
•Scalability indicates the ease in with which a system can be modified, or components can be added, to handle increasing load
•Two ways to scale a system:
–Vertical scaling (scale up) -adding resources to a single component
–Horizontal scaling (scale out) -adding more components to the infrastructure
Scalability –Vertical scaling
•Adding more resources, for example:
–Server: more memory, CPU’s
–Network switch: adding more ports
–Storage: Replace small disks by larger disks
•Vertical scaling is easy to do
•It quickly reaches a limit
–The infrastructure component is “full”
Scalability –Horizontal scaling
•Adding more components to the infrastructure, for example:
–Adding servers to a web server farm
–Adding disk cabinets to a storage system
•In theory, horizontal scaling scales much better
–Be aware of bottlenecks
•Doubling the number of components does not necessarily double the performance •Horizontal scaling is the basis for cloud computing
•Applications must be aware of scaling infrastructure components
Horizontal scalability works best when the system is partitioned. This way, parts of the system can scale independently of other parts of the system. Below is a typical example of a partitioned system.
Load balancing
•Load balancing uses multiple servers that perform identical tasks
–Examples:
•Web server farm
•Mail server farm
•FTP (File Transfer Protocol) server farm
•A load balancer spreads the load over the available machines
–Checks the current load on each server in the farm
–Sends incoming requests to the least busy server
Load balancing
•Advanced load balancers can spread the load based on:
–The number of connections a server has
–The measured response time of a server
•The application running on a load balanced system must be able to cope with the fact that each request can be handled by a different server
–The load balancer should contain the states of the application
–The load balancing mechanism can arrange that a user’s session is always connected to the same server
–If a server in the server farm goes down, its session information becomes inaccessible and sessions are lost
Load balancing
•A load balancer increases availability
–When a server in the server farm is unavailable, the load balancer notices this and ensures no requests are sent to the unavailable server until it is back online again
•The availability of the load balancer itself is very important
–Load balancers are typically setup in a failover configuration
Load balancing
•Network load balancing:
– Spread network load over multiple network connections
– Most network switches support port trunking
• Multiple Ethernet connections are combined to get a virtual Ethernet connection providing higher throughput
• The load is balanced over the connections by the network switch
• Storage load balancing:
– Using multiple disks to spread the load of reads and writes
– Use multiple connections between servers and storage systems
High performance clusters
• High performance clusters provide a vast amount of computing power by combining many computer systems
• A large number of cheap off the-shelf servers can create one large supercomputer
• Used for calculation-intensive systems
– Weather forecasts
– Geological research
– Nuclear research
– Pharmaceutical research
• TOP500.org
Grid Computing
•A computer grid is a high performance cluster that consists of systems that are spread geographically
•The limited bandwidth is the bottleneck
•Examples:
–SETI@HOME
–CERN LHC Computing Grid (140 computing centersin 35 countries)
•Broker firms exist for commercial exploitation of grids
•Security is a concern when computers in the grid are not under control
Design for use
•Performance critical applications should be designed as such
•Tips:
–Know what the system will be used for
•A large data warehouse needs a different infrastructure design than an online transaction processing system or a web application
•Interactive systems are different than batch oriented systems
–When possible, try to spread the load of the system over the available time
Design for use
–In some cases, special products must be used for certain systems
•Real-time operating systems
•In-memory databases
•Specially designed file systems
–Use standard implementation plans that are proven in practice
•Follow the vendor's recommended implementation
•Have the vendors check the design you created
–Move rarely used data from the main systems to other systems
•Moving old data to a large historical database can speed up a smaller sized database
Capacity management
•Capacity management guarantees high performance of a system in the long term •To ensure performance stays within acceptable limits, performance must be monitored
•Trend analyses can be used to predict performance degradation •Anticipate on business changes (like forthcoming marketing campaigns)