PENDAHULUAN

advertisement
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.
Download