35 - pemrograman terdistribusi menggunakanp3m.amikom.ac.id/p3m/35 - pemrograman terdistribusi...

22
Seminar Nasional Teknologi 2007 (SNT 2007) ISSN : 1978 – 9777 Yogyakarta, 24 November 2007 D 1 PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN PYTHON MERUPAKAN ALTERNATIF YANG SEDERHANA DAN MENARIK DALAM MEMBANGUN SISTEM SEKELAS SUPERKOMPTER DENGAN ALOKASI DANA YANG RENDAH Ema Utami dan Mahdi Ridho STMIK AMIKOM Yogyakarta e-mail : [email protected] ABSTRAK Perancangan dan pembangunan sistem diperlukan untuk membantu manusia dalam memecahkan masalah mulai dari yang sederhana sampai yang komplek. Untuk melakukan proses yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan menghitung rata-rata penghasilan penduduk suatu daerah. Namun, bagaimana jika dihadapkan pada suatu kasus pencarian bilangan prima terbesar. Mungkin saja manusia dapat memberikan gambaran simulasi secara umum dengan berbagai teknik, tetapi untuk detail dan segala kemungkinannya sangat sulit dikerjakan. Dalam hal ini dibutuhkan suatu sistem dengan spesifikasi khusus. Pilihan boleh saja menggunakan satu superkomputer untuk melakukan perhitungan. Alasan yang masuk akal untuk menggunakan superkomputer dengan kecepatan dan ketelitian yang tinggi. Namun, penggunaan superkomputer membutuhkan dana yang sangat mahal, diperkirakan memakan biaya dengan angka 8-10 digit dolar AS, dan sulit diperoleh di pasaran pada umumnya karena adanya pembatasan ekspor dari pemerintah Amerika. Lalu, apakah ada solusi lain yang dapat menggantikan teknologi superkomputer? Suatu isu yang menarik dalam perkembangan teknologi informasi dapat menjawab pertanyaan tersebut. Awal mulanya muncul pemikiran bagaimana suatu komputer biasa dapat dijalankan secara optimal layaknya sebuah superkomputer. Para pengembang teknologi informasi akhirnya menemukan satu alternatif yang masuk akal terutama dari segi finansial yaitu distributed system atau distributed programming. Kata kunci : superkomputer, teknologi informasi, distributed programming 1. Pendahuluan Distributed system merupakan suatu sistem yang terdiri dari beberapa komputer dan terhubung dalam suatu jaringan dimana semua komputer saling berkontribusi untuk menyelesaikan masalah. Dalam suatu distributed system, ada sebuah sub-system yang mampu memberikan tugas kepada setiap sistem yang ingin bergabung dan menerima kembali hasilnya. Untuk membangun suatu distributed system, sebaiknya menggunakan sesuatu yang standar dimana telah diimplementasikan oleh berbagai platform. Sehingga sistem yang dibuat dapat digunakan secara meluas. Selain penggunaan teknologi yang standar, perlu dipertimbangkan juga

Upload: dangnguyet

Post on 13-Mar-2019

253 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 1  

PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN

PYTHON MERUPAKAN ALTERNATIF YANG SEDERHANA DAN MENARIK

DALAM MEMBANGUN SISTEM SEKELAS SUPERKOMPTER DENGAN ALOKASI DANA YANG RENDAH

Ema Utami dan Mahdi Ridho

STMIK AMIKOM Yogyakarta

e-mail : [email protected]

ABSTRAK

Perancangan dan pembangunan sistem diperlukan untuk membantu manusia dalam memecahkan masalah mulai dari yang sederhana sampai yang komplek. Untuk melakukan proses yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan menghitung rata-rata penghasilan penduduk suatu daerah. Namun, bagaimana jika dihadapkan pada suatu kasus pencarian bilangan prima terbesar. Mungkin saja manusia dapat memberikan gambaran simulasi secara umum dengan berbagai teknik, tetapi untuk detail dan segala kemungkinannya sangat sulit dikerjakan. Dalam hal ini dibutuhkan suatu sistem dengan spesifikasi khusus.

Pilihan boleh saja menggunakan satu superkomputer untuk melakukan perhitungan. Alasan yang masuk akal untuk menggunakan superkomputer dengan kecepatan dan ketelitian yang tinggi. Namun, penggunaan superkomputer membutuhkan dana yang sangat mahal, diperkirakan memakan biaya dengan angka 8-10 digit dolar AS, dan sulit diperoleh di pasaran pada umumnya karena adanya pembatasan ekspor dari pemerintah Amerika. Lalu, apakah ada solusi lain yang dapat menggantikan teknologi superkomputer?

Suatu isu yang menarik dalam perkembangan teknologi informasi dapat menjawab pertanyaan tersebut. Awal mulanya muncul pemikiran bagaimana suatu komputer biasa dapat dijalankan secara optimal layaknya sebuah superkomputer. Para pengembang teknologi informasi akhirnya menemukan satu alternatif yang masuk akal terutama dari segi finansial yaitu distributed system atau distributed programming.

Kata kunci : superkomputer, teknologi informasi, distributed programming

1. Pendahuluan

Distributed system merupakan suatu sistem yang terdiri dari beberapa komputer dan terhubung dalam suatu jaringan dimana semua komputer saling berkontribusi untuk menyelesaikan masalah. Dalam suatu distributed system, ada sebuah sub-system yang mampu memberikan tugas kepada setiap sistem yang ingin bergabung dan menerima kembali hasilnya.

Untuk membangun suatu distributed system, sebaiknya menggunakan sesuatu yang standar dimana telah diimplementasikan oleh berbagai platform. Sehingga sistem yang dibuat dapat digunakan secara meluas. Selain penggunaan teknologi yang standar, perlu dipertimbangkan juga

