Selasa, 23 Juni 2015

Grid Computing

Kali ini saya akan menjelaskan tentang Grid Computing atau Komputasi Grid, kelebihan komputasi grid, kelemahan komputasi grid, dan implementasi komputasi grid.


Pengertian Grid Computing

Diawali dengan penjelasan tentang komputasi grid. Penjelasan pada umumnya komputasi grid merupakan komputasi yang menggunakan banyak sumber daya dan melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis dan memiliki tujuan untuk memecahkan persoalan komputasi dalam skala besar. Berdasarkan buku The Grid 2: Blue Print for a New Computing Infrastructure yang ditulis oleh Ian Foster dan Carl Kesselmanmenyebutkan "A computational grid is a hardware and software infrastructure that provides dependable, consistent, pervasive, and inexpensive access to high-end computational capabilities." atau "komputasi grid adalah infrastruktur perangkat keras dan perangkat lunak yang dapat menyediakan akses yang bisa diandalkan, konsisten, tahan lama dan tidak mahal terhadap kemampuan komputasi mutakhir yang tersedia."

Konsep Grid Computing

Komputasi grid memilik konsep yang bertujuan untuk menstabilkan atau menyeimbangkan sumberdaya pada komputasi grid tersebut agar dapat di manfaatkan. Konsep komputasi grid ini ada 3, yaitu seperti berikut ini :

1.  Sumberdaya Infrastruktur :
Mencakup hardware seperti penyimpan, prosesor, memori, dan jaringan juga software yang didisain untuk mengelola hardware ini, seperti database, manajemen penyimpan, manajemen sistem, server aplikasi dan system operasi.

2.  Sumberdaya Aplikasi :
Dapat juga digambarkan seperti perwujudan logika bisnis dan arus proses dalam software aplikasi. Sumberdaya yang dimaksud bisa berupa aplikasi paket atau aplikasi buatan, ditulis dalam bahasa pemrograman, dan merefleksikan tingkat kompleksitas.

3.  Sumberdaya Informasi :
Grid computing menganggap informasi adalah sebagai sumberdaya penting yang dapat mencakup keseluruhan data pada perusahaan dan metadata, yang menjadikan data tersebut bisa memiliki nilai lebih. Data informasi ini dapat berbentuk terstruktur, semi-terstruktur, atau tidak terstruktur, tersimpan di lokasi manapun, seperti dalam database, dan sistem file lokal.

Prinsip Kerja Grid Computing

Komputasi grid memiliki dua prinsip kerja utama, dan prinsip kerja ini yang membedakannya dari arsitektur komputasi yang lainnya. Dua prinsip kerja komputasi grid seperti berikut ini :

1.  Virtualisasi
Prinsip Kerja virtualisasi dengan cara mengumpulkan semua sumberdaya dan membaginya berdasarkan jenis dan juga kegunaan, selanjutnya sumberdaya yang sudah di sediakan dan dibagi menurut jenisnya, disiapkan untuk para konsumen atau pengguna. Virtualisasi ini berarti meniadakan koneksi secara fisik antara penyedia dan konsumen sumberdaya, dan menyiapkan sumberdaya untuk memenuhi kebutuhan tanpa konsumen mengetahui bagaimana permintaannya bisa terlayani.

2.  Provisioning
Prinsip kerja provisioning ketika konsumen meminta sumberdaya melalui layer virtualisasi, sumberdaya tertentu yang disiapkan di belakang layer didefinisikan terlebih dahulu untuk memenuhi permintaan tersebut, dan kemudian dialokasikan ke konsumen yang memesan sumberdaya. Provisioning sebagai bagian dari grid computing berarti bahwa system menentukan bagaimana cara memenuhi kebutuhan konsumen seiring dengan mengoptimasi jalannya sistem secara keseluruhan.

Komponen-komponen Grid Computing
1.  Gram (Grid Resources Allocation & Management)
Komponen yang memiliki fungsi untuk mengatur seluruh sumberdaya komputasi yang tersedia dalam sebuah sistem komputasi grid. Pengaturan ini termasuk eksekusi program pada seluruh komputer yang tergabung dalam sistem komputasi grid, mulai dari inisiasi, monitoring, sampai dengan penjadwalan dan koordinasi antar proses yang terjadi dalam sistem tersebut. Juga dapat berkoordinasi dengan sistem-sistem pengaturan sumber daya yang telah ada sebelumnya. Dengan mekanisme ini program-program yang telah dibuat sebelumnya tidak perlu dibangun ulang atau bila dimodifikasi, modifikasinya minimum.

2.  RFT/GridFTP (Reliable File Transfer/Grid File Transfer Protocol)
Komponen ini dibuat agar pengguna dapat mengakses data yang berukuran besar dari semua simpul komputasi yang telah tergabung dalam sebuah sistem komputasi secara efisien. Hal ini tentu saja berpengaruh karena kinerja komputasi tidak hanya bergantung pada kecepatan komputer yang tergabung dalam mengeksekusi program, tapi juga seberapa cepat data yang dibutuhkan dapat diakses. Data yang diakses juga tidak selalu ada pada komputer yang mengeksekusi.

