Disclaimer: apa yang saya ceritakan adalah sails versi 0.12.xx. Beberapa bulan lalu sudah ada sails versi 1 dan saya belum mengadopsinya.
Ada yang belum pernah mendengar sama sekali apa itu sails? jika Kamu belum tidak masalah dan sangat wajar karena sails memang tidak sebooming framework backend di nodejs lainnya semisal express, koajs, adonis, meteor dll. Meskipun sebetulnya sails dibangun di atas expressjs.
Saya seringkali mendapat pertanyaan yang kurang lebih begini, “Mas kalo di node pake framework backend apa?”
Seringkali pula saya langsung jawab, saya pake sails. Akan tetapi ternyata banyak yang tidak puas dan malah bertanya framework-framework lainnya? Dan akhirnya kami berdiskusi dan ini merupakan hal yang bagus karena saya awal kenal sails pun dari orang lain yang lebih dulu memakainya. Gimana ceritanya?
Begini, kalo tidak salah di tahun 2015 atau 2016 saya lupa, saya berkesempatan untuk mengisi seminar IT yang diadakan oleh komunitas PHP Indonesia. Meskipun oleh komunitas PHP tapi tema seminar kala itu tentang teknologi update dan trends sehingga saya pun diberi kesempatan membawakan materi tentang React jauh sebelum ada balapan stars React vs Vue haha. Bahkan saat itu React belum terkenal.
Singkatnya, sembari menunggu acara dimulai, saya sempatkan untuk mengobrol dengan beberapa peserta yang ada. Saya duduk di belakang dan mengobrol dengan seoang programmer yang maaf saya lupa namanya tp wajahnya masih inget kok 😀
Dia bilang kalo dia pake AngularJS (belum ada Angular tanpa JS, if you know what I mean). Saya tanya backendnya pakai apa? lalu dia bilang pake sails, saya tanya lagi, kenapa sails? maklum saya saat itu masih menggunakan PHP Laravel. Kemudian dia menjelaskan bagaimana mudahnya membuat API dengan sails.
Sepulang dari acara seminar itu, saya semakin penasaran dengan sails. Jujur saja sebetulnya saya sudah tahu sails tetapi belum tertarik mencobanya karena sangat asing ditelinga dan sepertinya jarang sekali yang membahas. Boro2 grup sails Indonesia, saat itu tutorial sails yang bagus berbahasa inggris saja sulit dijumpai.
Tapi setelah berusaha belajar sails dan menggunakannya saya tidak menyesal. Ternyata sails bagi saya yang mengutamakan produktifitas sangat memuaskan.
Berbicara produktifitas bagi saya salah satu faktornya adalah kecepatan. Dengan sails membuat API menjadi sangat cepat bahkan tidak sampai 2 menit kita bisa membuat API yang siap dengan pagination, filtering, sorting dll.
Dan sangat pas sekali jika disandingkan dengan frontend library yang sejatinya hanya perlu mengonsumsi API untuk mendapatkan dan mengolah data. Bayangkan dulu untuk membuat respon JSON dengan laravel saja tidak semudah sekarang kok.
Bagaimana sails bisa meningkatkan produktifitas saya?
Blueprint
Awal saya mengenal sails adalah awal saya mencoba fokus ke frontend library dan framework. Saat itu saya benar-benar sedang mencari solusi termudah untuk sisi backend, dalam artian membuat API endpoints dengan mudah tanpa bertele-tele.
Nah, salah satu fitur unggulan di sails adalah Blueprint. Dengan blueprint kita bisa membuat API siap pakai tanpa melakukan koding 😮 kok bisa? ya karena blueprint akan membaca field-field yang kita definisikan di model. Lalu akan dibuatkan routing untuk masing-masing operasi / action seperti untuk list resources, create resources, update resources dan delete resources. Termasuk juga bila kita ingin mendapatkan relasi dari sebuah model baik one to one, one to many atau many to many.
MVC
Seperti kita ketahui bersama dengan pola MVC pengelolaan source code menjadi lebih jelas. Sails pun menggunakan pola ini. Dan kamu bisa mendefinisikan field-field di database langsung di model. Atau istilah kerennya code first development.
Tidak perlu file migration
Bila kita di laravel bisa menerapkan code first development dengan file migration, maka di sails kita hanya butuh model. Dengan model tersebut kita bisa mengupdate tabel di database. Dengan kata lain dengan sekali menulis model, model tersebut berfungsi sebagai model dan sebagai migration meskipun tanpa history perubahan (pada praktiknya saya jarang membutuhkan history ini)
Konsep Policy
Ini jauh sebelum di Laravel ada policy sails sudah memilikinya. Jika kita umumnya melakukan filter http request dengan membuat express middleware maka sails membuatnya jauh lebih mudah dengan file policy yang sebetulnya dibangun di atas konsep express middleware.
Dengan policy kita misa membuat middleware dengan lebih clean dan deskiptif dan sangat reusable dengan bisa memasang atau mencopotnya dari controller tertentu atau lebih spesifik controller action tertentu.
Tingkat kustomisasi tinggi
Meskipun untuk API sudah disediakan oleh Blueprint dan sebagian besar fitur aplikasi sangat cukup menggunakannya. Tetapi kita kadang perlu logika khusus untuk fitur keren, dan karena sails menggunakan MVC kamu bisa membuat custom endpoint. Cukup buat method di controller, lalu tulis kode logikamu di situ atau kamu bisa pisahkan di service.
Database agnostic
Terserah kamu mau pake database apa, tinggal install adapternya. Saya sendiri pernah mencoba dengan mysql dan mssql. Tapi banyak support untuk yang lain termasuk NoSql seperti mongodb.
Catatan lain
Dari tadi kita membahas API, karena memang fokus saya adalah penggunaan sails untuk dipadukan dengan frontend lib / framework seperti react, vue, angular dll.
Tetapi jangan salah jika di Laravel ada Blade, maka sails pun bisa menggunakan view, namanya juga MVC dan bawaan engine view nya adalah ejs
Apa minusnya sails?
Ada beberapa minusnya menurut saya pada saat itu ya, pada saat awal2 saya menggunakan sails kurang lebih kurun 2015-2016 yaitu komunitas yang masih sedikit sehingga package komunitas masih jarang dan jika googling error ketemunya itu lagi itu lagi.
Tapi itu dulu, saya rasa kini semakin semarak para pengguna sails.
Lalu, jika kamu pernah mencoba belajar sails apakah kamu memiliki catatan2 kekurangan sails? misal dokumentasinya kurang bagus? atau yang lainnya? yuk berdiskusi, silahkan tinggalkan komentar Kamu ya.
Sampai bertemu di artikel selanjutnya, in sha Allah 🙂