Jumat, 18 November 2016

KONSEP CLOUD COMPUTING PERTEMUAN KE-6

NoSQL dan RDBMS


NoSQL (Not Only SQL)
NoSQL adalah sebuah konsep mengenai penyimpanan data non-relasional. Berbeda dengan model basis data relasional yang selama ini digunakan, NoSQL menggunakan beberapa metode yang berbeda-beda ( Wikipedia ). Metode ini bergantung dari jenis database yang digunakan. Karena NoSQL sendiri merupakan konsep database, dan pada implementasinya, banyak jenis-jenis dari NoSQL ini.

NoSQL sangat berguna pada data-data yang terus-menerus berkembang, dimana  data tersebut sangat kompleks sehingga sebuah database relational tidak lagi bisa mengakomodir. Salah satu bentuknya adalah ketika suatu data saling berhubungan satu sama lain, maka akan muncul proses duplikasi data. Dimana data saling memanggil ke beberapa permintaan, tambahan data baru, perubahan data, dan lain-lain dengan key yang sama. Karena faktor hubungan antar data yang sama terjadi terus-menerus, mendorong faktor redudansi data, data menjadi berlipat-lipat, dan pada akhirnya akan menyebabkan crash pada database berkonsep RDBMS.
Harus ada cara lain untuk menanggulangi masalah ini,  dan NoSQL lah solusinya. NoSQL menyederhanakan proses yang terjadi dalam sistem basis data relasional. Dimana hal-hal yang menyebabkan redudansi, dihilangkan sehingga trafik server akan seimbang. Penyederhanaan proses ini memungkinkan data direplikasi di banyak server secara mudah dan menjamin ketersediaan data.

Contoh nyata penjelasan diatas bisa teman-teman lihat pada situs jejaring sosial, FACEBOOK.COM. Pernahkah berfikir sebesar apa server penyimpanan facebook dengan anggota ribuan orang tersebut ?. Apabila teman-teman alim, mungkin tidak jadi masalah, tapi bagaimana jika ada yang narsis lalu sering upload foto setiap hari ?, bagaimana kalau setengah dari member facebook adalah orang-orang yang narsis ?, berapa besar ukuran yang dibutuhkan facebook pada servernya ?

RDBMS(Relational Database Management System)

Sebuah sistem manajemen basisdata relasional atau dalam bahasa Inggrisnya dikenal sebagai relational database management system (RDBMS) adalah sebuah program komputer (atau secara lebih tipikal adalah seperangkat program komputer) yang didisain untuk mengatur/memanajemen sebuah basisdata sebagai sekumpulan data yang disimpan secara terstruktur, dan melakukan operasi-operasi atas data atas permintaan penggunanya.

Contoh penggunaan DBMS ada banyak sekali dan dalam berbagai bidang kerja, misalnya akuntansi, manajemen sumber daya manusia, dan lain sebagainya. Meskipun pada awalnya DBMS hanya dimiliki oleh perusahaan-perusahaan berskala besar yang memiliki perangkat komputer yang sesuai dengan spesifikasi standar yang dibutuhkan (pada saat itu standar yang diminta dapat dikatakan sangat tinggi) untuk mendukung jumlah data yang besar, saat ini implementasinya sudah sangat banyak dan adaptatif dengan kebutuhan spesifikasi data yang rasional sehinggal dapat dimiliki dan diimplementasikan oleh segala kalangan sebagai bagian dari investasi perusahaan.
Tiga prinsip dalam RDBMS :

Data definition
Mendefinisikan jenis data yang akan dibuat (dapat berupa angka atau huruf), cara relasi data, validasi data dan lainnya.
Data Manipulation
Data yang telah dibuat dan didefinisikan tersebut akan dilakukan beberapa pengerjaan, seperti menyaring data, melakukan proses query, dsb.
Data Control
Bagian ini berkenaan dengan cara mengendalikan data, seperti siapa saja yang bisa melihat isi data, bagaimana data bisa digunakan oleh banyak user, dsb.
                                                    
    Implementasi NoSql (CRUD)
Alasan penggunaan model basis data NOSQL didasari oleh berbagai kebutuhan akan beberapa hal yaitu :
  1. Data Store (Penyimpanan Data) : Dimana data disimpan dalam ukuran dalam ukuran Exabyte. Sebuah Exabyte sama dengan satu milyar Gigabytes (GB) data. Menurut internet.com , jumlah tambahan data yang disimpan pada tahun 2010 adalah 1.000 exabyte hanya 4 tahun kemudian pada tahun 2014, jumlah data yang disimpan hampir mencapai 50.000 exabyte ,itu artinya terjadi peningkatan yang sangat luar biasa. Dengan kata lain, ada banyak data yang disimpan di dunian dan akan terus tumbuh.
  2. Interconnected Data (Data yang saling berhungan) : sehingga data diseluruh dunia menjadi terhubung. Pembuatan web didukung dengan adanya hyperlink, blog memiliki pingbacks dan setian system jaringan utama social memiliki tag yang mengaitkan sesuatu dengan yang lainya. System utama yang dibangun untuk saling berhubungan. 
  3. Complex Data structure (struktur data yang rumit) : dalam hal ini berarti NoSQL dapat dengan mudah menangani struktur hierarkis data bersarang . sedangkan SQL pada RDBMS, hal ini rumit dan sulit dilakukan, karena butuh beberapa table relasional dengan berbagai macam kunci. Selain itu, ada hubungan antara kinerja dengan kompleksitas data.
NoSQL memiliki banyak kelebihan , diantaranya adalah :
  1. Mudah digunakan pada convensional load-balanced cluster
  2. Data yang tetap (Persitent data) , tidak sekedar cache yang selalu diupdate  
  3. Dapat dilakukan pengukuran terhadap ketersediaan memory
  4. Tidak ada skema tetap dan memungkinkan migrasi skema tanpa downtime
  5. Memiliki system query sendiri
  6. Bersifat ACID (Atomicity, Consistency, Isolation, Durability)
