Selasa, 16 Juni 2015

Cloud Computing


Definisi          
            Pada sistem komputasi tradisional, dokumen yang telah kita buat hanya dapat tersimpan di dalam komputer kita sendiri. Dokumen tersebut dapat diakses di dalam jaringan pribadi kita, namun tidak dapat diakses di luar jaringan kita. Cloud computing adalah sistem komputerisasi berbasis jaringan/internet dimana suatu sumber daya, software, informasi dan aplikasi disediakan untuk digunakan oleh komputer lain yang membutuhkan. Cloud computing menyediakan sumber daya dan kapabilitas dari teknologi informasi (seperti aplikasi, penyimpanan, komunikasi, dan sebagainya) melalui jasa yang ditawarkan oleh CSP (Cloud Service Provider). Contoh dari CSP yang ada saat ini, misalnya Google dengan layanan-layanan berbasis cloud-nya seperti Google Docs ataupun Google Spreadsheet. Ada pula cloud computing untuk keperluan non-publik, yakni Amazon EC2, dimana amazon menyediakan komputer induk dan kita bisa mengirim dan menggunakan sistem virtual dan menggunakannya dalam jangka waktu dan biaya sewa tertentu.
Terdapat banyak definisi mengenai komputasi awan yang dirumuskan oleh para ahli, salah satunya dikemukakan oleh National Institute of Standards and Technology (NIST), bahwa cloud computing adalah:
model for enabling convenient, on-demand network access to a shared pool of configurabe computing resources (such as networks, servers, storage, applications and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
Sederhananya, sebuah awan atau cloud dapat diumpamakan sebagai perangkat keras ataupun lunak yang dapat diakses melaui jaringan internet dan digunakan untuk membangun sebuah solusi bagi permintaan atas penyediaan informasi yang diminta oleh penggunanya. Dengan kata lain, cloud computing merupakan teknologi informasi layanan yang dapat digunakan atau diakses melalui internet untuk memberikan kebutuhan informasi bagi para penggunanya. Penggunaan istilah cloud dalam komputasi awan ini mewakili perumpamaan bagi internet yang dianggap sebagai “awan besar” (dalam skema network, internet dilambangkan sebagai awan) yang berisi sekumpulan besar komputer yang saling terhubung. Dengan demikian, cloud computing atau komputasi awan dapat pula diartikan sebagai komputerisasi berbasis sekumpulan komputer yang saling terhubung.


Gambar 1.1. Topologi Cloud Computing

Konsep Cloud Computing ini mulai diperkenalkan pada zaman Server Mainframe sekitar tahun 1950-an. Pada saat itu Server Mainframe diperkenalkan sebagai semua mesin yang memiliki perangkat keras yang bisa memenuhi sebuah ruangan (karena teknologi saat itu masih menggunakan transistor sebesar jempol tangan). Faktor biaya dan pemeliharaan Server Mainframe menyebabkan organisasi tersebut mengaplikasikan konsep “sharing resource“, dimana pengguna bisa menggunakan server Mainframe ini secara bersamaan dengan cara, berbagi daya komputasi dan data. Pengguna bisa mengakses server Mainframe ini dari terminal mereka masing-masing.

Virtualisasi dan Cloud Computing
Cloud computing bisa dianggap sebagai perluasan dari virtualisasi. Virtualisasi sendiri dapat diartikan sebagai pembuatan suatu bentuk atau versi virtual dari sesuatu yang bersifat fisik, misalnya sistem operasi, perangkat storage/penyimpanan data atau sumber daya jaringan. Dengan adanya virtualisasi ini, perusahaan bisa menempatkan aplikasi atau sistem yang digunakan di internet, tidak mengelolanya secara internal, misalnya penggunaan layanan Google Docs dan Google Spreadsheet yang memungkinkan perusahaan untuk meniadakan kebutuhan perusahaan akan suatu aplikasi office untuk mengolah kata dan juga aplikasi spreadsheet di internal perusahaan. Virtualisasi tidak akan lepas dari cloud computing. Salah satu karakteristik cloud computing yang merupakan turunan dari virtualisasi ini adalah elastisitas dan fleksibilitas. Pengguna bisa menggunakan cloud computing dalam jangka waktu yang pendek sekalipun dan bisa dengan mudah menambah atau mengurangi resource computing mereka. Sebagai contoh, untuk memenuhi kebutuhan trial atau development sebuah aplikasi yang hanya membutuhkan computing resource dalam 2-3 minggu lamanya. Hal ini akan sulit jika pengguna masih menggunakan server fisik karena justifikasinya akan kurang bisa diukur bagi managemen organisasi tersebut.
Meskipun saling berhubungan, beberapa pendapat lain mengatakan bahwa pengertian antara virtualisasi dan cloud computing harus dipisahkan karena pada dasarnya virtualisasi dan cloud computing  merupakan dua hal yang berbeda. Virtualisasi dibedakan dari cloud computing karena virtualisasi adalah perangkat lunak yang memanipulasi perangkat keras, (”software that manipulates hardware”), sedangkan pengertian cloud computing lebih ditujukan pada jasa atau service yang dihasilkan dari proses manipulasi tersebut. Kerancuan dalam pendefinisian dua hal ini muncul karena virtualisasi dan cloud computing bekerja bersama untuk menyediakan berbagai jenis jasa (service).

Database Terintegrasi dalam Cloud
Saat ini, dalam membangun suatu aplikasi, mutlak diperlukan adanya database. Hal ini juga berlaku untuk aplikasi yang di deploy di environment cloud computing. Terdapat beberapa database yang dapat digunakan dalam cloud computing, contohnya adalah database berbasis web, seperti Socrates, Cebase, dan Dabble DB. Berbeda dengan database yang di deploy di Data Center on-premise, database di cloud computing dapat dilihat sebagai “Database as a Service”. Maksudnya, di database di awan ini, layanan berupa Relational Database, Reporting dan Data Sync tersedia lengkap dengan kemampuan scalability yang elastis, provisioning dan deployment yang mudah, high availability dan fault tolerance yang otomatis, hingga tidak perlu dilakukannya administrasi fisik database. Microsoft SQL Azure adalah database yang tersedia di data center cloud computing milik Microsoft yang dapat kita pergunakan. SQL Azure adalah satu-satunya layanan “Database as a Service” yang ada di pasaran saat ini. SQL Azure merupakan bagian dari cloud computing milik Microsoft yang disebut Windows Azure Platform.
SQL Azure adalah layanan “Database as a Service” yang sebenarnya, yang pertama kali ada di pasaran, dan hingga saat ini merupakan satu-satunya layanan yang tersedia di pasaran. SQL Azure menawarkan tiga kemampuan berikut sehingga disebut sebagai layanan “Database as a Service” yang sebenarnya, yakni managed service, scale on demand, dan innovate faster. Di SQL Azure, database yang kita bangun akan di deploy di server di data center cloud computing Azure milik Microsoft. Provisioning dan deployment dapat dilakukan dengan sangat mudah melalui suatu portal di web, maupun dari tools yang familiar seperti halnya SQL Server Management Studio.
Database yang kita deploy akan mendapat dukungan high availability dan fault tolerance secara otomatis tanpa perlu kita sendiri yang mengerjakannya. Dengan kata lain, kita tidak perlu lagi me-manage server fisik ataupun virtual machine untuk database kita, karena semuanya di urus oleh SQL Azure. Sebagai layanan Cloud Computing, SQL Azure menawarkan Database seperti halnya utility, dimana kita hanya akan membayar sesuai dengan pemakaian kita, dan tentu saja mendukung calability berupa naik turun-nya load database secara elastis. SLA yang ditawarkan adalah “business ready” yang artinya dapat digunakan untuk scenario-skenario aplikasi bisnis pada umumnya. Selain itu, datacenter Azure terdapat di tiga benua, yang memungkinkan international presence untuk aplikasi yang kita bangun. Pada dasarnya, SQL Azure sebenarnya adalah relational database seperti Microsoft SQL Server yang sudah kita kenal. Jadi, Developer maupun Database Administrator dapat menggunakan skill yng sudah mereka miliki di SQL Server, untuk dapat dipakai di SQL Azure. Jadi, singkatnya, di SQL Azure, kita tinggal membuat database dan deploy. Tidak lagi diusingkan masalah scalability, high availability, fault tolerance, administrasi server secara fisik dan sebagainya.
Komputasi Terdistribusi dalam Cloud
            Komputasi terdistribusi yang di maksud di sini adalah suatu teknik yang dapat digunakan untuk menyelesaikan berbagai masalah dalam cloud computing. Komputasi terdistribusi adalah konsep menggunakan sistem terdistribusi terdiri dari banyak node diatur sendiri untuk memecahkan masalah yang sangat besar atau yang biasanya sulit untuk diselesaikan dengan satu komputer. Jadi, masalah yang besar akan di proses ke banyak komputer kemudian proses tersebut dipecahkan sehingga mendapatkan solusi-solusi yang lebih kecil apabila sudah didapatkan maka disatukan kembali dalam satu solusi yang besar dan terintegrasi. Komputasi terdistribusi adalah konsep menggunakan sistem terdistribusi terdiri dari banyak node diatur sendiri untuk memecahkan masalah yang sangat besar atau yang biasanya sulit untuk diselesaikan dengan satu komputer.

Map Reduce dan NoSQL
Map Reduce danNoSQL (Not Only SQL) adalah sebuah pemogramaan framework guna untuk membantu user mengembangankan sebuah data yang ukuran besar dapat terdistribusi satu sama lain. Map-Reduce adalah salah satu konsep teknis yang sangat penting di dalam teknologi cloud terutama karena dapat diterapkannya dalam lingkungan distributed computing. Dengan demikian akan menjamin skalabilitas aplikasi kita.
Salah satu contoh penerapan nyata map-reduce ini dalam suatu produk adalah yang dilakukan Google. Dengan inspirasi dari functional programming map dan reduce Google bisa menghasilkan filesystem distributed yang sangat scalable, Google Big Table. Dan juga terinspirasi dari Google, pada ranah open source terlihat percepatan pengembangan framework lainnya yang juga bersifat terdistribusi dan menggunakan konsep yang sama, project open source tersebut bernama Apache Hadoop.
NoSQL adalah istilah untuk menyatakan berbagai hal yang didalamnya termasuk database sederhana yang berisikan key dan value seperti Memcache, ataupun yang lebih canggih yaitu non-database relational seperti MongoDBCassandraCouchDB, 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. Selain itu 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.
Database NoSQL, juga disebut Not Only SQL, adalah sebuah pendekatan untuk pengelolaan data dan desain database yang berguna untuk set yang sangat besar data terdistribusi. NoSQL, yang mencakup berbagai teknologi dan arsitektur, berusaha untuk memecahkan masalah skala bilitas dan kinerja data yang besar yang database relasional tidak dirancang untuk menangani.NoSQL ini sangat berguna ketika perusahaan perlu untuk mengakses dan menganalisis sejumlah besar data terstruktur atau data yang disimpan dari jarak jauh pada beberapa virtual server di awan. Berlawanan dengan kesalahpahaman yang disebabkan oleh namanya, NoSQL tidak melarangbahasa query terstruktur (SQL) Meskipun benar bahwa beberapa sistem NoSQL sepenuhnya non-relasional, yang lain hanya menghindari fungsi relasional dipilih seperti skema tabel tetap dan bergabung dengan operasi. Sebagai contoh, daripada menggunakan tabel, database NoSQL mungkin mengatur data menjadi objek, kunci / nilai berpasangan atau tupel.

Keamanan Data dan Aspek Hukum Cloud Computing
Mayoritas diskusi mengenai persyaratan untuk spesifikasi proyek-proyek cloud computing mengacu pada aspek keamanan data dan aspek hukum. Aspek keamanan data secara khusus memerlukan tanggung jawab dan spesifikasi yang jelas serta didefinisikan terperinci untuk pengguna layanan cloud computing maupun penyedia layanan cloud computing. Secara umum, tingkat pengaturan dan tanggung jawab bervariasi tergantung pada model layanan cloud computing yang disediakan. Sebagai contoh, pada model layanan Infrastructure as a Services (IaaS), tanggung jawab pengguna layanan cloud computing biasanya mencakup konfigurasi platform keamanan dan perawatan, koleksi catatan log dan monitoring keamanan. Model layanan seperti Software as a Services (SaaS) dan Platform as a Services (PaaS) memasukkan aktifitas diatas pada sisi penyedia layanan.
Beberapa persyaratan keamanan data internal dan eksternal harus dipertimbangkan berdasarkan klasifikasi penempatan, pengiriman atau pemrosesan informasi. Beberapa standar seperti ISO 27001 biasanya menuntut perubahan teknis dan organisasi, dimana persyaratan khusus seperti Payment Card Industry Data Security Standards (PCI DSS) untuk data kartu kredit menjelaskan persyaratan-persyaratan yang sangat mendetil, sehingga membutuhkan usaha yang cukup besar dari sisi waktu dan biaya konsumsi.
Perbedaan hukum Nasional dan Internasional untuk proteksi data memberi perbedaan pada persyaratan-persyaratan penting, sehingga menimbulkan banyak kebingungan pada regulasi penerapan cloud computing, terutama pada organisasi Internasional. Beberapa pertanyaan seperti penempatan basis host untuk cloud computing, siapa yang diberikan akses untuk mengakses data tertentu dan bagaimana tindak lanjut terhadap insiden keamanan, merupakan beberapa agenda utama diskusi terkait regulasi untuk implementasi cloud computing. Beberapa solusi dapat ditemukan pada definisi yang sangat lengkap mengenai pengaturan dan tanggung jawab, hak akses pengguna, lokasi dari penyedia layanan cloud computing, kontrak dan Service Level Agreement (SLA).

Komputasi Grid (Grid Computing)
Terdapat beberapa definisi untuk menjelaskan apa itu komputasi grid sebenarnya.  Wikipedia mengartikan komputasi grid sebagai penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar (http://id.wikipedia.org). Sementara itu, definisi lain yang dikutip dari Foster dan Kesselman menyatakan bahwa 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 (The Grid 2: Blue Print for a New Computing Infrastructure yang ditulis oleh Ian Foster dan Carl Kesselman). 
Pada dasarnya, grid computing merupakan sistem komputer dengan sumber daya yang dikelola dan dikendalikan secara lokal. Dimana sumber daya ini berbeda dalam hal kebijakan dan mekanisme yaitu mencakup sumber daya komputasi yang dikelola oleh sistem batch berbeda, sistem storage berbeda pada node berbeda. Kebijakan berbeda dipercayakan kepada user yang sama pada sumber daya berbeda pada Grid. Grid computing memiliki sifat alami dinamis artinya sumber daya dan pengguna dapat sering berubah.
Grid computing dibangun dengan cara menggabungkan seluruh sistem komputasi grid yang ada di institusi-institusi penelitian menjadi sebuah kesatuan. Pengaturan hardwaredan software pada masing-masing sistem di tingkat institusi kemungkinan berbeda, namun dengan menjalankan teknologi Grid computing dengan menggabungkan simpul-simpul penghubung dari masing-masing sistem, maka akan terbentuk sebah kesatuan sumber daya komputasi grid. Dengan ini berarti pengguna pada suatu institusi dapat memanfaatkan sumber daya komputasi yang berada di luar institusinya. Salah satu syarat dari pembentukan grid computing adalah adanya suatu backbone jaringan berkapasitas besar untuk menghubungkan simpul-simpul penghubung (memiliki lebar pita mulai dari 2 Mbps sampai dengan 155 Mbps).
Secara singkat, grid computing berarti menyatukan seluruh sumberdaya TI ke dalam sekumpulan layanan yang bisa digunakan secara bersama-sama untuk memenuhi kebutuhan komputing perusahaan. Infrastruktur gridcomputing secara kontinyu menganalisa permintaan terhadap sumberdaya dan mengatur suplai untuk disesuaikan terhadap permintaan tersebut. Dimana data disimpan atau computer mana yang memproses permintaan tidak perlu dipikirkan. Sebagaimana arus listrik; untuk memanfaatkannya, tempat pembangkit atau bagaimana pengabelan jaringan listrik tidak perlu diketahui. Dalam menyelesaikan masalah system monolitik dan sumberdaya yang terfragmentasi, grid computing bertujuan menciptakan keseimbangan antara pengaturan suplai sumberdaya dan kontrol yang fleksibel. Sumberdaya TI yang dikelola dalam grid mencakup sumber daya infrastruktur dan sumber daya aplikasi.

  • Sumberdaya Infrastruktur
Mencakup hardware seperti penyimpan, prosesor, memori, dan jaringan; juga software yang didisain untuk mengelola hardware ini, seperti database, manajemen penyimpan, manajemen sistem, server aplikasi dan system operasi.

  • Sumberdaya Aplikasi
Perwujudan logika bisnis dan arus proses dalam software aplikasi. Sumberdaya yang dimaksud bisa berupa aplikasi paket atau aplikasi buatan, ditulis dalam bahasa pemrograman, dan merefleksikan tingkat kompleksitas. Sebagai contoh, software yang mengambil pesanan dari seorang pelanggan dan mengirimkan balasan, proses yang mencetak slip gaji, dan logika yang menghubungkan telepon dari pelanggan tertentu kepada pihak tertentu pula.

  • Sumberdaya Informasi
Saat ini, informasi cenderung terfragmentasi dalam perusahaan, sehingga sulit untuk memandang bisnis sebagai satu kesatuan. Sebaliknya, grid computing menganggap informasi adalah sumberdaya, mencakup keseluruhan data pada perusahaan dan metadata yang menjadikan data bisa bermakna. Data bisa berbentuk terstruktur, semi-terstruktur, atau tidak terstruktur, tersimpan di lokasi manapun, seperti dalam database, sistem file local.

Sebagai sebuah sistem, grid computing memiliki dua prinsip kerja utama yang membedakannya dari arsitektur komputasi yang lain, semisal mainframe, klien-server, atau multi-tier. Prinsip tersebut adalah virtualisasi dan provisioning.

  • Virtualisasi
Setiap sumberdaya (semisal komputer, disk, komponen aplikasi dan sumber informasi) dikumpulkan bersama-sama menurut jenisnya, lalu disediakan bagi konsumen (semisal orang atau program software). Virtualisasi berarti meniadakan koneksi secara fisik antara penyedia dan konsumen sumberdaya, dan menyiapkan sumberdaya untuk memenuhi kebutuhan tanpa konsumen mengetahui bagaimana permintaannya bisa terlayani.
  • Provisioning
Ketika konsumen meminta sumberdaya melalui layer virtualisasi, sumberdaya tertentu di belakang layer didefinisikan untuk memenuhi permintaan tersebut, dan kemudian dialokasikan ke konsumen. Provisioning sebagai bagian dari grid computing berarti bahwa system menentukan bagaimana cara memenuhi kebutuhan konsumen seiring dengan mengoptimasi jalannya sistem secara keseluruhan.

Grid computing ini memiliki beberapa jenis komponen yang menyusunnya. Komponen tersebut adalah GRAM, RFT/GridFP, MDS, dan GSI.

  • Gram (Grid Resources Allocation & Management)
Komponen ini dibuat untuk mengatur seluruh sumberdaya komputasi yang tersedia dalam sebuah sistem komputasi grid. Pengaturan ini termasuk eksekusi program pada seluruh komputer yang tergabung dalam sistem komputasi grid, mulai dari inisiasi, monitoring, sampai dengan penjadwalan dan koordinasi antar proses yang terjadi dalam sistem tersebut. Juga dapat berkoordinasi dengan sistem-sistem pengaturan sumber daya yang telah ada sebelumnya. Dengan mekanisme ini program-program yang telah dibuat sebelumnya tidak perlu dibangun ulang atau bila dimodifikasi, modifikasinya minimum.
  • RFT/GridFTP (Reliable File Transfer/Grid File Transfer Protocol)
Komponen ini dibuat agar pengguna dapat mengakses data yang berukuran besar dari semua simpul komputasi yang telah tergabung dalam sebuah sistem komputasi secara efisien. Hal ini tentu saja berpengaruh karena kinerja komputasi tidak hanya bergantung pada kecepatan komputer yang tergabung dalam mengeksekusi program, tapi juga seberapa cepat data yang dibutuhkan dapat diakses. Data yang diakses juga tidak selalu ada pada komputer yang mengeksekusi.
  • MDS (Monitoring and Discovery Service)
Komponen ini dibuat untuk memonitoring proses komputasi yang sedang dijalankan agar dapat mendeteksi masalah yang timbul dengan segera. Sedangkan fungsi disovery dibuat agar pengguna mampu mengetahui keberadaan sumber daya komputasi beserta karakteristiknya.
  • GSI (Grid Security Infrastructure)
Komponen ini dibuat untuk mengamankan sistem komputasi grid secara keseluruhan. Komponen ini membedakan teknologi GT4 dengan teknologi-teknologi sebelumnya. Dengan menerapkan mekanisme keamanan yang tergabung dengan komponen-komponen komputasi grid lainnya, sistem ini dapat diakses secara luas tanpa sedikitpun mengurangi tingkat keamanannya. Sistem keamanan ini dibangun dengan segala komponen yang telah diuji, mencakup proteksi data, autentikasi, delegasi dan autorisasi.



SUMBER:

Santoso, Berkah I. Cloud Computing dan Strategi TI Modern. 2012. E-Book diakses dari www.cloudindonesia.org oada 16 Juni 2015
URL:   https://www.excellent.co.id/product-services/vmware/keuntungan-teknologi-virtualisasi-cloud-computing/, diakses 16 Juni 2015
Cloud Computing (Komputasi Awan)
Cloud Computing
URL:   http://www.ilmukomputer.com, diakses 16 Juni 2015