Rabu, 15 Mei 2013

Komputasi Awan

Pendahuluan
Komputasi awan (bahasa Inggris: cloud computing) adalah gabungan pemanfaatan teknologi komputer ('komputasi') dan pengembangan berbasis Internet ('awan'). Awan (cloud) adalah metafora dari internet, sebagaimana awan yang sering digambarkan di diagram jaringan komputer. Sebagaimana awan dalam diagram jaringan komputer tersebut, awan (cloud) dalam Cloud Computing juga merupakan abstraksi dari infrastruktur kompleks yang disembunyikannya. Ia adalah suatu metoda komputasi di mana kapabilitas terkait teknologi informasi disajikan sebagai suatu layanan (as a service), sehingga pengguna dapat mengaksesnya lewat Internet ("di dalam awan") tanpa mengetahui apa yang ada didalamnya, ahli dengannya, atau memiliki kendali terhadap infrastruktur teknologi yang membantunya.
Menurut sebuah makalah tahun 2008 yang dipublikasi IEEE Internet Computing "Cloud Computing adalah suatu paradigma di mana informasi secara permanen tersimpan di server di internet dan tersimpan secara sementara di komputer pengguna (client) termasuk di dalamnya adalah desktop, komputer tablet, notebook, komputer tembok, handheld, sensor-sensor, monitor dan lain-lain."
Komputasi awan adalah suatu konsep umum yang mencakup SaaS, Web 2.0, dan tren teknologi terbaru lain yang dikenal luas, dengan tema umum berupa ketergantungan terhadap Internet untuk memberikan kebutuhan komputasi pengguna. Sebagai contoh, Google Apps menyediakan aplikasi bisnis umum secara daring yang diakses melalui suatu penjelajah web dengan perangkat lunak dan data yang tersimpan di server. Komputasi awan saat ini merupakan trend teknologi terbaru, dan contoh bentuk pengembangan dari teknologi Cloud Computing ini adalah iCloud.
Cloud Computing merupakan teknologi yang menggabungkan virtualisasi dan grid computing. Jadi selain ada proses virtualisasi,juga terdapat grid computing, dimana seluruh beban proses komputasi yang ada akan didistribusikan ke berbagai server yang saling terhubung di dalam cloud, sehingga prosesnya akan jauh lebih ringan.

Komputasi Grid
Komputasi grid atau grid computing adalah penggunaan sumber daya komputer secara bersama-sama dimana komputer tersebut terpisah secara geografis. Komputasi grid ini biasanya digunakan untuk memecahkan suatu permasalahan berskala besar Berdasarkan tulisan dari Ian Foster (Bapak Grid Computing), terdapat 3 hal yang mengidentifikasi bahwa suatu sistem termasuk di dalam komputasi grid, yaitu:
·         Sistem tersebut melakukan koordinasi terhadap sumber daya komputasi yang tidak berada dibawah suatu kendali terpusat. Seandainya sumber daya yang digunakan berada dalam satu cakupan domain administratif, maka komputasi tersebut belum dapat dikatakan komputasi grid.

·         Sistem tersebut menggunakan standard dan protokol yang bersifat terbuka (tidak terpaut pada suatu implementasi atau produk tertentu). Komputasi grid disusun dari kesepakatan-kesepakatan terhadap masalah yang fundamental, dibutuhkan untuk mewujudkan komputasi bersama dalam skala besar. Kesepakatan dan standar yang dibutuhkan adalah dalam bidang autentikasi, otorisasi, pencarian sumberdaya, dan akses terhadap sumber daya.

·         Sistem tersebut berusaha untuk mencapai kualitas layanan yang canggih, (nontrivial quality of service) yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut.

