Future Proof System Architecture
ngomongin design, tapi bukan gambar
Future Proof Architecture itu ada ?
kalo kita sebut sebuah sistem yang bakalan bertahan lama sampai masa depan, tentu banyak sistem sederhana yang sampai saat ini belum banyak berubah, contohnya ya mesin pemanak nasi, mesin pemanas air, yups, sistem yang spesifik itu bisa dikatan future proof terus gimana dengan sistem informasi?
Kunci dari arsitektur yang tahan lama terletak pada bagaimana kita mengelola data dan entitas dari unit yang paling kecil. Sistem yang benar-benar 'baik' bukan yang paling canggih saat ini, melainkan yang paling bisa beradaptasi terhadap perubahan zaman.
Oke balik ke tahun 90an dimana konsep OOP mulai populer. Sebelumnya aplikasi dibuat dengan metode Prosedural dimana objek di abaikan, kalo kita pernah buat aplikasi atau script sederhana di R, vbscript, pasti pernah menggunakan metode call bedanya dulu tidak ada tanda awal dan tanda akhir sebuah fungsi, biasanya menggunakan metode lompat (goto) ke baris perintah di line tertentu.
bikin satu aplikasi sampe puluhan ribu baris kode, logika, kalkulasi sampai UI semua jadi satu. oke, hasilnya memang sama, outputnya berupa aplikasi tapi bayangkan jika ada satu fitur kecil yang harus diubah. Di sistem prosedural yang kaku, mengubah satu baris bisa meruntuhkan ribuan baris lainnya. Itulah kenapa OOP hadir memperkenalkan enkapsulasi supaya kalau ada yang rusak di satu bagian, bagian lain tetap aman.
ERP dari dulu sampe sekarang masih gitu-gitu aja kok, modul purchasing masih sama mulai dari perencanaan, order, delivery, receipt, usage, return mau pake apapun pasti itu yang di bikin kok, yang jadi masalah adalah penentuan jenis data yang kita pake di tiap entity, dan primary key aja. terus apa yang beda? ga ada. yang membedakan itu cuma inovasi, tidak ada evolusi, yang berubah bukan sistem nya tapi arsitektur pendukungnya, dulu mungkin awalnya cuma pake barisan teks dalam beberapa file ada yg di pisahin coma, tab dsb. sampe akhirnya digunakan lah teknologi bahasa pertanyaan terstruktur (SQL).
Di era awal gw terjun ke dunia professional ini yang sering jadi masalah, gw masih junior loh saat itu sulit gw jelasin sama junior lain, apa masalahnya? mereka bikin database tapi mindset mereka ga jauh beda sama barisan teks di dalam file, yups mereka masih nyimpen keseluhan objek dalam satu tabel.
Di era sekarang masih pada gitu ga? hayo ngaku, atau baru paham atau belum bisa nangkep? intinya OOP itu bukan sekedar teknis scripting, tapi harus kita terapin juga di database, tujuannya apa? biar data lebih hemat, sehingga kita ga mesti spend budget buat nambah storage dalam waktu lama, dan hal paling terpenting adalah waktu proses dari data-data yang kita olah tentunya lebih efisien.
Future proof architecture itu sekedar mitos?
Ini nyata, jangan berpikir tentang sebuah aplikasi atau platform yang sudah jadi, karena itu adalah buah atau hasil dari sebuah arsitektur, dimana si buah ini mau ga mau harus di update biar optimal dengan teknologi yang ada, intinya modeling itu jauh lebih penting dari sekedar coding, dulu gw coding pake PHP dimana angkatan bawah gw pada fokus javascript, udah pada ga kenal sama yang namanya apache, dan angkatan bawahnya lagi belajar golang, begitupun seterusnya, intinya akan ada sesuatu yang baru.Di era gw nyimpen data di mysql atau PostgreSQL sementara angkatan bawah gw pada pake mongodb atau bahkan sekedar raw json.
Pentingnya sebuah model design yang kuat adalah kunci utama arsitektur sistem yang bertahan lama. hari ini kita produce pake laravel, sistem kita sukses, beberapa tahun kemudian ga menutup kemungkinan penikmat laravel semakin langka, banyak faktor, variasi pilihan bahasa, framework yang semakin berkembang maupun minat atau komunitas yang membangun. Blueprint model dari arsitektur yang baik ngga bakalan sulit untuk reproduce dengan teknologi yang ada, sebut saja lu udah pernah bikin sistem dan berhasil, jaman dah berkembang, lu ga mungkin buat ulang dari awal tapi dari perolehan lu, lu bisa bayar junior lu ngikutin model yang udah lu buat, jadi semacam reverse engineering sebagai upgrade teknologi lu.
What's Next?
Arsitektur yang kuat itu ibarat LEGO. Kita bisa ganti satu blok tanpa ngerusak seluruh bangunan. Ini bakal ngunci argumen lu soal kenapa modeling itu jauh lebih penting daripada sekadar syntax bahasa pemrograman.
well, alasan gw ga pernah jual software itu karena satu alasan. Gw ga mau jual barang usang dengan harga baru, ibaratnya gw sebagai dealer, gw jual mobil tua yang masih baru, karena gw tentunya punya tanggung jawab moral kalo itu mobil sampe ada apa-apa, gw ga mau tuh repot nyari sparepart baru. Itu yang gw rasain ketika gw bikin aplikasi pake VB6 ketemu windows 7 dst. itu juga yg gw rasain ketika gw kembangin aplikasi pake angularjs datang angular-cli.
Di era ini gw sekarang bukan jual software nya, tapi gw punya resep yang siap dibuat apapun bahan utamanya, tergantung budget dan selera pemesan. Konsepnya seperti apa itu udah jelas ada Blueprint nya, sementara teknologinya jelas, teknologi apa yang terbaru saat ini.
Oke kayaknya cukup deh, semoga ngasih inspirasi ya buat kalian dalam bikin sebuah aplikasi atau mungkin ngembangin sistem informasi untuk bisnis.
Keep coding, keep building.