Basis data NoSQL dapat dibagi menjadi 4 kategori dasar yaitu :
1). Key Values stores : adalah suatu hash table yang memiliki key unik dan pointer ke item tertentu data. Pemetaan ini biasanya diikuti oleh mekanisme cache untuk memaksimalkan kinerja. Contohnya pada Tokyo Cabinet, Redis, Voldemort, Oracle BDB. Jenis aplikasi yang dapat menggunakannya adalah Aplikasi Content Caching, sedangkan contoh penerapanya apikasinya adalah pada pembuatan forum software, dimana terdapat sebuah home profile page yang memiliki statistic apa yang telah dilakukan oleh user / penggunanya.
2). Column Family stores : adalah tempat yang digunakan untuk menyimpan dan memproses jumlah data yang sangat besar, yang tersebar di berbagai lokasi. Disini masih terdapat beberapa key, tapi untuk mengacu ke multiple column. Dalam hal ini BigTable (model dari Column Family NoSQL milik Google), baris diidentifikasikan oleh suatu baris key dengan data yang terurut dan disimpan oleh key tersebut.
3). Document Databases : diinpirasikan oleh Lotus Notes dan mirip dengan Key-Values Stores, model ini pada dasarnya merupakan dokumen yang menyimpan kumpulan Key-Values Collections. Dokumen yang semi terstruktur disimpan dalam format seperti JSON, contohnya adalah CouchDB dan MongoDB. Jenis aplikasi yang menggunakanya adalah Aplikasi Web.
4). Graph Databases : adalah suatu baris data yang dibangun oleh kumpulan node , relasi antara notes dan karakteristik node. Pada basis data ini tidak digunakan table yang terdiri dari baris dan kolom serta SQL yang kaku, tetapi memakai model graf yang dapat diterapkan di berbagai mesin. Contoh dari basis data graf (Graph Databases) adalah Neo4J, InfoGrid dan InfiniteGraph. Aplikasi yang menggunakannya biasanya aplikasi yang bersifat Social Networking seperti facebook dan twitter (Tim Perdue, 2013).
Gambar berikut adalah perbedaan cara kerja NoSQL dengan RDBMS dalam hal pendistribusian data :

Pada gambar diatas terlihat bahwa dengan menggunakan NoSQL , data dapat didistribusikan dan secara otomatis melalui database nodes , sekaligus juga dapat mencatat data tersebut. Jika kita ingin mencatat dan menyimpan data ke 20 entitas pada suatu database cluster dengan 3 nodes maka mungkin saja data tersebut dicatat di semua nodes. Database tidak perlu melakukan singkronisasi antar node terlebih dahulu, juga tidak memerlukan 2 fase commit, dan client 1 dapat melihat perubahan pada node 1 sebelum client 2 selesai menulis ke 20 entias. Sedangkan pada RDBMS hal tersebut tidak dapat dilakukan.
Selain kemudahan dalam proses pendistribusian data , pada basis data NoSQL juga terdapat beberapa kelemahan – kelemahan , diantaranya :
1.      Pada basis data NoSQL sering terjadi data yang tidak konsisten , karena pada mayoritas basis data No SQL digunakan pada aplikasi yang harus menyimpan dan memproses banyak data dengan cepat seperti website jejaring social, mesin pencari dan lain sebagainya. Sebagai konsekuensi dari pilihan tersebut, NoSQL mengorbankan kemudahan untuk konsistensi data. Ketidakkonsistenan sebuah basis data dapat menyebabkan kesalahan yang sangat fatal dalam beberapa kasus. Sebagai contoh dalam sebuah aplikasi penjualan online seperti Amazon saat ada dua atau lebih pembeli yang melakukan transaksi pembelian pada barang yang sama, pada system basis data yang tidak konsisten akan mengijinkan kedua transaksi tersebut. Akibatnya, apabila stok barang yang bersangkutan hanya satu, maka salah satu pembeli akan dirugikan karena validasi transaksi dan pembayaran tetap berhasil, namun barang tidak tersedia. Meskipun aplikasi yang menggunakan basis data NoSQL dapat merekayasa konsistensi data melalui pemrograman, dengan cara membuat middleware layer ( solusi xiang [25] ) yang menggunakan algoritma hash untuk mempartisi dan mereplikasi data. Algoritma yang digunakan dapat memastikan konsistensi pada basis data NoSQL yang terpartisi pada beberapa node, bahkan mampu mengidentifikasi jika ada salah satu node server yang hilag (rusak atau tidak terhubung). Sayangnya solusi semacam ini juga mengakibatkan menurunnya performa server dan meningkatnya waktu pemrosesan query.
2.      NoSQL merupakan sebuah implementasi sub-optimal , karena menggunakan paradikma brute force untuk pemrosesan data, bukan menggunakan indexing yang lebih baik.
3.      Tidak menyediakan fitur yang sudah banyak digunakan oleh pengembang yang menggunakan basis data relasional.
4.      Tidak kompatibel dengan perangkat – perangkat yang sudah biasa digunakan oleh pengguna.
5.      Masih sedikitnya tenaga professional yang benar – benar memahami konsep basis data NoSQL (non relasional) , karena konsep basis data ini relative masih baru jika dibandingkan dengan basis data relasional yang sudah berjalan berpuluh – puluh tahun.
Konsep utama dari penerapan NoSQL adalah bagaimana mengatasi jumlah data yang sangat besar dan ledakan data dalam aplikasi web sebagai paradikma baru dalam penerapan basis data. Permasalahan dalam RDBMS mengenai skalabilitas dan partisi data , dapat diatasi menggunakan NoSQL , NoSQL memiliki beberapa keunggulan seperti basis data non-relasional (meliputi hierarki, graph dan basis data object oriented) , mapreduce yang diambil dari fungsi pemrograman diterapkan untuk menghasilkan data set yang besar, schema free yang memungkinkan dimana tidak terdapat table, kolom, kunci primer dan sekunder, join dan relasi. Horizontal scallingyang memungkinkan basis data untuk dijalankan di beberapa server untuk meningkatkan penyimpanan dan peningkatan waktu akses untuk mengatasi permasalahan banyaknya data.
NoSQL merupakan alternatif dari RDBMS dalam hal pendistribusian data , bukan penanganan masalah secara keseluruhan terutama transaksi yang tinggi dan bersifat sensitif, NoSQL tidak menerapkan konsistensi dan integritas data , hal ini membuat programmer harus bekerja ekstra untuk mengatasinya dari sisi pemrograman.

    Mengenal MongoDB