Page 2: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 2  

masalah dana yang akan dikeluarkan untuk membangun distributed system agar bisa ditekan seminimal mungkin. Hal utama yang sangat berpengaruh dalam masalah dana adalah hardware. Kabar gembira yang dapat dijadikan pertimbangan adalah hardware (dalam hal ini komputer) yang sudah out of date dapat digunakan untuk membangun distributed system.

Teknologi dalam distributed system terdiri dari beberapa kategori, di antaranya:

1) Socket

Teknologi ini merupakan cikal bakal dari distributed system. Konsep dasarnya terdapat sebuah server yang akan membuka socket dan mendefinisikan berbagai aturan dan client-client melakukan tugasnya masing-masing dengan mengikuti aturannya. Teknologi ini sangat sulit dan komplek karena dibutuhkan kemampuan untuk membuat semacam protokol baru.

2) Remote Procedure Call (RPC)

Dalam RPC terdapat sub-system yang mendefinisikan berbagai aturan dalam bentuk procedure, selanjutnya sub-system lainnya memanggil procedure tersebut untuk menyelesaikan tugasnya masing-masing.

3) Objek terdistribusi dalam satu bahasa pemograman

Contoh implementasinya pada Java Remote Method Invocation (RMI), DOPY, dan Pyro.

4) Objek terdistribusi tanpa memperhatikan perbedaan bahasa pemograman

Contoh implementasinya pada DCOM dari Microsoft dan CORBA.

5) Teknologi lain seperti Message-oriented middleware, mobile agent, dan lain sebagainya.

Salah satu teknologi standar yang dapat digunakan dalam membangun suatu distributed system adalah Remote Procedure Call (RPC). Dalam konteks distributed sytem, suatu sub-system mendefinisikan beberapa aturan (dalam hal ini berupa procedure) dan sistem lain dimungkinkan bergabung untuk menyelesaikan masalah berdasarkan procedure yang didefinisikan. Teknologi RPC telah dipertimbangkan kurang lebih sekitar tahun 1976. Teknologi ini membutuhkan model pengalamatan server, protokol transport, dan type marshalling.

Beberapa proyek distributed system yang telah berhasil dilakukan di antaranya:

1) Abacus adalah sebuah distributed system yang menggabungkan 17 komputer Pentium III dengan masing-masing 2 processor (total ada 34 CPU) dengan sistem Linux digunakan untuk aplikasi multimedia berbasis internet. Abacus dibangun pada tahun 2000 dan diisukan sebagai salah satu perangkat komputasi terbaik di Hongkong.

2) Barkeley Open Infrastructure for Network Computing (BOINC) yang dikembangkan oleh tim dari University of California, Barkeley Amerika.

3) Einstein@home adalah proyek yang menggunakan sistem terdistribusi dalam melakukan pencarian terhadap bintang neutron berputar menggunakan data dari LIGO dan detektor gelombang gravitasi GEO.

4) Climateprediction@net adalah sistem terdistribusi yang digunakan dalam perhitungan perubahan iklim.

Namun di balik kelebihannya, sistem yang terdistribusi juga menimbulkan masalah baru seperti konkurensi data, latensi, dan berbagai kemungkinan kesalahan lainnya. Hal ini merupakan sesuatu yang dianggap wajar dalam perkembangan teknologi informasi dan menjadi tantangan bagi dunia TI untuk menemukan solusi yang nyata dan tepat guna.

Page 3: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 3  

3. XML-RPC

XML-RPC adalah salah satu bentuk sederhana implementasi teknologi RPC yang menggunakan XML sebagai type marshalling serta HTTP sebagai protokol transport dan pengalamatan servernya. XML-RPC sangat mirip dengan SOAP yang juga menggunakan XML dan HTTP. Meskipun SOAP lebih kompleks dibandingkan XML-RPC, namun SOAP masih jauh dari stabil.

Kini XML-RPC telah diimplementasikan pada banyak bahasa pemograman, sebut saja Python, Java, Perl, C, C++, PHP, dan sebagainya. Hal ini membuktikan bahwa XML-RPC merupakan teknologi yang standar dan matang. XML-RPC juga mendukung multi-platform termasuk UNIX, Windows, dan Macintosh.

Dalam XML-RPC terdapat sistem yang bertugas sebagai server dan client. Server mendefinisikan berbagai aturan dalam bentuk procedure, selanjutnya procedure tersebut akan dipanggil oleh client dalam menyelesaikan tugasnya masing-masing. Secara global cara kerjanya dapat digambarkan sebagai berikut:

Gambar 1: Bagan cara kerja XML-RPC

Salah satu contoh sukses pemanfaatan XML-RPC adalah KDE dan ZOPE. XML-RPC juga telah digunakan oleh Red Hat dalam beberapa layanan baik secara eksternal maupun internal. Selain itu, XML-RPC sangat cocok dalam pengembangan aplikasi bisnis secara intensif baik yang berbasis dekstop maupun web. Memanfaatkan XML-RPC untuk membantu masalah yang kompleks dan butuh proses komputasi yang besar cukup masuk akal bagi kalangan pengguna rumahan maupun profesional.

Kelebihan yang diperoleh dari penggunaan XML-RPC dalam melakukan pemograman secara terdistribusi yaitu:

1) Membuat aplikasi dapat berjalan secara modular, dalam konteks distributed tugas benar-benar dapat dibagi ke beberapa sub-system melalui pembagian module.

2) Dengan adanya teknologi internet, memungkinkan seluruh komputer yang ada dunia turut berkontribusi menjadi bagian sub-system tanpa harus mengganggu aktivitas kerja seperti biasanya.

