PROXY SERVER Disusun Oleh : Christ Daniel Simanjuntak (202 511 009) Arief Nurcahyo (202 511 032) Jefry Fernando Ngantung (202 511 047) Universitas Pembangunan Nasional “VETERAN” Jakarta Pendahuluan Dalam beberapa tahun terakhir ini, penggunaan internet semakin meluas termasuk di Indonesia. Internet sebagai jaringan dari jaringan – jaringan yang dengan bebas mempertukarkan informasi dan menghubungkan ribuan jaringan diseluruh dunia, tumbuh kembang dengan pesat. Saat ini diperkirakan lebih dari 16 juta komputer host terdapat dalam internet, dan lebih dari jutaan lagi tersembunyi dibalik dinding proxy server. Jumlah sistem didalam internet tumbuh lebih dari 70% setiap tahun. Dan populasi online diperkirakan akan akan tumbuh empat atau lima kali menjelang tahun 2006. Berkaitan dengan penggunaan internet, berbagai perkakas telah dikembangkan yang memberikan kemudahan dalam penciptaan, penyebaran, pengenalan dan pengenalan sumberdaya jaringan. Perkakas – perkakas tersebut memungkinkan penggunan untuk berkomunikasi secara elektronik, menerbitkan sumberdaya sendiri, dan mengorganisasikan dan membentuk pandangan sendiri tentang subjek informasi. Dalam proses komunikasi ilmiah, peneliti menggunakan internet untuk menjangkau audiens yang lebih luas dan merancang model komunikasi alternatif. Internet telah mulai mengubah cara manusia bekerja, dan dapat dipastikan akan mengubah cara manusia berinteraksi dengan dunia di sekitarnya. Banyak orang yang skeptis melihat internet, dan mengatakan bahwa internet sedang dalam bahaya keruntuhan setiap saat. Pandangan ini muncul dari mereka yang melihat bahwa internet dirancang penggunaan data secara intensif dan dengan pertumbuhan yang membumbung tinggi. Menurut Robert B. Palmer, dilihat dari perspektif teknis, ada empat hal yang akan terjadi begitu Internet menjadi platform bisnis yang dominan. Pertama, infrastruktur Internet akan diperkuat dan ditingkatkan untuk menyediakan backbone yang berkapasitas tinggi, tersedia dan aman yang dapat digunakan perusahaan untuk melakukan bisnis yang sesungguhnya pada World Wide Web. Kedua, Internet akan menghubungkan dan mengintegrasikan sistem non-Internet, seperti pertukaran data elektronik dan pemerosesan transaksi. Ketiga, Internet akan memungkinkan pengguna untuk mengakses informasi dan layanan dari mana saja dan kapan saja menggunakan peralatan yang sesuai dengan pilihan mereka. Dan keempat, dengan ledakan informasi yang tersedia pada Internet, akan memberikan pendekatan baru untuk mendapatkan dan mengindeks informasi tersebut. BAB I Untuk dapat menikmati fasilitas World Wide Web dengan lebih cepat gunakanlah Proxy Server. Proxy Server adalah sebuah server yang dilengkapi dengan software khusus yang melayani permintaan dokumen World Wide Web dari pengguna Internet. Untuk komunikasi antar proxy server digunakan protokol yang disebut sebagai ICP (Internet Cache Protocol). Protokol ini digunakan oleh proxy server untuk mengecek keberadaan suatu objek (dalam dunia proxy data biasa disebut sebagai objek) pada proxy server lain yang termasuk dalam hirarki proxy server pada suatu network. Objek itu sendiri dikirim melalui protokol HTTP. Overview dari cara kerja proxy server yang menggunakan ICP adalah sebagai berikut : ICP Query ICP Reply Proxy server 1 Proxy server 2 gambar 1. Komunikasi antar proxy server 1. Proxy server 1 memberi ICP query yang berisi data tentang keberadaan suatu objek pada proxy server 2. 2. Berdasarkan permintaan dari porxy server 1, proxy server 2 akan melihat keberadaan objek yang diminta pada cache data yang telah dimilikinya. Cache data sendiri berasal dari permintaan pengguna sebelumnya. 3. Apabila objek yang diminta dimiliki oleh proxy server 2, maka proxy server 2 akan memberi ICP reply ke proxy server 1 yang berisi petunjuk bahwa objek yang diminta dimiliki oleh proxy server 2. 4. Objek yang diminta oleh proxy server 1 akan ditransfer dari proxy server 2 dengan menggunakan protokol HTTP dan data ditransfer ke pengguna (selain dicache oleh proxy server 1 sendiri). 5. Apabila objek yang diminta tidak dimiliki oleh proxy server 2, proxy server 2 akan memberi ICP reply yang berisi petunjuk bahwa objek yang diminta tidak ada. 6. Apabila objek yang diminta tidak dimiliki oleh proxy server 2, maka proxy server 1 akan mengirimkan ICP query ke proxy server lain yang masih termasuk dalam hirarkinya (parent atau sibling proxy). Sebagai langkah terakhir, apabila objek tetap tidak dimiliki oleh proxy server dalam hirarkinya, maka objek akan diminta langsung ke server tujuan (direct) dan data akan dicache (selain ditransfer ke pengguna yang meminta). Di dalam dunia komputasi, kita mengenal adanya proxy object. Proxy menyediakan sebuah mekanisme dimana pemanggilan fungsi yang disediakan oleh suatu object tidak dilakukan secara langsung, melainkan melalui proxy. Proxy berfungsi sebagai gerbang akses untuk object object yang berada di belakang proxy. Penggunaan object proxy sering ditemui dalam berbagai aplikasi, baik sebagai façade, remote proxy, access proxy dan virtual proxy. Sebagai façade, proxy menyediakan interface tunggal untuk mengakses berbagai object. Dengan façade, akses ke fungsi yang disediakan object-object tersebut menjadi lebih mudah di pelihara, dan pengguna tidak perlu tahu detail dari fungsi-fungsi yang diakses. Remote proxy, digunakan untuk menyediakan sebuah mekanisme akses terhadap objectobject yang baik secara konsep maupun fisik terletak ‘jauh’ dari object pemanggil. Dengan mekanisme ini, pengguna akan melihat object-object tersebut seakan-akan berada dalam proses yang sama. Aplikasi remote proxy banyak kita temui dalam aplikasi dengan arstitektur terdistribusi. Access proxy adalah proxy yang digunakan sebagai filter keamanan terhadap object-object tertentu. Proxy tersebut akan mengaplikasikan security policy terhadap semua akses terhadap object. Yang terakhir, virtual proxy, menyediakan sebuah mekanisme yang sering disebut sebagai ‘place holder’. Proxy ini akan menyiapkan segala sesuatu yang dibutuhkan oleh object yang sesungguhnya, namun object tersebut sesungguhnya belum terbentuk. Baru pada saat di butuhkan, object tersebut akan di instantiate. Java (mulai versi 1.3) menyediakan dynamic proxy API di dalam paket java.lang.reflect.Proxy. Disebut dynamic, karena java proxy object tersebut mempunyai kemampuan untuk mengelola akses ke berbagai interface yang berbeda. Dengan demikian java proxy object mendukung konsep ‘loose couple’, satu hal yang ditengarai oleh banyak pihak sebagai kelemahan dari proxy pattern (GOF). Dalam proxy pattern, implementasi dari proxy object sangat terkait dengan implementasi object yang akan diakses melalui proxy tersebut. Dalam java proxy object, kelemahan tersebut diatasi dengan kemampuan untuk sifat dinamis yang dimilikinya. Utuk mendapatkan referensi kepada concrete object menggunakan java dynamic proxy, digunakan kode spt dibawah ini: MyProxyInterface o = (MyProxyInterface) java.lang.reflect.Proxy.newProxyInstance(obj.getClass(). getClassLoader(),Class[]{MyProxyInterface.class},new MyDynamicProxyClass(obj)); Dalam fragmen kode diatas, untuk mendapatkan instance dari object proxy, kita harus memanggil static method newProxyInstance dari java.lang.reflect.Proxy class. Ada tiga argumen masukan dari method tersebut, yaitu : . Class Loader dari concrete object yang akan di refer . Intreface yang diimplementasikan oleh concrete object . Dynamic proxy object, yang mengimplementasikan java.lang.reflect. InvocationHandler interface. Sifat dinamis dari proxy didapatkan dari kemampuan untuk menerima berbagai interface dan dari method invoke didefiniskan dalam interface java.lang.reflect. InvocationHandler dan harus diimplementasikan oleh dynamic proxy object. Method invoke tersebut mempunyai signature sebagai berikut: public Object invoke(Objek proxy, Method m, Object[] args) throws Throwable Yang harus di ingat adalah bahwa newProxyInstance method akan mengembalikan proxy object, bukan object yang sebenarnya. Proxy object ini bisa di cast menjadi tipe object yang kita inginkan. Pada saat kita mengeksekusi suatu fungsi yang disediakan oleh object tersebut, invoke method dari dynamic proxy object akan dipanggil untuk melakukan eksekusi. Didalam method invoke, pemanggilan fungsi tersebut akan diterjemahkan menjadi pemanggilan fungsi dari concrete object. Object result = m.invoke(obj, args); Dari gambaran diatas, kita bisa mengetahui bahwa dynamic proxy object menyediakan mekanisme yang elegan, scalable, dan maintainable untuk mengelola akses ke berbagai object dan fungsi yang disediakan oleh object tersebut. Untuk penjelasan yang lebih detail mengenai java proxy object bisa http://java.sun.com/j2se/1.4.1/docs/api/java/lang/reflect/Proxy.html dibaca di BAB II COMMAND PATTERN Command pattern di dalam buku GOF dijelaskan sebagai sebuah mekanisme untuk mengenkapsulasi request sebagai sebuah object, sehingga penanganan akan request bisa dikelola secara terpusat, dengan menyediakan method khusus dengan request object sebagai parameter masukan. Selain itu command pattern juga memungkinkan mekanisme pengantrian request dan request logging serta fasilitas undo. Kalau kita tidak menggunakan command pattern, setiap request yang datang akan di ceck dalam suatu block ‘switch case’ untuk mengangani request tersebut. Setiap kali kita akan menambah jenis request yang bisa ditangani, kita haruse menambah code pada blok ‘swith-case’ tersebut. Sebaliknya, dengan menggabungkan sifat polimorphism dari command pattern dan kemampuan dynamic loading dan mechanisme binding yang unik dari bahasa pemrpograman java, kita bisa mengembangkan sistem yang lebih reliable dan extensible. Di dalam diagam uml pada gambar 2, bisa kita lihat bahwa kunci dari command pattern adalah interface command. Interface command mendeklarasikan sebuah method : execute, yang harus di implementasikan oleh semua concrete class. Concrete command akan mendelegasikan penanganan request kepada reciever. Dalam hal ini, concrete command menjadi adapter antara invoker dan reciever. APLIKASI PROXY DAN COMMAND PATTERN DALAM SERVICE LAYER Dalam mengembangkan aplikasi, pasti kita mempuntai object-object yang bertugas untuk menyediakan layanan bisnis untuk object-object yang lain. Layanan bisnis yang disediakan bisa berupa manipulasi informasi, kalkulasi bisnis dan lain sebagainya. Peng-enkapsulasi-an object object yang menyediakan layanan bisnis dalam layer terpisah (service layer) sudah menjadi best-practice dalam pengembangan aplikasi berskala menengah dan besar. Hal tersebut dimaksudkan supaya dependensi terhadap business object bisa di minimalkan, serta skalabilitas dan kemudahan dalam pemeliharaan bisa ditingkatkan.