MongoDB merupakan sebuah sistem basis data yang berbasis dokumen (Document Oriented Database). Konsep ini sangat membingungkan kalo kita terbiasa dengan RDMS.MongoDB tidak ada yang namanya tabel, kolom dan baris. Dalam MongoDB yang ada hanyalah koleksi (collection – bisa dianggap Table) dan dokumen (document – bisa dianggap row). Koleksi dalam MongoDB bisa kita anggap sebuah Folder (Directory) dan Dokumen bisa kita anggap berkas (File) dalam Folder (Koleksi) tersebut.
Pada MongoDb kita tidak mengenal istilah RELASI karena kita befikir dalam kerangka dokumen. semua yang kita butuhkan diletakkan didalam sebuah dokumen.

KELEBIHAN MongoDB
MongoDB merupakan sistem basis data yang menggunakan konsep key-value, artinya setiap dokumen dalam MongoDB pasti memiliki key. Hal ini berbeda dalam RDMBS yang kita bisa tidak menggunakan primary key ketika membuat sebuah tabel. Sehingga walaupun kita membuat sebuah dokumen tanpa menggunakan primary key, tapi secara otomatis MongoDB memberinya sebuah key. Penggunaan konsep key-value sangat berperan penting, karena hal ini membuat MongoDB menjadi sistem basis data yang sangat cepat jika dibandingkan dengan non key-value seperti RDBMS.
MongoDB mendukung replikasi, selain itu konfigurasi replikasi pada MongoDB sangatlah mudah jika dibandingkan sistem basis data RDBMS (IMHO). Hal ini membuat pemilik sistem yang memiliki traffic membaca tinggi (seperti portal berita, forum dan blog) akan sangat terbantu ketika sistemnya akan menggunakan replikasi.
Selain replikasi, MongoDB juga mendukung sharding. Jika Anda pernah melakukan sharding di RDBMS yang sangat berdarah-darah  , maka akan sangat kagum dengan sharding di MongoDB. Kapan kita menggunakan sharding? Saat Anda memiliki website yang sudah sangat besar jumlah penggunanya, datanya mencapat jutaan giga byte. Anda dapat menggunakan sharding, misal membasis basis data Anda menjadi per regional.
Salah satu kelebihan MongoDB lainnya adalah, MongoDB mendukung model pemrograman MapReduce, sebuah konsep yang sangat fenomenal yang pernah dikeluarkan oleh Google dan saat ini banyak diimplementasikan seperti pada Apache Hadoop.
MongoDB memiliki banyak sekali kelebihan yang diantaranya, yaitu:
1. Sangat bagus untuk data list produk, karena MongoDB bisa melakukan searching lebih cepat ketimbang MySql
2. Kita tidak perlu membuat struktur tabel, kita hanya perlu melakukan proses insert maka MongoDB akan otomatis membuatkan struktur tabelnya
3. Proses CRUD (Create, Update, Delete) terasa sangat ringan (waktu saya mencobanya menggunakan PHP)

Bahasa MongoDb
MongoDB tidak menggunakan bahasa yang biasa digunakan RDBMS (SQL atau PL/SQL). MongoDB menggunakan bahasa BSON, dimana BSON merupakan singkatan dari Binary JSON. Jika Anda terbiasa menggunakan JavaScript, pasti tidak akan terlalu sulit menggunakan MongoDB.


KONSEP CLOUD COMPUTING PERTEMUAN KE-5

LAYANAN CLOUD COMPUTING

Cloud Computing atau komputasi awan merupakan kombinasi pemanfaatan teknologi komputer dengan pengembangan berbasis internet. Sebutan cloud sendiri merupakan sebuah istilah yang diberikan pada teknologi jaringan internet.
Pada teknlogi komputasi berbasis awan semua data berada dan disimpan di server internet, begitu juga dengan aplikasi ataupun software yang pada umumnya dibutuhkan pengguna semuanya berada di komputer server. Sehingga kita tidak perlu melakukan instalasi pada server. Tetapi pengguna harus terhubung ke internet untuk bisa mengakses dan menjalankan aplikasi yang berada di server tersebut.
Dengan kata lain pengguna bisa saja hanya menyediakan sebuah komputer dan perangkat jaringan internet untuk bisa terhubung ke server internet dan menyimpan data di komputer server tanpa harus menyediakan hard-disk yang berkapasitas besar pada komputernya sendiri untuk menyimpan datanya, begitu juga dengan program aplikasi katakanlah seperti Microsoft Office, Excel dan lain sebagainya pengguna bisa menjalankan aplikasi tersebut di server internet sehingga tidak perlu repot-repot untuk menginstal aplikasi tersebut di komputernya sendiri. Dengan Kata lain kita tidak perlu investasi server berbentuk fisik, kita tidak perlu maintain hardware server.
Berdasarkan jenis layanan-nya, Cloud Computing dibagi menjadi berikut ini:
Dibawah ini kita bahas, masing-masing jenis layanan Cloud Computing:

