Mengembangkan Solusi Cloud Dengan Paas: Ebook Cloud Computing
Mengembangkan Solusi Cloud Dengan Paas: Ebook Cloud Computing
Dikembangkan oleh :
Email : cs@meruvian.org
Phone : 021-985 644 17
Kode : MRVCC01
Daftar Isi
Daftar Isi .......................................................................................................................................... 2
Bagian 1.Cloud Computing
1.1 Pengertian Cloud Computing ..................................................................................................... 3
1.2 Tradisional Hosting vs Cloud .................................................................................................... 3
1.3 Manfaat Cloud Computing ......................................................................................................... 6
1.4 Resiko Cloud Computing ............................................................................................................ 7
Bagian 2. Jenis-jenis Layanan Cloud
2.1 IaaS (Infrastructure as a Service) ................................................................................................ 9
2.2 PaaS (Platform as a Service) ....................................................................................................... 10
2.2.1 OpenShift..................................................................................................................... ...... 10
2.2.2 Windows Azure ......................................................................................................... ....... 15
2.2.3 CloudFoundry .................................................................................................................... 19
2.2.4 Jelastic ........................................................................................................................ ....... 21
2.2.5 CloudBees .................................................................................................................. ....... 24
2.2.6 DotCloud .................................................................................................................... ....... 27
2.3 SaaS (Software as a Service) ...................................................................................................... 29
Bagian 3. Cloud Database
3.1 Pengertian Cloud Database ......................................................................................................... 31
3.2 SQL ............................................................................................................................................ 31
3.3 NoSQL ........................................................................................................................................ 34
Bagian 4. Implementasi PaaS
4.1 Yama Overview ...........................................................................................................................
4.2 Deploy Yama di OpenShift .........................................................................................................
4.3 Deploy Yama di CloudFoundry ..................................................................................................
4.4 Deploy Yama di Jelastic ..............................................................................................................
4.5 Deploy Yama di DotCloud ..........................................................................................................
4.6 Deploy Yama di Azure ................................................................................................................
4.7 Deploy Yama di CloudBees ........................................................................................................
38
39
45
48
52
58
71
Bab 1
Cloud Computing
1.1 Pengertian Cloud Computing
Cloud Computing merupakan sebuah paradigma baru dalam dunia komputasi.Secara sederhana
cloud computing dapat diartikan sebagai teknologi yang menggunakan layanan ataupun produk yang
disediakan oleh provider dengan basis internet.
Cloud Computing ini merupakan kumpulan dari beberapa computing resource yang terintegrasi
sehingga menjadikannya sebagai layanan yang mempunyai skalabilitas tinggi.
Ketika website / aplikasi lain dalam satu shared hosting bekerja dengan proses yang sangat
besar, maka akan berdampak pada turunnya performa dari web atau aplikasi yang user simpan
di dalam shared hosting yang sama dengan website / aplikasi tersebut.
Ketika suatu waktu ada sebuah website / aplikasi yang menyebabkan sistem crash, maka
seluruh server akan mengalami crash pula.
b. Cloud Hosting
Cloud Hosting merupakan layanan hosting yang terhubung pada banyak server.Dengan skalabilitas ini
user tidak perlu khawatir akan kinerja dari server seperti halnya pada layanan hosting tradisional.
Dengan cloud computing ini memungkinkan user memiliki resource server yang tak terbatas.user
dapat mengurangi atau menambah resource dengan mudah tanpa mengganggu proses yang sedang
berjalan.
Created by Meruvian Cloud Team
Seperti halnya Web Hosting, Cloud Hosting pun mempunyai beberapa tipe yaitu :
yang menawarkan
PaaS (Platform as Service), yaitu layanan cloud yang menawarkan platform yang user
butuhkan untuk membuat aplikasi.Layanan PaaS biasanya berupa desain aplikasi,
development, deployment dan hosting.
SaaS (Software as Service), yaitu sebuah layanan cloud yang menawarkan software sebagai
layanan untuk klien.
Billing
Pada Web Hosting, provider akan menawarkan tagihan dengan metode flat.Mereka tidak
perduli berapa resource yang akan user gunakan.Berbeda dengan metode pembayaran dari
Cloud Hosting, provider cloud hosting menawarkan pembayaran sesuai resource yang
digunakan oleh klien.Semakin banyak resource yang digunakan maka semakin besar pula
biayannya. Begitupun sebaliknya.
Skalabilitas
Web Hosting pada umumnya tidak mengenal skalabilitas, jika sebuah server utama down,
maka sistem lain juga mengalami hal serupa.Berbeda dengan Cloud Hosting yang
memberdayakan banyak server dalam beroperasi, jika satu server down, maka server lain yang
akan menggantikan posisi dari server yang bermasalah tersebut.
Elastisitas
Misalkan user akan menambah kapasitas memory atau hardisk pada hosting yang user
gunakan, pada Web Hosting penambahan resource baru akan membutuhkan waktu yang cukup
lama karena mereka memerlukan beberapa prosedur prosedur tertentu dan tidak menutup
kemungkinan server akan down dalam beberapa waktu selama proses penambahan.Namun hal
ini berbeda dengan Cloud Hosting.Di Cloud Hosting menambah atau mengurangi resource
merupakan hal yang sangat lumrah.Hal ini bisa dilakukan oleh user dengan waktu yang sangat
cepat berkat adanya elastisitas yang dimiliki oleh Cloud Hosting
Lalu manakah yang lebih bagus antara Cloud Hosting dan Tradisional Hosting ? Semuanya kembali
kepada kebutuhan user. Jika user ingin meminimalisasi biaya dengan berjalannya aplikasi yang
berjalan dengan skala besar, tentu Cloud Hosting jadi pilihan yang bijak.Namun jika user ingin
menyimpan data sensitif atau aplikasi yang tidak membutuhkan skalabilitas misalnya, Tradisional
Hosting bisa menjadi pilihan.
Efisiensi
Dengan adanya cloud computing ini end user tidak memerlukan lagi masalah infrastruktur
karena semua infrastruktur telah disediakan oleh provider. Dengan mekanisme ini pengelolaan
waktu untuk development menjadi lebih banyak.
Mobility
Semua resource yang tersimpan di dalam komputasi awan akan dapat diakses dimanapun
selama user terhubung dengan internet.
Meningkatkan Availability
System Cloud telah di desain dengan kemampuan high availability. Dengan adanya fitur ini
data atau aplikasi yang anda simpan di cloud akan di replika ke beberapa server sehingga data
anda tetap aman karena jika suatu waktu server mengalami crash, maka server lain akan
menggantikan peranan dari satu server tersebut.
Security
Karena pada
kemungkinan adanya cyber attack yang menyerang sebuah sistem cloud. Jika serangan mereka
berhasil bukan tidak mungkin data-data major perusahaan user akan bocor ke publik yang
pastinya akan memberikan dampak negatif bagi perusahaan user.
Data Ownership
Ketika user menyimpan data pada sebuah sistem cloud computing, bagaimanakah kepemilikan
dari data tersebut? Mungkin secara kasat mata data tersebut masih menjadi milik user, namun
bagaimana jika suatu ketika provider mengalihkan bisnis mereka ke bisnis yang lain? Sehingga
kepemilikan data masih bersifat ownership. Dan user hanya sebatas menyewa sebuah tempat
storage didalam sistem cloud computing.
Availability
Dengan user menyimpan data pada sistem cloud computing, user telah memandatkan sebuah
data ke dalam sistem mereka. Namun apa yang terjadi jika suatu waktu provider mengalami
kendala mungkin masalah bencana alam, atau yang lainnya? Sehingga keberadaan data sangat
sensitif terhadap keberadaan server cloud computing.
Bab 2
Jenis-Jenis Layanan Cloud
Pada bab sebelumnya user telah menyinggung sedikit tentang jenis-jenis cloud yang ada, mulai
dari Iaas, PaaS sampai dengan SaaS. Namun pada bab ini akan dijelaskan mengenai pembagian cloud
secara lebih detail.
2.2.1. OpenShift
Openshift adalah platform sistem Cloud Computing yang merupakan produk dari Redhat,
Aplikasi ini dapat dijalankan dan digunakan secara open source dan tersedia di Github bernama
OpenShift Origin. Developer dapat menggunakan Git untuk mendeploy aplikasi web dengan bahasa
pemrogaman yang berbeda di atas platform. Openshift juga menyediakan layanan untuk
Created by Meruvian Cloud Team
10
perbaikan(maintaince). (http://en.wikipedia.org/wiki/OpenShift).
Openshift merupakan Platform as a Service (PaaS), dengan automatic scalability yang
mendukung aplikasi web dengan developed Java EE, Node.js, Python, PHP, Perl dan Ruby. Termasuk
beberapa database seperti MongoDB, Openshift merupakan PaaS pertama yang mendukung Java EE 6
Full di Cloud, terintegrasi dengan developer tools seperti aplikasi lifecycle, termasuk integrasi dengan
Eclipse.
Beberapa Fitur terbaru seperti mendeploy kode tanpa JBOSS Developer Studio, menggunakan
fitur Java seperti EJB3.1 dan JMS, dapat memanfaatkan web yang sederhana dan konfigurasi dengan
command-line dan Administrasi, berjalan di beberapa framework Java di web, mobile, HTML5 dan
aplikasi yang kompleks.
Openshift berjalan seperti pada bagan di atas, setiap aplikasi akan berjalan di atas aplikasi
Jboss AS7, dan dijalankan pada sistem operasi RHEL + SELinux yang berjalan di sistem Cloud
Computing yaitu Amazon EC2.
11
Setiap user akan diberikan domain yang berakhirkan *.rhcloud.com dengan satu namespace
dengan banyak nama aplikasi.
Beberapa pendukung OpenShift adalah aplikasi-aplikasi yang sudah familiar dengan para user,
seperti Jboss, PHP, Perl, Jenkins, MySQL dan lain-lain.
Dua unit dasar fungsi dalam Openshift adalah Broker dan Cartridge. Broker adalah fungsi yang
menyediakan antarmuka dan Cartridge adalah fungsi yang menyediakan aplikasi framework.
A. Broker
Semua aktifitas manajemen aplikasi, seperti login, DNS, kondisi aplikasi dan lain-lain diatur
dalam fungsi ini, Interaksi antar user dan Broker dilakukan baik menggunakan Konsol Web, CLI, Java
Client, Jboss tools dengan menggunakan REST based API.
B. Cartridge
Cartridge menyediakan fungsionalitas yang digunakan untuk menjalankan aplikasi. Banyak
cartridge yang tersedia untuk mendukung bahasa pemrogaman seperti Jboss, PHP, Ruby serta
Cartridge database seperti PostgreSQL, mySQL, dan MongoDB.
12
C. Scalability
Openshift mendukung aplikasi manual scaling. Untuk membuat aplikasi scalable, dibutuhkan 2
gear/node, satu untuk aplikasi framework dan satu untuk load balancer menggunakan haproxy.
Aplikasi ini akan diatur secara otomatis scale up tau down tergantung beban yang diterimanya.
Batasnya adalah :
1. Scale Up jika jumlah permintaan bersama dilakukan melebihi 90% dari maximal permintaan
lebih dari 1 periode.
2. Scale Down jika jumlah permintaan bersama dilakukan di bawah 49,9% dari maksimal
permintaan selama 2 peiode berturut-turut.
3. Tidak dapat terkonfigurasi pada saat ini, yang max permintaan bersama adalah 5 permintaan
dan dalam periode 20 detik.
D. Multi-Node Cluster
Fitur yang terbaru dari Openshift adalah Multi-Node Cluster, layanan hosted Openshift
berjalan di atas cluster besar dari Compute dan penyimpanan tiap node, setiap node berjalan di banyak
Gear, Instance dari setiap aplikasi user, Cluster tersebut menggunakan Qpid AMQP untuk Queue
pesan dan Mcollective untuk inter-node komunikasi dan koordinasi.
Gambar di atas merupakan hubungan aplikasi user dengan Gear, setiap gear terdapat aplikasi
yang berbeda tergantung yang dibutuhkan user untuk aplikasinya.
Kode Cluster yang ada di PaaS openshift telah ditambahkan di Openshift Origin, sehingga
Created by Meruvian Cloud Team
13
memudahkan user untuk membangun clustering secara lokal dengan Openshift Origin open source,
untuk membangun sebuah cluster dibutuhkan 2 node PaaS, untuk spesifikasi tiap node adalah sebagai
berikut :
untuk node pertama akan menjalankan broker, DNS Bind, Qpid Messages, dan Mcollective.
Node ini akan hanya menjadi hosting gear.
Untuk node kedua akan menjadi lebih sederhana dan hanya menjalankan Mcollective dan host
gear.
Jadi useranya cluster dimaksudkan jika salah satu node mengalami gangguan, data yang telah
di input ke node pertama akan berpindah atau dapat dilanjutkan pada node kedua, sebenarnya dengan
adanya Jboss AS 7 di openshift, user dapat membangun sendiri cluster dengan menggunakan
mod_cluster tiap node.
14
menawarkan beberapa layanan untuk dapat digunakan oleh user, mulai dari virtual mesin untuk testing
atau menjalankan aplikasi, media penyimpanan data, sampai dengan mengembangkan aplikasi yang
scalable dengan memanfaatkan resource yang disediakan oleh Azure.
Beberapa Komponen Utama Windows Azure
Platform Windows Azure ini terdiri dari beberapa platform yang saling menguatkan satu dengan yang
lainnya.Di bawah ini akan di jelaskan fungsi dari beberapa komponen tersebut.
A. Data Management
Azure menyediakan beberapa model untuk penyimpanan data oleh aplikasi.Azure
menyediakan tipe database untuk penyimpanan berupa SQL dalam hal ini adalah SQL Azure, NoSQL
(MongoDB atau Cassandra) dan BLOB.
Masing-masing tipe penyimpanan data ini mempunyai fungsi yang berbeda-beda sesuai kebutuhan
sistem yaitu : SQL untuk penyimpanan data relasional, NoSQL untuk penyimpanan file yang
berpotensi menjadi media penyimpanan skala besar , BLOB untuk penyimpanan binary file.
B. Networking
Windows Azure mempunyai data center yang sangat besar dan terpisah di beberapa area, yaitu
di Asia, US, dan Eropa.Basicly Azure secara otomatis melakukan replikasi pada tiap data atau aplikasi
ke beberapa server yang biasanya disebut sebagai Worker Role.Hal ini untuk berujuan untuk
meningkatkan performa dan juga untuk tujuan skalabilitas dari aplikasi yang berjalan di atasWindows
Azure.
Ada beberap metode yang ditawarkan oleh Windows Azure dalam mengakses resouce yang
disediakan, yaitu :
On-Premise Network, user dapat mengakses Virtual Network pada windows Azure untuk
15
On-Premise Computer, Dengan adanya fitur Connect yang disediakan oleh Azure user
diberikan layanan untuk dapat mengakses atau memanage aplikasi yang berjalan di atas azure
menggunakan komputer lokal user.
Traffic Manager bekerja layaknya sebuah Router pada jaringan.Semisal user mempunyai
sebuah aplikasi yang berjalan di atas Azure yang user tempatkan di data center Asia.Namun
karena sesuatu hal data center yang berada di Asia mengalami overload, maka secara otomatis
Traffic Manager
16
Pada metode Memory Caching data yang pernah di akses oleh user akan di simpan di dalam memory
server.Dengan ini ketika ada user yang mengakses konten yang sama, system tidak perlu melakukan
query database atau melakukan proses berulangkali.Sistem hanya butuh untuk memanggil cache yang
telah tersimpan di memory dan menampilkannya.
Pada metode CDN (Content Delivery Network), cache akan direplikasi dan disimpan di dalam data
center terdekat dari user yang mengakses.Selanjutnya user yang akan mengakses konten tersebut tidak
perlu mengakses konten ke data center global, namun akan diarahkan ke data center terdekat dari user
sehingga pengaksesan kontent menjadi lebih cepat.
D. High Performance Computing (HPC)
High Performance Computing (HPC) adalah salah satu komponen dari Windows Azure
dalam kemampuan skalabilitasnya.Dengan adanya komponen ini Azure dapat menjalankan virtual
mesin bersama-sama secara simultan.HPC ini berguna ketika ada permintaan untuk mengeksekusi
sebuah kode pada banyak mesin dalam waktu yang bersamaan.
17
Cloud Foundry adalah sebuah Platform as Service (PaaS) provide yang bersifat Opensource
yang dikembangkan oleh VMware dan bekerja sama dengan Apache License 2.0 yang dibuat dari
bahasa pemrogaman Ruby. Layanan-layanan Clounfoundry diantaranya adalah sebagai berikut :
A.CloudFoundry.com
Sebuah host lengkap PaaS environment yang berjalan dalam infrastruktur
vSphere dari
Vmware. CloudFoundry.com mendukung Spring, Ruby on Rails, Sinatra , Scala dan Node.js juga
vFabric
Postgres,vFabric
RabbitMQ
MongoDB
MySQL
dan
Redis.
B.CloudFoundry.org
Sebuah proyek open source di mana developer dan anggota masyarakat dapat berkolaborasi
dan berkontribusi pada proyek. Menyediakan komunitas yang membicarakan seputar pengembangan
Cloud Foundry dan katalog lengkap layanan-layanan pada Cloud Foundry.
C. Micro Cloud Foundry
Versi Cloud Foundry yang dapat didownload dan dijalankan di komputer para pengembang.
Micro Foundry menyediakan versi-versi dari software Cloud Foundry dan menawarkan simetri dengan
instansi selain Cloudfoundry.Hal ini memungkinkan akses dari pihak VMware , pihak ketiga dan
komunitas opensource lainnya.
Dengan built-in mendukung DNS dinamis, pengembang dapat menjalankan Micro Cloud Foundry
mana pun mereka kebetulan bekerja - apakah di toko rumah, kantor atau kopi - tanpa konfigurasi
ulang
Micro Cloud Foundry tersedia sebagai gambaran Virtual machine yang kompatibel dengan VMware
Fusion untuk MacOSX, VMware Workstation dan VMware Player (tersedia sebagai download gratis)
Created by Meruvian Cloud Team
18
untuk Linux dan Windows. Juga menyediakan penginstalan mudah, setup dan mekanisme manajemen
VM.
Cloud Foundry juga menyediakan CLI untuk mempermudah developer mengembangkan dan
mendeploy aplikasinya dalam cloud di Cloud Foudry yang disebut VMC.
2.2.3.1 Arsitektur CloudFoundry
19
Cloud Foundry adalah sebuah PaaS provider yang mencakup aplikasi yang mencakup selfservce application dengan execution engine untuk deployment aplikasi dan manajemen lifecycle
aplikasi dengan interface berbasis scipt CLI yang disebut VMC yang juga diintegrasikan dengan alat
pengembangan untuk memudahkan proses deployment
2.2.3.2 Scalability (Skalabilitas)
Cloud Foundry mendukung 2 cara untuk scalability horizantal scalability , yaitu horizontalscalability dan auto-scale.
Horizontal-scalability : pengembang harus mengkonfigurasi sendiri scalability untuk mempertahankan
performance dari aplikasinya.
Auto-scale : pengembang dapat menambahkan sendiri auto-scale dengan sintak di CLI yang prosesnya
dijalankan oleh service-service Cloud Foundry.
2.2.4. Jelastic
Jelastic adalah solusi cloud platform Java yang juga disebut PaaS (Platfom as Service) Java
yang autoscale dan easy deploy. Autoscale memungkin user untuk menjalankan aplikasinya tanpa
mengkonfigurasi environment.Contohnya jika akan menjalankan aplikasi Java maka akan diperlukan
konfigurasi environment seperti JDK , container , JAVA_HOME,JRE_HOME , database dan lainlain.Tapi dengan autoscale ini tidak perlu ada konfigurasi yang begitu berarti seperti diatas , jadi cukup
deploy dan aplikasi tersebut akan jalan.
Saat ini Jelastic sudah menyediakan banyak environment pilihan seperti Nginx,Tomcat 6 dan 7,
Glassfish,Jetty,JDK 6 dan 7, Mysql,MariaDB,PostgreSQL MongoDB , CouchDB,Maven, High
Availability.Easy deploy sendiri adalah proses deploy (memasang/menyebarkan) aplikasi ke server
dalam hal ini adalah server cloud Jelastic dengan cara yang sangat mudah .Kelebihannya dalam
Jelastic
konfigurasi
environment
dan
deploy
sangat
mudah
dan
user-friendly
Juga didukung banyak Hosted Service Provider seperti ServInt (North America), Dogado
(Jerman),Rusonyx (Rusia),Tsukaeru.net (Jepang),Layershift (Inggris). Dengan dukungan banyak
Created by Meruvian Cloud Team
20
Hosted Service Provide yang terkenal ini membuktikan bahwa Jelastic sudah diakui keberadaanya
sebagai salah satu Cloud Service yang handal.
2.2.4.1 Fitur-fitur Jelastic
Beberapa fitur-fitur di Jelastic :
Mendukung High Availability (HA) untuk clustering server yang tersedia dalam akun berbayar.
Menyediakan juga load balancing dan caching software dengan Nginx yang sudah terintegrasi
Dapat meningkatkan / menurunkan sejumlah resources (memory dan processing power) sesuai
pemintaan
21
2.4.2 Arsitektur
Keterangan :
HTTPS recording : menggunakan SSL yang dapat diaktifkan atau di-nonatikan.
Balancer dan caching : Load balancer yang digunakan adalah nginx. Memungkinkan pembagian
kerja untuk web container di bawahnya sehingga server tidak bekerja berat walaupun memiliki banyak
environment.
REC runtime version container : Sebagai platform aplikasi yang dideploy.Menyediakan Tomcat 6
dan 7 , Glassfish dan Jetty yang berjalan dengan JDK 6 atau 7.
Automation create projects : Pembuatan project secara otomatis dengan maven.
SQL-database : Penyediaan database SQL seperti MySQL , MariaDB dan PostgreSQL .
NoSQL-database
Penyediaan
database
NoSQL
seperti
MongoDB
dan
CouchDB
22
2.2.5. CloudBees
Cloudbees adalah sebuah Java PaaS (Platform as a Service), bertujuan untuk menyediakan Java
Platform terkemuka sebagai layanan PaaS yang meliputi jasa pengembangan(development) dan
sebuah produksi runtime untuk Java.
Perusahaan ini memulai debutnya dengan DEV@cloud, yang menampilkan fitur pertama
Hudson untuk layanan cloud, dan akan dilajutkan ke daam pengembangan yang lengkap, membangun,
menguji, menampilkan dan memproduksi untuk setiap infrastuktur cloud.
Kelebihan dari cloudbees adalah user Java hanya membutuhkan biaya yang rendah untuk
menggunakan cloud PaaS ini. Dalam membangun dan mendeploy aplikasi java, cloudbees
menggunakan standar java framework dan API's libraries.
23
24
2.2.5.2 Arsitektur
Cloudbees Cloud mencakup HTTP routing layer yang menangani clustering dan load balancing
untuk aplikasi web user. Ketika permintaan HTTP diterima, layer routing menggunakan HTTP host
header untuk menentukan target aplikasi. Setiap target aplikasi yang ditentukan, permintaan akan
dilanjutkan ke instance deploy dari aplikasi. Jika aplikasi user telah dikonfigurasi untuk menjalankan
cluster, permintaan akan di teruskan ke instance, jika layer routing tidak tersedia untuk dikoneksikan
ke instance, maka permintaan akan otomatis di arahkan ke aplikasi instance.
Keuntungan lainnya adalah aplikasi yang berjalan di cloud Cloubees tidak memerlukan sumber
daya yang besar. Karena dalam Cloudbees terdapat fungsi hibernasi, fungsi ini sangat efektif untuk
menambah efisiensi server aplikasi user, jadi user dapat menjalankan aplikasi dengan setengah dari
sumber daya yang digunakan.
25
aplikasi
session
store
dan
kemudian
disatukan
ke
dalam
aplikasi.
2.2.5.4 Database
Menyimpan data dalam database adalah cara yang paling umum untuk menyimpan data
aplikasi, keuntungan lainnya, user dapat mengakses berbagai layanan dan Ekosistemnya Layanan dari
Cloudbees. user juga dapat meng-host database Anda sendiri atau terhubung ke database host oleh
pihak ketiga. Berikut struktur database dari cloudbees.
CloudBees MySQL (relasional penyimpanan data)
Cloudant CouchDB (penyimpanan dokumen)
Amazon S3 (penyimpanan file)
Amazon RDS (relasional penyimpanan data)
MongoDB
JDBC adalah class API pertama di lingkungan Cloudbees, Cloudbees menyediakan dukungan
untuk menjalankan Database MySQL, tetapi aplikasi user hanya dapat terkoneksi ke external database
menggunakan JDBC.
2.2.6. DotCloud
DotCloud merupakan salah satu layanan PaaS (Platform As a Service) yang menyediakan
beberapa fitur yang telah mendukung beberapa bahasa pemgrograman seperti :Java,Ruby,PHP, Python,
Perl, Opa dan NodeJS. DotCloud juga telah menyediakan beberapa alternatif database untuk aplikasi
yang akan user deploy di dalamnya Mulai dari Mysql, Postgresql dan Postgis sampai MongoDB
Selain itu ada beberapa fitur-fitur alternatif lain sepert :
Created by Meruvian Cloud Team
26
dll
Dalam hal deployment dotCloud menggunakan CLI.Untuk berkomunikasi dengan server user
memerlukan API yang telah disediakan ketika pertama kali mendaftarkan akun. Selain itu DotCloud
menyediakan sebuah fitur untuk menentukan struktur aplikasi yang akan user deploy ke dalam cloud
menggunakan Redis.File ini berextensi .yml yang memuat seluruh keterangan mengenai aplikasi user.
File .yml inilah yang akan memberikan informasi ke server cloud ketika user push source code atau
file web archive user ke dalam server cloud.
Contoh file.yml
www:
type: java
db:
type: mysql
File .yml di atas akan memberitahu ke server bahwa aplikasi yang akan user deploy adalah aplikasi
Java yang menggunakan database Mysql.
Dalam hal scalability, dotCloud menyediakan tiga jenis tipe :
Scaling Horizontally, scalable dengan menggunakan paralel server
27
Scaling for Failover, scalable dengan tujuan untuk mencegah server down ketika beroperasi
Scaling Vertically, scaling ini lebih mengarah kepada improvisasi performance pada sebuah
server seperti dengan menambah hardware seperti memory, processor, storage, dll
28
Bab 3
Cloud Database
29
bahasa SEQUEL. Akan tetapi, karena permasalahan hukum mengenai penamaan SEQUEL, IBM pun
mengubahnya menjadi SQL. Implementasi basis data relasional dikenal dengan System/R.
Di akhir tahun 1970-an, muncul perusahaan bernama Oracle yang membuat server basis data
populer yang bernama sama dengan nama perusahaannya. Dengan naiknya kepopuleran John Oracle,
maka SQL juga ikut populer sehingga saat ini menjadi standar de facto bahasa dalam manajemen basis
data.
Sejak SQL dibuat sebagai standar, banyak keuntungan jika user menggunakan bahasa SQL, antara
lain :
1. Kecepatan dalam pengambilan data. Di sebuah majalah pernah di survey pemakaian bahasa
SQL dibandingkan dengan pemakaian filter dalam bahasa pemrogaman. Hasilnya, SQLlebih
ceat seuserr 20x dibandingkan dengan pemakaian filter.
2. Standardisasi. Hampir semua bahasa pemrogaman saat ini sudah mendukung bahasa SQL,
dikarenakan bahasa SQL sangat mudah digunakan karena pemakaiannya mirip dengan bahasa
Inggris.
3. Mengurangi kerumitan dalam membangun aplikasi. Jika user ingin mengambil data dalam
kriteria tertentu, maka dengan menggunakan SQL cukup menggunakan bahasa SELECT,
dibandingkan dengan perintah if.
4. Mudah melakukan pengecekan kesalahan program aplikasi (debugging).
5. Memudahkan komunikasi antar user, progammer dan database.
6. Embedded SQL untuk berbagai host language (Cobol, Fortran, PL/I) hampir sama.
7. Dikarenakan SQL di-compile, runtime nya jauh lebih cepat dari pada yang interaktif.
8. Sudah digunakan dibanyak Hosting Provider dan Cloud Provider
Sedangkan kelemahan SQL adalah sebagai berikut :
1. Bentuk bahasa yang jauh berbeda dengan host language yang ada sehingga mempersulit
programmer dalam menulis coding/script.
Beberapa perkembangan SQL antara lain :
30
31
5. SQL Server
Microsoft SQL Server adalah sebuah sistem manajemen basis data relasional (RDBMS)
produk Microsoft. Bahasa kueri utamanya adalah Transact-SQL yang merupakan implementasi
dari SQL standar ANSI/ISO yang digunakan oleh Microsoft dan Sybase. Umumnya SQL
Server digunakan di dunia bisnis yang memiliki basis data berskala kecil sampai dengan
menengah, tetapi kemudian berkembang dengan digunakannya SQL Server pada basis data
besar.
SQL Server adalah salah satu software database yang berbayar.
3.2.3 Pengguna SQL
Hampir semua perusahaan baik kecil ataupun besar yang mempunyai aplikasi baik di internet ataupun
di lokal menggunakan database SQL di sistemnya sebagai basis data.
SQL juga digunakan di semua Hosting Provider dan Cloud Provider.
3.3 NoSQL (Not Only Structure Query Languange)
Dari singkatannya saja NoSQL memang tidak menggunakan sintak-sintak SQL untuk
menyimpan data.NoSQL dikembangkan oleh Carlo Strozzi pada tahun 1998 dan pada 2009 kembali
diperkenalkan kembali .NoSQL sangat berbeda dengan database-relasional lainnya yang juga
menggunakan SQL.Konsep penyimpanan data non-relasional mempunyai perbedaan-perbedaan
metode daripada konsep penyimpanan data relasional lainnya..Metode-metode ini seperti :
Graph-Oriented
Dalam metode key-value store data tidak langsung ditulis ke hardisk tetapi data disimpan
terlebih dahulu dalam memori dan hanya sesekali dituliskan ke hardisk sehingga proses query dapat
berlangsung lebih cepat,karena tidak perlu lagi mengambil data dari hardisk.Dari sinilah salah satu
keuntungan key-value store sebagai metode NoSQL dibandingkan dengan database relasional yang
lain.Key-value store sudah banyak digunakan oleh LiveJournal,Wikipedia,Twitter,Youtube,Wordpress
Created by Meruvian Cloud Team
32
sedikit usernya , beberapa user metode ini adalah Google dengan BigTable-nya dan Facebook dengan
Cassandra.Walaupun sedikit tapi hasilnya dapat dilihat dari kecepatan waktu pencarian pada Google
dan Facebook walaupun diakses jutaan user.
Metode NoSQL selanjutnya adalah document-oriented . Metode ini tidak mengenal adanya
table dan field serta record melainkan digantikan oleh dokumen dan koleksi. Dokumen dapat
disamakan seperti field dalam SQL sedangkan koleksi adalah tabelnya.Dokumen dapat memiliki field
yang berbeda dengan dokumen lain walaupun dalam koleksi yang sama , sedangkan dalam databaserelasional sebuah record tidak mungkin memiliki field yang berbeda dengan record dalam 1 table.
Yang terakhir adalah graph-oriented yaitu jenis database NoSQL dengan struktur grap
node,edge dan properties untuk menyimpan data.Dibandingkan database relasional, grap database
dapat beroperasi lebih cepat dalam pemetaan datanya.
3.3.1 Software Database NoSQL
Berikut ini berbagai contoh open source software NoSQL database :
1. MongoDB
Adalah sebuah open source software database NoSQL yang berskala dan high-performance
yang dibuat dalam C++. MongoDB adalah salah satu database NoSQL dengan metode
Document-Oriented.
2. CouchDB
Sama seperti MongoDB , tetapi coucdb belum memiliki fitur Auto-Sharding.Couchdb juga
berdasarkan metode Document-Oriented.
3. Amazon DynamoDB
NoSQL database yang dibuat oleh Amazon yang scalabiliy dengan predictable perfomance.
Amazon DynamoDB adalah salah satu NoSQL database berdasarkan metode key-value store.
4. Redis
5. Neo4j
Adalah database grafik NoSQL dengan kinerja tingkat tinggi berdasarkan graph-oriented.
Created by Meruvian Cloud Team
33
6. HBase
Adalah sebuah open-source database terdistribusi yang berjalan pada Hadoop, sebuah kerangka
kerja perangkat lunak yang memungkinkan Anda untuk menyimpan dan memproses sejumlah
besar data pada beberapa mesin.
Sebenarnya masih banyak juga software database NoSQL yang dikembangkan di seluruh dunia.
3.3.2 Kelebihan dan kekurangan Database NoSQL
Berikut ini adalah kelebihan database NoSQL :
Melakukan searching data lebih cepat , karena NoSQL membuat proses query menjadi lebih
sederhana disebabkan data dimasukkan ke memory terlebih dahulu sehingga sistem dapat
membaca data yang tersimpan dalam memory lebih cepat daripada hardisk.
Selain kelebihan ada juga celah kekurangan dalam database NoSQL , berikut ini adalah kelemahan
database NoSQL :
Tidak support untuk aplikasi bisnis / aplikasi transaksi lainnya dikarenakan sistem transaksi
sering terjadi deadlock yang membuat sistem saling menunggu resource dalam proses, jika
dalam transaksi ini databse yang digunakan dalah NoSQL maka deadlock akan mengganggu
proses kerja database.
Jumlah programmer yang ahli dalam database NoSQL juga masih sedikit.Jadi masih
diperlukan banyak pengembangan.
34
Facebook
Facebook menggunakan database Cassandra NoSQL dan Hbase yang dengan berdasarkan
metode table-oriented , dengan ini facebook dapat melayani proses query dari jutaan
pengguna dalam waktu yang relatif cepat.
Digg.com
Digg juga menggunakan Cassandra untuk melayani query dari pelanggan dan mengumumkan
migrasinya dari MySQL yang RDBMS ke NoSQL.Database ini digunakan pada database
utama dalam sistem digg.com .
Twitter
Twitter juga menggunakan Cassandra dan Hbase.Database tersebut digunakan dalam
TopTweets , lokasi user dan lain-lain
Craiglist.org
Craiglist.org menggunakan database MongoDB NoSQL yang dengan metode documentoriented sebagai advertisement storage.
Bit.ly
Bit.ly juga menggunakan MongoDB sebagai database user history.
NoSQL database juga digunakan mulai digunakan oleh banyak Cloud Provider dikarenakan memang
fungsi-fungsi , skalabilitas dan performance yang sesuai untuk komputasi awan , seperti :
1. OpenShift
2. Jelastic
3. Cloudfoundry
4. Cloudbees
5. DotCloud
35
Bab 4
Implementasi PaaS
4.1 Yama Overview
Yama merupakan sebuah bagian dari project Meruvian Integrated Platform (MIP) yang
berperan sebagai MIP Server untuk dapat berkomunikasi dengan MIP Client yang dalam hal ini
menggunakan Midas (platform framework untuk android).
Yama adalah framework yang dapat membantu kita untuk pembuatan sebuah aplikasi dengan web
base dengan mudah dengan beberapa opsi yaitu:
- MVC Web yang terintegrasi dengan SpringMVC, Spring dan Hibernate
- MVC Web yang terintegrasi dengan Struts2, Spring dan HIbernate
Yama Framework ini gratis dan opensource anda dapat mengunduh source code nya dari:
http://yama.java.net. Untuk detail mengenai MIP dapat dilihat pada lampiran.
36
2. Pada terminal ubuntu, install beberapa paket yang dibutuhkan untuk openshift.
#apt-get install git-core openssh openssh-client ruby-full rubygems1.8 rake
3. Setelah semua selesai, saatnya menginstall aplikasi gem
37
5. Setelah applikasi selesai dibuat, pengguna dapat melihat direktori aplikasi yang ada di
/home/meruvian/meruvian aplikasi dapat diakses di url di bawah ini
http://[username].rhcloud.com
Created by Meruvian Cloud Team
38
7. Setelah menjalankan perintah di atas, pengguna akan diberikan ip host, port, username dan
password
yang akan digunakan dalam menambahkan konten. Harap untuk di catat atau di simpan di gedit.
untuk mengatur jalannya MySQL dibutuhkan aplikasi phpmyadmin, untuk Instalasi di bawah ini.
$rhc-ctl-app -e add-phpmyadmin-3.4 -a meruvian
39
username@meruvian.org
11.Setelah semuanya selesai, saatnya untuk menambahkan konten, hapus pom.xml yang ada di
direktori aplikasi
40
$cd meruvian
$git rm -r src pom.xml
$git commit -m Hapus artifak dari aplikasi yang akan dibuat
12. Siapkan nama aplikasi berbentuk .war, contoh penulis akan menggunakan aplikasi yama.war
sebagai konten yang akan ditambahkan di jbossas-7.Salin konten tersebut di
/home/meruvian/meruvian/deployments.
$cp Aplikasi/yama.war /home/meruvian/meruvian/deployments/
Setelah itu buat file berikut.
$touch yama.war.dodeploy
13. Kemudian saatnya untuk di sinkronisasikan dengan openshift dengan perintah di bawah ini.
$ rsync -avz deployments/731c3b027fb147739209f6c8e5d04529@meruvian
meruvian.rhcloud.com:~/meruvian/jbossas-7/standalone/deployments/
14. Tunggu beberapa saat sampai konten tersebut berjalan. Konten yama dapat diakses di
http://[username].rhcloud.com/yama2
41
16. Jika ingin melihat shell openshift, dapat meremote terlebih dahulu domain user, kemudian masuk
direktori .env/ setelah itu tampilkan isi direktori dengan ls, sebagai contoh jika ingin mengetahui
password database.
$echo password:$OPENSHIFT_DB_PASSWORD
42
2. 2.
gunakan saja nhjug dan jangan lupa untuk mengisi form captcha di bagian bawah.
3. Setelah proses selesai , verifikasi email sebagai username dan password akan dikirim ke email
yang tadi diisikan.
4. Kemudian login dengan email/username dan password tadi.
43
Adapun OS yang digunakan dalam tutorial ini adalah linux Ubuntu 11.04.
$ sudo apt-get install ruby-full ruby-gems
6. Kemudian mulai install vmc , yakni sebuah tool terminal dari cloudfoundry yang berguna
untuk menjalankan perintah-perintah managemen aplikasi cloud pada cloudfoundry.
$ sudo gem install vmc
9. Untuk memulai deploy masuk ke direktori aplikasi atau ke direktori file extensi .war,adapun
lokasi file aplikasi extensi yama.war dalam tutorial ini ada di
/media/Data/Data/Aplikasi/yama . Dan perintah untuk mendeplo adalah vmc push.
$ cd /media/Data/Data/Aplikasi/yama
$ sudo vmc push
Would you like to deploy from the current directory? [Yn]: n <enter>
Deployment path: yama.war <enter>
Application Name: yama 3<enter>
Detected a Java SpringSource Spring Application, is this correct? [Yn]: y
Application Deployed URL [yama3.cloudfoundry.com]: <enter>
Memory reservation (128M, 256M, 512M, 1G, 2G) [512M]: menentukan besar
memory yang dibutuhkan tekan <enter> untuk default (512MB).
How many instances? [1]: 1 <enter>
Create services to bind to 'yama3'? [yN]: n
Would you like to save this configuration? [yN]: y
Manifest written to manifest.ym
Uploading Application:
Checking for available resources: OK
Processing resources: OK
Packing application: OK
Uploading (7K): OK
Push Status: OK
Staging Application 'yama3': OK
Created by Meruvian Cloud Team
44
11. Dari sini , Yama sudah bisa dijalankan tapi belum terkoneksi ke database , maka dari itu harus
membuat service mysql terlebih dahuluu
$ sudo vmc create-service mysql mysql-yama3
Creating Service: OK
12. Kemudian lakukan binding agar database mysql-yama3 yang dibuat langsung dapat digunakan
oleh aplikasi yama3 .
$ sudo vmc bind-service mysql-yama3 yama3
Binding Service [mysql-yama3]: OK
Stopping Application 'yama3': OK
Staging Application 'yama3': OK
Starting Application 'yama3': OK
13.
45
2. Setelah klik Sign up dan proses berhasil , maka akan dikirimkan email konfirmasi bahwa akun
dan password anda telah dibuat di jelastic.net.
Kemudian arahkan browser ke https://app.jelastic.servint.net/ . Login dengan username (email
tadi) dan password yang telah diberikan.
46
47
5. Untuk memulai mendeploy , arahkan pointer ke Maven 3 , dan klik gambar box
untuk melakukan checkout pada server Subversion aplikasi Yama di
https://svn.java.net/svn/yama~yama-repo/tags/yama-1.0.1/webapp/struts/ .
48
6. Setelah itu arahkan pointer ke yama yang sudah didapat dari svn dan pilih Build and Deploy.
7. Jika sudah proses selesai , maka akan ada ROOT di bawah glassfish.
Ini menandakan bahwa aplikasi sudah terinstall dan terdeploy di glassfish
dari sini aplikasi bisa diakses dari webrowser dengan mengarahkan pointer ke Open Browser.
49
50
Masukkan API yang user dapatkan dari akun dotcloud di menu setting
Buat sebuah file dengan extensi .yml .File ini berfungsi untuk mendeskripsikan tipe aplikasi, database
atau webserver yang akan digunakan untuk aplikasi
$ nano dotcloud.yml
isi dengan :
www:
type: java
data:
type: mysql
51
File yml di atas mendeskripsikan bahwa user akan menggunakan aplikasi java dengan database
mysql.
Selanjutnya push aplikasi user ke DotCloud
$ dotcloud push yama
# rsync
[...]
sent 8.11K bytes
995.06 bytes/sec
speedup is 1.75
52
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
mysql>
mysql> create databaes yama;
mysql> grant all on yama.* to yama@localhost identified by 'password';
mysql> grant all on yama.* to yama@'%'
identified by 'password';
mysql> quit
53
ports:
-
name: ssh
url: ssh://mysql@yama-meruvian.dotcloud.com:31822
name: mysql
url: mysql://root:l39IqqSQ83Eyg7X2Ql533453535XEgxxxx@yama-
meruvian.dotcloud.com:31821
pricing: free
state: running
type: mysql
54
db.url=jdbc:mysql://yama-meruvian.dotcloud.com:31821/yama
db.driver=com.mysql.jdbc.Driver
db.username=yama
db.password=password
Jika user mengkonfigurasi file yml sedemikian rupa, maka user akan dapat mengakses project tersebut
dengan url http://[nama user]-[nama project].dotcloud.com/yama
Namun agar user dapat mengakses WAR file sebagai ROOT folder, user bisa me rename file .war user
dengan nama ROOT.war sehinnga nantinya akan bisa mengakses aplikasi tersebut dengan format url :
http://[nama user]-[nama project].dotcloud.com/
Gunakan perintah di bawah ini untuk deploy aplikasi java user ke dotcloud:
$ dotcloud push yama yama/
# rsync
[...]
sent 8.11K bytes
995.06 bytes/sec
speedup is 1.75
55
Akses url tersebut sehingga akan muncul aplikasi Yama di browser user :
56
Klik Install
57
Klik I accept.
Selanjutnya proses instalasi akan berjalan
58
Setelah proses instalasi selesai akan terdapat informasi dialog seperti di bawah ini
\
Created by Meruvian Cloud Team
59
Isikan nama database, pilih Edition dan Maximum Size sesuai dengan kebutuhan. Klik OK untuk
menyutujui.
60
Lalu Akan muncul list database yang telah user buat pada bagian bawah.Klik Firewall Rules
Isikan IP range Start dan Ip Range End sesuai dengan ip publik dari komputer anda.Jika anda tidak
mengetahuinya, ketikkan kate what is my ip pada google. Klik Ok
Untuk mengetahui connection string dari database yng user buat, klik pada menu database \ klik
Subcription \ pilih database yang akan user liat connection stringnya.Lalu pada bagian menu kanan
klik tombol view pada connection string
61
62
Buka file tersebut dan konfigurasi koneksi sesuai dengan informasi connection string yang diberikan
pada Azure dashboard
db.url=jdbc:sqlserver://
[subcription].database.windows.net:1433;database=yamazure;user=[dbuser]@[subcripti
on];password=[dbpasswrd];encrypt=true;hostNameInCertificate=*.database.windows.net
;loginTimeout=30
db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
Klik Next
63
64
Lalu isikan perintah clean verify pada textbox goals.Klik tombol Run
4.6.4. Membuat Azure Project
Untuk membuat Azure Project dengan eclipse, klik File\New\Windows Azure Deployment Project
65
Keterangan :
Centang checkbox include JDK from this location dan pilih lokasi {Java_Home} pada komputer
anda.
Centang juga checkbox include server from this location.Pada combo box select pilih server yang
ada pada komputer anda, lalu klik browse dan pilih lokasi server yang tersedia.
Pada Application, remove file HelloWorld.war terlebih dahulu.Lalu Add file yama.war yang telah
user export menggunakan maven pada bahasan di atas.
Klik Finish untuk menyetujui.
4.6.5. Membuat Hosted Service
Selanjutnya user perlu membuat hosted service sebagai tempat beroprasinya aplikasi Yama
yang user install di Azure.Untuk membuat hosted service:
66
Klik menu Hosted Service, Storage Accounts & CDN.klik menu New Hosted Service pada
pojok kiri atas sehingga akan muncul pop up seperti gambar di bawah ini
Yang perlu di perhatikan adalah pada textbox URL Prefix for your service.Isikan textbox
67
tersebut sesuai dengan nama calon subdomain user dengan domain utama cloudapp.net
Jadi
secara
default
domain
akan
tergenerate
otomatis
menjadi
[namaprefixservice].cloudapp.net
Pada package location, klik browse locally dan pilih file .cspkg yang tergenerate ketika user
membuat Azure Project dari Eclipse
Pada Configuration File, klik browse locally dan pilih file dengan extensi .cscfg yang
merupakan hasil generate Azure Project yang user buat.
Add Certificate, jika user ingin menambahkan certificate yang bisa user gunakan untuk
melakukan remote dekstop
Setelah proses berjalan dengan sukses, user dapat mengakses aplikasi yang telah user deploy dengan
format url :
http://[url prefix].cloudapp.net/[nama contextpath aplikasi]
68
Setelah login Install subscribe untuk Application atau RUN@cloud dan Database. Pilih yang Free
Install aplikasi Command Line Tools Cloudbees pada ubuntu, download aplikasi dengan perintah
berikut.
#curl -L cloudbees-downloads.s3.amazonaws.com/sdk/cloudbees-sdk-1.1-bin.zip
> /opt/bees.zip
#unzip bees.zip
#rm bees.zip
#cd cloudbees-sdk-1.1
Created by Meruvian Cloud Team
69
buat aplikasi yama berjalan di cloudbees dengan mendeploy aplikasi yama.war ke server, sebelum
mendeploy aplikasi, pastikan semua konfigurasi database di atur sesuai dengan yang ada di app
database user.
#bees app:deploy -a meruvian <dir>/yama.war
70
71
Lampiran A :
Pengantar Meruvian Integrated Platform(MIP) versi.1.0
Pengantar
Jauh sebelum Meruvian didirikan, sampai saat buku ini dibuat, yaitu 2001 dibawah BlueOxygen,
sampai ditahun 2010 diputuskan Meruvian mengembangkan engine yang serupa tetapi lebih ringan
dan memiliki skalabilitas. Konsep pengembangan adalah membuat sebuah engine atau platform yang
memudahkan pengembangan, dan telah menjadi dasar dari solusi sejak didirikannya, kami
menyebutnya MIP (Meruvian Integrated Platform)
Meruvian Integration Platform(MIP) merupakan platform integrasi berbasis RESTful yang digunakan
untuk menciptakan solusi pengembangan aplikasi secara lebih cepat. MIP terdapat 2 core model yaitu
Yama dan Midas. Dalam platform ini Yama digunakan sebagai server dan Midas sebagai
client(Aplikasi Android), keduanya berkomunikasi satu sama lain dengan menggunakan mekanisme
REST.
MIP merupakan platform yang bersifat opensource dengan menggunakan Apache License. Sehingga
dapat dengan mudah dikembangkan. MIP juga mendukung teknologi berbasis cloud dan middleware
sehingga dapat dengan mudah dikolaborasikan.
Arsitektur yang digunakan pada MIP Server atau Yama dapat diintegrasikan dengan berbagai
komponen mengacu 3 layer yaitu Model View Controller. Hibernate dipilih sebagai solusi Model,
Spring sebagai IoC dan Struts2 sebagai Controller. Kemudian layer diatasnya akan menghasilkan
output berupa JSON/XML --merupakan sebuah plugins REST untuk Struts2, dapat diakses di
http://s2restplugins-java.net) -- yang dapat diintegrasikan dengan Android, Browser atau mobility
72
Arsitektur Yama
Sekilas mengenai MIP :
-) Pengembangan aplikasi secara lebih cepat
-) Total REST Platform Consumer & Producer
-) Solusi lengkap: Cloud, Middleware untuk pengembangan solusi mobile
-) Integration Project dari IAAS ke PAAS maupun ke SAAS dan diintegrasikan dengan aplikasi
mobile
-) OpenSource menggunakan Apache License
-) Terintegrasi dengan program Link-&-Match Meruvian
73
74
Hubungi Kami
Website
Email
Phone
: www.meruvian.org
: cs@meruvian.org
: 021-985 644 17
75