3.  MDS (Monitoring and Discovery Service)
Komponen ini dibuat untuk memonitoring proses komputasi yang sedang dijalankan agar dapat mendeteksi masalah yang timbul dengan segera.  Sedangkan fungsi disovery dibuat agar pengguna mampu mengetahui keberadaan sumber daya komputasi beserta karakteristiknya.

4.  GSI (Grid Security Infrastructure)
Komponen ini dibuat untuk mengamankan sistem komputasi grid secara keseluruhan. Komponen ini membedakan teknologi GT4 dengan teknologi-teknologi sebelumnya. Dengan menerapkan mekanisme keamanan yang tergabung dengan komponen-komponen komputasi grid lainnya, sistem ini dapat diakses secara luas tanpa sedikitpun mengurangi tingkat keamanannya. Sistem keamanan ini dibangun dengan segala komponen yang telah diuji, mencakup proteksi data, autentikasi, delegasi dan autorisasi.

Kelebihan Grid Computing
Ada banyak kelebihan dari komputasi grid, salah satunya :
1.  Perkalian dari sumber daya: Resource pool dari CPU dan storage tersedia ketika idle.
2.  Lebih cepat dan lebih besar: Komputasi simulasi dan penyelesaian masalah dapat berjalan lebih cepat dan mencakup domain yang lebih luas.
3. Software dan aplikasi: Pool dari aplikasi dan pustaka standard,  akses terhadap model dan perangkat berbeda, metodologi penelitian yang lebih baik.
4.  Data: Akses terhadap sumber data global dan hasil penelitian lebih baik.
5. Ukuran dan kompleksitas dari masalah mengharuskan orang-orang dalam beberapa organisasi berkolaborasi dan berbagi sumber daya komputasi, data dan instrumen sehingga terwujud bentuk organisasi baru yaitu virtual organization.

Kekurangan Grid Computing
1.  Manajemen institusi  yang terlalu birokratis menyebabkan mereka enggan untuk merelakan fasilitas yang dimiliki untuk digunakan secara bersama agar mendapatkan manfaat yang lebih besar bagi masyarakat luas.
2.  Masih sedikitnya sumber daya manusia yang  kompeten dalam mengelola grid computing.
3.  Kurangnya pengetahuan yang mencukupi bagi teknisi IT maupun user non teknisi mengenai manfaat dari grid computing itu sendiri.

Implementasi dari Grid Computing
Implementasi komputasi grid ini menggunakan pengalamatan IPv6, berikut kejelasannya.

Untuk menghasilkan karya yang lebih dibutuhkan juga perangkat komputasi yang setara dengan karya tersebut. Habisnya IPv4 valid juga menjadi kendala tersendiri di era sekarang. Implementasi grid computing dengan menggunakan pengalamatan IPv6 menjadi solusi dari masalah yang ada. Grid Computing mampu melakukan komputasi dalam skala besar yang terdistribusi dan terpisah secara geografis. Grid Computing diimplementasikan pada 9 komputer yang membentuk 1 server dan 2 cluster dimana semua node menggunakan pengalamatan IPv6. Implementasi cluster menggunakan openmpi, job scheduler menggunakan condor, dan grid engine menggunakan globus toolkit. Perkalian matrik dan Prime sum digunakan untuk menguji coba kecepatan dari sistem grid computing untuk menunjukkan seberapa cepat sistem grid computing mengeksekusi aplikasi (program parallel). Hasil dari uji coba menunjukkan bahwa implementasi openmpi menggunakan IPv6 mampu meningkatkan komputasi lebih dari 5 kali dibandingkan dengan komputasi pada 1 komputer, condor tidak bisa diimplementasikan karena versinya belum memenuhi, dan globus tidak cocok diintegrasikan dengan openmpi. Dua problem tersebut digantikan dengan Portal PHP yang difungsikan sebagai administrasi jobs. Hasilnya, aplikasi Prime Sum dapat dijalankan pada Portal untuk diteruskan ke semua node pada cluster.

Refrensi :

Kamis, 11 Juni 2015

CONTOH PROGRAM DENGAN MENGUNAKAN BAHASA PEMROGRAMAN JAVA BERIKUT LOGIKA NYA

            Dibawah ini ada beberapa contoh program untuk mengecek ip, nama komputer, mengganti nama komputer dengan ip, menampilkan host name dan ip address, membuat aplikasi client-server TCP sederhana menggunakan bahasa pemrograman java.


-Berikut adalah contoh program untuk mendapatkan ip yang sedang digunakan : 

            Pertama program akan mengimport java.net. Kemudian kita buat class bernama getIP, selanjutnya kita mendeklarasikan InetAddress host benilai null kemudian host akan didapatkan dari nilai InetAddress host dan terakhir pada byte ip didapatkan nilai dari hostAddress. Langkah terkahir terdapat suatu perulangan for dimana di bagian ini akan terjadi pada saat variabel i bernilai 0, dan nilai variabel i lebih kecil dari IP jika kondisi ini terpenuhi maka nilai i akan bertambah.