Software as a Service (SaaS)
Adalah salah satu layanan dari Cloud Computing dimana kita tinggal memakai software (perangkat lunak) yang telah disediakan. User hanya tahu bahwa perangkat lunak bisa berjalan dan bisa digunakan dengan baik. Contoh: layanan email publik (Gmail, YahooMail, Hotmail, dsb), social network (Facebook, Twitter, dsb) instant messaging (Yahoo Messenger, Skype, GTalk, dsb) dan masih banyak lagi yang lain.  Dalam perkembangan-nya, banyak perangkat lunak yang dulu hanya kita bisa nikmati dengan menginstall aplikasi tersebut di komputer kita (on-premise) mulai sekarang bisa kita nikmati lewat Cloud Computing. Keuntungan-nya, kita tidak perlu membeli lisensi dan tinggal terkoneksi ke internet untuk memakai-nya. Contoh: Microsoft Office yang sekarang kita bisa nikmati lewat Office 365, Adobe Suite yang bisa kita nikmati lewat Adobe Creative Cloud, dsb.

Platform as a Service (PaaS)
Adalah layanan dari Cloud Computing kalau kita analogikan dimana kita menyewa “rumah” berikut lingkungan-nya (sistem operasi, network, database engine, framework aplikasi, dll), untuk menjalankan aplikasi yang kita buat. Kita tidak perlu pusing untuk menyiapkan “rumah” dan memelihara “rumah” tersebut. Yang penting aplikasi yang kita buat bisa berjalan dengan baik di “rumah” tersebut. Untuk pemeliharaan “rumah” ini menjadi tanggung jawab dari penyedia layanan. Sebagai analogi, misal-nya kita sewa kamar hotel, kita tinggal tidur di kamar yang sudah kita sewa, tanpa peduli bagaimana “perawatan” dari kamar dan lingkungan-nya. Yang penting, kita bisa nyaman tinggal di kamar itu, jika suatu saat kita dibuat tidak nyaman, tinggal cabut dan pindah ke hotel lain yang lebih bagus layanan-nya. Contoh penyedia layanan PaaS ini adalah: Amazon Web Service, Windows Azure,  bahkan tradisional hosting-pun merupakan contoh dari PaaS. Keuntungan dari PaaS adalah kita sebagai pengembang bisa fokus pada aplikasi yang kita buat, tidak perlu memikirkan operasional dari “rumah” untuk aplikasi yang kita buat.

Infrastructure as a Service (IaaS)
Adalah layanan dari Cloud Computing dimana kita bisa “menyewa” infrastruktur IT (komputasi, storage, memory, network dsb). Kita bisa definisikan berapa besar-nya unit komputasi (CPU), penyimpanan data (storage) , memory (RAM), bandwith, dan konfigurasi lain-nya yang akan kita sewa. Mudah-nya, IaaS ini adalah menyewa komputer virtual yang masih kosong, dimana setelah komputer ini disewa kita bisa menggunakan-nya terserah dari kebutuhan kita. Kita bisa install sistem operasi dan aplikasi apapun diatas-nya. Contoh penyedia layanan IaaS ini adalah: Amazon EC2, Windows Azure (soon), TelkomCloud, BizNetCloud, dsb. Keuntungan dari IaaS ini adalah kita tidak perlu membeli komputer fisik, dan konfigurasi komputer virtual tersebut bisa kita rubah (scale up/scale down) dengan mudah. Sebagai contoh, saat komputer virtual tersebut sudah kelebihan beban, kita bisa tambahkan CPU, RAM, Storage dsb dengan segera.

Web Services
Seperti yang dijelaskan sebelumnya bahwa cloud computing sebagai aplikasi-aplikasi yang dapat diakses melalui internet sebagai servis-servis, maka konsumen bisa secara spesifik meminta servis-servis cloud melalui web browser atau web services.
Web service bukan merupakan aplikasi yang dapat berinteraksi secara langsung dengan user. Melainkan web service memberikan kemampuan untuk berkomunikasi dengan aplikasi lain yang prosesnya dibutuhkan oleh user secara tidak langsung. Proses yang digunakan oleh web service untuk berkomunikasi dengan aplikasi lainnya menggunakan teknologi internet. Dalam menghubungkannya web service menggunakan sebuah message yang dapat dipahami oleh bahasa pemrograman yaitu Extensible Markup Language (XML).
Web services dapat dilihat sebagai sebuah cara mendesain interaksi yang fleksibel lintas aplikasi-aplikasi dan lintas batas-batas yang tegas. Terminologi web services menunjukkan sekelompok teknologi yang memperkenankan proses-proses bisnis atau informasi untuk diakses melalui internet. Web services didesain untuk mendukung interaksi antar aplikasi. Teknologi ini memperkenankan aplikasi-aplikasi berkomunikasi tanpa bantuan manusia.

SOA (Service Oriented Architecture)
(service oriented architecture, arsitektur berorientasi layanan) adalah suatu gaya arsitektur sistem yang membuat dan menggunakan proses bisnis dalam bentuk paket layanan sepanjang siklus hidupnya. SOA juga mendefinisikan dan menentukan arsitektur teknologi informasi (TI) yang dapat menunjang berbagai aplikasi untuk saling bertukar data dan berpartisipasi dalam proses bisnis. Fungsi-fungsi ini tidak terikat dengan sistem operasi dan bahasa pemrograman yang mendasari aplikasi-aplikasi tersebut.
SOA membagi fungsi-fungsi menjadi unit-unit yang berbeda (layanan), yang dapat didistribusikan melalui suatu jaringan dan dikombinasikan serta digunakan ulang untuk membentuk aplikasi bisnis. Layanan-layanan ini saling berkomunikasi dengan mempertukarkan data antar mereka atau dengan mengkoordinasikan aktivitas antara dua atau lebih layanan. Konsep SOA sering dianggap didasari atau berkembang dari konsep-konsep yang lebih lama dari komputasi terdistribusi dan pemrograman modular.

