Sabtu, 14 Maret 2015

Cloud Computing / Komputasi Awan


1.1      Pendahuluan
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 :
  1. 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.
  2. Sebuah perusahaan tak perlu lagi mengalokasikan anggaran untuk pembelian dan perawatan infra-struktur dan software.
  3. 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:
  1. 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.
  2. Broad network access. Kemampuan yang tersedia melalui jaringan dan diakses melalui mekanisme standar, yang mengenalkan penggunaan berbagai platform (misalnya, telepon selular, laptop, dan PDA).
  3. 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.
  4. 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 :
  1. 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.
  2. 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.
  3. 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:
  1. 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.
  2. 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.
  3. 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 :
  1. 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.
  2. 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
  3. 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 :
  1. Sumber daya dikelola dan dikendalikan secara lokal.
  2. 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.
  3. Sifat alami dinamis: Sumber daya dan pengguna dapat sering berubah.
  4. 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:
  1. Perkalian dari sumber daya: Resource pool dari CPU dan storage tersedia ketika idle
  2. Lebih cepat dan lebih besar: Komputasi simulasi dan penyelesaian masalah apat berjalan lebih cepat dan mencakup domain yang lebih luas.
  3. Software dan aplikasi: Pool dari aplikasi dan pustaka standard, Akses terhadap model dan perangkat berbeda, Metodologi penelitian yang lebih baik.
  4. 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:

  1. 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.


Gambar 1. Virtualisasi type 1

  1. 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.




1.6       Map Reduce & No SQL (Not Only SQL)




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:
  1. Table-oriented, contoh: Google dengan Big Table dan juga Facebook dengan Cassandra,
  2. Graph-oriented,
  3. Document-oriented database, contoh: MongoDB dan juga CouchDB,
  4. 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:
  1. Data harus bisa bergerak secara flexible,
  2. Harus mampu bergerak secara cepat dengan data dan user yang besar;
  3. 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
Ian Foster, Yong Zhao, Ioan Raicu, Shiyong Lu
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