RANCANG BANGUN LAYANAN PLATFORM AS A SERVICE (PAAS) UNTUK MENDUKUNG SISTEM MULTI-TENANCY PENGEMBANGAN APLIKASI BERBASIS KOMPUTASI AWAN - ITS Repository

  TUGAS AKHIR - KI141502

  

RANCANG BANGUN LAYANAN PLATFORM AS A SERVICE

(PAAS) UNTUK MENDUKUNG SISTEM MULTI-TENANCY PE-

NGEMBANGAN APLIKASI BERBASIS KOMPUTASI AWAN

  PUTU WIRAMASWARA WIDYA NRP 5111 100 012 Dosen Pembimbing 1

  UNDERGRADUATE THESES - KI141502

  

DESIGN AND IMPLEMENTATION OF PLATFORM AS A SERVI-

CE TO SERVE A MULTI-TENANCY APPLICATION PLATFORM

BASED ON CLOUD COMPUTING

  PUTU WIRAMASWARA WIDYA NRP 5111 100 012 Supervisor 1

  ix

  RANCANG BANGUN LAYANAN PLATFORM AS A SERVI- CE (PAAS) UNTUK MENDUKUNG SISTEM MULTI-TENANCY PENGEMBANGAN APLIKASI BERBASIS KOMPUTASI AW- AN

  Nama : PUTU WIRAMASWARA WIDYA NRP : 5111 100 012 Jurusan : Teknik Informatika FTIf-ITS Pembimbing I : Royyana Muslim Ijtihadie, S.Kom, M.Kom, Ph.D.

  Pembimbing II : Baskoro Adi Pratomo, S.Kom, M.Kom

  Abstract Layanan hosting aplikasi atau sering disebut Applica- tion Hosting / Web Hosting merupakan layanan yang jamak ter- sedia di Indonesia. Layanan ini memberikan wadah bagi siapapun untuk menempatakan aplikasi Web mereka beserta basis datanya di jaringan Internet tanpa perlu menyediakan sendiri infrastruktur Internet terdedikasi. Layanan ini memiliki berbagai macam bentuk. Salah satu yang paling banyak tersedia di Indonesia adalah Shared Web Hosting yang menyediakan layanan yang sangat murah. Pa- da jenis layanan ini, penyewa hanya diberikan satu buah platform yang sama dengan aplikasi yang disimpan bersamaan pada satu x

  Pada tugas akhir ini, dilakukan perancangan dan implementa-

si sistem hosting atau pengembangan aplikasi yang mendukung ba-

nyak tenant/penyewa (Multi-Tenancy), mendukung banyak platform

dan mendukung tiga prinsip komputasi awan yaitu self-service, re-

source pooling dan metered service. Sistem ini mengadopsi bebe-

rapa fitur yang ada di Cloud Web Hosting modern sehingga bisa

dibangun oleh pihak ketiga dengan mudah.

  Kata Kunci: Hosting Aplikasi, Platform-as-a-Service, Multi- Tenancy, Komputasi Awan xi

  DESIGN AND IMPLEMENTATION OF PLATFORM AS A SERVICE TO SERVE A MULTI-TENANCY APPLICATION PLATFORM BASED ON CLOUD COMPUTING

  Name : PUTU WIRAMASWARA WIDYA NRP : 5111 100 012 Major : Informatics Department Faculty of IT - ITS Supervisor I : Royyana Muslim Ijtihadie, S.Kom, M.Kom, Ph.D.

  Supervisor II : Baskoro Adi Pratomo, S.Kom, M.Kom

  Abstract

Application hosting services or usually known as web hosting is

one of the most commonly available Internet services in Indonesia.

  This services provide anyone an ability to host their own application and its database. There are many forms of application hosting se- rvice. The one that abudantly available in Indonesia is shared web hosting that provide a single homogenous platform to serve a nume- rous number of web application or database inside a single machi- ne. The bottom line is that this services have a potential bottleneck issue due to its shared nature. In addition, there is another form of web hosting which provides its tenant an ability to take control xii

  cation development and hosting Platform-as-a-service with multi- platform ability and some other features to fullfil three characteris- tics of cloud computing: self-service, resource pooling and metered service. The objective is to create an easy to build and cheap appli- cation hosting service with its feature based from the limitation of traditional cPanel based service and common feature available in the modern cloud hosting.

  Keywords: Application Hosting, Platform-as-a-Service, Multi- Tenancy, Cloud Computing

KATA PENGANTAR

  Om Swastyastu Puji syukur penulis haturkan kepada Ida Sang Hyang Widhi

  Wasa, Tuhan Yang Maha Esa karena atas asungkertha wara nugra-

  

ha beliau, penulis dapat menyelesaikan sebuah penugasan Tugas

  Akhir untuk gelar Sarjana Komputer penulis dengan judul "Ran-

  

cang Bangun Layanan Platform as a Service (PAAS) untuk Men-

dukung Sistem Multi-Tenancy Pengembangan Aplikasi Berba-

