19 Maret 2014

Teori Komputasi

Apa itu komputasi? Definisi komputasi dari Wikipedia itu adalah cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritma. Atau biasa disebut dengan Teori Komputasi, cara ini sudah digunakan selama ribuan tahun, perhitungan dan komputasi umumnya dilakukan dengan menggunakan pena dan kertas, atau kapur dan batu tulis, atau dikerjakan secara mental, kadang-kadang dengan bantuan suatu tabel. Namun sekarang di era yang serba modern ini, kebanyakan komputasi telah dilakukan dengan menggunakan komputer. Asal kata komputer itu sendiri adalah compute (menghitung) oleh karena itu definisi komputer adalah alat yang dipakai untuk mengolah data menurut prosedur yang telah dirumuskan. Kata computer semula dipergunakan untuk menggambarkan orang yang perkerjaannya melakukan perhitungan aritmatika, dengan atau tanpa alat bantu, tetapi arti kata ini kemudian dipindahkan kepada mesin itu sendiri.
Sebenarnya komputasi modern itu sama artinya dengan komputasi yang diatas sudah saya terangkan, tetapi bedanya komputasi modern itu hanya menggunakan 1 alat bantu yaitu komputer. Salah satu tokoh yang sangat mempengaruhi perkembangan komputasi modern adalah John von Neumann (1903-1957), Beliau adalah ilmuan yang meletakkan dasar-dasar komputer modern.Von Neumann telah menjadi ilmuwan besar abad 21. Von Neumann memberikan berbagai sumbangsih dalam bidang matematika, teori kuantum, game theory, fisika nuklir, dan ilmu komputer  yang di salurkan melalui karya-karyanya . Beliau juga merupakan salah satu ilmuwan yang terkait dalam pembuatan bom atom di Los Alamos pada Perang Dunia II lalu.

Komputansi modern mempunyai karakteristik komputasi modern yang terdiri atas 3 macam, yaitu :
·       Komputer-komputer penyedia sumber daya bersifat heterogenous karena terdiri dari berbagai jenis perangkat keras, sistem operasi, serta aplikasi yang terpasang.
·       Komputer-komputer terhubung ke jaringan yang luas dengan kapasitas bandwidth yang beragam.
·       Komputer maupun jaringan tidak terdedikasi, bisa hidup atau mati sewaktu-waktu tanpa jadwal yang jelas.


Jenis-jenis komputasi modern :

1. Mobile computing

Mobile computing atau komputasi bergerak memiliki beberapa penjelasan, salah satunya komputasi bergerak merupakan kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa menggunakan kabel dan mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel.


2. Grid computing

Komputasi grid menggunakan komputer yang terpisah oleh geografis, didistibusikan dan terhubung oleh jaringan untuk menyelasaikan masalah komputasi skala besar.

3. Cloud computing

Komputasi cloud merupakan gaya komputasi yang terukur dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet.
Maka dapat di simpulkan Komputasi modern adalah perhitungan yang menggunakan computer canggih dimana pada computer tersebut tersimpan sejumlah algoritma untuk menyelesaikan masalah perhitungan secara efektif dan efisien. Komputasi modern digunakan untuk memecahkan masalah antara lain untuk menghitung:
 Akurasi (big, Floating point)
Kecepatan (dalam satuan Hz)
Problem Volume Besar (Down Sizzing atau paralel)
Modeling (NN & GA)
Kompleksitas (Menggunakan Teori big O)
Nah udah pada jelaskan perkembangan Komputasi modern tuh kaya gimana? Oke kita lanjut ke implementasinya, kalo ada yang ga tau implementasi tuh apa, implementasi itu adalah penerapan atau pelaksanaan. Jadi kita harus tau nih penerapan / pelaksanaan Komputasi modern di berbagai bidang yang mungkin kita pakai di kehidupan sehari-hari tuh kaya gimana. Bidang yang saya coba jelaskan ini ada 6 bidang antara lain Matematika, Fisika, Kimia, Ekonomi, Geologi, dan Geografi.

1.      Matematika

pada bidang ini tentunya lebih mengarah kepada pemecahan masalah pasti atau mendekati kepastian dalam perhitungan angka – angka. Metode numerik, scientific computing, metode elemen hingga, metode beda hingga, scientific data mining dan scientific process control. Pada bidang ini, biasanya masalah berupa dalam skala besar.

2.      Fisika