Virtualisasi
Virtualisasi adalah sebuah teknologi, yang memungkinkan Anda untuk membuat versi virtual dari sesuatu yang bersifat fisik, misalnya sistem operasi, storage data atau sumber daya jaringan. Proses tersebut dilakukan oleh sebuah software atau firmware bernama Hypervisor. Hypervisor inilah yang menjadi nyawanya virtualisasi, karena dialah layer yang "berpura-pura" menjadi sebuah infrastruktur untuk menjalankan beberapa virtual machine. Dalam prakteknya, dengan membeli dan memiliki satu buah mesin, Anda seolah-olah memiliki banyak server, sehingga Anda bisa mengurangi pengeluaran IT untuk pembelian server baru, komponen, storage, dan software pendukung lainnya.

Komputasi Terdistribusi Dalam Komputasi Awan
Tujuan dari komputasi terdistribusi adalah menyatukan kemampuan dari sumber daya (sumber komputasi atau sumber informasi) yang terpisah secara fisik, ke dalam suatu sistem gabungan yang terkoordinasi dengan kapasitas yang jauh melebihi dari kapasitas individual komponen-komponennya.
Tujuan lain yang ingin dicapai dalam komputasi terdistribusi adalah transparansi. Kenyataan bahwa sumber daya yang dipakai oleh pengguna sistem terdistribusi berada pada lokasi fisik yang terpisah, tidak perlu diketahui oleh pengguna tersebut. Transparansi ini memungkinkan pengguna sistem terdistribusi untuk melihat sumber daya yang terpisah tersebut seolah-olah sebagai satu sistem komputer tunggal, seperti yang biasa digunakannya.
Salah satu masalah yang dihadapi dalam usaha menyatukan sumber daya yang terpisah ini antara lain adalah skalabilitas, dapat atau tidaknya sistem tersebut dikembangkan lebih jauh untuk mencakup sumber daya komputasi yang lebih banyak.
Banyak arsitektur perangkat lunak dan keras yang bervariasi yang digunakan untuk komputasi terdistribusi. Pada tingkat yang lebih rendah, penghubungan beberapa [CPU] dengan menggunakan jaringan sangat dibutuhkan. Pada tingkat yang lebih tinggi menghubungkan proses yang berjalan dalam CPU tersebut dengan sistem komunikasi juga dibutuhkan.

MapReduce dan NoSQL  (Not Only SQL)
MapReduce adalah framework software yang diperkenalkan oleh Google dan digunakan untuk mendukung distributed computing yang dijalankan di atas data yang sangat besar dan dijalankan secara simultan dibanyak komputer. Framework ini terinspirasi oleh konsep fungsi map dan reduce yang biasa digunakan di functional programming. MapReduce memungkinkan programmer Google untuk melakukan komputasi yang sederhana dengan menyembunyikan kompleksitas dan detail dari paralelisasi, distribusi data, load balancing dan fault tolerance.
MapReduce memiliki dua tahap dalam memproses data yaitu map dan reduce. Tahap pertama dari MapReduce disebut map. Map melakukan transformasi setiap data elemen input menjadi data elemen output. Map dapat dicontohkan dengan suatu fungsi toUpper(str) yang akan mengubah setiap huruf kecil (lowercase) menjadi huruf besar (uppercase). Setiap data elemen huruf kecil (lowercase) yang menjadi input dari fungsi ini akan ditransformasi menjadi data output elemen yang berupa huruf besar (uppercase). Map memiliki fungsi yang dipanggil untuk setiap input yang menghasilkan output pasangan intermediate <key, value>.
Reduce adalah tahap yang dilakukan setelah mapping selesai. Reduce akan memeriksa semua value input dan mengelompokkannya menjadi satu value output. Reduce menghasilkan output pasangan intermediate . Sebelum memasuki tahap reduce, pasangan intermediate <key, value> dikelompokkan berdasarkan key, tahap ini dinamakan tahap shuffle.
Sedangkan NoSql adalah sistem menejemen database yang berbeda dari sistem menejemen database relasional yang klasik dalam beberapa hal. NoSQL mungkin tidak membutuhkan skema table dan umumnya menghindari operasi join dan berkembang secara horisontal. Akademisi menyebut database seperti ini sebagai structured storage, istilah yang didalamnya mencakup sistem menejemen database relasional.