sis Komputasi Awan".

  Tugas Akhir ini dibuat berdasarkan pengalaman penulis dalam melakukan pengembangan aplikasi Web selama masa kuliah meng- gunakan Node.js. Sampai saat ini, masih belum ada layanan Web Hosting murah yang menawarkan segala fleksibilitas komputasi aw- an seperti layaknya layanan Heroku atau OpenShift. Diharapkan de- ngan terselesaikannya Tugas Akhir ini, akan ada peluang yang ter- buka bagi pengusaha di Indonesia untuk mengembangkan layanan jenis ini sehingga pengembangan aplikasi Web bisa lebih heterogen dengan berbagai adanya dukungan banyak platform.

  Tidak lupa penulis sampaikan terima kasih dengan segala rasa penghormataan seluas-luasnya kepada beberapa pihak yang telah xiv rusan Teknik Informatika ITS yang telah memberi teladan ba- ik kepada mahasiswa-mahasiswi beliau se-Jurusan.

  • Ibu Isye Arieshanti, S.Kom, M.Phil, selaku Ketua Program Studi S1 Teknik Informatika yang telah meluangkan segenap waktunya untuk mengatur berjalannya perkuliahan di jurusan Teknik Informatika ITS.
  • Bapak Radityo Anggoro, S.Kom, M.Sc selaku koordinator

  Tugas Akhir yang telah meluangkan waktunya untuk kelan- caran pelaksanaan Tugas Akhir di jurusan.

  • Ibu Prof. Handayani Tjandrasa selaku dosen wali dan pembi- bing akademik penulis selama menempuh masa perkuliahan.
  • Teman-teman Administrator di Laboratorium Arsitektur dan

  Jaringan Komputer (AJK) yang telah memberi suasana yang hangat dan akrab selama pengerjaan TA yaitu Samihd, Uyung, Vivi, Harum, Surya, Agus, Adi Pur, Evaria, Romen, Nisa, Sa- iful, Wicak dan Zaza.

  • Seluruh staf pengajar dan administrasi jurusan Teknik Infor- matika ITS yang telah memberikan segala tenaganya untuk memajukan perkembangan Jurusan.
  • Teman-teman satu jurusan Teknik Informatika ITS angkatan
xv Terima Kasih. Om Santhi Santhi Santhi Om Surabaya, 22 Desember 2014 Putu Wiramaswara Widya

DAFTAR ISI

   i

  

ix

   xi

  

xvii

  

xxiii

  1 . . . . . . . . . . . . . . . . . . .

  1 . . . . . . . . . . . . . . . . . .

  3 . . . . . . . . . . . . . . . . . .

  3 xviii

  . . . . . . . . . . . . . . . . . . . . . . 15

  

  17

  . . . . . . . . . . . . . . . . . 17

  . . . . . . . . . . . . . . . . . . . 19

  . . . . . . . . . . . . 20

  . . . . . . . . . 20

  . . . . . . . . . . . . . . . . . . 20

  . . . . . . . . . . . 20

  . . . . . . . . . . . 21

  . . . . . . . . 25

  . . . . . . . . . . . . . 27

  

  33

  . . . . . . . . . . . . . 33

  . . . . . . . . . . . 33

  . . . . . . . . . . . . . 34

  . . . . . . . . . . . . . 47

  . . . . . . . . 55

  . . . . . . . . . . . . . . . 55

  . . . . . . . . . . . . 55 xix

  . . . . . . . . 75

  . . 87

  93

  . . . . . . . . . . . . . . . . . . . . . 93

  . . . . . . . . . . . . . . . . . . . . . . . . 94

  95 97

101

  . . . . . . . . . . . . . . . . . 101 . . . . . . . . . . . . . . . . 102

BIODATA PENULIS 107

  DAFTAR GAMBAR

  . . 11

   . . . . . . . . . . . . . . . . . . . . . . . 12

  . . . . . . . . . . . . 14

   . . . . . . . . . . . . . 15

  . . . . . . . . 19

  . . . . . . . . . . . . 21

  . . . . . . . . . . 22

  . . 24

  . 26

  . . . . . . . 27

   . . . . . . . 28

  . . . . . . . . . . . 29

  . . . . . . . . . 61 xxiv

  

  

   . . . . . . . . . . . . . . . . . 90

   91

  . . . . . . . . . . . . . . . . . . . . 92

  

  

  . . . . . . . . . . . . . . . . . . . . . . 92 . . . . 101 101 102 . . . . . . . . . . . . 102 . 103 . . . . . . . . . . . . . . . . . . . 103 . . . . . . . . . . 104

  DAFTAR TABEL

  . . . . . . . . . . 17

  . . . . . . . 22

  . . . . . . . . . . . . 25

   . . . . . . . . . . 34

  

   . . . . . . . . . 35

   . . . . . . . . . . 37

  

  . . . . . . . . . . . . 39

   . . . . . . . . . . . 42

  

  . . . . . . . . . . . 44

   . . . . . . . . . 45

  

   . . . . . . . . 46

  

  . . . . . . . . . . . . . . . . . . . . . . . 48

  . . . . . . . . . . . . . . . . . . . . . . . . 50

  . 55

   . . . . . . . . . . . . . . . . . . . . . . . . . 56

  PENDAHULUAN

1.1 Latar Belakang

  Layanan hosting dan pengembangan aplikasi dalam bentuk Web atau sering disebut dengan Web hosting merupakan layanan yang jamak tersedia di Indonesia. Layanan ini memberikan wadah ba- gi individu, organisasi atau perusahaan besar agar bisa meletakkan aplikasi buatan mereka beserta basis datanya di Internet tanpa perlu dipersulit dengan penyediaan koneksi Internet terdedikasi. Umum- nya, aplikasi yang diletakkan berupa situs halaman portal, Web blog, sistem informasi skala kecil hingga besar.

  Web Hosting memiliki berbagai macam jenis berdasarkan la- yanan yang diberikan kemudahan yang disediakan serta teknik penempatan (host) aplikasinya. Salah satu jenis yang paling umum adalah Shared Web Hosting menggunakan perangkat lunak berna- ma cPanel. Pada jenis ini, aplikasi dari banyak pengguna disimpan dalam satu mesin server yang sama dan setiap aplikasi bisa diakses melalui nama domain yang ditentukan. Konsekuensi dari penyim- panan pada server yang sama adalah adanya kemungkinan bottle-

  

