A. Apa itu Cloud Computing?
Untuk memudahkan pemahaman mengenai model cloud computing kita ambil analogi dari layanan listrik PLN. Tentu kita semua adalah para pemakai listrik dalam kehidupan sehari-hari. Untuk bisa menikmati listrik, kita tidak perlu mendirikan infrastruktur pembangkit listrik sendiri, bukan? Yang perlu kita lakukan adalah mendaftar ke PLN karena PLN sudah menyediakan layanan listrik ini untuk pelanggan.
Kalau Anda pernah melihat gardu induk PLN, Anda akan melihat bagaimana rumitnya instalasi listrik disana dengan banyak sekali transformator dan peralatan berat lainnya (Resource Pooling). Disinilah sumber daya listrik berpusat untuk kemudian didistribusikan ke pelanggan. Distribusi listrik ke pelanggan dari gardu induk ini menggunakan kabel listrik yang sudah distandarisasi. Kabel antara pembangkit listrik dengan gardu induk biasa dikenal dengan istilah SUTET (Saluran Udara Tegangan Ektra Tinggi). Dari gardu induk, distribusi kemudian dipecah ke gardu-gardu lain sampai akhirnya sampai di rumah pelanggan dengan kabel yang lebih kecil. Kabel listrik yang ada ini menjamin koneksi listrik yang cepat, sehingga layanan listrik bisa dinikmati terus menerus (Broad Network Access).
Setelah mendaftar, pelanggan bisa memakai energi listrik dan membayar kepada PLN berdasarkan jumlah penggunaan listrik kita tiap bulan. Jumlah yang dibayar dihitung dari meteran listrik di rumah pelanggan (Measured Service). Saat pelanggan butuh daya tambahan karena suatu tujuan khusus (misalnya saat acara pernikahan keluarga), pelanggan tinggal meminta kepada PLN untuk menambahkan daya, dan suatu saat nanti ketika ingin menurunkan daya lagi, pelanggan tinggal meminta juga kepada PLN.
Bisa dikatakan penambahan daya listrik ini bersifat elastis, untuk menambah daya atau menurukannya bisa dilakukan segera (Rapid Elasticity). Akan sangat menarik jika kedepannya untuk melakukan penambahan/penurunan daya tersebut, pelanggan bisa melakukannya sendiri dari suatu alat yang disediakan oleh PLN., sehingga tidak dibutuhkan lagi interaksi dengan pegawai PLN (Self Service).
Ketika memakai layanan listrik dari PLN, pelanggan tidak perlu pusing untuk memikirkan bagaimana PLN memenuhi kebutuhan listrik . Hal terpenting yang perlu diketahui adalah listrik menyala untuk kebutuhan sehari-hari, serta berapa tagihan listrik yang perlu dibayar tiap bulannya. Pelanggan tidak perlu mengetahui secara detail bagaimana PLN merawat infrastruktur listriknya, bagaimana ketika mereka ada kerusakan alat, bagaimana proses perawatan alat-alat tersebut, dsb. Intinya, pelanggan cukup tahu bahwa dapat menikmati listrik dan berkewajiban membayar biaya tersebut tiap bulannya, sedangkan PLN sendiri berkewajiban untuk memenuhi kebutuhan listrik pelanggannya. Nah, analogi PLN di atas adalah gambaran dari layanan Cloud Computing.
Menurut NIST (National Institute of Standards and Technology), terdapat 5 karakteristik sehingga sistem tersebut disebut Cloud Computing, yaitu:
1. Resource Pooling
Sumber daya komputasi (storage, CPU, memory, network bandwidth, dsb.) yang dikumpulkan oleh penyedia layanan (service provider) untuk memenuhi kebutuhan banyak pelanggan (service consumers) dengan model multi-tenant. Sumber daya komputasi ini bisa berupa sumber daya fisik ataupun virtual dan juga bisa dipakai secara dinamis oleh para pelanggan untuk mencukupi kebutuhannya.
2. Broad Network Access
Kapabilitas layanan dari cloud provider tersedia lewat jaringan dan bisa diakses oleh berbagai jenis perangkat, seperti smartphone, tablet, laptop, workstation, dsb.
3. Measured Service
Tersedia layanan untuk mengoptimasi dan memonitor layanan yang dipakai secara otomatis. Dengan monitoring sistem ini, kita bisa melihat berapa resources komputasi yang telah dipakai, seperti: bandwidth , storage, processing, jumlah pengguna aktif, dsb. Layanan monitoring ini sebagai bentuk transparansi antara cloud provider dan cloud consumer.
4. Rapid Elasticity
Kapabilitas dari layanan cloud provider bisa dipakai oleh cloud consumer secara dinamis berdasarkan kebutuhan. Cloud consumer bisa menaikkan atau menurunkan kapasitas layanan. Kapasitas layanan yang disediakan ini biasanya tidak terbatas, dan service consumer bisa dengan bebas dan mudah memilih kapasitas yang diinginkan setiap saat.
5. Self Service
Cloud Consumer bisa mengkonfigurasikan secara mandiri layanan yang ingin dipakai melalui sebuah sistem, tanpa perlu interaksi manusia dengan pihak cloud provider. Konfigurasi layanan yang dipilih ini harus tersedia segera dan saat itu juga secara otomatis. Kelima karakteristik Cloud Computing tersebut harus ada di service provider jika ingin disebut sebagai penyedia layanan Cloud Computing. Salah satu saja dari layanan tersebut tidak terpenuhi, maka penyedia layanan tersebut belum/tidak pantas disebut sebagai cloud provider.
Konsep dalam CLoud Computing
• Infrastructure as a Service (IaaS) : konsep tertua dimana pengimplementasiannya banyak dilakukan mulai dari penggunaan atau penyewaan jaringan untuk akses Internet, layanan Disaster Recovery Center, dsb.
• Platform as a Service (PaaS) : konsepnya hampir serupa dengan IaaS. Namun Platform disini adalah penggunaan operating system dan infrastruktur pendukungnya. Yang cukup terkenal adalah layanan dari situs Force.Com serta layanan dari para vendor server.
• • Software as a Service (SaaS) : berada satu tingkat diatas PaaS dan IaaS, dimana disini yang ditawarkan adalah software atau suatu aplikasi bisnis tertentu. Contoh yang paling mutakhir adalah SalesForce.Com, Service-Now.Com, Google Apps, dsb.
• Cloud Clients adalah seperangkat komputer ataupun software yang didesain secara khusus untuk penggunaan layanan berbasis cloud computing.
o Mobile – Windows Mobile, Symbian, dan lain-lain.
o Thin Client – Windows Terminal Service, CherryPal, dll.
o Thick Client – Internet Explorer, FireFox, Chrome, dll.
• Cloud Services adalah produk, layanan dan solusi yang dipakai dan disampaikan secara real-time melalui media Internet. Contoh yang paling popular adalah web service.
o Identitas – OpenID, OAuth, dan lain2.
o Integration – Amazon Simple Queue Service.
o Payments – PayPal, Google Checkout.
o Mapping – Google Maps, Yahoo! Maps.
• Cloud Storage melibatkan proses penyampaian penyimpanan data sebagai sebuah layanan. Misal :
o Database – Google Big Table, Amazon SimpleDB.
o Network Attached Storage – Nirvanix CloudNAS, MobileMe iDisk.
• Cloud Infrastructure merupakan penyampaian infrastruktur komputasi sebagai sebuah layanan. Contohnya :
o Grid Computing – Sun Grid.
o Full Virtualization – GoGrid, Skytap.
o Compute – Amazon Elastic Compute Cloud.
• Murah
o Trend sesungguhnya dari komputansi awan justru terjadi pada perusahaan. Perusahaan tiap tahun dipusingkan pengeluaran besar untuk membeli piranti keras dan lunak. Bila cukup membeli satu terminal, bukan saja lebih murah, tapi juga perlengkapan yang simpel lebih tahan lama.
• Ramah Lingkungan
o Pada umumnya, komputer di rumah meniupkan udara panas. Udara panas itu berasal dari energi. Energi dibutuhkan supaya komputer bisa nyala. Tapi kebanyakan energi itu menjadi udara panas. Dengan ‘cloud computing’, sebuah komputer pusat, maka di rumah dibutuhkan lebih sedikit listrik, jadi sangat menghemat.
• Service level
o Cloud provider mungkin tidak akan konsisten dengan performance dari application atau transaksi. vMengharuskan anda untuk memahami service level mengenai transaction response time, data protection dan kecepatan data recovery.
• Privacy
o Karena orang lain / perusahaan lain juga melakukan hosting kemungkinan data anda akan keluar atau di baca oleh pemerintah U.S. dapat terjadi tampa sepengetahuan anda atau approve dari anda.
• Compliance o Cloud service provider diharapkan dapat menyamakan level compliance untuk penyimpanan data didalam cloud
• Data ownership
o Apakah data anda masih menjadi milik anda begitu data tersebut tersimpan didalam cloud?
o Mungkin pertanyaan ini sedikit aneh, namun anda perlu mengetahui seperti hal nya yang terjadi pada Facebook yang mencoba untuk merubah terms of use aggrement nya yang mempertanyakan hal ini.
• Data Mobility
o Apakah anda dapat melakukan share data diantara cloud service?
o Jika anda terminate cloud relationship bagaimana anda mendapatkan data anda kembali?
o Format apa yang akan digunakan ?
o Dapatkah anda memastikan kopi dari datanya telah terhapus ?
B. Komputasi Grid
Komputasi Grid adalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar.
Ide awal komputasi grid dimulai dengan adanya distributed computing, yaitu mempelajari penggunaan komputer terkoordinasi yang secara fisik terpisah atau terdistribusi. Sistem terdistribusi membutuhkan aplikasi yang berbeda dengan sistem terpusat. Kemudian berkembang lagi menjadi parallel computing yang merupakan teknik komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan.
Setidaknya ada dua sisi yang mendorong semakin berkembangnya grid computing saat ini. Kebutuhan akan sumber daya komputasi yang besar di berbagai bidang serta adanya sumber daya komputasi yang tersebar. Grid computing menawarkan solusi komputasi yang murah, yaitu dengan memanfaatkan sumber daya yang tersebar dan heterogen serta pengaksesan yang mudah dari mana saja. Globus Toolkit adalah sekumpulan perangkat lunak dan pustaka pembuatan lingkungan komputasi grid yang bersifat open-source. Dengan adanya lingkungan komputasi grid ini diharapkan mempermudah dan mengoptimalkan eksekusi program-program yang menggunakan pustaka paralel.
Definisi
Menurut tulisan singkat oleh Ian Foster ada check-list yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu :
• Sistem tersebut melakukan koordinasi terhadap sumberdaya 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.
Dalam buku The Grid:Blue Print for a new computing infrastructure dijelaskan bahwa yang dimaksud dengan 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.
"A computational grid is a hardware and software infrastructure that provides dependable, consistent, pervasive, and inexpensive access to high-end computational capabilities."
Seandainya kelak dikemudian hari teknologi yang dibutuhkan untuk mewujudkan visi paradigma komputasi grid ini sudah mapan, peluang akan semakin terbuka bagi kerjasama lintas organisasi, lintas benua dan lintas bangsa. Akan terbuka peluang bagi peneliti di Indonesia yang ingin melakukan komputasi yang sangat rumit, dengan menggunakan supercomputer tercepat di dunia, tanpa harus melakukan investasi besar-besaran dalam bidang teknologi informasi.
C. Virtualisasi
Virtualisasi adalah istilah umum yang mengacu kepada abstraksi dari sumber daya komputer. Definisi lainnya adalah "sebuah teknik untuk menyembunyikan karakteristik fisik dari sumber daya komputer dari bagaimana cara sistem lain, aplikasi atau pengguna berinteraksi dengan sumber daya tersebut. Hal ini termasuk membuat sebuah sumber daya tunggal (seperti server, sebuah sistem operasi, sebuah aplikasi, atau peralatan penyimpanan terlihat berfungsi sebagai beberapa sumber daya logikal; atau dapat juga termasuk definisi untuk membuat beberapa sumber daya fisik (seperti beberapa peralatan penyimpanan atau server) terlihat sebagai satu sumber daya logikal."
Istilah virtualisasi sudah digunakan secara luas sejak 1960-an, dan telah diaplikasikan kepada beberapa aspek komputer—dari keseluruhan sistem komputer sampai sebuah kemampuan atau komponen individu. Secara umum semua teknologi virtualisasi mengacu kepada "menyembunyikan detail teknis" melalui enkapsulasi.
D. Distributed Computation Dalam Cloud Computing
Distributed computing merupakan bidang ilmu komputer yang mempelajari sistem terdistribusi.Sebuah sistem terdistribusi terdiri dari beberapa komputer otonom yang berkomunikasi melalui jaringan komputer. Komputer yang saling berinteraksi untuk mencapai tujuan bersama. Suatu program komputer yang berjalan dalam sistem terdistribusi disebut program didistribusikan, dan didistribusikan pemrograman adalah proses menulis program tersebut. Distributed computing juga mengacu pada penggunaan sistem terdistribusi untuk memecahkan masalah komputasi. Dalam distributed computing, masalah dibagi menjadi banyak tugas, masing-masing yang diselesaikan oleh satu komputer.
E. Map Reduce
Mapreduce adalah sebuah model pemrograman yang secara khusus dalam mengasosiasikan dan mendistribusian data dalam menangani masalah pengaturan data dalam skala besar. Model pemrograman ini didasarkan pada konsep yang sederhana yaitu melakukan suatu iterasi pada suatu inputan, kemudian menghitung pasangan-pasangan key/value dari setiap bagian inputan, mengelompokkan semua lanjutan value dengan key yang sama, melakukan proses perulangan semua hasil dari pengelompokkan dan melakukan pengurangan untuk setiap pengelompokkan tersebut. Dengan menggunakan metode Mapreduce ini kemudahan dan kecocokan pada suatu data yang dieksekusi dalam jumlah besar dapat diparalelkan dan didistribusikan melalui suatu pengelompokan data. Mapreduce adalah suatu kesederhanaan yang memungkinkan atomatisasi dalam pararelisasi dan pembagian perhitungan data dalam skala yang besar, dikombinasikan dengan pengimplementasian sistem cluster yang saling berhubungan sehingga menghasilkan performa tinggi dalam pendistribusian suatu data. Mapreduce diinspirasikan oleh bahasa fungsional yang terdiri dari Map dan Reduce dalam konsep abstrak.
Fungsi map memproses suatu pasangan kunci dan nilai {key/value) menjadi kunci dan nilai tengah {intermediate key/value) yang nantinya akan dikirim ke fungsi reduksi. Saat operasi pemetaan berjalan secara paralel, file yang menjadi input dibagi menjadi beberapa bagian yang disebut FileSplits. Hal ini dilakukan karena sebuah file bisa memiliki ukuran yang besar dan itu akan memperlambat kinerja. Saat fungsi pemetaan membaca baris data, fungsi ini menghasilkan pasangan kunci berupa kata dan nilai berupa jumlah.
Dalam hal ini fungsi map yang akan dilakukan untuk aplikasi pencarian term ini adalah sebagai berikut.
map(String key, String value):
// key: document name
// value: document contents
for each word w in value:
EmitIntermediate(w, “1”);
Pada program ini fungsi pemetaan menghasilkan setiap kata yang diasosiasikan dengan suatu perhitungan yang terjadi(hanya ‘1’ dalam setiap kata). Fungsi map akan menerima inputan berupa key/value dengan key berupa nama dokumen dan value merupakan jumlah kata yang dikandung dalam dokumen tersebut, untuk setiap kata dalam suatu dokumen tersebut akan menghasilkan lanjutan key/value yang berupa (kata, 1).
Fungsi reduksi adalah memproses pasangan kunci dan nilai yang dikirim dari fungsi pemetaan untuk menjadi pasangan kunci dan nilai akhir yang nantinya akan ditulis ke file sebagai hasil. Masing-masing kata kunci dan nilai yang dihasilkan oleh fungsi pemetaan diproses secara berbeda dan hasilnya disimpan pada masing-masing file hasil. Untuk suatu kata yang sama maka, fungsi reduksi akan menjumlahkan semua angka nilai dari masing-masing kata tersebut, sehingga didapat pasangan kata dan jumlahnya.
Dalam hal ini fungsi reduce yang akan dilakukan untuk pencarian kata ini adalah sebagai berikut.
reduce(String key, Iterator values):
// key: a word
// values: a list of counts
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
Pada program ini fungsi reduce akan menghasilkan hasil dari penjumlahan bersama semua perhitungan yang dihasilkan untuk sebuah keterangan kata yang terdapat dalam suatu dokumen. Fungsi reduce akan menerima inputan berupa lanjutan key/values yang telah dikelompokkan untuk setiap nilainya dengan sebuah kunci yang sama dari hasil fungsi map, key berupa sebuah kata dan values berupa suatu daftar jumlah dari perhitungan kata dalam setiap dokumen yang muncul tersebut. Values dalam fungsi reduce dihasilkan dari penggabungan nilai-nilai dari proses perhitungan kata dalam suatu iterasi, sehingga akan menghasilkan sebuah kata dengan hasil penjumlahan kata yang muncul pada dokumen tersebut. Hasil ini disimpan dalam satu file terpisah dari hasil pasangan kunci dan nilai yang lain.
NOSQL adalah istilah untuk menyatakan berbagai hal yang didalamnya termasuk database sederhana yang berisikan key danvalue seperti Memcache, ataupun yang lebih canggih yaitu non-database elational seperti MongoDB, Cassandra, CouchDB, dan yang lainnya.
Wikipedia menyatakan 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.
Database relasional sudah ada semenjak tahun 70-an sehingga teknologi mereka sudah sangat matang. Secara umum mereka mendukung operasi transaksi, yang mengijinkan kita merubah sebagian data, melakukan kontrol terhadap operasi database, support terhadap constraint seperti unique, primary key, foreign key dan check. Mereka juga memiliki bahasa SQL atau Simplified Query Language untuk mengakses data, merubah data seperti operasi insert, update dan delete.
Walaupun SQL dalam arti sesungguhnya adalah simple atau sederhana, dan developer selama bertahun tahun menggunakannya, tetapi mereka merasa kurang puas bahkan cenderung tidak menyukainya. Alasan lainnya, RDBMS atau Relational Database Management System tidak dapat berkembang horisontal secara baik. Seringnya kita mendapatkan database yang berkembang tetapi secara read-only melalui kemampuan replikasi database dan untuk mendapatkan database yang berkembang horisontal secara read-write itu sangat sulit. Oracle saja sampai perlu membangun ORACLE RAC atau Real Application Cluster, yang menemui banyak tantangan untuk melakukan sinkronisasi data di internal cache melalui inter-koneksi khusus. Faktanya, perubahan data yang terjadi itu memerlukan waktu untuk mengirimkannya ke berbagai sistem. Selama data tersebut belum terkirimkan, kita memakai data yang tidak valid atau stale data/delta data.
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.
Sumber :
http://smuet.lecture.ub.ac.id/files/2012/06/E-Book-Pengantar-Cloud-Computing-R1.pdf
http://reza_chan.staff.gunadarma.ac.id/Downloads/files/26584/CLOUD+COMPUTING.pdf
http://my.opera.com/aviciena/blog/grid-computing-komputasi-grid
http://id.wikipedia.org/wiki/Virtualisasi
http://renzcort.tumblr.com/post/1983932660/mapreduce
http://condetcom.wordpress.com/2010/04/22/distributed-computing-grid-computing-cloud-computing/
http://nareswara.com/2011/07/06/apa-itu-nosql-database/