3) XML-RPC merupakan teknologi yang cukup stabil dan mudah untuk digunakan.

HTTPXML XML

XML‐RPC

DATA 

DATA 

DATA DATA 

DATA 

DATA Code 

Code 

Code  Code

Code

Code

Page 4: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 4  

4) Mendukung sistem keamanan yang dapat diandalkan dalam hal pengalamatan server.

5) Sifatnya yang free, open, dan multi-platform, memudahkan setiap user untuk secara langsung menggunakannya.

4. Python

Sekilas, nama bahasa pemograman yang satu ini terdengar seperti nama salah satu reptil buas. Python dikembangkan oleh Guido van Rossum ([email protected]) pada awal tahun 1990 di Stichting Mathematisch Centrum (http://www.cwi.nl). Python sendiri dapat dikatakan merupakan penerus dari bahasa ABC. Pada tahun 1995, sebagian besar pengembangan Python dilakukan di Corporation for National Research Initiatives (http://www.cnri.reston.va.us). Pengembangan Python saat ini dinaungi oleh Python Software Foundation.

Beberapa rilis Python berada dalam bendera licensi yang berbeda-beda, akan tetapi semuanya adalah open source. Hampir semua licensi Python kompatibel dengan GPL, kecuali Python versi 1.6, 2.0, 1.6.1, dan 2.1.

Python merupakan interpreter yang dapat diandalkan dalam penanganan hal-hal yang sangat rumit dan membutuhkan perhitungan dengan ketelitian tingkat tinggi. Dalam dunia free software, jarang sekali terdapat implementasi suatu bahasa pemograman yang datang satu paket dengan GUI toolkit sendiri termasuk dalam hal ini Python. Meskipun Python menggunakan pustaka Tk, namun bukan dikembangkan secara khusus untuk Python. Selain itu, dukungan berbagai GUI toolkit untuk Python dapat ditemukan dimana-mana seperti PyGTK dan PyQT. Contoh aplikasi GUI yang dibangun dari bahasa Python adalah installer RedHat Linux. Pustaka-pustaka lain yang tidak datang bersama suatu bahasa pemograman umumnya diimplementasikan oleh pihak ketiga dan dapat digunakan secara bebas.

Python dapat dijalankan di hampir semua platform mulai dari GNU/Linux, Windows, dan Machintos. Python termasuk ke dalam general purpose programming language dimana hampir semua tugas pemograman di lingkungan sistem (dalam Linux), jaringan, sampai pemograman berbasis web. Python juga menyediakan framework untuk membuat aplikasi jaringan.

Python sangat mendukung pemograman berorientasi objek, dan semuanya merupakan suatu objek di Python. Berbeda dengan bahasa pemograman pada umumnya, Python sangat memperhatikan whitespace dan indentasi.

Beberapa aplikasi lainnya yang telah dibuat dari Python adalah ZOPE sebuah aplikasi server, Grail sebuah web browser, dan KnowBot Operating Environment (distributed environment untuk kode mobile), engine untuk virtual reality di University of Virginia, dan masih banyak lagi. Karena kestabilannya, Python telah digunakan sejak lama oleh Google, Inc.

Dalam hubungannya dengan Distributed Programming, Python menyediakan 2 pustaka atau modul yaitu SimpleXMLRPCServer dan xmlrpclib yang masing-masing berfungsi sebagai server dan client.

Kemampuan python dalam mengelola tipe data sangat baik. Untuk mendeklarasikan suatu variabel dilakukan secara langsung tanpa menyebutkan tipe datanya, ini yang membedakan Python dengan bahasa lain. Python akan menentukan tipe datanya secara otomatis. Python juga mendukung konversi dan perhitungan antar tipe data dengan ketelitian yang tinggi. Python membagi tipe data ke dalam 2 jenis yaitu bilangan (semua tipe yang berhubungan dengan angka murni) dan string.

Untuk tipe data dalam rumpun bilangan termasuk di dalamnya adalah integer, long, float, oktal, hexadesimal, dan bilangan kompleks. Hal-hal yang harus diperhatikan:

1) Untuk bilangan oktal dan hexa masing-masing diawali dengan 0 dan 0x

Page 5: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 5  

2) Untuk bilangan yang panjang diakhiri dengan karakter l atau L

3) Untuk bilangan float, gunakan e atau E pada eksponensial

4) Untuk bilangan kompleks dibagi ke menjadi bagian real dan imajiner, dan diakhiri dengan j atau J

Operator untuk tipe dalam rumpun bilangan dapat dilihat pada tabel berikut:

Operator Keterangan

+

-

*

/

%

**

~

>>

<<

|

&

^

>, >=

<, <=

==

!= atau <>

penjumlahan

pengurangan, negasi

perkalian

pembagian

sisa pembagian

pemangkatan

bitwise komplemen

bitwise shiftright

bitwise shiftleft

bitwise or

bitwise and

bitwise xor

perbandingan lebih besar dan lebih besar sama dengan

perbandingan lebih kecil dan lebih kecil sama dengan

perbandingan sama dengan

perbandingan tidak sama dengan

Tabel 1: Operator untuk tipe data bilangan

Dalam menangani penggunaan string python dapat diandalkan, dengan aturan sebagai berikut:

1) diapit tanda kutip tunggal (') atau ganda (“)

2) bila di dalam suatu string terdapat karakter kutip tunggal (') penulisannya diapit kutip ganda (“)

3) bila di dalam suatu string terdapat karakter kutip tunggal (“) penulisannya diapit kutip ganda (')

Operator-operator untuk tipe data string dapat dilihat pada tabel berikut:

Operator Keterangan

+ penjumlahan

Page 6: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 6  

Operator Keterangan

*

>

<

==

!= atau <>

in

pengulangan

perbandingan lebih besar (jumlah karakter)

perbandingan lebih kecil

sama dengan

tidak sama dengan

anggota himpunan

Tabel 2: Operator untuk tipe data string

List dapat disamakan dengan array pada bahasa C. List berguna sekali bila memiliki banyak data dengan berbagai tipe, akan dirasakan bila membuat program yang komplek. Hal-hal yang perlu diperhatikan:

1) List bersifat mutable sehingga nilai suatu indeksnya bisa diubah

2) Aturan lainnya sama seperti perlakuan tipe data string

Beberapa method yang sangat berguna dalam memanipulasi list diantaranya:

Method Keterangan

append(b)

sort()

count(b)

extend(list)

index(b)

insert(i,b)

pop(i)

remove(b)

reverse()

menambahkan data b di akhir list

mengurutkan sebuah list

menghasilkan jumlah anggota b dalam list

menambahkan data berupa list pada akhir suatu list

mendapatkan indeks dari kemunculan pertama dari b

menyisipkan data b sebelum indeks i

menghapus data pada index i, defaultnya nilai paling akhir

menghapus data b yang muncul pertama kali

membalik anggota data suatu list

Tabel 3: Method list

Tuple kegunaannya hampir sama dengan list yaitu dalam hal pengumpulan berbagai data. Namun di satu sisi terdapat perbedaan yang menonjol antara tuple dengan list yaitu dalam hal penulisan dan sifatnya. Pada list dibatasi tanda kurung siku, sedangkan pada tuple dibatasi tanda kurung biasa. Selain itu, tuple merupakan object yang immutable. Hal lain yang perlu diperhatikan untuk tuple dengan satu elemen atau anggota, penulisannya ditambah koma (,) setelah elemen pertama dan sebelum tanda kurung tutup.

Dictionary merupakan tipe berupa kumpulan data seperti list dan tuple namun disajikan dalam bentuk yang tidak berurutan. Mungkin bagi bahasa lain penggunaan dictionary sangat aneh dan tidak ada. Setiap Elemen data dalam dictionary dibagi menjadi key dan value. Bagi para

Page 7: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 7  

programmer yang terbiasa dengan penggunaan seleksi case, akan kebingungan saat mengenal python karena tidak tersedia. Namun dengan adanya dictionary permasalahan tersebut dapat dipecahkan. Beberapa hal yang perlu diperhatikan:

1) Untuk mengakses nilai data menggunakan key atau kunci, jadi bukannya indeks seperti pada list dan tuple

2) Dictionary merupakan objek yang mutable

3) Fungsi penggabungan dan irisan pada dictionary tidak berlaku

4) Dictionary tidak memperhatikan urutan

5) Penulisannya dibatasi oleh tanda kurung kurawal {}

Untuk informasi selengkapnya silahkan membaca manualnya atau kunjungin situs resminya di www.python.org.

5. Instalasi dan Konfigurasi

5.1 Python

Pada dasarnya Python merupakan perangkat lunak yang secara default termasuk dalam suatu paket distribusi GNU/Linux. Untuk GNU/Linux distribusi Slackware menggunakan Python versi 2.4, biasanya terdapat pada CD I direktori /slackware/d. Toolkit yang digunakan untuk melakukan instalasi paket di Slackware adalah installpkg, berikut langkah instalasinya:

# mount /mnt/cdrom

# cd /mnt/cdrom/slackware/d

# installpkg python-2.4.1-i486-1.tgz

Dari proses instalasi di atas akan membuat beberapa informasi yang tersimpan dalam direktori /usr termasuk di dalamnya berisi library, dokumentasi, file binary, dan informasi lainnya. Kelebihan Python adalah menyediakan modus interaktif yang sangat berguna dalam melakukan latihan dan tes kode. Untuk menulis kode dalam modus interaktif dilakukan dengan memanggil toolkit python pada shell Linux.

# python