neck baik dari sisi pemrosesan, memori dan jaringan. Selain itu,

  2 konfigurasi dilakukan manual oleh pengguna atau penyewa.

  Selain Shared Web Hosting dan VPS, saat ini terdapat jenis

  

web hosting yang mulai populer yaitu Cloud Web Hosting. Layanan

  ini mengadopsi prinsip komputasi awan yaitu berupa Platform as a Service (PaaS) yang menyediakan jasa platform bagi pengembang Web untuk menempatkan aplikasi mereka di Internet. Layanan ini memberikan fitur tambahan yang menjadi karakteristik komputa- si awan: transparansi akses, multi-platform, skalabilitas, reliabili- tas, keterbukaan akses API dan kemudahan penggunaan. Contoh layanan semacam ini adalah Microsoft Azure, Heroku, OpenShift, Google Apps Engine. Sayangnya, layanan ini masih sangat jarang ada terutama di Indonesia. Kebanyakan layanan yang dipasarkan se- bagai Cloud Web Hosting di Indonesia (dijelaskan pada tabel pada lampiran) masih menggunakan panel kontrol berbasis cPanel yang memiliki fitur terbatas dan hanya didesain untuk shared web

  

hosting. Pihak ketiga kesulitan menawarkan layanan serupa karena

  belum ada perangkat lunak PaaS yang didesain khusus untuk ke- butuhan hosting banyak penyewa (multi-tenant) (perbandingan fi- tur antara hosting cPanel dengan Cloud Web Hosting lainnya di- jelaskan pada tabel pada lampiran). Kebanyakan aplikasi PaaS

  3

  1.2 Rumusan Masalah

  Berikut beberapa hal yang menjadi rumusan masalah dalam Tugas Akhir ini:

  • Bagaimana membangun sistem Platform-as-a-Service (PaaS) yang dirancang untuk penyedia jasa layanan hosting aplikasi?
  • Bagaimana prinsip on-demand self-service, resource pooling dan measured service dalam komputasi awan diterapkan di dalam perangkat lunak PaaS yang dirancang?

  1.3 Batasan Masalah

  Batasan masalah pada Tugas Akhir ini adalah sebagai berikut:

  • Sistem yang dibangun mengadopsi sifat komputasi awan di- batasi pada: self-service, resource pooling dan measured se- rvice.
  • Sistem dibatasi untuk kebutuhan hosting aplikasi, eksekusi aplikasi pada Web (HTTP) serta basis data.
  • Platform bahasa pemrograman yang didukung dibatasi pada:

  Node.js, PHP, Python dan Ruby. Sementara basis data diba- tasi pada MySQL.

  • Modul pembagi muat hanya akan diberlakukan pada aplikasi

  4

1.6 Metodologi

  Langkah dan metode yang dilakukan untuk mengerjakan Tugas Akhir ini dijelaskan sebagai berikut.

  • Penyusunan Proposal Tugas Akhir Penyusunan proposal Tugas Akhir dilaksanakan untuk me- rumuskan masalah serta melakukan penetapan desain dasar sistem yang akan dikembangkan dalam pelaksanaan Tugas Akhir ini.
  • Studi Literatur Untuk membantu proses pengerjaan Tugas Akhir, diperlukan studi lebih lanjut mengenai penggunaan komponen-komponen terkait dengan sistem yang akan dibangun.
  • Desain dan Perancangan Dalam rangka memerinci lebih jauh mengenai bagaimana me- manfaatkan komponen-komponen sistem untuk membangun sistem secara utuh, diperlukan proses desain dan perancang- an dari sistem. Hasil analisis dan desain kemudian ditetapkan menjadi rancangan dasar implementasi sistem.
  • Implementasi Sistem Hasil analisis dan desain kemudian diimplementasikan mela-

  5 penulisan yang digunakan sebagai dasar penyusunan Tugas Akhir.

  • Bab 2. Tinjauan Pustaka. Bab ini berisikan teori penunjang yang berhubungan dengan Tugas Akhir.
  • Bab 3. Desain dan Perancangan. Bab ini membahas desain dasar dari sistem dan perangkat lunak yang akan dirancang sebagai bagian dari pengerjaan Tugas Akhir.
  • Bab 4. Implementasi. Bab ini membahas hasil implementasi dari rancangan sistem beserta tekniknya.
  • Bab 5. Uji Coba dan Evaluasi. Bab ini membahas mengenai teknik uji coba dan hasil keluaransnya sebagai bahan evaluasi terhadap hasil Tugas Akhir.
  • Bab 6. Penutup. Bab ini berisi kesimpulan dari hasil uji coba serta saran untuk pengembangan Tugas Akhir selanjutnya.

  6 Halaman ini sengaja dikosongkan

LANDASAN TEORI

