Cloud computing atau
komputasi awan merupakan definisi untuk
teknologi komputasi grid (grid computing) yang digunakan pada
pertengahan hingga akhir 1990-an. Jargon komputasi awan mulai muncul pada akhir
tahun 2007, digunakan untuk memindahkan layanan yang digunakan sehari-hari ke
Internet, bukan disimpan di komputer lokal lagi.
Cloud computing atau komputasi
awan merupakan tren
baru di bidang komputasi terdistribusi dimana
berbagai pihak dapat mengembangkan aplikasi dan layanan berbasis SOA (Service
Oriented Architecture) di jaringan internet.
Berbagai kalangan dapat
menarik manfaat dari layanan komputasi awan ini baik sebagai solusi teknologi
maupun mendapatkan manfaat ekonomis darinya.
Email yang tersedia dalam
bentuk web mail merupakan contoh yang sangat kecil dari teknologi cloud
computing. Dengan menggunakan layanan email seperti Gmail dan Yahoo Mail, orang
tidak perlu lagi menggunakan Outlook atau aplikasi desktop lainnya untuk email
mereka. Membaca email dengan browser memungkinkan dilakukan di mana saja
sepanjang ada koneksi internet.
Pada tahun 2007, layanan lain
termasuk pengolahan kata, spreadsheet, dan presentasi telah
dipindahkan ke dalam
komputasi awan. Google
menyediakan pengolah kata, spreadsheet dan aplikasi presentasi di
lingkungan komputasi yang awan dan terintegrasi dengan Gmail dan Google
Calendar, menyediakan lingkungan kantor di web (atau di awan). Microsoft dan
perusahaan lain juga bereksperimen dengan mengalihkan program-program ke awan
untuk membuatnya lebih terjangkau dan lebih mudah diakses oleh pengguna
komputer dan Internet. Perangkat lunak sebagai layanan (istilah Microsoft untuk
komputasi awan) adalah barang yang sangat baru bagi kebanyakan orang di
Microsoft.
Cloud computing saat ini sangat populer, selain
dari pemain besar software seperti
Microsoft dan Google,
perusahaan lain bermunculan
hanya untuk menyediakan layanan
berbasis awan sebagai pengganti atau penyempurnaan aplikasi pada PC
hari ini. Beberapa
dari perusahaan tersebut
adalah Zoho.com, sebuah office suite online, Evernote.com,
merupakan sebuah situs yang ditujukan
untuk catatan online , dan RememberTheMilk.com, manajemen tugas online.
Teknologi komputasi dan
teknik pemrograman baru atau teknik pengembangan berubah dengan cepat,
tujuan dalam komputasi awan
nampaknya akan membuat teknologi menjadi sangat mudah dimata user dan menjadikannya
sesederhana mungkin. Pengembangan berbasis internet sangat pesat saat ini
dengan boomingnya blogging dan microblogging serta layanan jejaring sosial yang
bertujuan untuk menemukan cara baru membantu individu dan bisnis untuk dapat
berkomunikasi satu sama lain di arena komputasi awan.
Cloud computing is becoming an adoptable technology for many of
the organizations with its dynamic scalability and usage of virtualized
resources as a service through the Internet. (Ercana, 2010). Definisi yang
hampir sama menurut dikatakan oleh Furht (2010) bahwa cloud computing can
be defined as a new style of computing in which dynamically scalable and often
virtualized resources are provided as a services over the Internet. Sedangkan
menurut Hayes (2008) Cloud computing is a kind of computing which is
highly scalable and use virtualized resources that can be shared by the users.
Users do not need any background knowledge of the services. A user on the
Internet can communicate with many servers at the same time and these servers
exchange information among themselves.
Kehadiran komputasi awan awalnya memang hadir bagi kalangan
industri. Sebagaimana yang dikatakan oleh Hartig (2008) Cloud computing is
a new model of computing that is widely being utilized in today's industry and
society. Ada beberapa alasan yang melatarbelakangi penerapan teknologi ini, antara
lain :
- Ini
adalah sebuah model layanan berbasis Internet untuk menampung sumberdaya
sebuah perusahaan. Artinya sebuah perusahaan tak perlu lagi memiliki atau
mendirikan infrastruktur lantaran sudah ada perusahaan lain yang
menyediakan “penampung” di cloud alias Internet.
- Sebuah
perusahaan tak perlu lagi mengalokasikan anggaran untuk pembelian dan
perawatan infra-struktur dan software.
- Perusahaan
pun tak perlu memiliki pengetahuan serta merekrut tenaga pakar dan tenaga
pengontrol infra-struktur di “cloud” yang mendukung mereka.
National Institute of Standards and
Technology (NIST), Information Techno-logy Laboratory memberikan dua buah
catatan mengenai pengertian komputasi awan. Pertama, komputasi awan masih
merupakan paradigma yang berkembang. Definisi, kasus penggunaan,
teknologi yang mendasari, masalah, risiko, dan manfaat akan terus disempurnakan melalui
perdebatan baik oleh sector public maupun swasta. Definisi, atribut, dan
karakteristik akan berkembang dan berubah dari waktu ke waktu. Kedua, industri
komputasi awan merupakan ekosistem besar dengan banyak model, vendor,
dan pangsa pasar. Definisi ini mencoba untuk mencakup semua
pen-dekatan berbagai awan (Mell & Grance, 2009).
Dari kedua catatan tersebut NIST memberikan definisi komputasi
awan adalah model untuk memungkinkan kenyaman, on-demand akses
jaringan untuk memanfaatkan bersama suatu sumberdaya
komputasi yang terkonfigurasi (misalnya, jaringan, server, penyimpanan,
aplikasi, dan layanan) yang dapatsecara cepat diberikan dan
dirilis dengan upaya manajemen yang minimal atau interaksi penyedia
layanan. Model komputasi awan mendorong ketersediaan dan terdiri dari
lima karakteristik, tiga model layanan, dan empat model penyebaran (Mell
dan Grance, 2009).
Karakteristik Komputasi Awan menurut NIST mengidentifikasi lima karakte-ristik penting
dari komputasi awan (Mell & Grance, 2009) sebagai berikut:
- On-demand
self-service. Pengguna dapat memesan dan mengelola layanan tanpa
interaksi manusia dengan penyedia layanan, misalnya dengan
mengguna-kan, sebuah portal web dan manajemen antarmuka.
Pengadaan dan perleng-kapan layanan serta sumberdaya yang terkait
terjadi secara otomatis pada penyedia.
- Broad
network access. Kemampuan yang tersedia melalui jaringan dan diakses
melalui mekanisme standar, yang mengenalkan penggunaan berbagai
platform (misalnya, telepon selular, laptop, dan PDA).
- Resource
pooling. Penyatuan sumberdaya komputasi yang dimiliki penyedia untuk melayani
beberapa konsumen menggunakan model multi-penyewa, dengan sumberdaya fisik
dan virtual yang berbeda, ditetapkan secara dinamis dan ditugaskan sesuai
dengan permintaan konsumen. Ada rasa kemandirian lokasi bahwa
pelanggan umumnya tidak memiliki kontrol atau pengetahuan atas keberadaan
lokasi sumberdaya yang disediakan, tetapi ada kemungkinan dapat menentukan
lokasi di tingkat yang lebih tinggi (misalnya, negara, negara bagian, atau datacenter).
Contoh sumberdaya termasuk penyimpanan, pemrosesan, memori, bandwidth
jaringan, dan mesin virtual.
- Rapid
elasticity. Kemampuan dapat dengan cepat dan elastis ditetapkan.
Measured Service. Sistem
komputasi awan secara otomatis mengawasi dan mengoptimalkan penggunaan sumber-daya
dengan memanfaatkan kemampu-an pengukuran (metering) pada beberapa tingkat yang
sesuai dengan jenis layanan (misalnya, penyimpanan, pemrosesan, bandwidth,
danaccount pengguna aktif). Penggunaan sumber-daya dapat dipantau,
dikendalikan, dan dilaporkan sebagai upaya memberikan transparansi bagi
penyedia dan konsu-men dari layanan yang digunakan.
Sedangkan tiga jenis model layanan dijelaskan oleh NIST
(Mell dan Grance, 2009) sebagai berikut :
- Cloud
Software as a Service (SaaS). Kemampuan yang diberikan kepada
konsumen untuk menggunakan aplikasi penyedia dapat
beroperasi pada infrastruktur awan. Aplikasi dapat diakses dari
berbagai perangkat klien melalui antarmuka seperti web browser (misalnya,
email berbasis web). Konsumen tidak mengelola atau mengendalikan
infrastruktur awan yang mendasari termasuk jaringan, server, sistem
operasi, penyimpanan, atau bahkan kemampuan aplikasi individu, dengan
kemungkinan pengecualianterbatas terhadap pengaturan konfigurasi aplikasi pengguna
tertentu.
- Cloud
Platform as a Service (PaaS). Kemampuan yang diberikan kepada
konsumen untuk menyebarkan aplikasi yang dibuat konsumen atau
diperoleh ke infrastruktur komputasi awan menggunakan
bahasa pemrograman dan peralatan yang didukung oleh
provider. Konsumen tidak mengelola atau mengendalikan infrastruktur awan
yang mendasari termasuk jaringan, server, sistem operasi, atau
penyim-panan, namun memiliki kontrol atas aplikasi disebarkan dan memungkinkan aplikasi melakukan
hosting konfigurasi.
- Cloud
Infrastructure as a Service (IaaS). Kemampuan yang diberikan kepada
konsumen untuk memproses, menyim-pan, berjaringan, dan komputasi
sumberdaya lain yang penting, dimana konsumen dapat menyebarkan dan
menjalankan perangkat lunak secara bebas , dapat mencakup sistem
operasi 1. dan aplikasi. Konsumen tidak menge-lola
atau mengendalikan infrastruktur awan yang mendasari tetapi memiliki
kontrol atas sistem operasi, penyim-panan, aplikasi yang disebarkan, dan
mungkin kontrol terbatas komponen jaringan yang pilih (misalnya, firewall
host).
Model penyebaran komputasi awan menurut NIST terdiri dari empat model
(Mell dan Grance, 2009), yaitu:
- Private
cloud. Swasta awan. Infrastruktur awan yang semata-mata
dioperasikan bagi suatu organisasi. Ini mungkin dikelola oleh organisasi
atau pihak ketiga dan mungkin ada pada on premis atau off premis.
- Community
cloud. Masyarakat awan. Infrastruktur awan digunakan secarabersama
oleh beberapa organisasi dan mendukung komunitas tertentu yang telah
berbagi concerns (misalnya, misi, persyaratan keamanan,
kebijakan, dan pertimbangan kepatuhan). Ini mungkin dikelola oleh
organisasi atau pihak ketiga dan mungkin ada pada on premis atau off premis.
- Public
cloud. Infrastruktur awan yang dibuat tersedia untuk
umum atau kelompok industri besar dan dimiliki oleh sebuah organisasi yang
menjuallayanan awan.
Hybrid cloud. Hybrid
awan. Infrastruktur awan merupakan komposisi dari dua atau lebih awan
(swasta, komunitas, atau publik) yang masih entitas unik namun terikat bersama
oleh standar atau kepemilikan teknologi yang menggunakan data
dan portabilitas aplikasi (e.g., cloud bursting for load-balancing between
clouds).
Secara garis besar definisi komputasi awan menurut NIST dapat
digambarkan (Mell dan Grance, 2009) sebagai berikut:
Gambar 1. The NIST
Definition Framework
1.2 Pengantar Komputasi Grid
Menurut definisi Grid Computing atau Komputasi Grid merupakan
salah satu dari tipe Komputasi Paralel, adalah penggunaan sumber daya yang
melibatkan banyak komputer terpisah secara geografis namun tersambung via jalur
komunikasi (termasuk Internet) untuk memecahkan persoalan komputasi skala
besar. Semakin cepat jalur komunikasi terbuka, maka peluang untuk menggabungkan
kinerja komputasi dari sumber-sumber komputasi yang terpisah menjadi semakin
meningkat. Dengan demikian, skala komputasi terdistribusi dapat ditingkatkan
secara geografis lebih jauh lagi, melintasi batas-batas domain administrasi
yang ada.
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.Misalnya TCP/IP
- Sistem tersebut berusaha untuk mencapai kualitas layanan yang canggih, (nontrivial quality of service) yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut.
Beberapa konsep dasar dari Komputasi Grid :
- 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.
Secara
generik, keuntungan dasar dari penerapan komputasi Grid, yaitu:
- Perkalian
dari sumber daya: Resource pool dari CPU dan storage tersedia ketika idle
- Lebih
cepat dan lebih besar: Komputasi simulasi dan penyelesaian masalah apat
berjalan lebih cepat dan mencakup domain yang lebih luas.
- Software dan aplikasi: Pool dari aplikasi dan pustaka standard, Akses terhadap model dan perangkat berbeda, Metodologi penelitian yang lebih baik.
- Data: Akses terhadap sumber data global, dan Hasil penelitian lebih baik.
1.3 Virtualisasi
Istilah virtualisasi (virtualization) memiliki banyak pengertian.
Jika merujuk pada kamus Oxford, istilahvirtualization 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.
Dengan virtualisasi, beberapa sistem operasi dapat berjalan secara
bersamaan pada satu buah komputer. Hal ini tentunya dapat mengurangi biaya yang
harus dikeluarkan oleh sebuah perusahaan. Di masa akan datang, teknologi
virtualisasi akan banyak digunakan baik oleh perusahaan yang bergerak dibidang
teknologi informasi maupun yang tidak murni bergerak di bidang teknologi
informasi namun menggunakan teknologi informasi sebagai sarana untuk memajukan
usahanya.
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.
Dalam hardware virtualization, perangkat lunak bekerja
membentuk sebuah virtual machine yang bertindak seolah-olah seperti
sebuah komputer asli dengan sebuah sistem operasi terinstall di dalamnya. Salah
contoh yang mudah misalkan terdapat satu buah komputer yang telah terinstall
GNU/Linux Linux Mint. Kemudian dengan menggunakan perangkat lunak virtualisasi
misalnya Virtualbox, kita dapat menginstall sistem operasi lain sebagai contoh
Windows XP atau FreeBSD.
Sistem operasi yang terinstall di komputer secara fisik dalam hal
ini Linux Mint disebut sebagai host machinesedangkan sistem operasi yang
diinstall diatasnya dinamakan guest machine. Istilah host dan guest dikenalkan
untuk memudahkan dalam membedakan antara sistem operasi fisik yang terinstall
di komputer dengan sistem operasi yang diinstall diatasnya atau virtualnya.
Perangkat lunak yang
digunakan untuk menciptakan virtual machine pada host machine biasa disebut
sebagaihypervisor atau Virtual Machine Monitor (VMM). Menurut Robert
P. Goldberg dalam tesisnya yang berjudulArchitectural 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.
Gambar 2. Virtualisasi type 2
1.4 Distributed
Computation dalam Cloud
Computing
Cloud computing dipecah ke dalam beberapa kategori yang berbeda
berdasarkan jenis layanan yang disediakan. SaaS (Software as a Service) adalah
kategori komputasi awan di mana sumber daya utama yang tersedia sebagai layanan
perangkat lunak aplikasi. PaaS (Platform as a Service) adalah kategori /
penerapan komputasi awan di mana penyedia layanan memberikan platform komputasi
atau solusi tumpukan untuk pelanggan mereka melalui internet. IaaS
(Infrastructure as a Service) adalah kategori komputasi awan di mana sumber
daya utama yang tersedia sebagai layanan yang infrastruktur perangkat keras.
DaaS (Desktop sebagai Layanan), yang merupakan layanan muncul-Aas berkaitan
dengan memberikan pengalaman seluruh desktop melalui internet. Ini
kadang-kadang disebut sebagai virtualisasi desktop / virtual desktop atau
desktop host.
Bidang ilmu komputer yang
berkaitan dengan sistem terdistribusi disebut komputasi terdistribusi. Sebuah
sistem terdistribusi terdiri dari lebih dari satu komputer self-directed
berkomunikasi melalui jaringan. Komputer-komputer ini menggunakan memori lokal
mereka sendiri. Semua komputer dalam sistem terdistribusi berbicara satu sama
lain untuk mencapai tujuan bersama tertentu. Atau, pengguna yang berbeda pada
setiap komputer mungkin memiliki kebutuhan individu yang berbeda dan sistem
terdistribusi akan melakukan koordinasi sumber daya bersama (atau bantuan
berkomunikasi dengan node lain) untuk mencapai tugas-tugas masing-masing. Node
berkomunikasi menggunakan message passing. Komputasi terdistribusi juga dapat
diidentifikasi sebagai menggunakan sistem terdistribusi untuk memecahkan
masalah besar tunggal dengan melanggar itu dengan tugas, masing-masing yang
dihitung masing-masing komputer dari sistem terdistribusi. Biasanya, mekanisme
toleransi berada di tempat untuk mengatasi kegagalan komputer individu.
Struktur (topologi, delay dan kardinalitas) dari sistem ini tidak dikenal di
muka dan itu bersifat dinamis. Komputer individu tidak harus tahu segala
sesuatu tentang seluruh sistem atau masukan lengkap (untuk masalah yang akan
dipecahkan).
Cloud computing adalah teknologi yang memberikan berbagai jenis
sumber daya sebagai layanan, terutama melalui internet, sedangkan komputasi
terdistribusi adalah konsep menggunakan sistem terdistribusi terdiri dari banyak
node diatur sendiri untuk memecahkan masalah yang sangat besar (yang biasanya
sulit untuk diselesaikan dengan satu komputer). Cloud computing pada dasarnya
adalah penjualan dan model distribusi untuk berbagai jenis sumber daya melalui
internet, sedangkan komputasi terdistribusi dapat diidentifikasi sebagai jenis
komputasi, yang menggunakan sekelompok mesin untuk bekerja sebagai satu
kesatuan untuk memecahkan masalah skala besar. Komputasi terdistribusi mencapai
hal ini dengan memecah masalah ke tugas sederhana, dan menugaskan tugas-tugas
ke node individu.
1.5 Clouds,
Grids dan Distributed System
Pembaca cerdas akan segera memahami bahwa Cloud
Computing akan saling tumpang tindih dengan beberapa teknologi, seperti Grid
Computing, Utilitas Computing, Layanan Komputasi, dan komputasi terdistribusi
pada umumnya. Cloud Computing tidak hanya tumpang tindih dengan Grid Computing,
namun memang berevolusi dari Grid Computing dan bergantung pada Grid Computing
sebagai backbone dan infrastruktur dukungan.
Evolusi telah menjadi hasil dari pergeseran focus dari infrastruktur yang
memberikan penyimpanan dan menghitung sumber daya (seperti yang terjadi di
Grids) ke salah satu yang berbasis ekonomi yang bertujuan untuk memberikan
sumber daya yang lebih abstrak dan layanan (Seperti yang terjadi di cloud).
Adapun Utilitas Computing bukan paradigma baru dari komputasi infrastruktur,
ini adalah model bisnis di mana sumber daya komputasi, seperti perhitungan dan
penyimpanan, yang dikemas sebagai layanan meteran mirip dengan utilitas publik
fisik, seperti pengaktifan listrik dan jaringan telepon umum. Komputasi
utilitas biasanya diimplementasikan menggunakan infrastruktur komputasi lainnya
(Misalnya Grids) dengan jasa akuntansi dan monitoring tambahan. Sebuah
infrastruktur Cloud dapat dimanfaatkan secara internal oleh perusahaan atau publik
sebagai komputasi utilitas.
Lihat Gambar dibawah ini
untuk gambaran hubungan antara cloud dan domain lain yang tumpang tindih. Web
2.0 mencakup hampir seluruh spektrum yang berorientasi layanan aplikasi, dimana
Cloud Computing terletak di bagian berskala besar. Supercomputing dan Cluster
Computing telah lebih difokuskan pada aplikasi non-layanan tradisional. Kini Komputasi
tumpang tindih dengan semua bidang di mana umumnya dianggap skala lebih rendah
daripada superkomputer dan Cloud.
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. 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.
NoSQL merupakan suatu
bahasan yang jauh dari arti kata yang dibaca. Tidak berarti tanpa sql query.
Melainkan bagaimana suatu sql query digunakan seminimal mungkin dalam suatu
program database. Dengan memanfaatkan teknologi NoSQL ini, diharapkan mampu
mengurangi beban server. Selain itu, hal ini juga memudahkan programmer dalam
membuat suatu program dan proses pengembangannya. Penjelasan lebih mengenai
NoSQL database akan dijelaskan pada sub bab dibawah ini.
1.7 No SQL Database
NoSQL adalah suatu evolusi dalam dunia database. NoSQL bukan
berarti No melainkan Non stop SQL. Jika SQL diibaratkan dengan relational
databasemaka NoSQL adalah non-relational database. NoSQL dikembangkan
pertama kali pada tahun 1998 oleh Carlo Strozzi. Lalu pada tahun 2009, Eric
Evans memperkenalkan kembali teknologi NoSQL ini.
Apakah yang dimaksud dengan Non Stop SQL itu sendiri?
Ini adalah suatu perkembangan dari database rational yang telah
ada dan digunakan mulai tahun 1970-an sampai sekarang. Mengapa perkembangan
database rational ini dibutuhkan dan pada akhirnya membuat suatu sistim
database baru bernama NoSQL? Untuk bisa memahami alasan mengapa sampai ada
NoSQL, kita bisa melihat perkembangan internet dan aplikasi-aplikasinya selama
10-15 tahun terakhir ini.
Pada 10-15 tahun yang lalu, jumlah user pengguna internet dan juga
jumlah transaksi data pada aplikasi-aplikasi yang ada tidaklah sebanyak saat
ini dan database relational yang telah ada sudah sangat mencukupi untuk
mengatur transaksi data karena secara umum mereka mendukung operasi transaksi,
yang mengijinkan kita mengubah 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, mengubah data seperti operasi insert, updatedan delete.
Namun, dengan semakin berkembanganya jaman terutama semakin
berkembangnya dunia internet, telah membuat perubahan besar pada
aplikasi-aplikasi yang digunakan di komputer serta berimbas pula
pada manajemen datanya. Setiap hari, semakin banyak user yang aktif di
internet dan menggunakan berbagai aplikasi yang terhubung dengan internet,
semakin banyak data yang harus diatur oleh database dan semakin sulit bagi
sebuah database relational untuk terus mengelola datanya karena akan
semakin banyak timbul masalah seperti redudansi data dll.
Bahkan 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. Dan itu pun
juga belum mampu mengurangi kesulitan-kesulitan yang muncul dalam
melakukan manajemen data dalam jumlah yang sangat besar jika menggunakan
database relational.
Google, Amazon, Facebook,
and LinkedIn adalah perusahaan-perusahaan besar pertama yang mengetahui
batasan-batasan yang ada pada relational database untuk dapat
mendukung kebutuhan aplikasi-aplikasi baru yang terus dikembangkan. Hingga
pada akhirnya, mereka membuat sebuah manajemen data yang baru. Muncullah
Open Source NoSQL, proyek database yang dibentuk untuk meningkatkan kinerja
perusahaan-perusahaan yang menjadi pelopor dan berbagai
perusahaan komersial yang menjalin kerja sama dengan proyek ini
setelahnya. Apa yang membuat NoSQL berbeda dengan SQL yang berbasis RDBMS atau
relational database tadi? NoSQL tidak menggunakan sintaks SQL untuk memyimpan
data. Penyimpanan data dalam NoSQL tidak memerlukan skema tabel yang tetap
seperti pada relational database.
NoSQL memiliki empat metode, yaitu:
- Table-oriented,
contoh: Google dengan Big Table dan juga Facebook dengan Cassandra,
- Graph-oriented,
- Document-oriented
database, contoh: MongoDB dan juga CouchDB,
- Key-value
store, contoh: Memcache dan Redis .
Metode NoSQL yang pertama adalah table-oriented. Metode ini
biasanya hanya dikembangkan oleh yang membuatnya sendiri seperti Google dan
Facebook dengan Big Table dan Cassandra-nya. Performa dan hasil dari metode ini
tidak perlu kita ragukan lagi karena kita telah tiap hari menggunakan kedua
website ini dan meskipun dengan berjuta-juta data yang ada di database mereka,
kita tetap bisa memaksimalkan website mereka.
Metode NoSQL yang kedua adalah Document-oriented database. Jenis
NoSQL ini merupakan database yang berbasiskan dokumen. Tidak ada tabel, field
dan record, yang ada hanyalah koleksi dan dokumen. Koleksi dapat disamakan
dengan tabel dan dokumen disamakan dengan field. Berbeda dengan database
relasional, pada document oriented database, dokumen dapat memiliki field yang
berbeda dengan dokumen lain walaupun berada dalam satu koleksi. Hal ini tidak
dapat dilakukan dengan database relasional dimana sebuah record tidak mungkin
memiliki field yang berbeda dengan record yang berada dalam satu tabel.
Document Oriented digunakan oleh Mongodb, Couchdb, Ravendb, dan lain-lain.
Metode NoSQL selanjutnya adalah graph-oriented, yaitu jenis database
NoSQL yang menggunakan struktur graph dengan node, edge dan properties untuk
menyimpan datanya. Metode ini digunakan oleh Infinite Graph, InfoGrid, Neo4J
dan lain-lain.
Yang terakhir adalah key-value store. Hampir sama seperti
document-oriented database, yang berbeda adalah media penyimpanannya. Dalam
key-value store, data tidak langsung disimpan dalam disk seperti database pada
umumnya. Data disimpan dalam memori komputer dan sesekali data dalam memori
ditulis ke disk.
Penyimpanan data dalam memori menyebabkan proses query akan lebih
cepat, karena tidak perlu lagi mengambil data dari disk. Key-Value Stores, cara
ini digunakan oleh REDIS, Tokyo Cabinet, Azure Table Storage dan lain-lain.
Mengapa banyak yang beralih ke NoSQL terutama korporasi atau perusahaan-perusahaan
besar yang menggunakan data yang banyak?
Pada saat ini terdapat 3 hal besar yang mempengaruhi
perkembangannya yaitu Jumlah User yang Banyak, Jumlah Data yang besar dan yang
terakhir teknologi terbaru yaitu cloud computing. Dengan 3 hal besar
ini menjadikan sistim database harus mampu:
- Data
harus bisa bergerak secara flexible,
- Harus mampu bergerak secara cepat dengan data dan user yang besar;
- Peningkatan performa untuk dapat memuaskan user yang menginginkan pengolahan data yang cepat.
Ketiga hal tersebutlah yang diharapkan mampu didatangkan oleh
NoSQL dengan metode-metodenya karena NoSQL memiliki model data yang lebih
fleksibel daripada Relational database. Jika pada relational database,
memasukkan data pada tabel-tabel yang berhubungan dan di tiap
tabel tersebut, terdapat baris dan kolom untuk menyimpan
infomasi-informasi yang ada. Referensi tiap tabel yang terelasi berasal dari
foreign key dimasing-masing tabel. Sebenarnya, cara penyimpanan ini
meminialisir penggunaan data karena penyimpanan tiap data hanya pada satu
tempat. Tetapi, penyimpanan yang kecil ini lama kelamaan akan menjadi besar
jika tingkat kompleksitas database tersebut bertambah. Karena jika akan
melakukan pencarian data maka data tersebut akan di-lookup atau dicari di
banyak tabel yang bisa mencapai ratusan tabel yang tersebar dan menggabungkannya
sebelum disajikan di website atau aplikasi.
Gambar 1. Menunjukan Kompleksitas Pada Database Relational Yang
Besar
Sedangkan NoSQL memiliki model yang sangat berbeda. Contohnya
sebuah model document-oriented. Database NoSQL mengambil data yang
ingin disimpan dan menjadikannya berupa satu buah dokumen berformat JSON.
Tiap dokumen JSON tersebut dapat dianggap bersifat object yang
dapat langsung digunakan pada aplikasi.
Sebuah dokumen JSON dapat mengambil semua data yang tersimpan
pada satu baris yang terdapat di 20 buah tabel yang terelasi dan mengumpulkannya
menjadi satu object. Pengumpulan data tersebut untuk menjadi satu
dokumen dapat menimbulkan duplikasi data. Tetapi karena storage data
tidak menjadi sebuah keharusan, maka memunculkan data menjadi lebih
fleksibel dan efisien dalam pendistribusiannya dan juga pada
proses read and write.
Developer biasanya menggunakan bahasa pemrograman object-oriented untuk
membuat suatu aplikasi. Dan itu akan menjadi sangat efisien jika data yang
ditangani juga berbentuk object. Sedangkan jika menggunakan model database
relational, hanya menyediakan sedikit struktur data yang juga sulit
diimplementasikan sebagai bentuk object. Bahkan data harus disimpan pada
tabel-tabel yang bisa mencapai ratusan tabel yang tersebar.
Walaupn sudah ada framework Object-relational untuk
database relational sehingga dapat menjadikannya sebagai object, tetapi
tetap saja karena fundamentalnya adalah relational maka masih terdapat
kesenjangan pada database dan aplikasi.
Salah satu perbedaan besar lainnya adalah pada model relational
memiliki skema yang kaku, sedangkan NoSQL adalah tanpa skema / schemaless.
Database relational mengharuskan sebuah define yang pasti dari sebuah skema
untuk melakukan penyimpanan di database. Perubahan skema data akan merubah
hampir keseluruhan database tersebut.
Ingin mengambil suatu informasi baru yang belum pernah kita
pikirkan sebelumnya untuk masuk database kita? Ingin membuat sebuah
perubahan mendasar kepada aplikasi yang mengharuskan perubahan data format dan
isinya?
Jika kita tetap menggunakan model relational maka
perubahan-perubahan tersebut akan sangat mengganggu dan merusak database. Dan
biasanya sangat dihindari oleh developer. Sebenarnya, cara yang digunakan
model database relational sudah sangat bertentangan dengan era Data Besar / Big
Data yang ada sekarang, dimana developer harus siap dengan data-data baru untuk
memperbaiki aplikasi mereka.
Sebagai sebuah perbandingan, database document-oriented adalah schemaless,
yang memperbolehkan anda untuk menambahkan data yang ada di field-field dari
JSON tersebut tanpa harus mendefinisikan perubahan tersebut sebelumnya.
Dan juga, format data yang dimasukkan pun dapat diubah setiap waktu tanpa
menggangu aplikasi. Cara ini membuat developer dapat melangkah lebih cepat
memasukan data baru ke aplikasi mereka.
Perbedaan besar antara database relational dan NoSQL telah
mengambil perhatian dari banyak developer aplikasi. Mereka telah mengukur
seberapa besar tingkat produktivitas mereka dapat ditingkatkan dengan NoSQL
database. Karena itu, NoSQL muncul sebagai sebuah evolusi baru dari sistim
database yang dibutuhkan oleh sebuah aplikasi untuk dapat berubah secara
drastis karena perkembangan jaman yang ada yang terus menuntut aplikasi
untuk dapat bertahan dari perkembangan pengguna/user yang terus meningkat (dan
juga ekspekstasi dari user agar aplikasi tersebut berjalan), berkembang
dengan jumlah dan banyaknya jenis data yang harus dikelola, dan
pertumbuhan cloud computing yang juga membutuhkan sebuah arsitektur
internet distributive three-tier.
Teknologi NoSQL berkembang
cukup cepat di perusahaan-perusahaan yang bergerak di bidang internet
karena menawarkan manajemen data yang memenuhi kriteria dari perkembangan
jaman ini.
1.8 Video Implementasi Cloud Computing
Video ini merupakan demo aplikasi sebuah implementasi
dan perancangan layanan jaringan cloud computing software sebagai sebuah
service menggunakan EyeOS. Video ini dibawakan oleh Anwar Ardiansyah Siregar
dari Politeknik Telkom.
Virtualisasi disini menggunaka Proxmox VE dan
interface EyeOS. Pada interface ini , seluruh aplikasi dapat berjalan lancar
seperti pemutaran music, video, pembuatan dokumen dan sebagainya. Seluruh proses
hanya dilakukan di dalam satu server. Client hanya cukup menggunakan browser
untuk mengakses segala macam aplikasi. Untuk penggunaan CPU hanya berkisar 2,3%
dan kapasitas hardware dapat ditambah sesuai dengan kebutuhan admin.
Sumber Referensi:
[1] Jurnal :
Cloud Computing and Grid
Computing 360-Degree Compared
Department
of Computer Science, University of Chicago, Chicago, IL, USA
Computation
Institute, University of Chicago, Chicago, IL, USA
Math
& Computer Science Division, Argonne National Laboratory, Argonne, IL, USA
Microsoft
Corporation, Redmond, WA, USA
Department
of Computer Science, Wayne State University, Detroit, MI, USA
[2] Jurnal :
KOMPUTASI
AWAN (CLOUD COMPUTING)
PERPUSTAKAAN
PERTANIAN
Akhmad
Syaikhu
Pustakawan Muda pada Pusat Perpustakaan dan
Penyebaran Teknologi Pertanian (PUSTAKA),
email asyaikhu@yahoo.com
[3] Jurnal :
Pengembangan Elemen Cloud Computing dalam
Sistem Teknologi Informasi
Herwin Anggeriana, Andri, Yohaes Valentino
Sisilo, Francis Matheos