Python 2.4.1 (#1, Apr 10 2005, 22:30:36)

[GCC 3.3.5] on linux2

Type "help", "copyright", "credits" or "license"

for more information.

>>>

Tanda “>>>” merupakan suatu prompt dalam modus interaktif Python, selanjutnya Python siap menerima input kode yang dimasukkan.

Page 8: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 8  

5.2 PostgreSQL

Perangkat lunak PostgreSQL bisa didapatkan pada situs resminya http://www.postgresql.org atau beberapa mirror lainnya. Paket yang tersedia bervariasi mulai dari rpm, tar.gz, tar.bz2, deb, dan exe untuk versi Windows. Pada penelitian ini digunakan paket dalam bentuk source tar.bz2. Langkah-langkah global instalasi untuk paket source adalah unpack paket, konfigurasi paket yang telah diunpack menggunakan beberapa opsi jika dibutuhkan, kompilasi, dan setup.

# tar –xjpvf postgresql-8.0.3.tar.bz2

# cd postgresql-8.0.3

# ./configure --prefix=/usr/local/pgsql

--enable-FEATURE=yes --with-python --with-openssl

--with-libraries=/lib:/usr/lib --with-zlib

--with-include=/usr/include --with-gnu-ld

# make; make install

PostgreSQL merupakan aplikasi daemon atau server, segala aplikasi dalam kategori daemon dibutuhkan user yang sepsifik untuk mengendalikannya. User yang digunakan untuk PostgreSQL diberi nama postgres. Dalam melakukan instalasi, user ini harus dibuat secara manual.

# groupadd postgres

# adduser postgres

Selanjutnya akan dibuat sebuah direktori yang berfungsi untuk inisialisasi database beserta informasi penting lainnya seperti keamanan koneksi ke database. Hak kepemilikan direktori ini diberikan sepenuhnya kepada user postgres.

# mkdir /usr/local/pgsql/data

# chown –R postgres.postgres /usr/local/pgsql/data

Setelah proses pembuatan direktori inisialisasi database selesai, langkah selanjutnya adalah melakukan inisialisasi database dengan status user postgres.

# su – postgres

$ /usr/local/pgsql/bin/initdb –D

/usr/local/pgsql/data

Proses instalasi dan konfigurasi di atas dapat dikatakan selesai dan database PostgreSQL sudah bisa dijalankan. Tetapi demi kemudahan dan kesempurnaan hasil instalasi, bisa ditambahkan beberapa konfigurasi dalam bentuk file seperti pembacaan PATH dan file kontrol yang bertugas

Page 9: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 9  

untuk menjalankan, menghentikan, me-restart, dan melihat status server PostgreSQL. File pembacaan PATH pada Slackware disimpan dalam direktori /etc/profile.d dengan ekstensi .sh. Berikut isi file pembacaan PATH PostgreSQL yang diberi nama pgsql.sh:

#!/bin/sh

# Variable - Variable PostgreSQL

dir=/usr/local/pgsql

lib=$dir/lib

library_path=$lib:$library_path

manpath="$MANPATH:$dir/man"

data=$dir/data

PATH="$PATH:$dir/bin"

export dir

export lib

export library_path

export manpath

export data

export PATH

Sedangkan file kontrol bisa diletakkan pada sembarang direktori, namun pada umumnya file kontrol di Slackware terletak dalam direktori /etc/rc.d. Berikut isi file kontrol dengan nama rc.pgsql yang dimaksud:

#!/bin/sh

# Scripts untuk start dan stop PostgreSQL

server=/usr/local/pgsql/bin/postmaster

pgctl=/usr/local/pgsql/bin/pg_ctl

data=/usr/local/pgsql/data

case "$1" in

start)

echo "Menjalankan PostgreSQL..."

su - postgres -c "$server -i -D $data

>logfile 2>&1 &"

echo -n ""

;;

stop)

echo -n "Menghentikan PostgreSQL..."

Page 10: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 10  

su - postgres -c "$pgctl -D $data stop"

;;

restart)

echo -n "Mengulang PostgreSQL..."

su - postgres -c "$pgctl -D $data restart"

;;

status)

su - postgres -c "$pgctl -D $data status"

;;

*)

echo "Gunakan: `basename $0` (start|stop|restart|status)"

exit 1

;;

esac

exit 0

Kemudian file tersebut diubah hak aksesnya menjadi file yang bisa dieksekusi:

# chmod 744 /etc/rc.d/rc.pgsql

Untuk mencoba file kontrol tersebut bisa melakukan beberapa perintah berikut:

1) Menjalankan server PostgreSQL

# /etc/rc,d/rc.pgsql start

2) Me-restart server PostgreSQL

# /etc/rc.d/rc.pgsql restart

3) Menghentikan server PostgreSQL

# /etc/rc.d/rc,pgsql stop

4) Melihat status server PostgreSQL

# /etc/rc.d/rc.pgsql status

Untuk menjalankan server PostgreSQL secara otomatis di saat booting sistem, bisa melakukan penambahan informasi pada file /etc/rc.d/rc.M sebagai berikut:

Page 11: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 11  

if [ -x /etc/rc.d/rc.pgsql ]; then

. /etc/rc.d/rc.pgsql start

fi

5.3 PyGreSQL

Toolkit ini berfungsi sebagai paket yang berisi module untuk koneksi ke server PostgreSQL yang diintegrasikan bersama Python. Untuk mendapatkannya bisa mengunjungi situs resminya di http://www.pygresql.org. Langkah-langkah instalasinya:

# installpkg PyGreSQL.tgz

Hasil perintah di atas akan menghasilkan sebuah direktori bernama /PyGreSQL-3.8.1. Di dalam direktori ini berisi file-file yang akan diarahkan menjadi sebuah module ke direktori library Python. Sebelumnya status server PostgreSQL harus dalam keadaan aktif atau running.

# python setup.py build

# python setup.py install

Proses kompilasi di atas akan mengkopikan beberapa file library yaitu pg dan _pg ke dalam direktori /usr/lib/python2.4/site-packages. Setelah proses kompilasi selesai, langkah selanjutnya adalah mengenalkan library PostgreSQL bernama libpq.so.4.0 dengan cara membuat file link dan diberi nama libpq.so.4. File link ini (libpq.so.4) akan disimpan pada direktori /usr/lib. Langkah ini dilakukan untuk menghindari kesalahan saat melakukan import module di Python, dimana Python tidak dapat menemukan library yang dimaksud.

# ln -s /usr/local/pgsql/lib/libpq.so.4.0 /usr/lib/libpq.so.4

6. Pengujian

6.1 Server PostgreSQL

Uji coba server PostgreSQL dilakukan dengan beberapa langkah berikut:

1) Mendaftarkan user baru

Untuk mendaftarkan user baru hanya bisa dilakukan oleh user daemon PostgreSQL yaitu dalam hal ini user postgres. Perintah yang digunakan adalah createuser diikuti nama user yang akan didaftarkan. Disini akan didaftarkan user baru bernama root pada server PostgreSQL.

# adduser rido

# su – postgres

$ createuser rido

Shall the new user be able...database? (y/n) y

Page 12: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 12  

Shall the new user be able...new users? (y/n) n

CREATE USER

2) Membuat database baru