2.1 Web Hosting

  Web Hosting merupakan jasa penyewaan ruang dan koneksi untuk keperluan menempatkan suatu aplikasi atau halaman Web di Inter- net. Layanan ini memberikan kesempatan kepada pihak ketiga yang tidak memiliki koneksi Internet terdedikasi (dengan IP publik) un- tuk menempatkan situs Web mereka melalui server yang disediakan oleh pihak Web Hosting.

  Web Hosting memiliki beberapa jenis berdasarkan metode pe- nempatan berkas Web dan fasilitas yang diberikannya [

  • Shared Hosting, merupakan jenis web hosting yang paling umum. Pada shared hosting, situs Web setiap pelanggan di- letakkan secara bersamaan pada satu server sehingga semua pelanggannya hanya perlu menanggung operasional satu se-

  rver tersebut. Kekurangan utama dari shared hosting adalah

  adanya perebutan sumber daya yang dilakukan jika satu si- tus Web diakses lebih banyak daripada yang lainnya. Namun kelebihannya, harga yang ditawarkan jauh lebih murah diban- dingkan hosting lainnya.

  8 virtualisasi untuk membagi sumber daya satu server, namun pembagian sumber dayanya terjamin sehingga tidak terjadi rebutan sumber daya akibat ketimpangan akses.

  • Dedicated Server merupakan jenis hosting yang memberik- an satu unit server utuh secara fisik dan memberikan akses penuh kepada pelanggannya.
  • Colocation merupakan jenis hosting yang hanya memberik- an perangkat dan ruang bagi pelanggannya untuk membuat pusat data sendiri. Pelanggan diwajibkan menggunakan kom- puter mereka sendiri dan layanan hanya menyediakan listrik, pendinginan, keamanan fisik, dan koneksi Internet.
  • Self Service merupakan layanan hosting yang disediakan sen- diri oleh pelanggannya tanpa memerlukan layanan web hos-

  ting lain. Pelanggan hanya membutuhkan koneksi Internet

  terdedikasi dan bertanggungjawab untuk segala kebutuhan sum- ber daya lainnya.

2.2 Komputasi Awan

  Komputasi awan atau cloud computing menurut definisi dari NIST (National Institute of Standard Technology) merupakan model yang memberikan akses segala macam (ubiquitous), yang nyaman dan

  9 ombinasikannya agar menjadi luaran yang besar serta mampu me- mecahkan komputasi skala besar. Komputasi awan secara spesifik berhubungan dengan teknologi virtualisasi, skalabilitas, kemampu- an inter-operasi, kualitas layanan dan model pelayanan.

2.2.1 Karakteristik

  Berikut adalah beberapa karakteristik umum yang terdapat pada kom- putasi awan menurut definisi dari NIST

  • On-Demand Self Service, pelanggan atau penyewa dapat me- netapkan kemampuan komputasinya tanpa perlu interaksi se- cara manual.
  • Broad Network Access yaitu kemampuan yang tersedia pada jaringan yang dapat diakses melalui media apapun baik thin- client maupun thick-client.
  • Resource Pooling yaitu kemampuan untuk menyatukan sum- ber daya komputasi dari penyedia layanan untuk diberikan ke banyak pelanggan atau penyewa dengan sumber daya fisik maupun virtual yang secara dinamis diberikan atau dilepas sesuai kebutuhan pelanggan. Dalam hal ini, pelanggan tidak memiliki pengetahuan dan kontrol mengenai dimana sebenar- nya suatu sumber daya ditempatkan secara fisik.

  10 pat menjalankan perangkat lunak apa saja didalamnya dan melakukan kendali terhadap sistem operasi, penyimpanan dan aplikasi yang disebarkannya.

  • Platform as a Service (PaaS) memberikan layanan kepada pe- langgan untuk menyebarkan (deploy) aplikasi kepada peng- guna lainnya melalui bahasa pemrograman, pustaka, layan- an dan kakas yang didukung oleh penyedia. Pelanggan tidak perlu mengontrol infrastruktur di bawahnya seperti jaringan,

  server, sistem operasi dan media penyimpanan namun memi- liki kendali terhadap aplikasi yang mereka kembangkan.

  • Software as a Service (SaaS) memberikan layanan kepada pe- langgan untuk menggunakan perangkat lunak aplikasi pada infrastruktur komputasi awan. Aplikasi bisa diakses dari ber- bagai macam klien, baik melalui antarmuka thick-client se- perti aplikasi desktop maupun thin-client seperti peramban Web.

  Ketiga layanan tersebut digambarkan pada Gambar

2.3 Node.js

  Node.js merupakan kerangka kerja lisensi terbuka dan lintas pla- tform berbasis Javascript yang digunakan untuk membangun apli-

  11

  12

  var http = require( 'http' ); function http.createServer( (req, res) {

res.writeHead( 200 , { 'Content-Type' : 'text/plain' });

res.end( 'Hello World\n' ); }).listen( 1337 , '127.0.0.1' );

console.log( 'Server running at http://127.0.0.1:1337/' );

  Gambar 2.2: Contoh Kode Server Web Sederhana Menggunakan Node.js akan memberitahu kepada aplikasi untuk mengelola event tersebut.

  Konsep event berlanjut pada penggunaan teknik yang disebut Asynchronous I/O. Pada teknik ini, program tidak akan terblokir atau dihentikan sementara jika melakukan suatu operasi I/O, me- lainkan program akan tetap berlanjut. Ketika operasi I/O berhasil dilakukan, program akan kembali melakukan operasi semestinya terhadap I/O tersebut. Hal ini sangat berguna pada aplikasi yang sangat berat dalam melakukan proses I/O seperti operasi basis data atau berkas.

  13 Kombinasi kerangka kerja pemrograman ini menjadi alternatif dari kombinasi sebelumnya (LAMP, Linux Apache MySQL, PHP) yang sebelumnya sudah mendominasi. Berbeda dengan LAMP yang masih menekankan pada aplikasi Web HTTP request sederhana, MEAN fokus ke penggunaan Javascript berbasis AJAX untuk me- nambah interaktivitas antara klien dan server sehingga pertukar- an data dapat dilakukan secara efisien dan tanpa perlu perpindah- an anatara halaman. Semua kombinasi perangkat lunak di dalam MEAN menggunakan bahasa pemrograman yang sama, yaitu Java- script, sehingga lebih sederhana dari sisi pemrogram.

2.5 Docker

  Docker merupakan kerangka kerja virtualisasi berbasis sistem ope- rasi Linux 64-bit. Berbeda dengan perangkat lunak virtualisasi la- innya yang melakukan virtualisasi mesin secara penuh, Docker me- lakukan virtualisasi di atas kernel yang berjalan pada sistem opera- si dibawahnya sehingga hanya menggunakan sumber daya memori yang sangat kecil dan dapat berjalan dengan cepat. Docker dikem- bangkan oleh perusahaan Docker.inc dan dilisensikan dibawah li- sensi Apache 2.0.

  Docker menggunakan istilah container untuk setiap mesin vir-

  14 nya setiap container yang ada di dalam server. Docker menggunak- an sistem berkas AUFS untuk mengelola berkas pada setiap conta-

iner dan menggunakan LXC untuk mengatur jalannya container.

Arsitektur dasar dari Docker dapat dilihat pada Gambar

  15 aplikasi dari satu mesin dan mesin lain dengan mudah. [

2.6 HAProxy

  HAProxy merupaka perangkat lunak bebas dan terbuka untuk kebu- tuhan penyeimbangan muat yang membutuhkan ketersediaan server yang tinggi. Perangkat lunak ini mendukung pembagian muat untuk akses HTTP maupun yang berbasis socket TCP. Perangkat lunak ini diklaim sebagai standar de-facto untuk aplikasi load balancer di sis- tem operasi Linux maupun pada platform berbasis komputasi awan

  Gambar 2.4: Ilustrasi Penggunaan HAProxy sebagai Penyeimbang

  16 Halaman ini sengaja dikosongkan

DESAIN DAN PERANCANGAN

  Pada bab ini dibahas mengenai analisis, perancangan dan imple- mentasi dari sistem.

3.1 Kasus Penggunaan

Gambar 3.1 menampilkan kasus penggunaan sistem secara umum dengan penjelasan tertera pada Tabel 3.1

  Tabel 3.1: Daftar Kasus Penggunaan Sistem

  No Nama Aktor Deskripsi

  UC01 Mendaftarkan Non Penggu- Calon penyewa yang ber- Penyewa na minat untuk menggunak- an sistem diwajibkan ut- nuk mendaftarkan sebuah akun ke sistem terlebih da- hulu

  UC02 Mengajukan Penyewa Aplikasi dan basis data Aplika- yang ingin dibuat terlebih si/Basis Data dahulu diajukan oleh pe-

18 No Nama Aktor Deskripsi

  UC04 Pengaturan Penyewa Aplikasi dan basis data Aplika- yang sudah berjalan dapat si/Basis diatur oleh pengguna. Pe- Data ngaturan meliputi: nama domain dan jalan tidaknya instance aplikasi. UC05 Monitor Penyewa Aplikasi dan basis data

  Aplika- yang sudah berjalan da- si/Basis pat dimonitor oleh peng- Data guna. Monitor meliputi penggunaan sumber daya diska, memori, rangkuman log akses dan rangkuman log sistem secara umum. UC06 Unggah Data Penyewa Data berkas aplikasi da-

  Aplikasi pat diunggah oleh penye- wa pemilik aplikasi mela- lui antarmuka berbasis Git. UC07 Kelola Basis Penyewa Basis data dapat dimanipu-

  19 No Nama Aktor Deskripsi UC10 Monitor No- Admin Monitor Node dan Load de dan Load Balancer yang terdaftar se-

  Balancer cara umum seperti peng- gunaan diska, memori dan pembacaan berkas log pen- ting

  20

  3.2.1 Fitur untuk Penyewa

  Berikut adalah fitur yang tersedia untuk penyewa yang sudah ter- daftar pada sistem:

  • Mengajukan aplikasi Web baru dengan memilih jenis kerang- ka kerja, kapasitas ruang diska dan jumlah Node yang digu- nakan.
  • Mengajukan basis data baru dengan jenis MySQL berdasark- an kapasitas diska.
  • Scale-Out untuk menambah Node atau kapasitas diska dari aplikasi Web secara mandiri.
  • Mengelola berkas aplikasi Web melalui antarmuka Git.
  • Mengelola basis data berbasis shell MySQL.
  • Menjalankan dan menghentikan aplikasi yang sedang berjal- an.
  • Memonitor jalannya aplikasi berupa log pesan debug dan log akses.
  • Mengubah nama domain aplikasi untuk DNS Server.

  3.2.2 Fitur untuk Administrator

  Berikut adalah fitur yang disediakan untuk Administrator:

Gambar 3.2 menampilkan diagram arsitektur hubungan antara komponen.

  21 sisi klien penyewa maupun administrator.

  • Load Balancer atau penyeimbang muat sebagai titik awal ke- tika pengguna umum mengakses aplikasi atau halaman Web yang dimiliki oleh penyewa. Komponen ini akan menyeim- bangkan beban akses dari suatu aplikasi Web.
  • Node sebagai server yang menyimpan seluruh aplikasi Web dan basis data serta menjalankannya. Aplikasi dapat disimp- an secara redundan di beberapa Node sekaligus untuk me- ningkatkan kemampuan Load Balancer.

  22 ngoDB.

  Manager dibuat dengan konsep separation of concern yang ter- diri dari Backend berupa REST API dan Frontend berupa aplikasi Web. Penggunaan konsep ini untuk mempermudah pengembangan klien dalam bentuk lain jika diperlukan. Diagram arsitektur Mana- ger tertera pada Gambar

  Gambar 3.3: Desain Arsitektur pada Manager

3.3.2.1 Backend Manager

  Bagian Backend Manager dibuat menggunakan platform Node.js

  23 No Rute Metode Hak Ak-

  ses Aksi

  2 /auth/verify POST Tidak ada Melakukan veri- fikasi keabsahan token 3 /users GET,

  POST, PUT, DELETE

  Admin Melakukan manipu- lasi data pengguna penyewa 4 /apps GET,

  POST, PUT, DELETE

  Admin Melakukan manipu- lasi data aplikasi 5 /apps/app-

  id/operation

  POST Penyewa Melakukan sua- tu operasi pada aplikasi tertentu 6 /dbs GET,

  POST, PUT, DELETE

  Admin Melakukan manipu- lasi data basis data

24 No Rute Metode Hak Ak- Aksi

  ses

  10 /billings GET, Admin Melakukan mani- POST, dan pulasi data tagihan PUT, Penyewa atau billing dari DELETE penyewa 11 /billings GET Admin Membaca spesifi-

  /billing- kasi pesanan untuk

  id/extract diproses ke rute lain

  Proses autentikasi dilakukan dengan melakukan permintaan to- ken pada rute /auth/request. Tokenisasi diimplementasikan berda- sarkan standar JSON Web Token ).

  

3.3.2.2 Frontend Manager

  Bagian Frontend Manager dibuat menggunakan platform yang sama dengan yang digunakan oleh Backend. Hanya saja, akses ke Fron- tend dapat dilakukan melalui peramban Web biasa. Aplikasi Web dibuat menggunakan pustaka Angular.JS (

  

  ). Tabel menjelaskan rute HTTP yang ada pada Frontend

   Manager.

  25 Tabel 3.3: Rute pada Frontend Manager

  No Rute Metode Hak Ak- ses Aksi

  1 /login GET, POST

  Tidak ada Menampilkan ha- laman login dan memrosesnya 2 /admin GET Admin Menampilkan panel manager untuk admin

  3 /user GET Penyewa Menampilkan panel manager untuk pe- nyewa 4 /proxy POST Semua Melakuan pemang- gilan HTTP ke REST API

3.3.3 Desain Rinci Load Balancer

  Load Balancer dibuat untuk mendukung tranparansi akses aplikasi Web maupun basis data tanpa perlu mengekspos pada Node mana

  26

  27 Gambar 3.6: Desain Arsitektur pada Load Balancer

3.3.3.1 Skrip Panggil

  Untuk membantu Manager melakukan manipulasi data Load Ba- lancer sesuai dengan kebutuhan, diperlukan beberapa skrip panggil yang ditempatkan di Load Balancer sebagai berikut:

  • register-Frontend skrip untuk melakukan pendaftaran Fron- tend baru pada suatu aplikasi.
  • register-Backend skrip untuk melakukan pendaftaran Bac- kend baru pada suatu aplikasi.
  • unregister-Frontend skrip untuk melakukan penghapusan da-

  28 Gambar 3.7: Diagram Interaksi Proses Akses contoh.com yang Di- jalankan di Sistem oleh Pengakses. sasi/replikasi master-master masih belum bisa diaplikasikan secara

  29 Gambar 3.8: Desain Arsitektur setiap Node mengikuti data aplikasi dari Root Node. Penyewa dapat mengung- gah data aplikasi (berupa kode tereksekusi) melalui Git ke Root No- de dari aplikasi bersangkutan. Kemudian ketika aplikasi dijalankan, semua Slave Node akan melakukan sinkronisasi data aplikasi dari Root Node.

3.3.4.1 Citra Docker pada Node

  Aplikasi atau basis data kemudian dijalankan ke dalam sebuah con-

  

tainer berbasis Docker menggunakan citra yang sesuai dengan pla-

  tform bahasa pemrograman atau basis data bersangkutan. Pada ran-

   ) agar pengguna bisa memasang paket Python

   tambahan yang diperlukan tanpa perlu memanipulasi isi citra.

  • ruby19-thin citra untuk container aplikasi berbasis Ruby 1.9 dengan mesin FastCGI berbasis Thin (

  

  

  • mysql-single citra untuk container MySQL 5.5. Hanya ber- jalan satu Node untuk satu instance data.

3.3.4.2 Skrip Panggil

  Untuk mengelola aplikasi dan basis data yang disimpan pada setiap Node, maka dibuat beberapa skrip panggil berbasis CLI yang bisa dipanggil oleh Manager ketika melakukan aksi dari operasi yang di- terima oleh admin atau penyewa. Berikut adalah daftar skrip pang- gil yang dibuat:

  • create-app skrip untuk membuat aplikasi baru pada Root No- de. Skrip ini tidak perlu dipanggil pada Slave Node.
  • start-app skrip untuk menjalankan suatu aplikasi pada suatu

  Node melalui container Docker. Skrip dipanggil untuk setiap Node yang memiliki aplikasi bersangkutan.

  • stop-app skrip untuk menghentikan suatu aplikasi pada suatu Node.

  31 data melalui container Docker

  • status-node skrip untuk melihat status suatu Node secara umum.
  • log-node skrip untuk membaca berkas log pada Node.

  32 Halaman ini sengaja dikosongkan

  IMPLEMENTASI

  Bab ini membahas implementasi perancangan sistem PaaS secara rinci. Pembahasan dilakukan untuk setiap komponen yang sudah dijelaskan pada bab sebelumnya yaitu: Manager, Load Balancer dan Node.

4.1 Lingkungan Implementasi

  Lingkungan Implementasi dan pengembangan dilakukan menggu- nakan komputer PC dengan spesifikasi Intel(R) Core(TM) i3 de- ngan memori 8GB. Perangkat lunak yang digunakan dalam proses pengembangan antara lain:

  • Sistem operasi Ubuntu Linux 14.04.1 LTS.
  • Desktop xfce.
  • Editor teks vim.
  • git 1.9.1 untuk pengelolaan versi kode program.
  • Node.js 0.10 untuk kerangka kerja pemrograman.
  • Docker 1.2.0 untuk uji coba citra cakram (disk images) Doc- ker.
  • Paket TEXlive untuk penulisan buku tugas akhir.

  34

4.2.1 Backend Manager

  Implementasi Backend manager dibagi berdasarkan rute REST API yang sudah dijelaskan pada Tabel Setiap rute dasar dibuat dalam pengendali / controller terpisah.

4.2.1.1 Pengendali /auth

  Untuk mengatur hak akses pada setiap rute, sistem mengimplementasikan penggunaan token yang wa- jib dimasukkan oleh pengguna ketika mengakses rute tertentu yang membutuhkan hak akses khusus. Proses untuk mendapatkan token pertama kali dan memerifikasi token dilakukan melalui pengenda- li . Pengendali ini terdiri dari dua sub-rute: rute untuk proses meminta to-

  /auth /auth/request

  ken, rute untuk verifikasi keabsahan token. Implementasi dari kedua sub-rute dapat

  /auth/verify

  dilihat pada Tabel ) pada Node.js.

  Tabel 4.1: Implementasi Pengendali

  /auth Hak No Rute

  Langkah Proses Akses Masukan Luaran

  1. Jika dan ter-

  Username Password

  ,

  Username

  POST ,

  Token

  daftar 1 -

  Passwo- /request Role

  • Berikan dan

  token role rd Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak yang benar

  Role

  1. Jika

  No Rute Hak Akses Masukan Luaran Langkah Proses

  2 POST

  valid dengan

  ,

  Token

  Boolean (1)

  • Token

  Role

  /verify

  • Kembalikan TRUE

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