NoSQL Database
Adanya database NoSQL seperti MongoDB yang mencoba untuk menyelesaikan permasalahan ini. Disini, Data tidak ditulis/dibaca dari database dengan menggunakan bahasa SQL, tetapi menggunakan metode object-oriented yang lebih disukai oleh developers. Kelebihan lainnya adalah adanya dukungan adanya banyaknya tipe index yang berbeda beda untuk lookupsterhadap data tertentu. Mereka juga memiliki kemampuan clustering secara default.
Setelah sekian lama muncul, database NoSQL tidak serta merta memiliki banyak penggemar. Untuk pastinya, banyak perusahaan besar yang menggunakan NoSQL database, tetapi secara umum mereka menggunakannya untuk kebutuhan kebutuhan yang spesial. Mereka perlu melihat apakah database ini bisa berkembang dengan kapasitas data yang sangat besar dan banyak dipergunakan di berbagai applikasi, jika tidak, mereka tidak melihat alasan untuk berpindah.

Komputasi Kuantum

Pendahuluan

Komputasi kuantum adalah bidang studi difokuskan pada teknologi komputer berkembang berdasarkan prinsip-prinsip teori kuantum , yang menjelaskan sifat dan perilaku energi dan materi pada kuantum (atom dan subatom) tingkat. Pengembangan komputer kuantum , jika praktis, akan menandai lompatan maju dalam kemampuan komputasi jauh lebih besar daripada yang dari sempoa ke modern superkomputer , dengan keuntungan kinerja di alam miliar kali lipat dan seterusnya.
Komputer kuantum, mengikuti hukum fisika kuantum, akan memperoleh kekuatan pengolahan yang besar melalui kemampuan untuk berada di beberapa negara, dan untuk melakukan tugas-tugas menggunakan semua kemungkinan permutasi secara bersamaa. Kini pusat penelitian di komputasi kuantum termasuk MIT, IBM, Oxford University, dan Los Alamos National Laboratory.

Entanglement
Entanglement merupakan keadaan dimana dua atom yang berbeda berhubungan sedemikian hingga satu atom mewarisi sifat atom pasangannya. “Entanglement adalah esensi komputasi kuantum karena ini adalah jalinan kualitas yang berhubungan dengan lebih banyak informasi dalam bit kuantum dibanding dengan bit komputing klasik,” demikian Andrew Berkley, salah satu peneliti.
Para ahli fisika dari University of Maryland telah satu langkah lebih dekat ke komputer kuantum dengan mendemonstrasikan eksistensi entanglement antara dua gurdi kuantum, masing-masing diciptakan dengan tipe sirkuit padat yang dikenal sebagai persimpangan Josephson. Temuan terbaru ini mendekatkan jalan menuju komputer kuantum dan mengindikasikan bahwa persimpangan Josephson pada akhirnya dapat digunakan untuk membangun komputer supercanggih.