Pada penelitian ini akan dibuat sebuah database yang nantinya akan digunakan untuk aplikasi kepegawaian, database ini dibuat oleh user root.

$ createdb tuxhouse

Untuk menguji bahwa database telah berhasil dibuat dengan langkah berikut:

$ psql -d tuxhouse

Welcome to psql 8.0.3, the PostgreSQL interactive

terminal.

Type: \copyright for distribution terms

\h for help with SQL commands

\? for help with psql commands

\g or terminate with semicolon to execute query

\q to quit

tuxhouse=>

Simbol “=>” merupakan prompt dalam modus interaktif PostgreSQL dan menandakan database telah berhasil dibuat.

3) Menambahkan prosedur keamanan user

Bagian ini sangat penting saat melakukan koneksi ke database. Prosedur keamanan untuk user dengan pemberian password yang menggunakan metode enkripsi MD5. Langkah ini harus dilakukan dalam modus interaktif.

tuxhouse=> alter user rido with encrypted password 'rahasia';

4) Melakukan query database

Uji coba selanjutnya adalah melakukan query untuk membuat beberapa tabel dalam database tuxhouse. Tabel-tabel yang akan dibuat terdiri dari lima tabel yaitu pegawai, absensi, promosi, mutasi, dan terminasi. Listing query ditulis dalam sebuah file, kemudian file tersebut dipanggil di dalam modus interaktif PostgreSQL. Isi file listing terebut disimpan dalam file bernama listing.sql

Page 13: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 13  

(dapat dilihat pada lampiran). Untuk melakukan pemanggilan file tersebut dengan langkah sebagai berikut:

tuxhouse=> \i listing.sql

6.2 Module pg

Cara termudah melakukan uji coba penggunaan module pg adalah melalui modus interaktif Python. Ada beberapa cara yang bisa dilakukan yaitu:

1) Cek module

Untuk melakukan cek module di Python bisa dengan langkah berikut:

>>> help()

>>> pg

Perintah di atas untuk membuka dokumentasi module pg. Jika module pg ditemukan, berarti module tersebut telah siap digunakan.

2) Import module dan melakukan koneksi

Langkah ini untuk melakukan uji coba secara lebih detail.

>>> import pg

>>> konek = pg.DB('tuxhouse','localhost',5432,None, None,'rido’,’rahasia')

Untuk melakukan koneksi digunakan beberapa informasi penting di antaranya nama database, hostname, port, opt, tty, user, dan password.

6.3 Aplikasi Berbasis Teknologi Distributed System

Berikut beberapa contoh aplikasi berbasis distributed system beserta penjelasannya:

6.3.1 Simulasi Aplikasi Database Menggunakan Memori

Pada aplikasi ini memanfaatkan resource memori sebagai databasenya. Disini akan dibuat listing program untuk aplikasi server, sedangkan untuk aplikasi clientnya dijalankan melalui modus interaktif. File listing program untuk server bernama server.py. Langkah-langkah uji coba sebagai berikut:

1) Pada komputer server jalankan file server.py

# python server.py

2) Pada komputer client masuk ke dalam modus interaktif lalu ikuti langkah berikut:

Page 14: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 14  

>>> import xmlrpclib

>>> pegawai=xmlrpclib.Server ('http://192.168.100.1:1')

>>> pegawai.Simpan('1','rido','kepsek','IVB')

'1'

>>> pegawai.Simpan('2','novriana','guru','IIIB')

'2'

>>> pegawai.Cari('1')

['1', 'rido', 'kepsek', 'IVB']

>>> pegawai.Cari('2')

['2', 'novriana', 'guru', 'IIIB']

6.3.2 Aplikasi Mencari Bilangan Prima Tertinggi

Ada tiga file listing program yang akan dibuat dan digunakan dalam uji coba ini, di antaranya prima.py, prima_server.py, prima_client.py. File prima.py akan dijalankan sebagai aplikasi biasa atau non distribusi, aplikasi ini akan diujicobakan pada 2 komputer secara bergantian. Sedangkan file prima_server.py dan prima_client.py merupakan aplikasi yang dijalankan secara terdistribusi, file prima_server.py dijalankan pada komputer server dan prima_client dijalankan pada komputer client. Masing-masing aplikasi akan dijalankan dalam rentang waktu satu jam, hal ini untuk mengukur kecepatan antara 2 jenis aplikasi tersebut. Cara menjalankannya cukup dengan perintah python diikuti nama file.

1) Pada komputer I dan komputer II jalankan file prima.py.

# python prima.py

2) Setelah langkah pertama selesai, jalankan file prima_server.py pada komputer I.

# python prima_server.py

3) Jalankan file prima_client.py pada komputer II.

# pyhon prima_client.py

Pada uji coba aplikasi terdistribusi, akan dibagi dalam 2 tahap yaitu 30 menit pertama proses dilakukan oleh komputer II dan 30 menit berikutnya dilakukan oleh komputer I. Hasil akhir berupa bilangan prima terbesar akan ditampilkan pada komputer II.

Dari hasil uji coba tersebut diperoleh data sebagai berikut:

Aplikasi Uji 1 Uji 2 Uji 3

prima.py pada komputer I 165721 141311 166099

Page 15: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 15  

prima.py pada komputer II 181693 155707 153733

distributed programming 199457 171449 194869

Tabel 4: Hasil pengujian aplikasi bilangan prima