4.2.1.2 Pengendali /users

  Pengendali ini berfungsi untuk melakukan manipulasi data pengguna penyewa. Rute pengendali

  /users dapat diakses melalui metode GET, POST dan PUT sesuai yang dijelaskan pada Tabel

  Tabel 4.2: Implementasi Pengendali

  /users No Rute Hak Akses Masukan Luaran Langkah Proses

  1 GET

  /

  A - Data penyewa (n)

  1. Kembalikan data semua penyewa

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

  36 Hak No Rute

  Langkah Proses Akses Masukan Luaran

  Data GET

  /use-

  • 2 A penyewa

  1. Kembalikan data penyewa userId

  rId

  (1) Data Data

  1. Lakukan pembuatan penyewa baru

  3 POST A penyewa penyewa

  /

  2. Kembalikan data penyewa yang su- (1) (1)

  userId

  dah diberi

  1. Ubah data penyewa sesuai yang di- Data Data

  PUT

  /use-

  minta

  4 A penyewa penyewa

  rId

  2. Kembalikan data penyewa hasil pe- (1) (1) ngubahan

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

4.2.1.3 Pengendali /apps

  Pengendali ini berfungsi untuk melakukan manipulasi data aplikasi dari setiap penyewa. Tabel men- jelaskan implementasi sub-rute dari pengendali rute .

  