Interoperabilitas
Interoperabilitas adalah kapabilitas dari suatu produk atau sistem -- yang antar mukanya diungkapkan sepenuhnya -- untuk berinteraksi dan berfungsi dengan produk atau sistem lain, kini atau di masa mendatang, tanpa batasan akses atau implementasi.
Interoperabilitas merupakan kemampuan berbagai ragam sistem untuk bekerja sama dan kemampuan sebuah sistem untuk bekerja atau digunakan oleh sistem lain (Merriam Webster).
Interoperabilitas adalah sebuah kooperasi antar obyek yang berbeda untuk memungkinkan terjadinya pertukaran data/informasi diantara mereka. Model interoperabilitas bisa dalam bentuk kaku (tightly) atau bebas (loosely).
Jadi Interoperabilitas adalah dimana suatu kemampuan berbagai ragam sistem atau aplikasi untuk bekerja sama dan bisa berinteraksi dengan aplikasi lainnya yang berbeda untuk memungkinkan terjadinya pertukaran data/informasi melalui suatu protokol yang disetujui bersama, lewat bermacam-macam jalur komunikasi, biasanya lewat network TCP/IP dan protokol HTTP dengan memanfaatkan file XML.
Karakteristik Interoperabilitas berdasarkan level;
  Level hardware: bagaimana perbedaan karakteristik (fisis, elektronis) komponen-komponen hardware dijembatani dalam rangka mewujudkan suatu fungsi/tujuan tertentu
                 Contoh: interaksi antara CPU – RAM – disk à interoperabilitas diwujudkan dengan cache dan buffer

Level network: bagaimana perbedaan hardware+OS bisa dijembatani, sehingga dua komputer yang berbeda bisa saling berkomunikasi
                   Pendekatan: protokol, standarisasi

Level software: bagaimana menjembatani perbedaan format data dan bahasa pemrograman
                    Interoperabilitas data
                    Interoperabilitas komunikasi aktif

Komposabilitas
Komposabilitas bila suatu metode desain memungkinkan komponen-komponen desain (reusable) yang ada untuk dipasang ke dalam sebuah sistem baru, maka metode desain akan menghasilkan suatu solusi modular yang tidak berulang.

REST
REST (REpresentational State Transfer) adalah suatu arsitektur metode komunikasi yang sering diterapkan dalam pengembangan layanan berbasis web.
Arsitektur REST, yang umumnya dijalankan via HTTP (Hypertext Transfer Protocol), melibatkan proses pembacaan laman web tertentu yang memuat sebuah file XML atau JSON. File inilah yang menguraikan dan memuat konten yang hendak disajikan. Setelah melalui sebuah proses definisi tertentu, konsumen akan bisa mengakses antarmuka aplikasi yang dimaksudkan.
Kekhasan REST terletak pada interaksi antara klien dan server yang difasilitasi oleh sejumlah tipe operasional (verba) dan Universal Resource Identifiers (URIs) yang unik bagi tiap-tiap sumberdaya. Masing-masing verba – GET, POST, PUT dan DELETE – memiliki makna operasional khusus untuk menghindari ambiguitas.
REST kerap dipergunakan dalam mobile application, situs web jejaring sosial, mashup tools, dan automated business processes.
Arsitektur REST yang decoupled (terpisah) serta beban komunikasi yang ringan antara produsen dan konsumen membuatnya populer di dunia cloud-based API, seperti yang disajikan oleh Amazon, Microsoft, dan Google.
Layanan berbasis web yang menggunakan arsitektur REST semacam itu dinamakan RESTful APIs (Application Programming Interfaces) atau REST APIs.

Cloud Stack
CloudStack merupakan platform software yang mengumpulkan sumberdaya-sumberdaya komputasi menjadi sebuah Cloud IaaS (infrastructure as a service). Bayangkanlah Amazon EC2 yang dapat diinstall di data center pribadi kita.


Service Offering - mirip Amazon EC2

Dengan CloudStack, kita bisa memberikan layanan cloud ke user kita.. Mereka dapat melaunch Server sesuai keinginan asalkan masih di batas kuota dan kapasitas sistem.



Pilihan Template VM

Sebenarnya komponen utama CloudStack adalah aplikasi web berbasis Java yang melakukan provisioning ke software hypervisor berupa XenServer, VMWare, ataupun KVM. Sebuah Cluster dalam terminologi CloudStack adalah sekumpulan host yang dikendalikan oleh hypervisor yang seragam. 

Apa yang didapat dari CloudStack antara lain :
  • ·         Manajemen sentral berbasis web berfitur Ajax untuk VM-VM berbasis Xen, VMWare vSphere, ataupun KVM
  • ·         Repository tempat menyimpan template image VM yang dapat diintegrasikan dengan OpenStack Swift
  • ·         Konfigurasi offering VM : user dapat melaunch VM dengan memilih paket yang di dalamnya sudah terkonfigurasi ukuran memory, banyaknya CPU.
  • ·         Integrasi dengan Citrix Netscaler untuk Elastic load balancing dan Elastic IP
  • ·         Load balancing biasa dengan Virtual Router atau F5 BigIP
  • ·         Konfigurasi Firewall dan NAT untuk Virtual Router ataupun Jupiter SRX
  • ·         High Availability untuk VM yang dijalankan di CloudStack (Jika ada masalah dengan salah satu Host, CloudStack akan memboot VM tersebut di Host yang masih sehat dengan asumsi VM menggunakan virtual hard disk yang tersimpan di shared storage)
  • ·         Provisioning VLAN


Konsep Deployment Umum Cloudstack