menyelesaikan permasalahan medan magnet dengan menggunakan komputasi fisika, dalam hal ini menentukan besarnya medan magnet dan membandingkan hubungan antara medan magnet dengan panjang kawat.

3.      Kimia

algoritma komputer yang merupakan solusi dari sebuah masalah dalam hal ini dapat menggabungkan senyawa – senyawa kimia untuk mendapatkan suatu senyawa baru yang bila dilakukan secara manual sudah pasti menimbulkan resiko yang lebih besar jika dibandingkan dengan proses komputasi. Selain itu sifat dari atom dan molekul yang sangat kecil dapat dilakukan peramalan menggunakan komputasi.

4.      Ekonomi

mempelajari titik pertemuan antara ekonomi dan komputasi, meliputi agent-based computational modelling, computational econometrics dan statistika, komputasi keuangan, computational modelling of dynamic macroeconomic systems dan pengembangan alat bantu dalam pendidikan komputasi ekonomi.


5.      Geologi dan Geografi

Geologi dan Geografi, pada bidang ini dapat dilakukan pemanfaatan seperti pemodelan terhadap akses keadaan geografis suatu permukaan wilayah yang dapat dipantau jika terjadi pergerakan atau getaran. Selain itu dapat dilakukan pengiriman informasi mengenai prakiraan cuaca yang sangat berguna bagi segala hal terutama transportasi udara dan laut.


Sekian sedikit penjelasan dari saya tentang tugas "Perkembangan Komputasi Modern dan Implementasinya" mohon maaf bila ada kata-kata yang kurang berkenan.


Referensi
http://id.wikipedia.org/wiki/Komputasi
http://id.wikipedia.org/wiki/Komputer
http://belajar-pemrograman2.blogspot.com/2013/03/komputasi-modern.html
http://safemode.web.id/artikel/teknologi/perkembangan-komputasi-modern
http://anggamaulana20.wordpress.com/2014/03/09/perkembangan-teori-komputasi-modern

18 Maret 2014

Komunikasi Sistem Terdistribusi

2.1 Sistem Komunikasi
     Pada bab ini akan dibahas bagaimana komunikasi antara object2 dalam sistem terdistribusi, khusus nya dengan menggunakan RMI (Remod Method Invokation) dan RPC (Remote Procedure Call). RMI dan RPC berbasiskan metode request dan reply.




                         Gambar~2.1: Model komunikasi dan implementasi layer pada sistem terdistribusi Request     dan repy diimplementasikan pada protokol jaringan.

2.2 Network Protocol
     Middleware dan aplikasi terdistribusi di implementasikan diatas protokol network. Protocol diimplementasikan dalam beberapa lapisan (layer).




2.2.1 TCP dan UDP

TCP
     TCP ( Transport Control Protocol) dan UDP (User Datagram Protocol) adalah protokol transport yang berada di atas lapisan Internet Protocol (IP). TCP adalah protocol yang handal, TCP dapat memastikan data yang dikirimkan sampai ke tujuan begitu juga sebaliknya. TCP menambahkan beberapa prosedur diatas layer internet protocol untuk memastikan reliabilitas transport data :
 Sequencing  Pada setiap transmisi data (paket) diberi nomor urut. Sehingga pada titik tujuan tidak ada segmen yang diterima sampai semua segmen pada urutan bawah belum di terima.
 Flow Control Pengirim tidak akanmembanjiri penerima.Karena pengiriman didasarkan pada periode acknowledgment yang di terima oleh pengirim yang berasal dari penerima.
 Retrasnmission dan duplicate handling Apabila segmen tidak mendapatkan acknowledge dari penerima sampai waktu timeout yang ditentukan terlampaui maka pengirim akan mengirim ulang. Berdasarkan nomor urut penerima data dapat mendeteksi dan menolak kalau terjadi duplikasi.
 Bu¤ering  digunakan untuk menyeimbangkan antara pengirim dan penerima. Kalau bu¤er pada penerima penuh, maka segmen yang datang akan putus, sehingga menyebabkan tidak ada acknowledge ke pengirim dan pengirim akan melakukan transmot ulang.
 Checksum Setiap segment membawa checksum. Apabila checksum segmen yang di terima tidak sesuai maka paket data tersebut akan di drop (dan kemudian akan di transmit ulang)

