BAB I PENDAHULUAN 1.1 Latar Belakang Arsitektur software three tier berkembang pada tahun 1990an untuk mengatasi keterbatasan arsitektur two-tier(client-server). Pada gambar I-1 dapat dilihat bahwa arsitektur ini menambahkan middle tier server yang berada di antara komponen presentation/user interface tier dan komponen data management tier. Middle tier server ini merupakan tempat dilakukan eksekusi application/business logic dari suatu aplikasi dan dapat mengakomodasi ratusan user dengan menyediakan fasilitas seperti queueing, application execution, dan database staging. Dibandingkan dengan two tier [DIC95], arsitektur three tier meningkatkan performansi, fleksibilitas, kemudahan perawatan, reusability, dan scalability. Selain itu arsitektur ini juga menyembunyikan kompleksitas pemrosesan dari user. Karena sifatnya tersebut, arsitektur ini merupakan pilihan yang populer pada aplikasi Internet dan sistem informasi yang membutuhkan banyak pertukaran data pada jaringan komputer. Gambar I-1 Three Tier Architecture Untuk membuat aplikasi dengan arsitektur three tier yang reliable, dibutuhkan server yang fault tolerant. Fault tolerant merupakan suatu properti dari sistem yang membuat sistem tersebut dapat terus beroperasi walaupun ada kegagalan dari sebagian komponen sistem. Properti fault tolerant ini dibutuhkan untuk membangun sistem dengan tingkat availability yang tinggi. Contoh sistem yang harus memiliki properti fault tolerant adalah sistem perbankan yang harus melayani ribuan transaksi perhari; I-1 I-2 apabila sistem mengalami kegagalan yang mengakibatkan banyak transaksi gagal, maka bank akan mengalami kerugian yang besar. Properti fault tolerant ini dapat diimplementasikan dengan menggunakan strategi replikasi sehingga kegagalan sebuah komponen dapat digantikan oleh replikanya. Gambar I-2 Replikasi pada Three Tier Architecture Pada arsitektur three tier di gambar I-2, komponen middle tier dan data management tier merupakan komponen yang vital untuk direplikasi. Replikasi pada data management tier telah banyak tersedia. Contohnya adalah MySQL Cluster untuk MySQL. Karena alasan inilah, pembahasan replikasi akan difokuskan kepada bagian middle tier. Secara umum, interaksi pada aplikasi three tier yang mendukung proses transaksional adalah sebagai berikut : a. User mengirimkan request ke mid-tier via user interface. Request dari user dapat dijalankan sebagai sebuah transaksi terpisah atau sebagai bagian dari sebuah transaksi yang meliputi beberapa eksekusi request user sekaligus. b. Untuk eksekusi request user yang merupakan awal dari sebuah transaksi, midtier akan mengirimkan perintah begin transaction ke DBMS (Database Management System). c. Mid-tier memproses request dari client dengan menggunakan data yang diambil dari database. Setelah proses selesai, mid-tier akan mengirimkan hasilnya ke client. d. Request berikutnya dari client yang masih merupakan bagian dari transaksi yang sama akan dieksekusi seperti pada tahap (c). Pada saat akhir pelaksanaan I-3 eksekusi request yang merupakan akhir dari sebuah transaksi, mid-tier akan mengirimkan perintah end transaction ke DBMS. Setelah transaksi berakhir, maka data akan menjadi permanen. Untuk memudahkan mid-tier mengakses database pada data management tier dibutuhkan suatu mekanisme standar pengaksesan yang diterjemahkan ke dalam bentuk API (Application Programming Interface). Ada beberapa standar API untuk mengakses database diantaranya adalah ODBC (Open Database Connectivity) dan JDBC (Java Database Connectivity). ODBC menyediakan akses yang tidak tergantung kepada bahasa pemrograman, DBMS, atau sistem operasi serta mempunyai paradigma prosedural. Sedangkan JDBC menyediakan akses database untuk Java Platform dengan paradigma berorientasi objek. Pemilihan JDBC untuk pengerjaan tugas akhir ini disebabkan oleh banyaknya application server di mid-tier yang berjalan di atas Java Platform sehingga pemakaian JDBC yang berbasis Java Platform akan lebih efisien. JDBC Connector merupakan suatu program yang yang menyediakan akses bagi aplikasi Java ke berbagai macam database. JDBC Connector akan menghubungkan aplikasi Java dengan driver JDBC yang disediakan oleh vendor database maupun oleh Third Party. Pada sistem yang tereplikasi, jika terjadi kegagalan pada middle tier server, backup server dapat mengambil alih komputasi dan meneruskan transaksi yang gagal. Namun yang menjadi masalah adalah saat terjadi kegagalan, semua transaksi yang sedang aktif akan dibatalkan (abort), meskipun mungkin saja client telah menerima hasil eksekusi request yang merupakan bagian dari transaksi yang batal tersebut. Saat transaksi tersebut dieksekusi oleh backup mid-tier server, mungkin saja eksekusi transaksi ini menghasilkan data yang berbeda dengan transaksi asalnya karena apabila koneksi antara mid-tier dengan DBMS terputus, semua lock pada data akan dilepas sehingga ada kemungkinan client lain yang mempunyai prioritas yang lebih tinggi untuk melakukan transaksi daripada backup server melakukan perubahan terhadap data tersebut. I-4 1.2 Rumusan Masalah Berdasarkan pada latar belakang di atas, maka masalah yang akan dikaji dan diselesaikan dalam tugas akhir ini adalah: 1. Bagaimana cara MySQL Server berkomunikasi dengan client. 2. Apa yang diperlukan pada sisi database server agar dapat mendukung replikasi pada middle tier, dimana application server di middle tier akan berkomunikasi dengan DBMS MySQL dengan menggunakan connector JDBC. 3. Bagaimana strategi replikasi pada middle tier dapat diterapkan dengan menggunakan protokol komunikasi yang sudah ada. 1.3 Tujuan Tujuan utama tugas akhir ini adalah mengimplementasikan JDBC connector yang fault tolerant pada DBMS MySQL untuk mendukung replikasi di middle tier. Adapun tujuan detil yang ingin dicapai dalam pelaksanaan Tugas Akhir ini adalah sebagai berikut : 1. Memahami protokol komunikasi antara driver JDBC dengan MySQL. 2. Memodifikasi MySQL Server sehingga memungkinkan terjadinya koneksi yang fault tolerant dengan middle tier server. 1.4 Batasan Masalah Dalam pengerjaan Tugas Akhir ini, ditetapkan beberapa batasan masalah, yaitu: 1. Pengembangan aplikasi dilakukan di layer aplikasi (application layer) pada TCP/IP stack. 2. Penanganan fault tolerance diimplementasikan di sisi database server (data management tier). 3. Implementasi fault tolerance yang dilakukan adalah terhadap koneksi ke basis data, bukan basis data itu sendiri. 1.5 Metodologi Dalam penyusunan Tugas Akhir ini akan dilakukan tahapan-tahapan sebagai berikut: I-5 1. Studi literatur dan eksplorasi Tahap ini dilakukan dengan mempelajari literatur-literatur baik berupa textbook maupun artikel yang terdapat pada Internet. Eksplorasi dilakukan dengan mempelajari dokumentasi internal MySQL dan source code MySQL pada bagian penanganan koneksi dan transaksi. 2. Analisis dan perancangan Analisis dan perancangan dilakukan agar aplikasi yang dibangun bersifat moduler. 3. Implementasi Implementasi algoritma akan dilakukan berdasarkan hasil analisis dan perancangan. 4. Pengujian Pengujian dilakukan untuk menjamin aplikasi dapat berjalan sesuai dengan yang diharapkan. 1.6 Sistematika Pembahasan Sistematika penulisan laporan tugas akhir ini adalah sebagai berikut: 1. Bab I Pendahuluan, berisi penjelasan mengenai latar belakang, rumusan masalah, tujuan, batasan masalah, metodologi, serta sistematika pembahasan yang digunakan untuk menyusun laporan tugas akhir. 2. Bab II Kajian Pustaka, berisi kajian pustaka yang digunakan dalam analisis, perancangan, dan implementasi tugas akhir. 3. Bab III Eksplorasi Internal MySQL Server, berisi hasil eksplorasi internal MySQL Server. 4. Bab IV Analisis dan Perancangan, berisi analisis protokol MySQL serta rancangan solusi untuk mendukung replikasi di mid-tier. 5. Bab V Implementasi dan Pengujian, berisi implementasi hasil perancangan beserta hasil pengujian. 6. Bab VI Kesimpulan dan Saran, berisi kesimpulan dan saran yang didapatkan selama pelaksanaan Tugas Akhir.