CloudStack dideploy dengan menyediakan dua jenis storage, primary dan secondary. Secondary Storage digunakan untuk menyimpan template VM atau ISO sebagai image dasar pembuatan virtual machine. Primary storage digunakan untuk menyimpan data hard disk milik VM-VM. CloudStack sendiri menyimpan informasi di database MySQL. Dianjurkan untuk menyediakan 3 jalur jaringan pada semua host : jaringan publik internet, jaringan privat (LAN), dan jaringan khusus manajemen dan storage.

Salah satu konfigurasi deployment CloudStack

Aspek penting dalam high availability ialah moda failure yang disupport. Di dalam sistem di atas ada beberapa moda failure :
  • ·         Host Failure : kegagalan atau kerusakan pada host yang menjadi bagian dari Cluster
  • ·         Management Server Failure : kegagalan atau kerusakan pada server CloudStack
  • ·         Primary Storage Failure : kegagalan pada penyimpanan data utama (virtual hard disk)
  • ·         Secondary Storage Failure : kegagalan pada penyimpanan template atau ISO
  • ·         Management Server MySQL database failure : kegagalan pada database CloudStack


 Mekanisme host failure Failover pada CloudStack

Moda Failure yang ditangani oleh CloudStack ialah Host Failure. Secondary Storage failure ditangani oleh infrastruktur OpenStack Swift, yang menyimpan image secara rendundan pada cluster storagenya sendiri. Management Server Failure dapat ditangani dengan menjalankan CloudStack pada dua host yang diberi load-balancing. Mgmt Server MySQL database failure ditangani dengan memasang DRBD pada storage mysql atau mengkonfigurasi MySQL secara master-slave.

Digabungkan dengan High Availability Storage System (CloudStack tidak menyediakan layanan storage primary, hanya interface ke sistem storage berbasis iSCSI atau NFS) maka CloudStack dapat menjadi platform yang cukup robust untuk deployment sistem.

Minggu, 09 Oktober 2016

KONSEP CLOUD COMPUTING PERTEMUAN KE-4

TEKNOLOGI CLOUD COMPUTING

Cloud computing adalah merupakan model komputasi dimana sumber daya seperti daya komputasi, media penyimpanan (storage), jaringan (network) dan software dijalankan sebagai layanan melalui media jaringan, bahkan dapat diakses di tempat manapun selama terkoneksi dengan internet. Dalam hal ini untuk dapat membangun jaringan cloud computing sederhana dapat di lakukan pada jaringan local/intranet. Banyak sekali software yang berbasis open source terutama GNU/Linux mendistribusikannya sebagai basis server cloud computing dan virtualisasi, salah satunya proxmox. Menjadi salah satu solusi untuk membangun sistem komputasi yang handal dan dapat di manfaatkan dimanapun.
Perkembangan IT saat ini menuju dengan konsep-kosenp social networkingnya, openess, share, colaborations, mobile, easy maintenance, one click, terdistribusi / tersebar, scalability, Concurency dan Transparan, Saat ini terdapat trend teknologi yang masih terus digali dalam penelitian-penelitian para pakar IT di dunia, yaitu Cloud Computing. Akses data dari mana saja dan menggunakan perangkat fixed atau mobile device menggunakan internet cloud sebagai tempat menyimpan data, applications dan lainnya yang dapat dengan mudah mengambil data, download applikasi dan berpindah ke cloud lainnya, hal ini memungkinkan kita dapat memberikan layanan aplikasi secara mobile di masa depan.

Sejarah Cloud Computing
Tahun 50-an
Cloud Computing memiliki konsep yang mendasar. Ketika komputer mainframe yang tersedia dalam skala yang besar dalam dunia pendidikan dan perusahaan dapat diakses melalui komputer terminal disebut dengan Terminal Statis. Terminal tersebut hanya dapat digunakan untuk melakukan komunikasi tetapi tidak memiliki kapasitas pemrosesan internal. Agar penggunaan mainframe yang relatif mahal menjadi efisien maka mengembangkan akses fisik komputer dari pembagian kinerja CPU. Hal ini dapat menghilangkan periode tidak aktif pada mainframae, memungkinkan untuk kembali pada investasi. Hinga pertengahan tahun 70-an dikenal dengan RJE remote proses Entry Home Job yang berkaitan besar dengan IBM dan DEC Mainframe.
Tahun 1960
John McCarthy, Pakar Komputasi dan kecerdasan buatan dari MIT. “Suatu hari nanti, komputasi akan menjadi Infrastruktur publik seperti halnya listrik dan telepon.”Ini adalah sebuah ide yang mengawali suatu bentuk komputasi yang kita kenal dengan istilah Komputasi awan (Cloud Computing).
Tahun 1995
Larry Ellison, pendiri perusahaan Oracle. “Network Computing” Ide ini sebenarnya cukup unik dan sedikit menyindir perusahaan Microsoft pada saat itu. Intinya, kita tidak harus "menanam" berbagai perangkat lunak kedalam PC pengguna, mulai dari sistem operasi hingga perangkat lunak lainya. Cukup dengan koneksi dengan server dimana akan disediakan sebuah environment yang mencakup berbagai kebutuhan PC pengguna. Pada era ini juga wacana “Network Computing” cukup populer. Banyak perusahaan yang menggalang sistem ini contohnya Sun Mycrosystem dan Novell Netware. Disayangkan kualitas jaringan komputer saat itu masih belum memadai, penggunapun cenderung memilih PC karena cenderung lebih cepat.
Akhir Era -90
Lahir konsep ASP (Application Service Provider) yang ditandai dengan kemunculan perusahaan pusat pengolahan data. Ini merupakan sebuah perkembangan pada kualitas jaringan komputer. Akses untuk pengguna menjadi lebih cepat.
Tahun 2000
Marc Benioff, mantan wakil presiden perusahaan Oracle. “salesforce.com” ini merupakan sebuah perangkat lunak CRM dengan basis SaaS (Software as a Service). Tak disangka gebrakan ini mendapat tanggapan hebat. Sebagai suksesor dari visi Larry Ellison, boss-nya. Dia memiliki sebuah misi yaitu “The End of Software”.
2005 - Sekarang
Cloud Computing sudah semakin meningkat popularitasnya, dari mulai penerapan sistem, pengunaan nama, dll. Amazon.com dengan EC2 (Elastic Computer Cloud); Google dengan Google App. Engine; IBM dengan Blue Cord Initiative; dsb. Perhelatan cloud computing meroket sebagaimana berjalanya waktu. Sekarang, sudah banyak sekali pemakaian sistem komputasi itu, ditambah lagi dengan sudah meningkatnya kualitas jaringan komputer dan beragamnya gadget yang ada. Contoh dari pengaplikasianya adalah Evernote, Dropbox, Google Drive, Sky Drive, Youtube, Scribd, dll.