-Berikut adalah contoh program untuk mendapatkan nama komputer yang sedang dipakai : 

            Pertama – tama program akan mengimport java.net, lalu kita buat class bernama getName. Selanjutnya kita deklarasikan InetAddress host = null; dan host = InetAddress.getLocalHost(); maksudnya adalah InetAddress host bernilai null dan host didapatkan dari nilai InetAddress pada localhost.

-Berikut adalah contoh program untuk mengganti nama komputer dengan ip yang sedang digunakan : 

            Pertama program akan mengimport java.net dan masuk pada nama class yang dibuat yaitu IPtoName. Untuk program ini terdapat kondisi if dimana jika program nilainya lebih besar sama dengan 0 maka cetak nama pemakai dan IPtoName lalu program akan kembali ke semula dan program akan mendeklarasikkan String host yaitu 0 dan InetAddress address bernilai null. Kemudian program akan mengulang ke bagian address yang terdapat di InetAddress pada host kemudian apabila perulangan tersebut tidak terpenuhi maka akan mencetak invalid IP – malformed ip.
Untuk hasil output ini pada saat menjalankan program masukkan terlebih dulu IPAddress kemudian host name dari komputer. Jika sudah maka jalankan kembali program java tersebut maka host name tersebut akan terganti dengan IP. Dan akan mencetak IP komputer yang lain yaitu 10.189.46.244 dengan host name 10.189.46.244

-Berikut ini adalah program untuk menampilkan host name dan ip address pada komputer yang digunakan : 

        Pertama program akan mengimport java.net kemudian program akan masuk ke dalam class program yang bernama NsLookup. Pada program utama ini akan mencetak Pemakai : Java NsLookup hostname kemudian aka mendeklarasikan String host adalah 0 dan InetAddress address bernilai null kemudian apabila host tidak dikenal maka akan tampil Unknown host. Untuk bagian listing byte ip nilainya didapat dari address lalu apabila i > 0 dan i

Aplikasi Client-Server TCP sederhana
simpleServer.java
import java.io.*;
import java.net.*;
public class simpleServer {
public final static int TESTPORT = 5000;
public static void main(String args[]) {
ServerSocket checkServer = null;
String line;
BufferedReader is = null;
DataOutputStream os = null;
Socket clientSocket = null;
try {
checkServer = new ServerSocket(TESTPORT);
System.out.println(“Aplikasi Server hidup …”);
} catch (IOException e) {
System.out.println(e);
}
try {
clientSocket = checkServer.accept();
is = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
os = new DataOutputStream(clientSocket.getOutputStream());
} catch (Exception ei) {
ei.printStackTrace();
}
try {
line = is.readLine();
System.out.println(“Terima : ” + line);
if (line.compareTo(“salam”) == 0) {
os.writeBytes(“salam juga”);
} else {
os.writeBytes(“Maaf, saya tidak mengerti”);
}
} catch (IOException e) {
System.out.println(e);
}
try {
os.close();
is.close();
clientSocket.close();
} catch (IOException ic) {
ic.printStackTrace();
}
}
}
simpleClient.java
import java.io.*;
import java.net.*;
public class simpleClient {
public final static int REMOTE_PORT = 5000;
public static void main(String args[]) throws Exception {
Socket cl = null;
BufferedReader is = null;
DataOutputStream os = null;
BufferedReader stdin = new BufferedReader(new
InputStreamReader(System.in));
String userInput = null;
String output = null;
// Membuka koneksi ke server pada port REMOTE_PORT
try {
cl = new Socket(args[0], REMOTE_PORT);
is = new BufferedReader(new
InputStreamReader(cl.getInputStream()));
os = new DataOutputStream(cl.getOutputStream());
} catch(UnknownHostException e1) {
System.out.println(“Unknown Host: ” + e1);
} catch (IOException e2) {
System.out.println(“Erorr io: ” + e2);
}
// Menulis ke server
try {
System.out.print(“Masukkan kata kunci: “);
userInput = stdin.readLine();
os.writeBytes(userInput + “\n”);
} catch (IOException ex) {
System.out.println(“Error writing to server…” + ex);
}
// Menerima tanggapan dari server
try {
output = is.readLine();
System.out.println(“Dari server: ” + output);
} catch (IOException e) {
e.printStackTrace();
}
// close input stream, output stream dan koneksi
try {
is.close();
os.close();
cl.close();
} catch (IOException x) {
System.out.println(“Error writing….” + x);
}
}
}
1. Compile kedua program diatas pada cmd (javac simpleServer.java dan javac simpleClient.java). Jika memakai 1 pc buka 2 cmd, jika tidak bisa membuka 2 cmd sekaligus buka cmd yang lainnya denga run as administrator.
2. Jalankan server terlebih dahulu, kemudian buka cmd baru untuk menjalankan client. Pada server java simpleServer sedangkan client java simpleClient (nama pc server).
3. Pada client masukkan masukkan kata kunci “salam” dan coba ketikkan kata apa saja dan juga perhatikan pada server apakah kata tersebut masuk atau tidak.

-Berikut output jika kata kunci yang dimasukkan benar : 


-Berikut output jika kata kunci yang dimasukkan salah :