Dewacloud blog featured image

Dewacloud PaaS: Cloud Platform Terbaik untuk Hosting Aplikasi & Environment Ruby

Ruby merupakan bahasa pemrograman populer open source yang memiliki sintaks kuat, powerful, mudah dibaca, dipahami, maupun ditulis.

Ruby mengkombinasikan best practices dari berbagai solusi sehingga menjadikan bahasa pemrograman yang berorientasi objek unik, dengan tujuan agar sederhana dan menyediakan fitur basic dan special object-oriented.

Seperti exception handling, operator overloading, iterators & closures, garbage collection dan masih banyak lagi. 

Dewacloud PaaS menyediakan integration yang out-of-box dari server web Ruby. Menyediakan tools management dan automation (Ruby on Rails web-development framework) untuk hosting yang nyaman dan pengembangan aplikasi Ruby secara maksimal.

Nah, untuk mengetahui lebih lanjut tentang Ruby. Kita akan membahas fitur khas dari Ruby hosting dan memperkenalkan Ruby yang ada di Dewacloud PaaS.

Hosting untuk Environment Ruby

Dewacloud PaaS menyediakan topology wizard yang powerful dan intuitif untuk mengatur hosting environment baru. 

Hosting environment Ruby

Kamu bisa coba beralih ke tab bahasa Ruby, pilih application server dan engine version-nya, lalu tambahkan software stack jika diperlukan. Selain itu, kamu juga bisa mengatur parameter lain seperti cloudlet (RAM dan CPU), disk space, public IPV4/IPV6, jumlah node dan lainnya.

Catatan : Semua instance merupakan containers yang sepenuhnya terisolasi dan fully independent. Selain itu, node yang sudah diskalakan otomatis akan didistribusikan ke seluruh server fisik atau VM untuk memastikan high availability.

Server untuk Aplikasi Berbasis Ruby

Dewacloud PaaS menyediakan Ruby Application Servers berdasarkan software stacks Apache dan NGINX. Keduanya dikonfigurasi untuk memanfaatkan framework Ruby on Rails, untuk mengimplementasikan aplikasi web dan server aplikasi Passenger secara default. 

Dengan ini, jika kamu perlu stack NGINX RUBY dapat dengan mudah dikonfigurasi untuk bekerja dengan server bawaan yang berbeda:

  • Passenger : merupakan salah satu aplikasi server yang memiliki banyak fitur untuk Ruby, server ini sangat cocok digunakan untuk aplikasi web modern dan microservice APIs
  • Puma : merupakan web server Ruby yang berorientasi pada kecepatan dan parallelism karena penguraian protokol HTTP 1.1 yang cepat dan akurat. 
  • Unicorn : server HTTP yang memanfaatkan fitur kernel mirip seperti Unix/Unix yang melayani klien secara cepat pada koneksi low-latency dan high-bandwidth.

Versi Ruby yang Didukung oleh Dewacloud

Versi yang didukung ketika penulisan artikel ini diantaranya yaitu.

  • 2.7.3
  • 2.6.8
  • 3.0.2

Kamu bisa memilih versi Ruby pada topology wizard selama pembuatan environment baru di Dewacloud. Serta menyesuaikannya untuk instance yang ada melalui container redeployment.

Ruby Application Deployment

Dewacloud PaaS dapat mengotomatiskan proses deployment untuk server aplikasi Ruby dan dan NGINX Ruby yang dikelola menggunakan :

  • application archive yang di upload dari komputer lokal kamu atau melalui URL eksternal. 
  • remote VCS repository seperti Github.
    deploy to application servers

Saat melakukan deploying Ruby application, kamu hanya bisa menggunakan satu context (ROOT). Namun, kamu bisa memilih 3 dari Deployment Types (RAILS_ENV) seperti :

  • development: untuk memuat ulang semua application classes dan mematikan caching (dapat mempercepat development cycle).
  • production: untuk mengaktifkan semua caching.
  • test: untuk menghapus database diantara test runs.

Kamu bisa beralih ke deployment types lainnya pada drop-down seperti di bawah ini.
tipe deployment Ruby di Dewacloud

Ruby Dependency Management

Semua instance Ruby pada Dewacloud PaaS sudah dilengkapi dengan Bundler dependency management untuk pelacakan otomatis dan menginstal gems dan versi yang tepat berdasarkan projek kamu. 

Apabila projek kamu memiliki file Gemfile di folder root. Maka otomatis akan menyelesaikan dependencies dengan Bundler, setelah melakukan deployment ke server, dan kamu tidak perlu melakukan intervensi manual.

Selain itu, jika kamu memerlukan, kamu bisa menyertakan Ruby Framework ke dalam Gemfile kamu (Sinatra, Rack, therubyracer, Ramaze dan yang lain). 