/apps

  Pengendali ini memiliki rute khusus bernama POST yang memiliki ber-

  /apps/app-id/operasi bagai fungsi untuk melakukan operasi pada aplikasi. Daftar operasi dapat dilihat pada Tabel Tabel 4.3: Implementasi Pengendali

  /apps No Rute Hak Akses Masukan Luaran Langkah Proses

  • Jika T maka kembalikan data aplikasi milik T • Jika A maka kembalikan semua data aplikasi

  1 GET

  /

  T-A - Data apli- kasi (n)

  1. Apakah pengguna T atau A?

  • Jika T maka kembalikan data aplikasi

  2 GET

  /ap- pId

  T-A - Data apli- kasi (1)

  1. Apakah pengguna T atau A?

  appId jika memang milik T tersebut.

  • Jika A maka kembalikan data aplikasi

  appId Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

  38 Hak No Rute

  Langkah Proses Akses Masukan Luaran

  1. Cari Node yang masih bisa diisi untuk apli- kasi baru sesuai jumlah Node yang diminta

  2. Jika tersedia cukup jumlah Node

  • Lakukan pembuatan aplikasi baru Data apli- Data apli-

  3 POST A

  /

  • Panggil skrip pada Root

  create-app

  kasi (1) kasi (1) Node.

  • Kembalikan data aplikasi yang sudah

  appId

  diberi

  1. Ubah data aplikasi sesuai yang diminta

  2. Jika perlu melakukan pengubahan pada Ro- Data apli- Data apli- ot Node

  4 PUT A

  /appId

  kasi (1) kasi (1)

  • Panggil skrip pada Root

  modify-app Node.

  3. Kembalikan data aplikasi hasil pengubahan

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak start-app .

  1. Untuk setiap Node yang menyimpan aplika- si tersebut

  1. Hapus data aplikasi

  1 start Menjalankan aplikasi pada semua Node

  No Operasi Masukan Langkah Proses

  Tabel 4.4: Daftar Operasi pada Aplikasi

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

  pada Root Node dan Slave Node.

  remove-app

  2. Panggil skrip

  A - -

  No Rute Hak Akses Masukan Luaran Langkah Proses

  /appId

  6 DELETE

  Penjelasan operasi pada aplikasi dapat dilihat pada Tabel

  T Operasi -

  /ope- ration

  /ap- pId

  5 POST

  • Panggil skrip

  40 No Operasi Masukan Langkah Proses

  1. Untuk setiap Node yang menyimpan aplika- Menghentikan aplikasi pa- si tersebut

  2 stop da semua Node

  • Panggil skrip .

  stop-app

  1. Untuk setiap Node yang menyimpan aplika- Mengetahui status jalan- si tersebut

  3 statusAllNode nya aplikasi pada semua • Panggil skrip .

  status-app

  Node • Kembalikan hasil pemanggilannya. Mengetahui status jalan- nya aplikasi pada Root No-

  1. Panggil skrip pada Root No-

  status-app

  4 statusRootNode de beserta penggunaan pe- de. nyimpanan dan status re- 2. Kembalikan hasil pemanggilannya. pository Git didalamnya.

  Membaca berkas log seca- 1. Panggil skrip untuk setiap Node.

  log-app

  5 readLog ra raw dari aplikasi.

  2. Kembalikan hasil pemanggilannya.

  • Panggil skrip
  • Kombinasikan hasilnya jadi satu.

  2. Panggil skrip

  Pengendali ini berfungsi untuk melakukan manipulasi data basis data dari setiap penyewa. Tabel

  pada load balancer.

  register-Frontend

  4. Panggil skrip

  pada lo- ad balancer.

  register-Backend

  3. Panggil skrip

  pa- da load balancer.

  unregister-Frontend

  pada load balancer.

  No Operasi Masukan Langkah Proses

  unregister-Backend

  1. Panggil skrip

  Memuat ulang data aplika- si pada load balancer agar bisa diakses.

  7 reloadLoad- Balancer

  2. Analisa dan kembalikan hasilnya dalam bentuk laporan HTML.

  untuk berkas access.log.

  log-app

  1. Untuk setiap Node yang menyimpan aplika- si tersebut

  6 accessReport Mengambil data access.log pada aplikasi untuk setiap Node.