UDP
     UDP tidak memberikan garansi seperti halnya yang di berikan oleh TCP.
 UDP tidak memberikan garansi terhadap pengiriman data Pada Internet Protocol paket data dapat drop karena suatu hal contohnya jaringan yang rusak, UDP tidak mempunyai mekanisme untuk menanggulangi hal tersebut.
 Kalau ingin menggunakan UDP sebagai protocol pengiriman yang handal, makamekanisme kehandalan yang diinginkan di lakukan pada layer aplikasi.

2.2.2 Komunikasi Request - Reply
     Komunikasi antara proses dan objek pada sistem terdistribusi dilakukan melalui message passing.





Client melakukan :
  1. Mengirim (request) pesan ke server
  2. Menerima hasil (reply dari server)
Server melakukan :
  1. Penerimaan pesan (request) dari client
  2. Mengeksekusi permintaan dari client
  3. Mengirim hasil (reply) ke client.

2.3 RPC dan RMI
     Tujuan dari RPC dan RMI dibuat bagi programmer, agar computer yang terdistribusi terlihat seperti computer yang terpusat. Dan berguna untuk melihat sistem terdistribusi dari sisi pemrogramman.



          RPC dan RMI berada pada Middleware

2.3.1 RMI (Remote Method Invocation)



Berikut ilustrasi yang terjadi pada metode RMI :
Programmer pada client menulis :



server_id.service(values_to_server,result_arguments);
———————————————————————-
Pada sisi server mempunyai fungsi sebagai berikut :
public service(in type1 arg from client; out type2 arg to_client)
{————};

     Programmer pada client tidak mengetahui bahwa reply message yang didapatkan berasal dari server yang dikirim melalui jaringan.



Gambar~2.2: Ilustrasi implementasi RMI

Komponen2 dalam RMI (gambar 2.2):
 Object A (client) : meminta layanan
 Object B (server) : menghantarkan layanan
 Proxy for B
- Ketika object A mempunyai remote reference ke object B, maka akan timbul objek Proxy B pada
   hostobject A. Proxy terbuat ketika remote object reference digunakan pertama kali
- Proxy adalah perwakilan objek yang berada pada remote, dengan kata lain ketika terjadi invokasi dari A
   ke  B ditangani seolah - olah hanya mengakses Proxy B.
- Ketika invokasi terjadi proxy menggunakan metode marshals untuk membungkus pesan yang akan dikirim
   ke server. Dan setelah menerima hasil dari server proxy menggunakan metode unmarshal (membuka
   bungkus) untuk kemudian diteruskan ke client (Object A)
 Skeleton for object B
- Pada sisi server, terdapat object kerangka (skeleton) yang berhubungan ke class, kalau object pada class
   tersebut dapat diakses oleh
RMI.
- Skeletonmenerima pesan kemudianmelakukan unmarshal danmeneruskan ke method object yang dituju.
   Dan kemudianmenunggu hasil dari object B dan kemudian membungkus hasil (unmarshal) dan kemudian
   dikirimkan ke client (Objec A).
- Ada bagian dari skeleton B yang disebut dengan dispatcher. dispatcher menerima request dari
  communication module, dan kemudian mengidentifikasi invokasi dan mengarahkan permintaan ke
  corresponding method ( method pada skeleton yang berfungsi untuk berkomunikasi dengan object).
 Communication Modul (Modul Komunikasi)
-Communication modul pada client atau server bertanggung jawab dalam pertukaran pesan yang dilakukan melalui metode request dan reply.
 Remote Reference Module
- Bagian ini bertugas untuk menterjemahkan antara referensi objek lokal dan remote. Proses berkomunikasi antara mereka disimpan dalam remote object table. Yang mengenerate class untuk proxy dan skeleton adalah middleware. contoh : CORBA, Java RMI
Object A dan object B dipunyai oleh aplikasi (berada pada Application Layer) Remote Reference Modul dan Communication modul dimiliki oleh middleware. Proxy B dan Sekeleton B berada antara middleware dan aplikasi yang di generate oleh middleware. Langkah2 proses dengan RMI :
Urutan pemanggilan pada object client mengaktifkan method pada
proxy yang akan berhubungan dengan invoked method (method yang ter-invokasi) pada object B.
 Kemudian method yang ada pada proxy melakukan pembungkusan argumen
menjadi suatu pesan (marshalling) dan meneruskan ke modul
komunikasi.
 Berdasarkan pada remote reference yang didapat dari remote reference
