This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Hosting TradisionalPaaS: Shared Web Hosting dengan LAMP
Secara arsitektural, layanan hanya menyediakan satu platformseragam (yaitu LAMP) dan aplikasi diletakkan di server yang samapada sebuah konfigurasi: semua web berada di satu prosesApache2 dan semua basis data berada di satu proses.
Permasalahan: adanya peluangbottleneck yang besar dankemampuan platform yangterbatas.Keuntungan: Layanan inimudah disediakan oleh siapasaja, sangat murah dan mudahdigunakan.
Hosting TradisionalIaaS: Virtual Private Server (VPS)
Memberikan kendali penuh terhadap sistem operasi pada satuserver (dengan satu nomor IP publik) berkat teknologi virtualisasiberbasis hypervisor
Permasalahan: susahnyakonfigurasi dan perawatan.Keuntungan: konfigurasi yangluas dan dukungan berbagaiplatform asalkan didukung olehsistem operasi induk.
Rumusan Masalah: Bagaimana membangun layanan PaaSuntuk penyedia jasa hosting aplikasi dengan prinsip komputasiawan: self-service, resource-pooling dan measured service.
Tujuan: Menghasilkan sistem PaaS untuk hosting yang siapdigunakan.
Manfaat: Memberikan peluang kepada pihak ketiga yangingin membuat layanan hosting berbasis komputasi awandengan dukungan multi-platform, multi-tenancy dandukungan scaling.
Mendukung empat platform Web: PHP5, Python 2.7,Node.js, dan Ruby 1.9. (multi-platforms)
Platform Web dijalankan dalam container virtual untuksandboxing dan bisa berjalan di banyak node sekaligus(multi-nodes).
Mendukung banyak aplikasi untuk banyak pengguna.(multi-tenancy)
Basis data dibatasi pada platform MySQL 5.5 dan berjalanmaksimal pada satu node.
Sistem billing/penagihan tradisional: setiap billing harusdiverifikasi oleh admin secara manual seperti layanan cPanel diIndonesia. (Bisa dikembangkan di kemudian hari)
Metrik layanan: jumlah Node, jumlah memori, jumlah ruangcakram penyimpanan.
Memberikan akses yang ubiquitous yang nyaman dan aksesjaringan sesuai kebutuhan pada kumpulan sumber dayakomputer yang dapat dikonfigurasi sehingga bisa ditetapkansecara cepat dengan usaha manajemen seminimal mungkin.Karakteristik 2 :
On-Demand Self-Service: penetapan konfigurasi tanpa perluinteraksi secara manual.
Broad Access Network: bisa diakses melalui media apa saja.
Resource Pooling: menyatukan banyak sumber dayakomputasi secara dinamis.
Rapid Elasticity: penetapan sumber daya secara fleksibel.
Measured Service: memberikan kontrol terhadap sumber dayamelalui pengukuran metrik.
2Definisi menurut National Institute of Standard Technology (NIST)
Node.js: kerangka kerja berbasis Javascript untukpengembangan aplikasi Web dan jaringan. Digunakan baik diBackend dan Frontend.
MEAN Framework: kombinasi Node.js dan tiga kerangkakerja lain yaitu Angular JS (Antarmuka frontend dinamis),MongoDB (basis data NoSQL) dan Express.js (kerangka kerjabackend).
Docker: teknologi virtualisasi tingkat sistem operasi (dibawah kernel yang sama) pada Linux.
HAProxy: sistem penyeimbang muat/load balancer padatingkat HTTP dan TCP.
Platform Pengembangan SistemVirtualisasi berbasis Docker
Docker pada dasarnya merupakan pengembangan chrootdengan implementasi cgroup pada kernal Linux untukmengelompokkan proses dan resource lainnya pada setiapcontainer.
Satu instance Docker dijalankan dalam satu buah citracakram/disk images yang sudah disiapkan.
Manager memberikan aksi ke Load Balancer melalui KakasPanggil yang disimpan pada Load Balancer (Node.js):register-frontend, register-backend, unregister-frontend,unregister-backend, reload-proxy.
Setiap instance aplikasi dan basis data pada setiap Nodedijalankan secara sand-box didalam suatu kontainer berbasisDocker sehingga tidak saling menganggu satu sama lain.Manager memberikan aksi ke Load Balancer melalui KakasPanggil yang disimpan pada Node: start-app, stop-app,start-db, stop-db, status-app, status-db, dll.Aplikasi multi-node: Disimpan dalam 1 rootNode untuk aksespenyimpanan utama dan (n-1) slaveNode untuk aksescadangan.
Setiap rute diberikan hak akses tertentu: Admin, Penyewaatau Non-Pengguna.
Akses dilakukan melalui token yang didapat dari rute /auth(authController)
Daftar pengendali :
authController (/auth): Meminta dan verifikasi token aksesusersController (/users): Kelola tenantappController (/apps): Kelola CRUD aplikasi dan operasi keNode/Load Balancer.dbController (/dbs): Kelola CRUD basis dan operasi ke Node.nodeController (/nodes): Kelola Node dan Load Balancer padasistembillingController (/billing): Kelola dan proses billing daripenyewa.
Aplikasi utama harus berada pa-da berkas index.js dan berjalanpada port 3000. Paket yang di-butuhkan didefinisikan pada ber-kas package.json untuk kemu-dian dipasangkan pada saat prosesstart aplikasi.
php55-fpm Nginx, php5,php5-fpm
Aplikasi utama harus berada pa-da berkas index.php. Paketyang dibutuhkan didefinisikan pa-da berkas composer.json untukkemudian dipasangkan pada saatproses start aplikasi menggunak-an composer
Nama Layanan Penempatan Aplikasiruby19-thin Nginx, Ruby,
BundlePaket yang dibutuhkan didefini-sikan pada berkas Gemfile un-tuk dipasang menggunakan per-intah gem install pada saatmenjalankan aplikasi pertama ka-linya. Berkas config.ru ak-an menjadi titik awal dari apli-kasi dan harus memuat modulBundler agar dapat memuat pa-ket yang diletakkan pada direktorivendor/bundle.
create-app skrip untuk membuat aplikasi baru pada rootNode. Skrip ini tidak perlu dipanggil pada slave Node.
start-app skrip untuk menjalankan suatu aplikasi pada suatuNode melalui container Docker. Skrip dipanggil untuk setiapNode yang memiliki aplikasi bersangkutan.
stop-app skrip untuk menghentikan suatu aplikasi pada suatuNode.
status-app skrip untuk melihat status berjalannya aplikasipada suatu Node
log-app skrip untuk melihat data berkas log pada suatuaplikasi melalui container Docker
start-db skrip untuk menjalankan suatu basis data pada suatuNode melalui container Docker. Skrip dipanggil untuk setiapNode yang memiliki basis data bersangkutan.
stop-db skrip untuk menghentikan suatu basis data padasuatu Node.
status-db skrip untuk melihat status berjalannya basis datapada suatu Node
log-db skrip untuk melihat data berkas log pada suatu basisdata melalui container Docker
status-node skrip untuk melihat status suatu Node secaraumum.
log-node skrip untuk membaca berkas log pada Node.
Semua uji unit yang dilakukan menunjukkan warna hijau(berhasil) dengan variasi waktu tertentu.
Waktu terlama (5 - 10 detik) dilakukan pada operasi untukmembuat dan menjalankan aplikasi dan basis data karenaadanya waktu yang diperlukan untuk melakukan pemanggilanskrip panggil, pembuatan direktori/kontainer baru pada Nodeuntuk melakukan proses ini.
Terdiri dari dua macam aplikasi untuk setiap platform: dengandan tanpa basis data.Aplikasi dengan basis data: Menampilkan JSON utuh yangdiambil (SELECT) dari basis data.Aplikasi tanpa basis data: Menampilkan JSON utuh yangdiambil dari berkas lokal.
Apache BenchmarkPerintah: ab -c 100 -n 300 http://aplikasi.com
(Konkurensi 100 dengan jumlah 300 request)Dilakukan pada tiga komputer penguji yang berbeda di dalamjaringan AJK. (Sehingga total konkurensi 300 dengan jumlah1500 request per aplikasi)Dilakukan perhitungan ketersediaan : Akses 200 OK berartiSukses, Akses selain itu (404, 5xx) atau RTO (¿ 30 detik)dianggap Gagal.
Aplikasi dengan jumlah Node yang lebih banyak cenderungmemiliki ketersediaan yang baik (bahkan mencapai 100%).
Aplikasi dengan basis data cenderung memiliki ketersediaanyang rendah (karena jumlah instance basis data yang dibatasi).
Platform nodejs-nodemon dan php55-fpm cenderungmemiliki ketersediaan rendah karena pengaturan bawaan daricitra cakram Docker tersebut yang belum optimal.
Perbedaan kecepatan akses kemungkinan disebabkan karenabeban jaringan di lab pada saat pengujian.
Uji Kapasitas dan PerformaPembahasan Hasil – Tambahan
Pengujian dilakukan dengan skrip dan bisa direproduksiulang untuk sekian kali percobaan, terdapat antarmuka diAdmin untuk keperluan ini.
Jika benchmark dilakukan berkali-kali pada setup yang sama,terdapat sedikit perubahan ketersediaan: Misal: Jumlahketersediaan satu aplikasi 2% lebih rendah daripadabenchmark sebelumnya. Namun perubahan ini cenderungseragam
Dari sisi pengelolaan Nodedan Load Balancer, APIBackend dan panel kontrolmampu mengelolapembuatan, eksekusi danpengelolaan aplikasi danbasis data melaluiimplementasi pemanggilanskrip panggil.
Namun karena billing masihbersifat tradisional, prosespembuatan dam scalingaplikasi/basis data padaimplementasi masih harus
disetujui Admin. (Bisadikembangkan di kemudianhari).
Melalui penggunaan Docker, resource untuk setiapaplikasi/basis data bisa diatur sedemikian rupa dan bisadijalankan secara simultan dengan transparansi yang tinggi.
Banyak aplikasi tidak serta merta membuat ketersediaan turunmenjadi 0% (dapat dilihat dari hasil uji performa aplikasi).
Implementasi Prinsip Komputasi AwanMeasured Service
Layanan dibuat dengan beberapa variabel yang terukur sejakawal :
Jumlah NodeJumlah MemoriJumlah Ruang Penyimpanan
Variabel tersebut sudah di-enforce oleh sistem secaraterintegrasi, jumlah Node di-enforce oleh Manager, jumlahMemori di-enforce oleh Docker dan Ruang Penyimpanandibatasi menggunakan sistem quota di Linux.
Sistem PAAS untuk kebutuhan pengembangan aplikasi danWeb hosting berbasis multi-tenancy dapatdiimplementasikan menggunakan berbagai kombinasikerangka kerja yaitu pemrograman berbasis Node.js danvirtualisasi berbasis Docker.Rata-rata jumlah aplikasi yang dapat tertampung padakonfigurasi tiga Node dengan masing-masing memori 1 GBadalah sekitar 12 - 18 aplikasi tergantung dari konfigurasiaplikasi. Secara umum, aplikasi dengan jumlah Node lebihbanyak memiliki ketersediaan paling tinggi hingga 100%,sementara aplikasi dengan basis data memilikikecenderungan ketersediaan yang lebih rendah daripadaaplikasi yang tidak terkoneksi basis data sama sekali.Prinsip komputasi awan yaitu self-service, resource-poolingdan measured service dapat diimplementasikan seperti yangsudah dijelaskan sebelumnya.
Perlu adanya penelitian lebih lanjut dari sisi ekonomimengenai adanya layanan semacam ini apakah dapatdiaplikasikan dalam dunia nyata.Penggunaan Docker untuk menjalankan proses server Webdan basis data perlu diteliti lebih lanjut dalam hal konfigurasiyang cocok sehingga bisa menjalankan aplikasi Web penggunadengan efisien dan handal.Perlu adanya penelitian lebih lanjut mengenai penggunaanbasis data dengan sistem multi-node sehingga bisamemaksimalkan luaran kecepatan akses basis data padasistem ini.Perlu adanya peningkatan pada sistem penagihan secaraotomatis misalnya dengan mekanisme poin dan kreditsehingga proses yang membutuhkan otorisasi biaya sepertiscaling dan pembuatan aplikasi baru dapat dilakukan secaraotomatis tanpa memerlukan persetujuan dari administrator.