ini adalah salah satu perang agama di dunia IT,
logic di stored proc atau di app server ?
beberapa alasan kenapa logic di stored proc:
1. marketing / evangelist yang ngomong pasti orang dari product DB
2. kalau suatu company sudah mature, jalan baik2 saja dengan logic di stored proc,
kenapa harus berubah ?
3. logic di DB pasti lebih stabil,
karena masih satu tier dengan layer data itu sendiri
4. SDM expert di stored proc, dan sudah malas untuk belajar hal yang baru
saya sendiri tidak suka simpan logic di stored proc karena:
1. ini yang paling penting,
tidak banyak tool atau library untuk database.
coba diperhatikan tool seperti version control , refactoring , packaging , unit test, ALM.
atau library seperti json, xml, atau library open source lainnya
semua tool dan library itu jauh lebih mature dan lebih banyak di level app server
(java / c# / php / ruby / phython)
2. tidak object oriented, makin susah untuk refactoring.
3. stored proc sulit untuk consume web API.
bayangkan stored proc UserLogin yang harus memanggil fb login API
4. portability,
saya ambil contoh c# karena pengalaman di sana.
code di c# bisa di porting ke desktop , web , atau segala macam mobile app.
(tapi tetep harus ada penyesusaian dan effort)
kalau logic di stored proc , gimana cara pindahkan ke iOS ?
5. porting stored proc ke database lain
kalau coding stored proc menggunakan ansi c yang standard, porting mungkin tidak terlalu sulit
tapi pada kenyaan nya tidak mungkin pake syntax ansi c doank,
ngapain cape2 beli mahal2 oracle atau sql server tapi ga pake full feature ?
6. trend database noSQL.
ada beberapa case seperti logging yang lebih cocok di noSQL.
jadi trend yang sering berubah itu sekarang adalah database, bukan app server.
7. cloud hosting
cloud hosting support banyak bahasa. contoh ms azure support nodeJS dan java
kalau di stored proc, itu pasti jauh lebih sulit.
harus sewa VM diinstal db server
kesimpulannya,
kalau start awal, lebih baik tiga tier , pasang logic di app server.
tapi kalau sudah cocok dan baik2 saja logic di sp, kenapa harus berubah ?
thx,
Edwin