modul,modul komunikasi memulai request dan reply protocol melalui network.
 Modul komunikasi pada servermenerima request dari client. Kemudian
berdasarkan referensi lokal yang diterima dari remote reference modul maka akan mengaktifkan method untuk berkomunikasi dengan object pada skeleton B (corresponding method).
 Method pada skeletonmeng-ekstrak (unmarshalling) argumen pada pesan
yang di terima dan mengaktifkan corresponding method (method yang berfungsi untuk melakukan komunikasi) pada object B (server).
 Setelah menerima hasil dari object B, method dari skeleton akan membungkus
hasil tersebut dalamsebuah pesan (marshalling) danmeneruskan pesan yang sudah dibungkus ke modul komunikasi.
 Modul komunikasimengrimkan pesan tersebut ke clientmelalui jaringan.
 Modul komunikasi pada client menerima hasil (reply) dari server dan
meneruskan ke corresponding method pada proxy.


 Kemudian proxy meng-ektrak hasil (unmarshalling) dan meneruskan
ke object A (client).
Contoh RMI dengan menggunakan Java RMI :
Server object akan mencetak ”Hello Ruddy” ke layar & mengembalikan
pesan ke klien
Pada sisi server :
 Server Method
import java.rmi.*;
public interface SimpleInterface extends Remote {
String printMessage(String name) throws RemoteException;
}
 Server Object
import java.rmi.*;
import java.rmi.server.*;
public class SimpleServer extends UnicastRemoteObject implements SimpleInterfac
public SimpleServer() throws RemoteException { super(); }
public String printMessage(String name) throws RemoteException {
System.out.println(name);
return(Hello + name);
}
public static void main(String args[]) {
System.setSecurityManager(new RMISecurityManager());
try {
SimpleServer newServer = new SimpleServer();
System.out.println(SimpleServer attempting to
bind to the registry);
Naming.rebind(//ruddy.info:30010/SimpleServer,
newServer);
System.out.println(SimpleServer bound in the registry);
} catch(Exception e) {


System.out.println(SimpleServer error: + e.getMessage());
e.printStackTrace();
}}
}
Pada sisi client :
import java.rmi.*;
public class SimpleClient {
private static SImpleInterface server = null;
public static void main(String args[]) {
try {
server = (SimpleInterface)
Naming.lookup(//ruddy.info:30010/SimpleServer);
System.out.println(server.printMessage(Ruddy));
} catch(Exception e) {
System.out.println(SimpleClient error: + e.getMessage());
e.printStackTrace();
}}
}


2.3.2 RPC (Remote Procedure Call)
 
     Proses nya kurang lebih sama dengan RMI. Kalau RMI kita mengenal Proxy
dan Skeleton, pada RPC dikenal dengan Stub (Client Stub dan Server Stub).



Gambar~2.3: Ilustrasi implementasi RPC

RemoteReferenceModul dan CommunicationModul berada pada tatanan sistem operasi.

11 Maret 2014

Model Sistem Terdistribusi

Sistem Terdistribusi adalah sebuah sistem yang komponennya berada pada jaringan komputer. komponen tersebut saling berkomunikasi dan melakukan koordinasi hanya dengan pengiriman pesan (message passing).
contoh : Internet dan Intranet.
Selanjutnya saya akan membahas mengenai karakteristik sistem terdistribusi.

Karakteristik Sistem Terdistribusi 

Dalam system terdistribusi terdapat beberapa karakteristik yaitu : 


1. No global clock 
- Terdapat batasan pada ketepatan proses sinkronisasi clock pada sistem terdistribusi, oleh karena        asynchronous message passing 
- Pada sistem terdistribusi, tidak ada satu proses tunggal yang mengetahui global state sistem saat ini  (disebabkan oleh concurrency dan message passing)

2. Independent failure 
- Kemungkinan adanya kegagalan proses tunggal yang tidak diketahui 
- Proses tunggal mungkin tidak peduli pada kegagalan sistem keseluruhan 

3. Concurrency of components 
- E.g. Beberapa pemakai browser mengakses suatu halaman web secara bersamaan. 
- Bagaimana jika ada operasi update? 


Referensi:
Adang Suhendra, Kuliah Sistem Terdistribusi 1 & 2

Budi Susanto, Pengantar Sistem Terdistribusi

Willy Sudiarto Raharjo, Pengantar Sistem Terdistribusi