Atau bisa juga menggunakan Ruby on Rails, salah satu framework paling populer untuk mengembangkan dan mengimplementasikan aplikasi web yang tersedia secara default.

Konfigurasi Ruby Post-Deploy

Untuk melakukan otomatisasi repetitive actions yang perlu dilakukan pada projek Ruby setelah aplikasi di-deploy (misalnya db:migrate), file rake_deploy (terletak pada folder root projek) dapat dibuat. 

File tersebut berisi daftar perintah / commands (masing – masing terdapat pada baris baru atau berbeda). Nantinya akan dieksekusi secara berurutan via rake tool setiap restart dari node Apache/NGINX. Apabila eksekusi berhasil maka file rake_deploy dihapus secara otomatis.

Domains Management

Kamu bisa memberikan custom domain pada aplikasi Ruby tersebut, untuk menggantikan yang default. Berdasarkan environment topology, ada beberapa hal yang harus kamu lakukan :

  • CNAME Redirect : apabila kamu menggunakan Shared Load Balancer, ini direkomendasikan untuk environment development dan test. 
  • DNS A Record : apabila kamu menggunakan IP Publik, ini dapat menangani trafik yang tinggi dan cocok untuk environment production.

Untuk mengalihkan trafik dari environment satu ke environment lain (misalnya mengarahkan user ke aplikasi yang lebih baru), fungsi swap domains harus digunakan. Ini juga tersedia sebagai metode API/CLI SwapExtIps.
custom domain Ruby

Automatic Vertical Scaling

Salah satu key-features dari Dewacloud PaaS yaitu menyediakan pengaturan dinamis terkait jumlah resources (RAM dan CPU) yang dibutuhkan oleh node kamu dan load saat ini tanpa intervensi manual. 

atur automatic vertical scaling

Kamu cukup mengatur limit cloudlet sesuai yang dibutuhkan, (masing-masing 128 MiB RAM dan 400 MHz CPU) untuk server aplikasi Ruby kamu, dan yang lain akan otomatis ditangani oleh platform.

Dengan mengatur ini, kamu akan mendapatkan keuntungan terkait Pay-per-use. Kamu tidak perlu menebak lagi kira – kira berapa beban yang masuk. 
pay per use

Sehingga nantinya kamu tidak akan membayar lebih untuk resource yang tidak digunakan. Dan lebih menghemat waktu juga, karena platform akan menghilangkan kebutuhan untuk penyesuaian terkait beban atau melakukan perubahan arsitektur secara manual.

Manual Horizontal Scaling

Horizontal Scaling via Dewacloud PaaS dapat dilakukan dengan mudah, bahkan kamu hanya perlu memilih jumlah node di bagian topology wizard, seperti gambar di bawah nanti. Selain itu, kamu bisa memilih antara dua mode scaling berikut.

  • Stateless – secara bersamaan akan membuat semua node baru dari template gambar dasar. 
  • Stateful – secara berurutan akan menyalin sistem file dari master container ke node baru. 

stateful vs stateless horizontal scaling

Baca juga: Stateful dan Stateless Horizontal Scaling di Dewacloud PaaS

Catatan: untuk request distribution yang tepat, load balancer akan otomatis ditambahkan pada Ruby server scaling.

Jumlah maksimum server dengan tipe yang sama, pada satu environment tergantung pada pengaturan penyedia hostingnya. Tapi biasanya batasnya yaitu 16 node, dan dapat diperbesar lagi dengan mengirimkan request ke team support.

Automatic Horizontal Scaling

Selain dilakukan secara manual, horizontal scaling juga dapat dilakukan secara otomatis untuk environment kamu melalui triggers, dan nantinya akan memantau perubahan dalam pemuatan nodes. Baik itu menambah atau mengurangi jumlahnya dengan tepat.

Caranya mudah saja, pilih environment-nya masuk ke bagian Settings > Auto Horizontal Scaling. Pilih layer dan resource yang akan dipantau (CPU, RAM, Network, Disk I/O dan Disk IOPS). 

Selanjutnya sesuaikan kondisi dan spesifikasi yang tepat seperti tampilan di bawah ini.
auto horizontal scaling

Sampai sini kamu sudah berhasil mengatur automatic horizontal scaling. Bagaimana, mudah sekali kan?

Kesimpulan

Itulah beberapa hal terkait Ruby pada Dewacloud PaaS.  Selain itu, masih banyak lagi fitur bawaan lainnya, untuk tahu lebih lanjut terkait Ruby dan fiturnya. Segera gunakan Dewacloud PaaS untuk aplikasi kamu.