BAB 2 LANDASAN TEORI 2.1 Server Server (Sosinsky, 2009:108) adalah sebuah program perangkat lunak yang menyediakan layanan ke komputer lain melalui koneksi jaringan. Server dapat dijalankan pada sistem lokal atau pada sistem remote, tetapi perangkat lunak harus rutin menyediakan layanan ini untuk sistem lain atau setidaknya mampu memberikan layanan. 2.2 Web Server Mesin ini (Yadav, 2009:3) menyimpan dan mengambil data internet (dan intranet) untuk perusahaan. Beberapa dokumen, data, dan lain – lain, berada pada web server. Web application menyediakan akses ke dokumen dan data lainnya. Klien "thin" biasanya menggunakan web browser untuk meminta dokumen – dokumen tersebut. Server tersebut membagi dokumen – dokumen di intranet, atau di internet (atau extranet). Protokol yang paling umum digunakan adalah HTTP (Hyper Text Transfer Protocol). 2.3 Database Server Data (Yadav, 2009:3) berada di server, dalam bentuk database SQL. Database server menyediakan akses ke data kepada klien, dalam menanggapi permintaan SQL. Database server membagi data yang berada dalam database melalui jaringan. Database server memiliki protokol yang lebih efisien daripada 6 7 file server. Database server menerima permintaan SQL dan memproses mereka dan hanya mengembalikan data yang diminta; sehingga klien tidak harus berurusan dengan data yang tidak relevan. 2.4 Cluster Beberapa mesin stand-alone (Deshpande dan Kamalapur, 2008:6-33) yang bekerja secara paralel dan terhubung melalui jaringan kecepatan tinggi membentuk cluster. Berikut klasifikasi cluster: 1. High Availability Cluster Dalam jenis cluster ini (Deshpande dan Kamalapur, 2008:6-34) beberapa redundant node diberikan. Ketika komponen sistem gagal, redundant node ini digunakan untuk menyediakan layanan. Dalam kasus kegagalan apapun, high availability clustering mendeteksi kesalahan dan restart aplikasi segera pada node baru. Pada high availability clustering, setiap node dalam cluster dipantau menggunakan koneksi private network. High availability cluster juga disebut sebagai failover cluster. Pada operasi normal, ada berbagai node dalam cluster terhubung oleh heartbeat private network. 2. Load Balancing Cluster Jenis cluster ini (Deshpande dan Kamalapur, 2008:6-35) digunakan untuk load balancing. Ketika beberapa permintaan datang ke node cluster, Cluster ini mendistribusikan mereka ke berbagai node. Distribusi ini dibuat sesuai dengan ketersediaan node. Setiap node 8 dalam cluster mampu menangani setiap permintaan. Dalam kasus permintaan gagal, permintaan itu dikirimkan ke node lain dalam sistem. 2.5 Load Balancing Load balancing (Membrey, Plugge dan Hows, 2012:109) merupakan kemampuan untuk mentransfer setiap bagian dari proses untuk permintaan sistem ke sistem independen lain yang akan menanganinya secara bersamaan. Load balancing membagi beban yang masuk ke satu server diantara sejumlah perangkat lain. Load balancing memiliki keuntungan mengurangi jumlah proses yang dilakukan oleh server penerima primer—memungkinkan untuk menangani permintaan lebih banyak dan meningkatkan kinerja—karena ada sedikit kompetisi untuk sumber daya dan ada lebih banyak perangkat memproses seluruh beban. Gambar 2.1 Load Balancing 9 Sebagai load balancer (Dix, 2010:148) menerima setiap permintaan, load balancer harus memutuskan proses (atau backend) yang harus menangani permintaan. Algoritma paling sederhana load balancer bisa mengimplementasikan mungkin untuk secara acak memilih backend yang diketahui, tetapi hasilnya akan tidak sangat seimbang. Beberapa backend mungkin menerima terlalu banyak permintaan sementara yang lain posisi diam. Untungnya, ada sejumlah strategi load balancing baik yang mudah digunakan, termasuk round-robin, least-connection dan URI-based load balancing. 2.5.1 Algoritma Load Balancing Terdapat beberapa macam algoritma untuk load balancing diantaranya: 1. Random Allocation Dalam Random allocation (Deshpande dan Kamalapur, 2008:B-4) permintaan HTTP ditugaskan ke server dengan memilih secara acak diantara sekelompok server. Dalam kasus seperti ini, salah satu server mungkin dapat ditugaskan permintaan yang banyak, sedangkan server lainnya menganggur atau diam. 2. Round Robin Sebuah load balancer (Dix, 2010:149) beroperasi menggunakan algoritma round-robin membuat internal counter dari backend yang terakhir digunakan, dan menggunakan pilihan berikutnya dari daftar berurutan dari semua backend 10 yang diketahui. Ketika setiap permintaan tiba, backend berikutnya dipilih, dan counter bertambah, perulangan kembali ke awal dari daftar apabila diperlukan. 3. Least Connection Dengan algoritma least connection (Dix, 2010:150), load balancer mencoba untuk menyalurkan permintaan berdasarkan pada jumlah beban saat ini. Counter sebuah koneksi backend akan bertambah sebagai permintaan yang dikirim dan berkurang setelah mereka menyelesaikannya. 4. URI-Based Load Balancing URI-based load balancer (Dix, 2010:151) dimana semua permintaan untuk setiap data dapat diteruskan ke backend (server) yang sama selagi masih tersedia, jika backend menjadi kelebihan beban, load balancer menyesuaikan dengan menyalurkan permintaan untuk backend yang masih tersedia. 2.5.2 Tipe Load Balancer Terdapat dua pilihan untuk digunakan ketika merancang load balancer. Pilihannya adalah menggunakan software load balancing atau hardware load balancing. 1. Software Load Balancing Load balancer yang biasanya paling sering digunakan adalah yang berbasis perangkat lunak (Deshpande dan Kamalapur, 2008:B-5). Sering kali terintegrasi dengan 11 perangkat lunak web server dan paket aplikasi perangkat lunak. Proses load balancing dipengaruhi oleh perangkat komputer yang digunakan. Perangkat keras yang dapat mempengaruhi performa metode ini adalah kartu jaringan (Network Interface Card) yang digunakan, besarnya RAM (Random Access Memory) pada perangkat, dan juga media penyimpanan. 2. Hardware Load Balancing Load balancer perangkat keras (Deshpande dan Kamalapur, 2008:B-5) dapat menyalurkan paket TCP/IP untuk berbagai server di dalam cluster. Jenis load balancer ini menyediakan topologi yang solid dan didukung dengan ketersediaan tinggi, tetapi tentu datang dengan harga yang jauh lebih mahal. 2.6 Failover Failover (McBee, 2008:456) sebenarnya adalah sebuah proses multi langkah. Jika salah satu node mengalami kegagalan hardware, sinyal heartbeat dari node gagal berhenti. Node yang masih bekerja mendeteksi ini karena tidak adanya heartbeat node lain. Heartbeat (Simmons dan Carstarphen, 2012:34) adalah pemeriksaan kesehatan dikirim antara node untuk menjamin ketersediaan setiap node. Dua atau lebih (Gibson, 2010:340) server yang dikonfigurasi bersamasama, dengan beberapa server yang ditunjuk sebagai node aktif dan yang lain ditunjuk sebagai node tidak aktif. Node aktif memberikan layanan kepada klien 12 dan node tidak aktif memantau node aktif. Jika node aktif gagal, node tidak aktif dapat mengambil alih dengan sedikit gangguan kepada klien. Gambar 2.2 – Failover Failback (McBee, 2008:457) adalah ketika layanan mendeteksi heartbeat dari node gagal sebelumnya telah pulih, failback dapat dimulai. Proses ini melalui step yang sama dengan failover, perbedaanya hanya kembalinya node gagal yang telah di failover menjadi sedia kala. 13 Gambar 2.3 – Failback 2.7 Parallel Database Dalam arsitektur parallel database, (Ricardo, 2011:454) ada beberapa prosesor yang mengontrol beberapa unit disk yang berisi database. Database dapat dipartisi pada disk, atau mungkin direplikasi. Jika fault-tolerance adalah prioritas tinggi, sistem dapat diatur sehingga masing-masing komponen dapat berfungsi sebagai cadangan untuk komponen lain dari jenis yang sama, mengambil alih fungsi dari setiap komponen serupa yang gagal. Arsitektur sistem parallel database bisa shared-memory, shared-disk, shared-nothing, atau hierarchical. 1. Shared-memory Dalam sistem shared-memory, (Ricardo, 2011:454) semua prosesor memiliki akses ke memori yang sama dan berbagi disk. Database berada pada disk, baik di replikasi pada mereka atau di partisi 14 diantara mereka. Ketika prosesor membuat permintaan data, data dapat diambil dari salah satu disk ke memori buffer yang dimiliki oleh semua prosesor. Database management system menginformasikan prosesor apa halaman dalam memori berisi halaman data yang diminta. Gambar 2.4 – Shared-memory 2. Shared-disk Dalam desain shared-disk, (Ricardo, 2011:454) masing-masing prosesor memiliki akses eksklusif ke memori sendiri, tetapi semua prosesor memiliki akses ke unit disk bersama. Ketika prosesor meminta data, halaman database dibawa ke memori prosesornya. 15 Gambar 2.5 – Shared-disk 3. Shared-nothing Dalam sistem shared-nothing, (Ricardo, 2011:454) masing – masing prosesor memiliki kontrol eksklusif unit disk-nya sendiri atau beberapa unit dan memorinya sendiri, namun prosesor bisa berkomunikasi dengan satu sama lain. Gambar 2.6 – Shared-nothing 16 4. Hierarchical Dalam arsitektur hierarchical, (Ricardo, 2011:455) sistem terdiri dari node yang shared-memory, dihubungkan oleh jaringan interconnection. Sistem hanya berbagi komunikasi dengan satu sama lain, membuat secara keseluruhan arsitektur inter-system sharednothing. Gambar 2.7 – Hierarchical Ada dua metrik penting (ITL Education Solutions Limited, 2010:387) untuk mengukur efisiensi dari suatu sistem parallel database, yaitu, scale-up dan 17 speed-up. Menjalankan tugas dalam sedikit waktu dengan meningkatkan derajat paralelisme disebut speed-up, dan penanganan tugas yang lebih besar dengan meningkatkan derajat paralelisme disebut scale-up. Parallel database (Ricardo, 2011:458) menggunakan arsitektur sharednothing memberikan speed-up linier, yang berarti sesuai jumlah penambahan prosesor dan disk, kecepatan operasi meningkat secara linier. Mereka juga menyediakan scale-up linier, yang berarti bahwa mereka terukur, sehingga jika banyak prosesor dan disk ditambahkan, tingkat kinerja tertopang. Hal ini memungkinkan untuk meningkatkan jumlah data yang disimpan dan diproses tanpa mengorbankan kinerja. Karakteristik shared-nothing ini telah manjadi arsitektur pilihan untuk web application. 2.8 Database Replication Replication (Bell, Kindahl dan Thalmann, 2010:5) digunakan untuk mereplikasi semua perubahan yang dibuat pada server—disebut master server atau hanya master—ke server lain, yang disebut slave server atau hanya slave. Hal ini biasanya digunakan untuk membuat salinan tepat dari server master, tetapi replikasi dapat digunakan untuk keperluan lain juga. Berikut adalah jenis dari replication: 1. Synchronous Replication Synchronous, (Greenwald, Stackowiak dan Stern, 2008:287) atau real-time, replikasi yang dapat digunakan bila tidak ada toleransi untuk perbedaan data atau data yang hilang. Data di site sekunder harus sesuai dengan site utama setiap saat dan mencerminkan semua 18 transaksi yang dilakukan. Setiap transaksi di site utama akan memicu pemanggilan prosedur di site sekunder untuk mereproduksi transaksi. 2. Asynchronous Replication Dengan asynchronous replication, (Greenwald, Stackowiak dan Stern, 2008:287) transaksi yang dilakukan di site utama dan beberapa waktu kemudian direplikasi ke site sekunder. Sampai antrian transaksi yang ditangguhkan "pushed" ke site sekunder, mereplikasi perubahan, data di sekunder akan berbeda dari data site utama. Jika database utama hilang tidak dapat ditarik kembali, transaksi unpushed yang ditangguhkan dalam antrian juga akan hilang. Gambar 2.8 – Synchronous dan asynchronous replication