Teknologi Web
Komputasi awan adalah suatu konsep umum yang mencakup SaaS, Web 2.0, dan tren teknologi terbaru lain yang dikenal luas, dengan tema umum berupa ketergantungan terhadap Internet untuk memberikan kebutuhan komputasi pengguna. Sebagai contoh, Google Apps menyediakan aplikasi bisnis umum secara daring yang diakses melalui suatu penjelajah web dengan perangkat lunak dan data yang tersimpan di server. Komputasi awan saat ini merupakan trend teknologi terbaru, dan contoh bentuk pengembangan dari teknologi Cloud Computing ini adalah iCloud.

Autonomic Computing
Komputasi autonomic adalah simbol dari suatu bentuk hierarki yang luas dan agak rumit alami adalah bentuk dari self- governing sistem, yang terdiri dari berbagai interaksi.  Konsep dimana komputer beserta sistem infrastruktur komputasinya memiliki kemampuan self-management atau dalam arti umumnya ia memiliki kemampuan untuk memperbaiki dirinya sendiri. Contohnya hardisk pada server jika sudah penuh maka secara otomotis server akan mengantisivasikan hardisk cadangan sehingga tidak mengalami kesuitan dalam menyimpan data.
Ada 4 aspek self-manajement pada komputasi autonomic:
Self-configuration
Instalasi, konfigurasi, dan mengintektrasikan aplikasi yang besar membutuhkan waktu dan rawan dengan kesalahan. Penambahan perangkat keras seperti server, router serta vendor harware yang berbeda membutuhkan konfigurasi tersendiri yang cukup rumit.
Sistem autonomic akan mengkonfigurasi dirinya sendiri secara otomatis sesuai dengan tingkat kebijakan mewakili tingkat dari tujuan pengunaaan.
Self-optimation
Sistem autonomic akan terus mencari cara untuk meningkatkan kinerja sistem, mengidentifikasi dan melihat kemungkinan untuk membuat sistema lebih efisien dalam kinerjanya. Sama seperti otot manusia akan menjadi lebih kuat melalui olahraga, dan sistem akan memodifikasi sirkuit selama pembelajaran, sistem autonomic akan memonitor, bereksperimen dengan, dan parameter mereka sendiri
dan akan belajar untuk membuat pilihan yang tepat, serta menjaga fungsi atau sumber. autonomic secara proaktif akan berusaha untuk meng-upgrade fungsi mereka dengan mencari, memverifikasi, dan menerapkan update terbaru.
Self-healing
Sistem komputasi autonomic akan mendeteksi, mendiagnosa, dan memperbaiki masalah-masalah lokal yang dihasilkan dari bug atau kegagalan dalam perangkat lunak dan perangkat keras, mungkin melalui tester regresi. Menggunakan pengetahuan tentang konfigurasi sistem, diagnosis masalah dan akan menganalisa informasi dari file log, mungkin dilengkapi dengan data dari monitor tambahan yang telah diminta.
Sistem kemudian akan mencocokan dengan diagnosis terhadap patch perangkat lunak yang dikenal (atau mengingatkan programmer manusia) , menginstal patch yang sesuai, dan tes ulang.
Self-protection
Sistem otonom akan melindungi diri dalam dua pengertian. Mereka akan mempertahankan sistem secara keseluruhan, masalahtimbul berkorelasi dari serangan berbahaya atau kegagalan Cascading yang tetap dikoreksi oleh self-healing. Autnomic juga akan mengantisipasi masalah berdasarkan laporan awal dari sensor dan mengambil langkah-langkah untuk menghindari atau mengurangi masalah tersebut.

Virtualisasi
Jika dilihat dari kegunaannya, virtualisasi dapat membantu kita dapat membagi suatu server menjadi sistem operasi yang bisa dijalankan secara bersamaan, dengan adanya virtualization kita juga dapat menginstal aplikasi - aplikasi di berbagai sistem operasi, jika sistem operasi tersebut mendukung spesifikasi dari aplikasi tersebut.

Map Reduce
Map Reduce merupakan sebuah konsep dimana data yang kontinue dipecah menjadi bagian data / komponen data kecil dan didistribusikan melalui mesin-mesin yang terhubung secaracluster. Bisa dibilang map reduce merupakan sebuah framework yang digunakan untuk mempercepat proses pengolahan data pada konsep cloud computing.
Map Reduce dan adalah sebuah pemogramaan framework guna untuk membantu user mengembangankan sebuah data yang ukuran besar dapat terdistribusi satu sama lain. Map-Reduce merupakan  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 terorganisir, contoh 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.



KONSEP CLOUD COMPUTING PERTEMUAN KE-3

ASPEK SOSIAL, EKONOMI, DAN POLITIS DARI CLOUD COMPUTING

