Cloud Computing
Cloud Computing
ver. : 1. 3
Dikembangkan oleh :
Email : cs@meruvian.org
Phone : 021-985 644 17
Kode : MRVCC01
MRVCC01 - Mengembangkan Solusi Cloud dengan PaaS
Daftar Isi
Daftar Isi .......................................................................................................................................... 2
Bab 1
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.
Terkadang user perlu memikirkan beberapa pertimbangan dalam memutuskan apakah user
akan menggunakan sistem Cloud atau Hosting untuk penyimpanan data user.
Pada sub bab ini user akan terlebih dahulu membahas jenis-jenis hosting dan cloud sehingga user
dapat menentukan sistem mana yang paling efisien untuk user gunakan.
a. Web Hosting / Tradisional Hosting
Ada beberapa tipe dari Web hosting / Tradisional Hosting, diantaranya :
1. Shared Hosting
Share Hosting adalah sebuah hosting yang digunakan user untuk menyewa disk space dari sebuah
server yang server tersebut dibagi dan dishare dengan user-user atau website-website yang lain.Tipe
hosting ini merupakan tipe hosting paling banyak tersedia di internet karena mudah di dapatkan dari
3. Dedicated Server
Tipe hosting yang ini merupakan tipe hosting yang menyediakan satu server utuh untuk sebuah
akun.Tipe ini layaknya user membeli satu hardware dari sebuah provider wajar jika tipe Dedicated
Server mempunyai harga lebih mahal dibandingkan dengan VPS ataupun Shared Hosting.
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.
Seperti halnya Web Hosting, Cloud Hosting pun mempunyai beberapa tipe yaitu :
• IaaS (Infrastructure as Service), yaitu bentuk dari layanan cloud yang menawarkan
infrastructure termasuk di dalamnya hardware komputer, networking ataupun storage.
• 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.
Tidak diragukan lagi, manfaat adanya cloud computing ini begitu besar baik ditinjau dari sisi
finansial ataupun dari sisi efisiensi. Adapun beberapa keuntungan dengan adanya cloud computing
ini, meliputi :
• 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.
Pada penjelasan sebelumnya telah dibahas mengenai beberapa manfaat adanya teknologi cloud
computing ini.Namun disamping itu semua, user perlu mengetahui beberapa resiko ketika user
memilih untuk mengadopsi sistem cloud computing, seperti :
• Security
Karena pada cloud computing semua sistem berbasis internet, maka tidak menutup
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.
IaaS adalah layanan Cloud Computing yang usernya dapat menyewa infrastruktur komputasi
mulai dari storage,memory,network,dll. Sebagaimana konsep pada cloud computing yang memberikan
elastisitas, user bisa mengatur spesifikasi masing-masing komponen yang akan user gunakan.user
dapat menambah atau mengurangi komponen dengan mudah.
Misalnya ketika data storage dari layanan yang user sewa sudah melewati batas kapasitas maksimu,
user dapat menambahkan storage, atau CPU dengan mudah tanpa mengganggu proses yang sedang
berjalan.
Contoh penyedia layanan IaaS antara lain : Rackspace, Amazone Web Service, IBM, Openstack,
Bluelock, dll
PaaS adalah layanan Cloud Computing yang providernya menyediakan platform untuk
memudahkan user dalam mengembangkan sebuah sistem, termasuk di dalamnya environtment, sistem
operasi, database dan keperluan-keperluan lain yang berguna dalam development system.
Dalam hal ini user akan membahas lebih fokus tentang implementasi PaaS. Pada bab selanjutnya akan
dibahas mengenai langkah-langkah deployment aplikasi di beberapa PaaS yang tersedia di internet.
Beberapa PaaS yang akan user bahas nanti meliputi :
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
perbaikan(maintaince). (http://en.wikipedia.org/wiki/OpenShift).
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.
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.
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
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.
Windows Azure adalah platform untuk publik cloud milik Microsoft.Windows Azure
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.
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
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
• 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 mengarahkan paket yang datang untuk aplikasi user yang mulanya
menggunakan data center di Asia di arahkan ke data center yang lainnya.
C. Caching
Azure menyediakan beberapa metode caching untuk meningkatkan performa server, yaitu : Memory
Caching dan CDN (Content Delivery Network).
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.
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.
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.
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.
Cloud Foundry adalah sebuah PaaS provider yang mencakup aplikasi yang mencakup self-
servce 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.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 lain-
lain.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
Hosted Service Provide yang terkenal ini membuktikan bahwa Jelastic sudah diakui keberadaanya
sebagai salah satu Cloud Service yang handal.
• Mendukung High Availability (HA) untuk clustering server yang tersedia dalam akun berbayar.
• Mendukung database NoSQL seperti MongoDB dan CouchDB.
• Menyediakan juga load balancing dan caching software dengan Nginx yang sudah terintegrasi
• Dapat meningkatkan / menurunkan sejumlah resources (memory dan processing power) sesuai
pemintaan
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
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.
Cloudbees juga menyediakan aplikasi clustering untuk aplikasi java web yang berjalan di
RUN@Cloud. RUN@Cloud adalah platform untuk cloud computing yang memberdayakan developer
dengan peralatan dan layanan untuk membangun, mengelola, dan skala dari aplikasi JVM.
RUN@Cloud menyediakan layanan kepada user dan telah di atur dari tools yang sederhana
untuk memproses pendeployan aplikasi java ke cloud, untuk menggunakan RUN@Cloud dibutuhkan
aplikasi CLI khusus untuk mengatur jalannya aplikasi user di Cloudbees, aplikasi tersebut adalah
CloudBees SDK, aplikasi tersebut dapat berjalan pada sistem operasi Linux,
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.
Biasanya Aplikasi session terdapat dalam satu paket dalam instance dan tidak menyediakan
untuk clustering . Untuk session failover , jika user ingin mengaktifkan session clustering, user dapat
membuat 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.
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 :
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.
• 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
Bab 3
Cloud Database
Cloud database adalah tipe database yang berjalan di atas platform cloud.Dalam pengelolaan
cloud database ini user dapat menjalankan database melalui virtual mesin atau melakukan pembelian
layanan database pada cloud provider.Ada dua tipe database yang berjalan di atas platform Cloud,
yaitu SQL-base dan NoSQL.
3.2 SQL
SQL (Structured Query Language) atau query adalah sebuah bahasa yang digunakan untuk
mengakses data dalam basis data relasional atau database. Pengertian secara luas merupakan bahasa
standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua server basis
data dan aplikasi java maupun web menggunakan bahasa ini.
3.2.1 Sejarah SQL
Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama Jhonny Oracle yang
membahas tentang ide pembuatan basis data relasional pada bulan Juni 1970. Artikel ini juga
membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut.
Bahasa tersebut kemudian diberi nama SEQUEL (Structured English Query Language).
Setelah terbitnya artikel tersebut, IBM mengadakan proyek pembuatan basis data relasional berbasis
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.
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.
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 database-
relasional 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.
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.
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.
• Database NoSQL belum banyak dijumpai di hosting provider.
• Masih awam bagi masyarakat
• 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 document-
oriented 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
Bab 4
Implementasi PaaS
Yama adalah framework yang dapat membantu kita untuk pembuatan sebuah aplikasi dengan web
base dengan mudah dengan beberapa opsi yaitu:
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.
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
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
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
8. Untuk konfigurasi key dan authenticate dapat menggunakan langkah di bawah ini.
$ssh-keygen -t <tipe>
<tipe> adalah key yang akan di generate, antara dsa atau rsa
username@meruvian.org
11.Setelah semuanya selesai, saatnya untuk menambahkan konten, hapus pom.xml yang ada di
direktori aplikasi
$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
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”
Adapun dalam tutorial ini,akan dijelaskan bagaimana mendeploy Yama dalam sebuah cloud service
Cloudfoundry dengan langkah-langkah sebagai berikut :
1. Lakukan sign up ke cloudfoundry.com.
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
7. Kemudian menyetting target gem ke api.cloudfoundry.com.
$ vmc target api.cloudfoundry.com
8. Selanjutnya login ke cloudfoundry via vmc untuk memulai memanage cloud.
$ sudo vmc login
Email : ****@****.***
Password :*****
Successfully logged into [http://api.cloudfoundry.com]
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
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
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.
4. Kemudian akan muncul progress bar creating environment. Yang menunjukkan bahwa
environment sedang dibuat.
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/ .
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.
$ dotcloud
Masukkan API yang user dapatkan dari akun dotcloud di menu setting
Created application "yama" using the flavor "sandbox" (Use for development, free
and unlimited apps. DO NOT use for production.)
$ cd yama
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
File yml di atas mendeskripsikan bahwa user akan menggunakan aplikasi java dengan database
mysql.
# rsync
[...]
sent 8.11K bytes received 352 bytes 995.06 bytes/sec
total size is 14.78K speedup is 1.75
Deployment for "yama" triggered. Will be available in a few seconds.
2011-06-28 04:27:34 [api] Waiting for the build. (It may take a few minutes)
2011-06-28 04:27:48 [www.0] service booted
2011-06-28 04:27:48 [www.0] The build started
2011-06-28 04:27:48 [www.0] Fetched code revision rsync-1309235251.44
2011-06-28 04:27:51 [www.0] Reloading nginx configuration: nginx.
2011-06-28 04:27:51 [www.0] The build finished successfully
2011-06-28 04:27:51 [api] Deploy finished
Selanjutnya user akan membuat database untuk aplikasi yang akan user deploy
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
mysql>
mysql> quit
Setelah berhasil membuat database di dotcloud, selanjutnya user akan menegkonfigurasi koneksi
database di aplikasi yama.
Namun sebelumnya user perlu mengetahui informasi seperti host database, port, dsb.
config:
mysql_masterslave: true
mysql_password: l39IqqSQ83Eyg7X2Ql533453535XEgxxxx
created_at: 1341916569.215796
datacenter: Amazon-us-east-1d
instance: data.0
instances:
yama.data.0:
role: master
state: up
memory:
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
db.url=jdbc:mysql://yama-meruvian.dotcloud.com:31821/yama
db.driver=com.mysql.jdbc.Driver
db.username=yama
db.password=password
www:
type: java
approot: yama
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 :
Gunakan perintah di bawah ini untuk deploy aplikasi java user ke dotcloud:
# rsync
[...]
sent 8.11K bytes received 352 bytes 995.06 bytes/sec
total size is 14.78K speedup is 1.75
Deployment for "ramen" triggered. Will be available in a few seconds.
2011-06-28 04:27:34 [api] Waiting for the build. (It may take a few minutes)
2011-06-28 04:27:48 [www.0] service booted
Akses url tersebut sehingga akan muncul aplikasi Yama di browser user :
Klik Install
Klik I accept.
Setelah proses instalasi selesai akan terdapat informasi dialog seperti di bawah ini
Masuk ke dalam azure dashboard, klik menu Database pada bagian sebelah kiri.Lalu pada top
bar pilih tombol create database seperti pada gambar di bawah ini.
Isikan nama database, pilih Edition dan Maximum Size sesuai dengan kebutuhan. Klik OK untuk
menyutujui.
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
Sebelum user mengeksport aplikasi user menjadi .war terlebih dahulu user perlu memastikan bahwa
konfigurasi database yang user gunakan sudah sesuai dengan database yang berada di Azure.
Pada Yama, user dapat melihat konfigurasi database dengan mengakses file db.properties yang ada di
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
Namun karena Yama menggunakan maven, user bisa mendapatkan file war dengan
dengan mengakses klik kanan pada project terpilih \ Run As \Maven Build
Lalu isikan perintah clean verify pada textbox goals.Klik tombol Run
Untuk membuat Azure Project dengan eclipse, klik File\New\Windows Azure Deployment Project
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.
Selanjutnya user perlu membuat hosted service sebagai tempat beroprasinya aplikasi Yama
yang user install di Azure.Untuk membuat hosted service:
• 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
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
• Klik OK untuk menyetujui
Setelah proses berjalan dengan sukses, user dapat mengakses aplikasi yang telah user deploy dengan
format url :
http://[url prefix].cloudapp.net/[nama contextpath aplikasi]
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
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
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
Arsitektur Yama
-) Integration Project dari IAAS ke PAAS maupun ke SAAS dan diintegrasikan dengan aplikasi
mobile
1. MIP Server
MIP Server yang dikembangkan berbasis REST Service yang dapat diintegrasikan dengan MIP Client
yang berupa aplikasi mobile. Mekanisme pengembangannya berupa platform integrasi (SpringMVC,
Hibernate, JPA), (Struts2, Hibernate, JPA). Sehingga, untuk pengembangan aplikasi menjadi sangat
mudah dan cepat dengan adanya Pattern Platform yang dapat mempercepat proses pembuatan aplikasi
yang sudah disediakan pada MIP Server.
2. MIP Client
Solusi mobile application baik menggunakan aplikasi android yang dikembangkan sebagai client dari
integrasi MIP.
Hubungi Kami
Website : www.meruvian.org
Email : cs@meruvian.org
Phone : 021-985 644 17