lifelong learner — urip iku urup, currently working on accenture.

three-tier architecture ? haruskah ? mengapa ?

0
Degananda.com -

Jika anda saat ini membangun project atau aplikasi dengan menggabungkan antara view, model dan database dalam satu buah “sistem” yang sama maka ulasan ini akan cocok untuk dibaca. Jenis pengembangan seperti itu dinamakan tier 1 architecture. Hal ini sangat riskan di segi keamanan maupun dari segi maintainabily dari source code. Ulasan ini akan membahas mengenai konsep three-tier architecture untuk membangun sebuah project dan semoga dapat menjawab haruskah “saya” menggunakan three-tier architecture ini? perlu diketahui bahwa ulasan ini merupakan pendapat pribadi berdasarkan pengalaman.

Selayang pandang

tier 3 architecture adalah konsep pemrograman yang memisahkan tiga sistem / tier menjadi mandiri antara satu dengan lainnya. Kita mengenal ada tiga buah tier yakni

  1. Presentation tier
    Pada tier ini bertanggung jawab mengenai data yang ditampilkan pada client. Misalnya pada aplikasi website maka presentation tier akan diwakilkan dengan css dan html. Sedangakn pada android akan diwakilkan pada xml.
  2. Application tier
    Tier ini bertanggung jawab sebagai penghubung antara data tier dengan presentation tier. Biasannya tier ini akan di isi oleh web services ataupun jika menggunakan 3rd party akan di isi oleh baas (backend as a services)
  3. Database / data tier
    Tier yang bertanggung jawab sebagai database misalnya mysql, mongodb, postgres dan lain sebagainnya.

yang ingin dibahas pada ulasan ini bukanlah hal teknis mengenai bagaimana cara kerja arsitektur tier-3 melainkan kapankan kita harus menggunakan arsitektur tier-3 ini baik secara programming maupun infrastruktur.

Secara infarstruktur ketika kita memutuskan untuk menggunakan tier-3(kita asumsikan aplikasia adalah web based) maka minimal terdapat tiga buah server dengan fungsi yang berbeda-beda. Server pertama ditujukan untuk menghosting presentation tier. Server kedua murni digunakan untuk menghosting web services dan server ketiga digunakan untuk menghosting database. Arsitektur model seperti ini sangat mahal biayannya karena harus menyediakan banyak server. Namun, juga memberikan kelebihan yaitu keamanan. Jika server satu ditembus oleh cracker maka server dua dan tiga aman. Hal ini memberikan pengamanan yang lebih dibandingkan jika presentation, application dan data tier dijadikan satu.

Secara programming kita dapat menggunakan model tier-3. Yakni benar-benar memisahkan ketiga hal tersebut (presentation, application dan data). Jawabannya adalah web services. Dengan menggunakan web services kita dapat menjembatani pertukaran data antara database dengan presentation atau istilah biasannya adalah frontend dan backend. Konsepnya adalah seperti pada gambar dibawah ini.

 

Setiap tier yang ada pada konsep infrastruktur tier-3 kita breakdown menjadi konsep pemrograman. Model seperti ini sangat memberikan keuntungan bagi kita (developer). Mengapa ?

Keuntungan

  1. Pembagian pekerjaan (jika project besar dan melibatkan banyak programmer) dapat sangat jelas dan rinci karena telah dibagi berdasarkan rolenya. Setiap tim hanya berfokus pada satu jenis pekerjaan.
  2. Sangat mudah untuk di-maintenance. Bayangkan jika source code untuk mengatur koneksi dan ORM ke database(model) dicampur dengan source code untuk mengatur tampilan aplikasi (view). Akan sangat kacau sekali bukan ?
  3. Sangat mudah untuk di integrasikan dengan 3rd party service. Saat ini adalah zaman dimana setiap aplikasi berhubungan dengan penyedia services diluar(3rd party) contohnya misalkan autentikasi menggunakan 0Auth atau firebase. dengna konsep pemrograman tier-3 ini melakukan integrasi akan sangat mudah dikarenakan setiap services tersebut berbasiskan web services.

Misalkan kita memiliki aplikasi yang menggunakan autentikasi oauth dan menggunakan API untuk mengirimkan SMS dari 3rd party maka kita berfokus untuk melakukan perubahan utama pada web services. Konsep seperti ini akan memudahkan integrasi antara aplikasi yang kita buat dengna penuyedia services diluar sistem kita.

bagaimana jika kita menggunakan lebih dari satu database? misalnya untuk keperluan transaksi menggunakan mongodb dan untuk menyimpan data mengenai konfigurasi user menggunakan mysql. Kasus seperti ini juga sangat mudah untuk dihandle. Kita hanya cukup merubah pada web services (application tier) tanpa melakukan perubahan berarti pada presentation. Karena pada dasarnya presentation tier hanya mengkases web services melalui HTTP.