Tekonologi Informasi Dan Implikasi Dalam Kehidupan Masyarakat
Teknologi merupakan bagian dari kehidupan manusia, makin maju suatu peradaban maka makin maju banyak dan canggih pula teknologi yang digunakan. proses pertukaran informasi yang terjadi dengan menggunakan media atau sarana- sarana yang difasilitasi oleh teknologi yang telah berkembang bertujuan untuk membentuk persamaan persepsi. Penggunaan dan pemanfaatan teknologi saat ini seolah telah mendarah daging dan menjadi salah satu kebutuhan dasar bagi masyarakat. Teknologi yang terus berkembang menyuguhkan berbagai kemudahan kepada masyarakat dan mendukung mereka untuk melakukan aktifitas sehari-hari terutama dalam berinteraksi dan berkomunikasi dengan orang lain pada saat kapan pun dan di mana pun mereka berada. Semakin hari semakin banyak orang yang merasa ketergantungan dengan fasilitas yang mereka dapatkan dari pengunaan sebuah teknologi. Hal ini wajar adanya, masyarakat terbiasa melakukan segala sesuatunya secara praktis dengan adanya bantuan dari kecanggihan teknologi modern yang juga telah berhasil membentuk pola hidup masyarakat yang modern pula. Setiap penggunaan teknologi tentu memiliki implikasi terhadap berbagai aspek dalam kehidupan manusia, terutama berpotensi untuk mengubah gaya hidup dan cara berkomunikasi dengan orang lain. Hal ini dapat terjadi karena teknologi memiliki daya pengubah yang besar terhadap perilaku manusia sehingga disadari atau tidak masyarakat pengguna teknologi telah menjadi bagian dari masyarakat modern yang memiliki dependensi yang tinggi terhadap teknologi.
Di bidang komunikasi sosial, khususnya komunikasi interpersonal dan interaktif teknologi telah mengubah cara berinteraksi dan berkomunikasi masyarakat yang diterpa olehnya. Jika dulu komunikasi hanya dapat dilakukan dengan langsung yaitu dengan tatap muka di tempat dan waktu yang sama, kini mereka tak perlu repot- repot melakukan itu semua. Cukup dengan menggunakan telpon, email, atau fasilitas internet lainnya maka jarak dan waktu bukanlah hal yang jadi penghalang lagi bagi masyarakat dalam berinteraksi dan berkomunikasi.
Saat ini pemanfaat teknologi juga digunakan oleh masyarakat sebagai sarana untuk pemerataan penyebaran informasi secara massal atau yang lebih dikenal dengan komunikasi massa. Perkembangan teknologi mendorong berkembang pesatnya media massa di masyarakat, di mana media menjadi salah satu pilar utama dalam proses pembentukan opini publik. Perkembangan teknologi komunikasi yang terjadi saat ini memunculkan berbagai media dengan tampilan yang bervariatif serta karakteristik yang sesuai dengan ciri khas yang ingin ditonjolkan oleh masing-masing media itu sendiri. Semua itu berperan penting dalam proses pertukaran pesan yang terjadi di antara individu atau kelompok dalam masyarakat modern.

Teknologi memberikan ruang yang lebih luas kepada masyarakat untuk dapat berkreasi dengan berbagai ide dan kreativitas yang tinggi tanpa “batas” sehingga mereka mampu menciptakan peradaban spektakuler seperti yang sedang terjadi di era globalisasi saat ini.

Dimensi Etika
Dalam cloud computing untuk aspek etika jika dilihat dari hak cipta adalah dengan adanya cloud computing kita bisa dengan bebas melihat film - film yang baru dengan gratis, seperti contoh film bajakan. Jika dilihat dari sisi negatifnya banyak orang - orang menggunakan cloud computing untuk menjual diri atau prostitusi, seperti contoh aplikasi yang sedang hangat adalah Bigo, di aplikasi Bigo kita bisa secara langsung melihat live acara seseorang, tetapi banyak pihak - pihak tertentu menggunakan aplikasi ini untuk prostitusi.

Aspek Sosial
Masyarakat mulai melihat komputasisebagai alat yang dipakai sehari-hari setelah GUI(windows dan apple) diimplementasikan secar luas.Terintegrasi komputasi ke  dalam  masyarakat dengan munculnya  komputasi bergerak (mobile computing) , netbook,smartphone,  tablet.

Aspek Politik
Dari keamanan data negara, dengan adanya internet kita bisa dengan mudah mengakses dan mencari informasi tentang negara lain dan menyimpanya, walaupun biasanya kalau kita ingin mengakses informasi - informasi penting dari negara lain, kita harus masuk ke deepweb. Dari sisi hak cipta, dengan adanya cloud cloud computing kita bisa menjual barang ke luar negeri, seperti contoh negara Tiongkok, mereka dengan mudah menjual barang - barang tiruan ke negara berkembang, karena jika mereka menjualnya ke negara maju barang mereka tidak dapat masuk ke negara tersebut karena akan terkena hak cipta.

Aspek Ekonomi
Untuk aspek ekonomi jika dilihat dari sisi biaya adalah akan menguntungkan karena kita tidak perlu bersusah payah menggunakan banyak infrastruktur untuk mencari keuntungan. Jika dilihat dari sisi marketing dengan bermodal smartphone atau pc dan koneksi internet kita sudah bisa mencari keuntungan dengan mudah, jika kita mempunyai kreatifitas.

Cloud Computing Dan Green IT
Dengan adanya cloud computing kita bisa secara hemat menggunakan sumber daya komputasi atau dengan secara efisien, karena dengan adanya cloud computing kita akan menghemat kertas dan tenaga. Cloud computing juga dapat membantu organisasi dalam penyelidikan untuk menghemat pengeluaran power dengan berbagai cara,hal ini berkaitan dengan IT yang berkesinambungan.Tahun 1992 program energi star merupakan kegiatan Internasional untuk membantu memilih komputer dan monitor yang lebih efisien.Hal  tersebut sampai saat ini menjadi cara yang penting untuk memberikan informasi  mengenai bagaimana membeli barang-barang elektronik.