Tabel di atas menunjukkan bahwa aplikasi yang berjalan secara terdistribusi menghasilkan bilangan prima yang lebih besar dibandingkan aplikasi non distribusi. Sebenarnya sistem terdistribusi unggul dalam hal kecepatan, akan tetapi diperlukan program yang benar-benar berat dan komplek misalnya multimedia untuk rendering dan permodelan. Analoginya adalah kecepatan orang jalan kaki atau sepeda atau motor atau mobil akan terkesan sama sampainya jika jarak yang ditempuh hanya 1 meter, akan tetapi jika jarak yang ditempuh jauh baru terlihat perbedaannya. Dari analisa ini dapat dijelaskan bahwa uji coba di atas pada dasarnya membutuhkan waktu yang lebih lama sehingga mendapatkan hasil yang signifikan.

6.3.3 Aplikasi Database Kepegawaian Sederhana

Aplikasi ini merupakan penyempurnaan dari aplikasi pada uji coba sebelumnya. Kali ini dibuat 2 file masing-masing bertugas sebagai server dan client. File untuk sisi server bernama profile_server.py dan profile_client.py untuk sisi clientnya. Uji coba kali ini melakukan sedikit perbaikan pada listing program untuk server. Perbaikan yang dilakukan adalah dengan penambahan module socket dan class bernama ProfileXMLRPCServer. Class ini berisi beberapa procedure socket yang berfungsi dalam keamanan koneksi. Kemudian pada bagian objek server, instansiasi objek diturunkan dari class ProfileXMLRPCServer.

Sebelum perubahan:

server = SimpleXMLRPCServer.SimpleXMLRPCServer

(('192.168.100.1',1))

Setelah perubahan:

server = ProfileXMLRPCServer('192.168.100.1',1)

Beberapa perbaikan di atas dilakukan karena pada uji coba aplikasi sebelumnya terdapat beberapa kekurangan yaitu dari sisi kestabilan dan keamanan. Pada aplikasi sebelumnya, jika aplikasi server dihentikan dengan pemberian intrupsi berupa penekanan CTRL-C akan menimbulkan pesan kesalahan socket saat menjalankan kembali. Pesan kesalahan yang muncul mengatakan bahwa alamat sedang terpakai. Selain itu, tidak ada filtering alamat yang diizinkan mengakses dalam arti lain semua alamat bisa bergabung dan mengakses server secara langsung.

Selain melakukan perbaikan pada listing program, juga dilakukan penanganan database server PostgreSQL. File yang berhubungan dengan penanganan keamanan server PostgreSQL adalah pg_hba.conf yang terletak pada direktori /usr/local/pgsql/data. Informasi yang perlu ditambahkan adalah pada bagian “local” yaitu:

# "local" is for Unix domain socket connections only

local tuxhouse rido md5

Page 16: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 16  

Dari informasi di atas dapat dijelaskan bahwa server PostgreSQL hanya menerima koneksi secara lokal dan menggunakan metode MD5 untuk autentikasi password saat melakukan koneksi ke database tuxhouse. Sedangkan yang diizinkan mengakses database tersebut hanya user root.

6.4 Listing Program

6.4.1 server.py

import SimpleXMLRPCServer

class Profile:

def __init__(self):

'''

Constructor Class

'''

self.profile = []

def Simpan(self,nip,nama,alamat,jabatan):

'''

Register pegawai baru dan mengembalikan nilai nip

'''

data=list([nip,nama,alamat,jabatan])

self.profile.append(data)

return nip;

def Cari(self, nip):

'''

Mencari Data...

'''

code = "data tidak ditemukan"

for i in self.profile:

if i[0] == nip:

code = i

break

return code

server = SimpleXMLRPCServer.SimpleXMLRPCServer(('192.168.100.1',1000))

server.register_instance(Profile())

server.serve_forever()

Page 17: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 17  

6.4.2 prima.py

import time

waktu=time.time()

x=5

while time.time()-waktu<=3600:

stat=1

for i in range(3,x,2):

if x%i==0:

i=x

stat=0

if stat==1:

print x

x+=2

6.4.3 prima_server.py

import SimpleXMLRPCServer

import time

class prima:

def __init__(self):

self.hasil=0

def itung(self,kiriman):

waktu=time.time()

while time.time()-waktu<=1800:

stat=1

for i in range(3,kiriman,2):

if kiriman%i==0:

i=kiriman

stat=0

if stat==1:

self.hasil=kiriman

kiriman+=2

return self.hasil

Page 18: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 18  

server=SimpleXMLRPCServer.SimpleXMLRPCServer(('192.168.100.1',1))

server.register_instance(prima())

server.serve_forever()

6.4.4 prima_client.py

import xmlrpclib

import time

kirim=xmlrpclib.Server('http://192.168.100.1:1')

waktu=time.time()

x=5

while time.time()-waktu<=1800:

stat=1

for i in range(3,x,2):

if x%i==0:

i=x

stat=0

if stat==1:

y=x

x+=2

hasil=kirim.itung(y)

print hasil

6.4.5 dbase_server.py

import SimpleXMLRPCServer

import socket

import pg

class ProfileXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer):

def __init__(self, *args):

'''

Constructor for class MiniBankXMLRPCServer

'''

SimpleXMLRPCServer.SimpleXMLRPCServer.__init__(self, (args[0], args[1]))

self.ACCESSLIST = (

Page 19: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 19  

'192.168.100.2',

)

def server_bind(self):

'''

Server bind...

'''

self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

SimpleXMLRPCServer.SimpleXMLRPCServer.server_bind(self)

def verify_request(self, request, client_address):

'''

Verify request, only access IP in ACCESSLIST

'''

if client_address[0] in self.ACCESSLIST:

return 1

else:

return 0

class Profile:

def __init__(self):

self.profile = ''

def Simpan(self,nip,nama,jbt,gol):

db=pg.DB('tuxhouse','localhost',5432,None,None,'rido','rahasia')

try:

s=1

db.get('profile',nip,'nip')