4.2.1.4 Pengendali /dbs

  42 Sama seperti , pengendali ini juga memiliki rute khusus operasi yang daftarnya dapat dilihat /apps pada Tabel

  Tabel 4.5: Implementasi Pengendali

  /dbs Hak No Rute

  Langkah Proses Akses Masukan Luaran

  1. Apakah pengguna T atau A?

  • Jika T maka kembalikan data basis da- Data ta milik T

  1 GET - T-A basis data

  /

  • Jika A maka kembalikan semua data (n) basis data

  1. Apakah pengguna T atau A?

  • Jika T maka kembalikan data basis da- Data ta dbId jika memang milik T tersebut.
    • 2 GET T-A basis data

  /dbId

  • Jika A maka kembalikan data basis da- (1) ta dbId

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

  Hak No Rute Langkah Proses Akses Masukan Luaran

  1. Lakukan pembuatan basis data baru Data Data 2. Panggil skrip pada Root Node.

  create-db

  3 POST A basis data basis data

  /

  3. Kembalikan data basis data yang sudah di- (1) (1) beri dbId

  1. Ubah data basis data sesuai yang diminta

  2. Jika perlu melakukan pengubahan pada Ro- Data Data ot Node

  4 PUT A basis data basis data

  /dbId

  • Panggil skrip pada Root

  modify-db

  (1) (1) Node.

  3. Kembalikan data basis data hasil pengubah- an POST

  /dbId Penjelasan operasi pada basis data dapat dili-

  • 5 T Operasi

  /opera- hat pada Tabel tion

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

  44 No Rute Hak Akses Masukan Luaran Langkah Proses

  start-db

  1. Panggil skrip

  Membaca berkas log seca- ra raw dari basis data.

  2. Kembalikan hasil pemanggilannya. 4 readLog

  status-db .

  1. Panggil skrip

  pada Node 3 status Mengetahui status jalan- nya basis data

  stop-db

  1. Panggil skrip

  pada Node 2 stop Menghentikan basis data

  1. Panggil skrip

  6 DELETE

  1 start Menjalankan basis data pa- da Node

  No Operasi Masukan Langkah Proses

  Tabel 4.6: Daftar Operasi pada Basis Data

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

  remove-db pada Root Node.

  2. Panggil skrip

  1. Hapus data basis data

  A - -

  /dbId

  log-db 2. Kembalikan hasil pemanggilannya.