Pengoperasian Data Qubit
Proses komputasi dilakukan pada partikel ukuran nano yang memiliki sifat mekanika quantum, maka satuan unit informasi pada Komputer Quantum disebut quantum bit, atau qubit. Berbeda dengan bit biasa, nilai sebuah qubit bisa 0, 1, atau superposisi dari keduanya. State dimana qubit diukur adalah sebagai vektor atau bilangan kompleks. Sesuai tradisi dengan quantum states lain, digunakan notasi bra-ket untuk merepresentasikannya.
Pure qubit state adalah superposisi liner dari kedua state tersebut. Lebih jelasnya, sebuah pure qubit state dapat direpresentasikan oleh kombinasi linear dari state|0> dan state |1> : Dengan α dan β adalah amplitudo probabilitas yan dapat berupa angka kompleks. State space dari sebuah qubit secara geometri dapat direpresentasikan Bloch sphere
Bloch sphere adalah ruang 2 dimensi yang merupakan geometri untuk permukaan bola. Dibandingkan bit konvensional yang hanya dapat beradai di salah satu kutub, Qubit dapat berada dimana saja dalam permukaan bola. Untuk penerapan fisiknya, semua sistem 2 level, selama ukurannya cukup kecil untuk hukum mekanika quantum berlaku. Berbagai jenis implementasi fisik telah dikemukakan, contohnya antara lain: polarisasi cahaya, spin elektron, muatan listrik, dll.
Superposisi quantum adalah inti perbedaan antara qubit dengan bit biasa. Dalam keadaan superposisi, sebuah qubit akan bernilai |0> dan |1> pada saat bersamaan. Menurut interpretasi Copenhagen, bila dilakukan pengukuran terhadap qubit, maka hanya akan muncul satu state saja. State lainnya “kolaps” dalam arti hancur dan tidak mungkin diambil kembali.
Pemanfaatan sifat superposisi qubit ini adalah Paralellisme Quantum. Paralelisme Quantum muncul dari kemampuan quantum register untuk menyimpan superposisi dari base state. Maka setiap operasi pada register berjalan pada semua kemungkinan dari superposisi secara simultan. Karena jumlah state yang mungkin adalah 2n, dengn n adalah jumlah qubit pada quantum register, kita dapat melakukan pada komputer quantum satu kali operasi yang membutuh kan waktu eksponensial pada komputer konvensional. Kelemahan dari metode ini adalah, semakin besar base state yang bersuperposisi, semakin kecil kemungkinan hasil pengukuran dari nilai hasil pengukuran tersebut benar. Kelemahan ini membuat pararellisme quantum tidak berguna bila operasi dilakukan pada nilai yang spesifik. Namun kelemahan ini tidak begitu berpengaruh pada fungsi yang memperhitungkan nilai dari semua input, bukan hanya satu. Sebagaimana ditunjukkan pada Algoritma Shor.

Quantum Gate
Dalam komputasi kuantum dan khusus kuantum sirkuit model komputasi, gerbang kuantum (atau Gerbang logika kuantum) adalah rangkaian dasar kuantum yang beroperasi di sejumlah kecil qubits. Mereka adalah blok bangunan dari kuantum sirkuit, seperti gerbang logik klasik sirkuit digital konvensional.
Tidak seperti logika klasik pintu gerbang pada umumnya, logika kuantum bersifat reversibel. Namun, komputasi klasik hanya dapat dilakukan dengan menggunakan gerbang reversibel. Sebagai contoh, gerbang Toffoli reversibel dapat melaksanakan semua fungsi Boolean. Gerbang ini memiliki penyetaraan kuantum secara langsung, menampilkan bahwa sirkuit kuantum dapat melakukan semua operasi yang dilakukan oleh sirkuit klasik.
Gerbang logik kuantum yang diwakili oleh kesatuan matriks. Gerbang kuantum yang paling umum beroperasi pada ruang dari satu atau dua qubits, seperti Gerbang logika klasik umum beroperasi pada satu atau dua bit. Ini berarti bahwa sebagai matriks, gerbang kuantum dapat dijelaskan oleh 2 × 2 atau 4 × 4 kesatuan matriks.

Algoritma Shor
Algoritma Shor merupakan sebuah metode yang dikembangkan tahun 1994 oleh ilmuwan AT&T  Peter Shor untuk menggunakan komputer kuantum yang futuristis untuk menemukan faktor-faktor dari sebuah bilangan. Bilangan-bilangan yang diperkalikan satu dengan yang lain  untuk  memperoleh  bilangan  asli.  Saat ini, pemfaktoran (factoring) sebuah bilangan besar masih terlalu sulit bagi komputer konvensional meskipun begitu mudah untuk  diverifikasi. Itulah sebabnya pemfaktoran bilangan besar ini banyak digunakan dalam metode kriptografi untuk melindungi data.