Ketika kita sebagai Web Developer membangun sebuah Aplikasi Web, maka idealnya kita harus menyediakan versi Development terlebih dulu, sebelum yang versi Live dirilis dan bisa digunakan oleh User. Di samping untuk mereview fitur-fitur yang sudah dibangun berfungsi sampai sejauh mana, versi Development juga sangat berguna bagi Team Penguji saat melakukan Beta-Test.
Sering kali karena keterbatasan resource seperti Web Server dan Database, maka versi Development harus ditempatkan di server yang sama dengan yang versi Live. Artinya, kedua versi Aplikasi Web tersebut berada pada mesin server yang sama.
Meskipun di mesin server yang sama, Database untuk versi Live dan Development tetaplah harus dipisah. Hal ini untuk mencegah data yang digunakan oleh Aplikasi Web versi Development tercampur dengan data yang digunakan oleh Aplikasi Web versi Live.
Selain karena alasan keterbatasan server, penyebab lain mengapa Aplikasi Web versi Development ditempatkan di lokasi yang sama dengan versi Live, karena biasanya setiap Aplikasi Web sudah menggunakan nama domain tertentu. Artinya, versi Development akan ditaruh di dalam sub-direktori di bawah nama domain tadi.
Karena versi Development ditempatkan tersendiri pada sebuah sub-folder dari lokasi versi Live berada, maka kita bisa mengambil contoh seperti ini. Jika versi Live berada pada direktori public_html\aplikasiwebku\, maka versi Development akan berada pada direktori public_html\aplikasiwebku\development\.
Perhatikanlah dalam contoh tadi, sub-folder development berada satu level di bawah direktori aplikasiwebku. Jadi, sub-folder development tadi tidak berada pada level yang sama dengan folder tempat versi Live.
Sayangnya, Aplikasi Web yang secara standar dihasilkan oleh PHPMaker memiliki keterbatasan akan hal ini. Katakanlah Root URL dari versi Live adalah http://www.aplikasiwebku.com, dan Root URL dari versi Development adalah http://www.aplikasiwebku.com/development/, maka Pengguna yang sudah login ke salah satu versi tersebut bisa menyebrang ke versi yang lainnya.
Artinya, jika User berhasil login di Aplikasi Web yang versi Development tadi lalu mencoba mengakses alamat Aplikasi Web yang versi Live, yang dalam hal ini berada satu level di atas versi Development, maka User tadi bisa masuk ke versi Live. Dengan kata lain, session di satu versi bisa digunakan di versi yang lainnya. Tentu kita tidak menginginkan kondisi ini terjadi, bukan?
Lalu timbul pertanyaan, mengapa hal itu bisa terjadi? Jawabannya karena PHPMaker belum menangani pemeriksaan atau verifikasi Root URL dari setiap Aplikasi Web yang dihasilkan olehnya. Dalam contoh di atas, maka kedua versi Aplikasi Web tersebut secara standar dapat menggunakan sebuah validasi Login saja dari salah satu versi Aplikasi Web. Ketika Pengguna login dari Aplikasi Web versi Development, maka dia bisa mengakses Aplikasi Web versi Live.
Oleh karena itu, sudah saatnya kita sebagai Web Developer harus mencari solusi untuk mengatasi permasalahan ini. Apalagi jika dalam contoh di atas, kita menempatkan versi Development dan Live dalam mesin Web Server yang sama. Lebih spesifik lagi, versi Development berada di bawah direktori versi Live. Pertanyaannya, bagaimana solusi untuk mengatasinya?
Jangan khawatir, karena sejak hari ini, Senin, 19 Oktober 2015, saya telah berhasil mengimplementasikan solusinya melalui Masino Extensions. Jika di project PHPMaker Anda selama ini menggunakan Masino Extensions, maka Anda cukup mengaktifkan sebuah pilihan, lalu generate ulang semua file script dari PHPMaker seperti biasa.
Ada sebuah pilihan baru yang saya tambahkan ke dalam extension MasinoFixedWidthSite12 untuk PHPMaker versi 12 (saat artikel ini saya tulis masih versi 12.0.3), yang bernama AlwaysCompareRootURL. Secara standar, pilihan ini tidak aktif (disabled).
Kita harus mengaktifkan (enabled) pilihan ini, lalu generate ulang semua file script dari PHPMaker seperti biasa. Selanjutnya, Aplikasi Web yang dihasilkan akan selalu membandingkan Root URL Aplikasi Web yang diakses pertama kali dengan Root URL yang sedang diakses saat itu.
Artinya, jika Pengguna Aplikasi Web yang sudah berhasil login di versi Development bandel dengan mengganti Root URL di browser ke Root URL dari Aplikasi Web yang versi Live, maka sistem akan mencegahnya. Pengguna akan otomatis di-redirect kembali ke Root URL dari Aplikasi Web yang versi Development. Jadi, jika Pengguna ingin berpindah dari satu versi ke versi lainnya, maka dia harus menutup terlebih dulu browser yang dia gunakan, lalu membuka kembali browser tersebut dari awal.
Meskipun demikian, supaya solusi tersebut di atas bisa berjalan sebagaimana mestinya, pastikan semua file script PHP di masing-masing versi harus ditempatkan di folder utamanya masing-masing. Dengan kata lain, semua file PHP yang dihasilkan oleh PHPMaker untuk Aplikasi Web versi Live harus berada di folder public_html\aplikasiwebku\. Sedangkan semua file PHP yang dihasilkan oleh PHPMaker untuk Aplikasi Web versi Development harus berada di folder public_html\aplikasiwebku\development\.
Fitur ini sudah saya rasakan manfaatnya di beberapa Aplikasi Web yang selama ini saya bangun dengan PHPMaker, khususnya jika versi Development harus ditempatkan pada sub-folder di bawah dari versi Live. Dengan cara ini pula, maka kita tidak tergantung kepada nama domain yang statis yang digunakan oleh Aplikasi Web tersebut. Keuntungan lainnya, karena dinamis, maka hal ini juga bisa kita terapkan baik di localhost, maupun di server production.
Wow, keren kan? Bukan PHPMaker namanya jika si Web Developer tidak bisa mengoptimalkan fitur-fitur yang sudah tersedia, sekalipun ada keterbatasan di sana. Lagi-lagi, terbukti sudah bahwa PHPMaker juga dapat membangkitkan kreativitas si Web Developer yang menggunakannya.
Nanda mengatakan
kalo Database nya sama/ tetep pake satu database nanti ketika mencoba input yang Root Development Data nya tetep masuk ke Databese Utama ?
Masino Sinaga mengatakan
Ya iyalah, namanya juga pakai satu Database, secara logika ya akan masuk ke Database itu jugalah, hehe…
Oleh karena itu, sebaiknya versi Development dan versi Live menggunakan Database yang terpisah (jangan disatukan).