4.2.1.5 Pengendali /nodes Pengendali ini digunakan untuk memanipulasi data Node dan load balancer yang terdaftar pada sistem.

  A Data No- de (1)

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

  2. Kembalikan data Node hasil pengubahan

  1. Ubah data Node sesuai yang diminta

  Data nodes (1)

  A Data No- de (1)

  /node- Id

  4 PUT

  nodeId

  2. Kembalikan data Node yang sudah diberi

  1. Lakukan pembuatan Node baru

  Data No- de (1)

  Penjelasan implementasi pengendali terdapat pada tabel .

  Tabel 4.7: Implementasi Pengendali

  3 POST

  nodeId

  1. Kembalikan data Node

  A - Data No- des (1)

  /node- Id

  2 GET

  1. Kembalikan data semua Node

  A - Data No- de (n)

  /

  1 GET

  /nodes No Rute Hak Akses Masukan Luaran Langkah Proses

  /

  46 No Rute Hak Akses Masukan Luaran Langkah Proses

  2. Kembalikan hasilnya ke klien

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

  A - Data billing (n) 1. Kembalikan data semua billing

  /

  1 GET

  /billing No Rute Hak Akses Masukan Luaran Langkah Proses

  Tabel 4.8: Implementasi Pengendali

  Pengendali ini digunakan untuk memanipulasi data billing atau tagihan pemesanan yang dikirimkan oleh pengguna dan yang terdaftar pada sistem. Penjelasan implementasi pengendali terdapat pada Tabel

  Keterangan: T: Hak Akses Penyewa, A: Hak Akses Admin, (1) Data Tunggal, (n) Data Jamak

  1. Panggil kakas hoster-log-node pada Node bersangkutan.

  5 GET

  A - Berkas log

  deId /log /logFile

  6 GET /no-

  2. Kembalikan hasilnya ke klien

  1. Panggil kakas hoster-status-node pada No- de bersangkutan.

  A - Data sta- tus Node (1)

  /status

  /node- Id

4.2.1.6 Pengendali /billings

  No Rute Hak Akses Masukan Luaran Langkah Proses

  2. Kembalikan data billing yang sudah diberi

  (Antarmuka Penyewa) diatur melalui pengendali sisi