35 - pemrograman terdistribusi menggunakan

Download 35 - PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN

If you can't read please download the document

Upload: apel-ijo

Post on 27-Jun-2015

296 views

Category:

Documents


18 download

TRANSCRIPT

SeminarNasionalTeknologi2007(SNT2007) Yogyakarta,24November2007

ISSN:19789777

PEMROGRAMAN TERDISTRIBUSI MENGGUNAKAN PYTHON MERUPAKAN ALTERNATIF YANG SEDERHANA DAN MENARIK DALAM MEMBANGUN SISTEM SEKELAS SUPERKOMPTER DENGAN ALOKASI DANA YANG RENDAHEma 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

D1

SeminarNasionalTeknologi2007(SNT2007) ISSN:19789777 Yogyakarta,24November2007 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 clientclient 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.

D2

SeminarNasionalTeknologi2007(SNT2007) Yogyakarta,24November2007

ISSN:19789777

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:

DATA

Code Code XML HTTP XML

Code Code Code

DATA

DATA

DATA

DATA

Code XMLRPC

DATA

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 benarbenar 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. D3

SeminarNasionalTeknologi2007(SNT2007) ISSN:19789777 Yogyakarta,24November2007 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

D4

SeminarNasionalTeknologi2007(SNT2007) Yogyakarta,24November2007 2) Untuk bilangan yang panjang diakhiri dengan karakter l atau L 3) Untuk bilangan float, gunakan e atau E pada eksponensial

ISSN:19789777

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 + * / % ** ~ >> , >=