CLOUD COMPUTING
DEFINISI.
Seperti yang kita
ketahui, akhir-akhir ini di dunia Teknologi Informasi(IT) sering membahas
mengenaiCloud Computing. Apa yang kalian ketahui seputar Cloud
Computing?
Berdasarkan definisi
dari Wikipedia, Cloud Computing sebagai komputasi berbasis internet, ketika
banyak server digunakan bersama untuk menyediakan sumber daya, perangkat lunak
dan data pada komputer atau perangkat lain pada saat dibutuhkan.
Disini ada definisi menurut Peter Mell dan Timothy Grance
(2012:2) definisi Cloud Computing adalah sebuah model yang memungkinkan untuk
ubiquitous (diamanapun dan kapanpun), nyaman, On-demand akses jaringan ke
sumber daya komputasi (contoh: jaringan, server, storage, aplikasi, dan
layanan) yang dapat dengan cepat dirilis atau ditambahkan.
Cloud Computing sebagai suatu layanan teknologi informasi yang dapat
dimanfaatkan oleh pengguna dengan berbasis jaringan/internet. Dimana suatu
sumber daya, perangkat lunak, informasi dan aplikasi disediakan untuk digunakan
oleh komputer lain yang membutuhkan. Cloud computing mempunyai dua kata “Cloud”
dan “Computing”. Cloud yang berarti internet itu sendiri dan Computing adalah
proses komputasi.
Karakteristik/Syarat Cloud Computing.
Lima kriteria yang
harus dipenuhi oleh sebuah sistem untuk bisa di masukkan dalam keluarga Cloud
Computing, yaitu :
- On Demand Self Service, Seorang pelanggan
dimungkinkan untuk secara langsung “memesan” sumber daya yang dibutuhkan,
seperti processor time dan kapasitas penyimpanan melalui control panel
elektronis yang disediakan. Jadi tidak perlu berinteraksi dengan personil
customer service jika perlu menambah atau mengurangi sumberdaya komputasi
yang diperlukan.
- Broadband Network Access, Layanan yang tersedia
terhubung melalui jaringan pita lebar, terutama untuk dapat diakses secara
memadai melalui jaringan internet, baik menggunakan thin client, thick
client ataupun media lain seperti smartphone.
- Resource pooling Penyedia layanan cloud,
memberikan layanan melalui sumberdaya yang dikelompokkan di satu atau
berbagai lokasi data center yang terdiri dari sejumlah server dengan
mekanisme multi-tenant. Sumberdaya komputasi ini meliputi media
penyimpanan, memory, processor, pita jaringan dan mesin virtual.
- Elastis (Rapid elasticity), Kapasitas komputasi
yang disediakan dapat secara elastis dan cepat disediakan, baik itu dalam
bentuk penambahan ataupun pengurangan kapasitas yang diperlukan. Untuk
pelanggan sendiri, dengan kemampuan ini seolah-olah kapasitas yang
tersedia tak terbatas besarnya, dan dapat “dibeli” kapan saja dengan
jumlah berapa saja.
- Measured Service, Sumberdaya cloud yang
tersedia harus dapat diatur dan dioptimasi penggunaannya, dengan suatu
sistem pengukuran yang dapat mengukur penggunaan dari setiap sumberdaya
komputasi yang digunakan (penyimpanan, memory, processor, lebar pita,
aktivitas user, dan lainnya). Dengan demikian, jumlah sumberdaya yang
digunakan dapat secara transparan diukur yang akan menjadi dasar bagi user
untuk membayar biaya penggunaan layanan.
Komputasi Grid adalah penggunaan sumber daya yang
melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis
untuk memecahkan persoalan komputasi dalam skala besar.
Grid computing merupakan cabang dari distributed
computing.Grid komputer memiliki perbedaan yang lebih menonjol dan di terapakan
pada sisi infrastruktur dari penyelesaian suatu proses. Grid computing adalah
suatu bentuk cluster (gabungan) komputer-komputer yang cenderung tak terikat
batasan geografi. Di sisi lain, cluster selalu diimplementasikan dalam satu
tempat dengan menggabungkan banyak komputer lewat jaringan.
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.
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.
Dan Indonesia sudah menggunakan sistem Grid dan diberi nama InGrid (Inherent
Grid). Sistem komputasi grid mulai beroperasi pada bulam Maret 2007 dan terus
dikembangkan sampai saat ini. InGrid ini menghubungkan beberapa perguruan
tinggi negeri dan swasta yang tersebar di seluruh Indonesia dan beberapa
instansi pemerintahan seperti Badan Meteorologi dan Geofisika.
Konserp Grid Computing
Beberapa konsep dasar dari
grid computing :
- Sumber daya dikelola dan dikendalikan secara lokal.
- Sumber daya berbeda dapat mempunyai kebijakan dan
mekanisme berbeda, mencakup Sumber daya komputasi dikelola oleh sistem
batch berbeda, Sistem storage berbeda pada node berbeda, Kebijakan berbeda
dipercayakan kepada user yang sama pada sumber daya berbeda pada Grid.
- Sifat alami dinamis: Sumber daya dan pengguna dapat
sering berubah
- Lingkungan kolaboratif bagi e-community (komunitas
elektronik, di internet)
- Tiga hal yang di-,sharing dalam sebuah sistem grid,
antara lain : Resource, Network dan Proses. Kegunaan / layanan dari sistem
grid sendiri adalah untuk melakukan high throughput computing dibidang
penelitian, ataupun proses komputasi lain yang memerlukan banyak resource
komputer.
CARA KERJA GRID COMPUTING
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.
Virtualisasi
Istilah virtualisasi
(virtualization) memiliki banyak pengertian. Jika merujuk pada kamus Oxford,
istilah virtualization merupakan turunan dari kata virtualize yang memiliki
makna “Convert (something) to a computer-generated simulation of reality”.
Dalam terjemahan bebas, virtualisasi berarti Mengubah sesuatu (mengkonversi) ke
bentuk simulasi dari bentuk nyata yang ada.
Inti dari virtualisasi
adalah membuat sebuah simulasi dari perangkat keras, sistem operasi, jaringan
maupun yang lainnya. Di bidang teknologi informasi, virtualisasi digunakan
sebagai sarana untuk improvisasi skalabilitas dari perangkat keras yang ada.
Menurut Alan Murphy dalam
papernya Virtualization Defined – Eight Different Ways, menyebutkan setidaknya
terdapat delapan istilah dalam penerapan virtualisasi. Diantaranya adalah
operating system virtualization, application server virtualization, application
virtualization, management virtualization, network virtualization, hardware
virtualization, storage virtualization dan service virtualization.
Perangkat lunak yang
digunakan untuk menciptakan virtual machine pada host machine biasa disebut
sebagai hypervisor atau Virtual Machine Monitor (VMM). Menurut Robert P.
Goldberg dalam tesisnya yang berjudul Architectural Principles For Virtual Computer
Systems pada hal 23 menyebutkan bahwa tipe-tipe dari VMM ada 2 yaitu:
· Type
1 berjalan pada fisik komputer yang ada secara langsung. Pada jenis ini
hypervisor/VMM benar-benar mengontrol perangkat keras dari komputer host-nya.
Termasuk mengontrol sistem operasi-sistem operasi guest-nya. Contoh
implementasi yang ada adalah KVM dan OpenVZ. Adapun contoh yang lain seperti
VMWare ESXi, Microsoft Hyper-V.
· Type 2 berjalan pada sistem operasi diatasnya. Pada
tipe ini sistem operasi guest berada diatas sistem
operasi host. Contoh tipe ini adalah VirtualBox.
Distribusi
Komputasi dalam Cloud Computing
Komputasi Terdistribusi
merupakan salah satu tujuan dari Cloud Computing, karena menawarkan pengaksesan
sumber daya secara parallel, para pengguna juga bisa memanfaatkannya secara
bersamaan (tidak harus menunggu dalam antrian untuk mendapatkan pelayanan),
terdiri dari banyak sistem sehingga jika salah satu sistem crash, sistem lain
tidak akan terpengaruh, dapat menghemat biaya operasional karena tidak
membutuhkan sumber daya (resourches).
Kegiatan ini merupakan
kumpulan beberapa computer yang terhubung untuk melakukan pendistribusian,
seperti mengirim dan menerima data serta melakukan interaksi lain antar
computer yang dimana membutuhkan sebuah jaringan agar computer satu dan lainnya
bisa saling berhubung dan melakukan interaksi. Hal ini semua dilakukan dengan
cloud computing yang seperti kita ketahui memberikan layanan dimana
informasinya disimpan di server secara permanen dan disimpan di computer client
secara temporary.
Distribusi komputasi ini
memiliki definisi mempelajari penggunaan terkoordinasi dari computer secara
fisik terpisah atau terdistribusi. Pada distributed computing ini, program
dipisah menjadi beberapa bagian yang dijalankan secara bersamaan pada banyak
computer yang terhubung melalui jaringan internet.
Implementasi Distribusi Komputasi Awan
Ada tiga poin utama yang diperlukan dalam
implementasi cloud computing, yaitu :
1. Komputer Front
End
Komputer front end merupakan sebuah media
tatap muka yang digunakan untuk melakukan interaksi dengan data yang ada dalam
sebuah sistem. Biasanya merupakan komputer desktop biasa. Front-end lebih
mengarah kepada sebuah layanan umum yang memungkinkan semua orang dapat
menerima atau memberikan informasi kepada banyak proses yang dilakukan.
2. Komputer Back End
Komputer back end dalam skala besar biasanya
berupa server komputer yang dilengkapi dengan data center dalam penyimpanan
besar. Pada umumnya komputer back end harus mempunyai kinerja yang tinggi,
karena harus melayani hingga ribuan permintaan data.
3. Penghubung antara
keduanya
Penghubung keduanya bisa berupa jaringan LAN
atau internet.
Map Reduce
Setiap istilah perlu definisi, dan harus ada
kesepakatan akan definisi tersebut biar tidak terjadi salah pengertian ataupun
salah paham diantara para pengguna istilah tersebut. MapReduce pun punya
definisi. MapReduce adalah model pemrograman rilisan Google yang ditujukan
untuk memproses data berukuran raksasa secara terdistribusi dan paralel dalam
cluster yang terdiri atas ribuan komputer. Dalam memproses data, secara garis
besar MapReduce dapat dibagi dalam dua proses yaitu proses Map dan proses
Reduce. Kedua jenis proses ini didistribusikan atau dibagi-bagikan ke setiap
komputer dalam suatu cluster (kelompok komputer yang salih terhubung) dan
berjalan secara paralel tanpa saling bergantung satu dengan yang lainnya.
Proses Map bertugas untuk mengumpulkan informasi dari potongan-potongan data yang
terdistribusi dalam tiap komputer dalam cluster. Hasilnya diserahkan kepada
proses Reduce untuk diproses lebih lanjut. Hasil proses Reduce merupakan hasil
akhir yang dikirim ke pengguna.
Desain dan Struktur, MapReduce itu
sederhana.
Dari definisinya, MapReduce mungkin terkesan
sangat ribet. Untuk memproses sebuah data raksasa, data itu harus
dipotong-potong kemudian dibagi-bagikan ke tiap komputer dalam suatu cluster.
Lalu proses Map dan proses Reduce pun harus dibagi-bagikan ke tiap komputer dan
dijalankan secara paralel. Terus hasil akhirnya juga disimpan secara
terdistribusi. Benar-benar terkesan merepotkan.
Beruntunglah, MapReduce telah didesain sangat sederhana alias
simple. Untuk menggunakan MapReduce, seorang programer cukup membuat dua
program yaitu program yang memuat kalkulasi atau prosedur yang akan dilakukan
oleh proses Map dan Reduce. Jadi tidak perlu pusing memikirkan bagaimana
memotong-motong data untuk dibagi-bagikan kepada tiap komputer, dan
memprosesnya secara paralel kemudian mengumpulkannya kembali. Semua proses ini
akan dikerjakan secara otomatis oleh MapReduce yang dijalankan diatas Google
File System .
Program yang memuat kalkulasi yang akan
dilakukan dalam proses Map disebut Fungsi Map, dan yang memuat kalkulasi yang
akan dikerjakan oleh proses Reduce disebut Fungsi Reduce. Jadi, seorang
programmer yang akan menjalankan MapReduce harus membuat program Fungsi Map dan
Fungsi Reduce.
Fungsi Map bertugas untuk membaca input dalam bentuk pasangan
Key/Value, lalu menghasilkan output berupa pasangan Key/Value juga. Pasangan
Key/Value hasil fungsi Map ini disebut pasangan Key/Value intermediate.
Kemudian, fungsi Reduce akan membaca pasangan Key/Value intermediate hasil
fungsi Map, dan menggabungkan atau mengelompokkannya berdasarkan Key tersebut.
Lain katanya, tiap Value yang memiliki Key yang sama akan digabungkan dalam
satu kelompok. Fungsi Reduce juga menghasilkan output berupa pasangan
Key/Value.
Untuk memperdalam pemahaman, mari kita simak satu contoh.
Taruhlah kita akan membuat program MapReduce untuk menghitung jumlah tiap kata
dalam beberapa file teks yang berukuran besar. Dalam program ini, fungsi Map
dan fungsi Reduce dapat didefinisikan sebagai berikut:
map(String key, String value):
//key : nama file teks.
//value: isi file teks tersebut.
for each word W in value:
emitIntermediate(W,"1");
reduce(String key, Iterator
values):
//key : sebuah kata.
//values : daftar yang berisi hasil hitungan.
int result = 0;
for each v in values:
result+=ParseInt(v);
emit(AsString(result));
Hasil akhir dari program ini adalah jumlah dari tiap kata
yang terdapat dalam file teks yang dimasukkan sebagai input program ini.
No SQL & Database
Berbeda dengan SQL Database, dari namanya
saja sudah bisa ditebak bahwa nosql database adalah kebalikan dari sql
database. Tidak relational / tanpa relation. Database nosql atau yang biasa
disebut NoSQL database / cloud database merupakan penyimpanan data / database
yang tidak terstruktur.
Nosql database tidak seperti sql database
yang menggunakan tabel dalam penyusunan datanya, nosql database menggabungkan
semua database tidak membedakan jenis2nya dan tanpa karakteristik umum. Tapi
nosql database ini memiliki kecepatan yang super cepat dibanding dengan sql
database, pencariannya lebih terfokus. Nosql sebetulnya tidak 100% menyimpan
data dengan cara tidak terstruktur, terkadang ada miripnya dengan sql database
dengan sedikit susunan pada saat2 tertentu.
Bedanya nosql database ini menyusun bagian
didalam bagian lainnya (subset). Jadi setiap bagian akan memiliki beberapa
bagian lagi didalamnya. Nosql ini cocok dan biasa digunakan untuk penyimpanan
aplikasi atau data yang sangat besar. Karena dengan menggunakan nosql data
dapat diakses dengan sangat fleksibel dan sangat sedikit kemungkinan error
ketika mengakses banyak data dengan format yang berbeda-beda.
Pengelompokan
database noSQL
Secara
umum, database noSQL dibagi menurut format penyimpanan dokmentnya . Berikut ini
adalah pengelompokan database noSQL berdasarkan model (penyimpanan) datanya
1. Document Database contohnya MongoDB, seiap satu object
data disimpan dalam satu dokumen. Dokumen sendiri bisa terdiri dari key-value,
dan value sendiri bisa berupa array atau key-value bertingkat.
2. Graph
, Format penyimpanan data dalam struktur graph. Format ini sering dipakai untuk
data yang saling berhubungan seperti jejaring social. Contoh database noSQL
dengan format ini adalah Neo4J dan FlockDB. FlockDB dipakai oleh twitter.
3. Key
– Value, contoh database jenis ini adalah Apache Cassandra.
4. Object
Database. Format database yang disimpan dalam object object, Object disini sama
dengan pengertian object di Pemrograman beroreintasi object , Contoh databasenya
adalah Db4o.
5. Tipe
lainnya adalah tabular, tuple store dan berbagai jenis lain yang tidak terlalu
populer.
Kelebihan NoSQL di
banding Relasional Database
1. NoSQL
bisa menampung data yang terstruktur, semi terstruktur dan tidak terstuktur
secara efesien dalam skala besar (big data/cloud).
2. Menggunakan
OOP dalam pengaksesan atau manipulasi datanya.
3. NoSQL
tidak mengenal schema tabel yang kaku dengan format data yang kaku. NoSQL
sangat cocok untuk data yang tidak terstruktur, istilah singkat untuk fitur ini
adalah Dynamic Schema.
4. Autosharding,
istilah sederhananya, jika database noSQL di jalankandi cluster server
(multiple server) maka data akan tersebar secara otomatis dan merata keseluruh
server.
Kekurangan
dari database NoSQL sendiri , minimal bagi saya adalah Hostingnya mahal.
beberapa layanan di luar negeri mencharge biaya 100-200USD untuk hosting
database noSQL. Selain itu, saya belum pernah menemukan hosting Cpanel yang
mendukung database MongoDB atau database noSQL lainnya.
Selain
itu, karena bervariasinya produk dan format penyimpanan, berpindah antar satu
produk database ke produk noSQL lainnya perlu waktu untuk belajar. Contohnya
ketika anda pindah dari MongoDB ke Cassandra, maka anda harus belajar lagi dari
awal, berbeda dengan database RDMS.
DAFTAR PUSTAKA :
http://www.cloudindonesia.or.id/apa-itu-cloud-computing.html
https://risanputtra.wordpress.com/2016/03/29/pengantar-komputasi-grid/
http://dosen.gufron.com/artikel/pengertian-virtualisasi/8/
http://andikarag.blogspot.co.id/2016/03/distribusi-komputasi-dalam-cloud.html
http://www.teknologi-bigdata.com/2013/02/mapreduce-besar-dan-powerful-tapi-tidak.html
https://www.candra.web.id/pengantar-database-nosql-dan-mongodb/