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.