Sabtu, 31 Maret 2018

Modern Computation


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 :

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

            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 :
  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)
  5. 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 :
  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.
  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.


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/


0 komentar:

Posting Komentar