except:

s=0

if s==1:

pesan='Data dengan NIP %s sudah ada'%nip

else:

db.query("insert into profile values('"+nip+"','"+nama+"','"+jbt+"','"+gol+"')")

pesan='Data berhasil disimpan'

db.close()

return pesan;

def Cari(self,nip):

Page 20: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 20  

db=pg.DB('tuxhouse','localhost',5432,None,None,'rido','rahasia')

try:

s=1

hasil=db.get('profile',nip,'nip')

except:

s=0

db.close()

if s==0:

pesan='Data dengan NIP %s tidak ditemukan'%nip

data=[1,pesan]

else: data=[2,hasil['nip'],hasil['nama'],hasil['jabatan'],hasil['gol']]

return data;

server = ProfileXMLRPCServer('192.168.100.1',1)

server.register_instance(Profile())

server.serve_forever()

6.4.6 dbase_client.py

import xmlrpclib

kirim=xmlrpclib.Server('http://192.168.100.1:1')

def Simpan():

print "Masukkan data anda :\n"

nip = raw_input("N I M : ")

nama = raw_input("Nama : ")

jbt = raw_input("Jabatan : ")

gol = raw_input("Golongan : ")

hasil = kirim.Simpan(nip,nama,jbt,gol)

print hasil

def Cari():

nip = raw_input("Masukkan NIP : ")

hasil = kirim.Cari(nip)

if hasil[0]==1:

Page 21: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 21  

print hasil[1]

else:

print "NIP : ",hasil[1]

print "Nama : ",hasil[2]

print "Jabatan : ",hasil[3]

print "Golongan : ",hasil[4]

print "1. Simpan Data"

print "2. Cari Data\n"

pilih = raw_input("Tentukan pilihan anda : ")

if pilih=='1':

Simpan()

elif pilih=='2':

Cari()

else:

print "Pilihan yang anda masukkan tidak terdaftar"

Dari contoh-contoh di atas, dapat dijelaskan langkah-langkah umum membuat aplikasi terdistribusi menggunakan xmlrpc pada python:

1. Membuat aplikasi server:

a. import module SimpleXMLRCPServer

b. definisi class dan procedure

c. instansiasi dan register objek class (perhatikan 3 baris kode dari bawah)

2. Membuat aplikasi client:

a. import module xmlrpclib

b. instansiasi objek class melalui register socket

c. pemanggilan procedure

7. Kesimpulan

Berdasarkan hasil implementasi dan analisa dalam membangun aplikasi berbasis teknologi distributed system atau programming, maka dapat diambil beberapa kesimpulan sebagai berikut:

a. Implementasi distributed programming merupakan salah satu alternatif yang sederhana dan menarik dalam membangun sistem sekelas superkomputer dengan alokasi dana yang rendah.

b. Untuk membuat aplikasi berbasis teknologi distributed system bisa memanfaatkan module XML-RPC yang telah tersedia secara default pada bahasa Python.

Page 22: 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKANp3m.amikom.ac.id/p3m/35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN.pdf · yang sederhana hanya dengan satu komputer saja sudah cukup, misalkan

Seminar Nasional Teknologi 2007 (SNT 2007)    ISSN : 1978 – 9777 Yogyakarta, 24 November 2007  

D ‐ 22  

c. Penggunaan module XML-RPC dalam membuat aplikasi sangat mudah karena telah terbagi menjadi dua fungsi sebagai client dan server.

d. Untuk mendapatkan hasil yang signifikan dalam melakukan percobaan misalnya pengukuran kecepatan dibutuhkan aplikasi yang komplek atau juga bisa dengan permainan waktu yang lama.

e. XML-RPC sangat memperhatikan segi kestabilan dan keamanan dalam membangun sebuah sistem dengan adanya penanganan socket dan class program.

f. Dengan distributed programming, aplikasi yang berjalan menjadi lebih modular dalam menangani proses sehingga tidak semua proses dijalankan oleh satu sub-system.

8. Saran

Penelitian ini hanyalah serangkaian percobaan yang dilakukan secara sederhana dan penuh keterbatasan terutama dalam penggunaan perangkat keras. Tidak menutup kemungkinan bahwa penelitian ini dapat lebih dikembangkan ke arah yang lebih luas lagi. Dari penelitian ini lebih menekankan pada sisi penerapan dan penggunaan teknologi distributed system atau programming pada suatu aplikasi sederhana sehingga masih belum cukup untuk mendapatkan hasil yang sempurna. Kesempurnaan penelitian merupakan hal yang tidak mungkin bagi manusia, namun berusaha untuk menjadi sempurna adalah hal yang mungkin-mungkin saja dan manusiawi. Oleh karena itu, bagi peneliti yang tertarik mengembangkan materi dalam penelitian ini bisa mengarahkannya pada aplikasi yang benar-benar komplek dan memanfaatkan jaringan internet sebagai sarana distribusinya. Dengan konsep seperti ini diharapkan sistem yang dibangun merupakan suatu yang terdistribusi secara global dan dapat dimanfaatkan oleh berbagai pihak dalam lingkup jaringan internet.

9. Daftar Pustaka

Noprianto, 2002, Python dan Pemrograman Linux, Penerbit Andi, Yogyakarta

Prabantinia, Dwi, 2002, PracticalTCP/IP Mendesain, menggunakan dan Troubleshooting

Jaringan TCP/IP di Linux dan Windows, Penerbit Andi, Yogyakarta

Raharjo, Suwanto & Istiyanto, Jazi, 2003, Keamanan Akses PostgreSQL melalui PHP

(Menggunakan Apache Web Server pada GNU/Linux, Penerbit Andi, Yogyakarta