Sabtu, 16 Mei 2015

Pertemuan 6 - ARSITEKTUR WEB (3-Tier, N-Tier, Konsep MVC)



ARSITEKTUR WEB (3-Tier, N-Tier, Konsep MVC)

Apa itu Arsitektur dan Web ?
Terdiri dari 2 kata yaitu Arsitektur dan Web. Apa itu Arsitektur ? Berbicara mengenai Arsitektur, mungkin akan terbayang oleh Anda sebuah gedung atau bangunan yang dibangun oleh Arsitek (perancang). Nah jadi Arsitektur itu apa ?
Jadi Arsitektur itu adalah ilmu yang digunakan untuk mendesain atau merancang sebuah karya agar menjadi lebih bagus dan memiliki sebuah nilai dan keindahan.
Lalu bagaimana dengan Web ? Web adalah kumpulan dari beberapa halaman yang berisi informasi berupa audio, video, maupun teks yang bersifat dinamis maupun statis, yang nantinya halaman-halaman tersebut dapat dihubungkan (diberikan Hyperlink).

Arsitektur Web
Hal yang dilakukan untuk mendesain web agar lebih tersusun, sehingga informasi didapat lebih tepat dan lebih mudah untuk dicari. Arsitektur Web memiliki beberapa aspek yang harus dipenuhi dalam membangun sebuah web yaitu : form, fungsi, navigasi, interface, visual, interaksi, serta maksud dari form itu sendiri.

Dalam membangun Arsitektur Web ada hal dasar yang harus dipertimbangkan, yaitu mengenai kebutuhan dan batasan dari web itu sendiri, meliputi :
1. kebutuhan fungsional (apa saja hal yang dapat dilakukan user terhadap web tersebut)
2. kebutuhan kualitas (kualitas yang dimiliki web)
3. integrasi dengan sistem yang ada

Beberapa kategori dari arsitektur web yaitu :
1.   Aspek Layering
Merupakan Sistem Software yang distrukturkan dalam beberapa tier (tingkatan) untuk mengimplementasikan prinsip pemisahan urusan (konsen)
2.   Aspek Data
Meliputi data yang Terstruktur, misalnya : Relational DB, XML (eXtended Markup Language). Dan data Tidak Terstruktur, misalnya : Konten Multimedia, Gambar, audio, video

Sama seperti pada bangunan, pada web juga terdapat komponen web dasar yang harus dipenuhi dan dimiliki yaitu :
-       Harus adanya Client. Biasanya browser (user agent). Dikendalikan oleh pengguna untuk mengoperasikan aplikasi web.
-       Harus memiliki Firewall. Merupakan software yang mengatur komunikasi antara jaringan yang tidak aman, misalnya : Internet. Dan jaringan aman, misalnya : LAN perusahaan). Yang difilter oleh aturan akses.
-       Harus adanya Proxy. Digunakan secara temporer untuk menyimpan halaman-halaman web dalam suatu cache.
-       Harus dilengkapi dengan Web Server. Merupakan software yang memproses permintaan client, dan mendukung berbagai protokol Web seperti HTTP dan HTTPS.
-       Memiliki Database Server, sebagai penyedia data dalam bentuk terstruktur, misalnya dalam tabel-tabel.
-       Memiliki Media Server, yang merupakan komponen utama untuk content streaming dari data besar yang tidak terstruktur, misalnya : audio atau video.
-       Harus dilengkapi dengan Content Management Server. Mirip dengan database server, menangani content untuk melayani aplikasi.
-       Dan terakhir harus memiliki Application server. Merupakan server yang berfungsi untuk melayani permintaan akses dari komputer client.

Pada Arsitektur Web, terdapat Pattern dan Framework. Apa maksud dari Pattern dan Framework itu ?
Pattern adalah solusi umum yang digunakan kembali pada permasalahan umum yang sering terjadi software design. Design pattern ini bukan merupakan design final yang dapat ditransformasikan secara langsung kedalam kode. Tapi hanya sebuah deskripsi atau template untuk mengetahui bagaimana cara menyelesaikan permasalahan yang dapat digunakan pada berbagai macam situasi yang berbeda. Design pattern dari object-oriented secara tipikal menunjukkan hubungan dan interaksi antara kelas dan objek tanpa menspesifikasikan kelas atau objek dari aplikasi final yang terlibat didalamnya.
Framework adalah sekumpulan fungsi, class, dan aturan-aturan. Framework bersifat menyeluruh mengatur bagaimana kita membangun aplikasi. Framework memungkinkan kita membangun aplikasi dengan lebih cepat karena sebagai developer kita akan lebih memfokuskan pada pokok permasalahan sedangkan hal-hal penting lainnya seperti koneksi database, form validation, GUI, dan security umumnya telah disediakan oleh framework.

Berikut ini beberapa bagian dari Arsitektur Web, yaitu :

1.   3-TIER
Sama seperti namanya, 3-Tier artinya 3 tingkatan. Terdapat 3 tingkatan yang terlibat dalam proses penggunaan web, yang mana ketiga tingkatan tersebut saling berhubungan dengan tingkat selanjutnya.  

3 tingkatan tersebut adalah : client,server dan programming. Karena terdiri dari 3 tingkatan yang berbeda, sehingga tidak banyak perusahaan yang menggunakan konsep 3-Tier. Hanya perusahaan besar yang menggunakan konsep tersebut. Karena dalam membangun tingkatan-tingkatan tersebut membutuhkan banyak biaya. Sehingga hanya perusahaan yang berkapasitas besar yang mampu menggunakannya.
Salah satu aplikasi yang menggunakan 3-Tier yaitu : Java, IBM

Lapisan tersebut terdiri atas :

1.        Client Layer : merupakan komponen yang berjalan pada komputer user atau berfungsi sebagai interface user
2.        Server Layer : merupakan komponen yang berfungsi sebagai penghubung antara client dengan database
3.        RDBMS Layer : merupakan kumpulan dari database dan data  resource manager. RDBMS tidak bisa diakses langsung oleh client jika tidak terkoneksi ke server

Walaupun biaya cukup mahal, namun 3-Tier memiliki kelebihan yaitu :
- Jika terjadi kesalahan pada salah satu lapisan, tidak mempengaruhi kesalahan pada lapisan lain
-  Penggunaan middleware mendukung efisiensi query database dalam SQL di pakai untuk menangani pengambilan informasi dari database. 

Serta keuntungan penggunaan 3-Tier yaitu :
-   Perubahan cukup dilakukan pada middle tier, bukan aplikasi keseluruhan
- Kemampuan untuk bereaksi terhadap perubahan bisnis dengan cepat, dengan cara mengubah modul kode daripada mengubah keseluruhan aplikasi 
-   Biaya jangka panjang yang rendah

Dan tidak meutup kemungkinan, bahwa 3-Tier juga memiliki Kerugian :
-   Sulit untuk merancang, karena memiliki skala yang cukup besar
-   Sulit untuk mengaturnya, karena banyaknya layer yang dimilikinya dan dengan jangkauan yang cukup luas, maka lebih sulit untuk mengaturnya. Karena jangkauan bisa antar wilayah maupun departement
-   Biaya yang banyak sehingga lebih mahal. Biaya banyak dikeluarkan karena factor dari 3 tingkatan operasi tadi. sehingga tiap tingkatan membutuhkan PC yang banyak.

2.   N-TIER


N= banyak (lebih dari 3)
N-Tier = banyak tingkatan/level
N_Tier juga merupakan arsitektur client-server dimana presentasi, pemrosesan aplikasi, dan data fungsi manajemen secara logis dipisahkan.

Terdapat 3 komponen pada N-Tier yang harus diketahui yaitu :
-  Presentation Layer
  Sebagai layer yang berada pada tingkat paling atas atau disebut juga user interface.
  Fungsi utama sebagai penerjemah tugas-tugas dan hasil yang telah dikerjakan oleh layer   sebelumnya.
-  Bisnis Logic Layer / application layer
Bertugas sebagai koordinat dari aplikasi, memproses perintah, membuat keputusan logic dan evaluasi serta memperhitungkan performa. Berfungsi untuk memindahkan dan memproses data antara 2 layer lainnya
-  Data layer
Sebagai tempat menyimpan informasi dan mengolah data atau file system. Informasi kemudian dikirim ke logical layer dan dikirim kembali ke user.

Berikut ini keuntungan yang diperoleh dari N-Tier :
-  Mudah dalam melakukan perubahan bussiness logic pada masa yang akan datang.
-  Bussiness logic yang mudah diimplementasikan dan dipelihara.
-  Aplikasi client dapat mengakses berbagai tipe DBMS yang berbeda-beda secara
transparan.
-  Dari segi skalabilitas, dapat dikembangankan tanpa perlu banyak mengubah inti dari program tersebut.
-  Dari segi portabilitas, dapat berjalan pada banyak sistem tanpa harus banyak mengubah program tersebut.

Ada kelebihan, tentunya pasti juga ada kekurangannya. Kekurangan dari N-Tier yaitu :
-  Sistem N-Tier yang mahal untuk development dan instalasinya. Dikarenakan perencanaan software pada 3-tier sangat kompleks.
-  Memerlukan adaptasi yang semakin luas ruang lingkupnya.
-  Rentang waktu lebih lama.
-  Dalam suatu perusahaan, semakin besar perubahan sistem yang dilakukan, maka akan semakin memerlukan adaptasi yang semakin luas ruang lingkupnya.
-  Penggunaan memori komputer yang lebih besar.

3.   Konsep MVC

Sebuah singkatan dari Model View Controller (MVC).
-       Model = data/database
-       View = tampilan untuk client
-       Controller = pemroses antara model dan view

Dari pengertian diatas, dapat diambil kesimpulan bahwa MVC merupakan sebuah metode atau konsep untuk membuat sebuah aplikasi, dan memisahkan data (Model) yang terdapat didalamnya dari tampilan (View) yang akan diberikan kepada client yang memberi request,   yang nantinya akan diolah/diproses oleh pemroses (Controller).
Arsitektur MVC kebanyakan digunakan dalam aplikasi berbasis web

a.    Model
Model idientik dengan data, yang berhubungan dengan database. Merupakan business logic. Pada model ada beberapa aktivitas manipulasi data yang dilakukan seperti : insert, update, delete, search. Model biasanya menerima validasi dari controller, dan tidak dapat berhubungan dengan view secara langsung, harus melalui controller sebagai penghubung.
Keuntungan dari Model yaitu :
-       Proses maintenance aplikasi
     Adanya proses merespon perubahan yang terjadi sehingga lebih terpelihara.         Penempatan detail data dan operasinya pada area yang telah ditentukan (Model),    sehingga tidak tersebar ke seluruh lingkup aplikasi.
-    Reusable Model
Penggunaan kembali aplikasi model oleh aplikasi lain yang disebabkan adanya pemisah data dengan interface.

b.   View
Bagian yang menangani presentation logic. Beris file template HTML, yang diatur oleh controller. Bagian ini yang menerima dan merepresentasikan data atau mengatur tampilan untuk user berupa halaman web. Dan tidak memiliki akse langsung terhadap bagian model, harus melalui perantara controller.
Kelebihan dari view yaitu :
-       Memudahkan penggabungan divisi desain dalam development team
-       Ketersediaan multiple interface dalam aplikasi
c.    Controller
Sebagai pemroses dan yang menjembatani model dan view. Berfungsi menerima request dan data yang diberikan user, kemudian akan ditentukan apa yang akan diproses oleh aplikasi tersebut. Lalu akan dicek, apakah membutuhkan database ? jika ya, maka data request akan dikirim ke model, lalu diproses oleh model. Dan hasilnya dikirim lagi ke controller. Dan controller akan memparsing data kepada view, kemudian view akan memberikan tampilan respon kepada client.
Kelebihan dari controller :
-       Komponen view dapat didesain tanpa harus memperhatikan bagian lain
-       Pemisahan yang jelas antara presentation logic dan bussines logic.

Alur kerja dari MVC yaitu :
1.   Ketika User melakukan request website ke web server, maka yang pertama sekali menerima request adalah Controller.
2.   Kemudian controller akan melakukan pengecekkan, apakah memerlukan database atau tidak ? Jika ya, maka rute selanjutnya adalah Model.
3.   Pada model, dilakukan pengolahan request User. Yang mana data diambil dari database. Setelah didapat hasilnya, kemudian hasil diberikan kembali kepada controller.
4.   Dan controller akan memparsing hasil dari model tadi kedalam View untuk ditampilkan kepada User.

Berikut ini adalah keuntungan menggunakan MVC yaitu :
-       Kode lebih maintainable, karena dapat          mengubah salah satu bagian tanpa harus  mengubah bagian yang lain. Contoh, misalnya kita membuat aplikasi A yang memproses data berformat XML namun kemudian kita diharuskan menggunakan data berformat JSON.
-       Mempermudah proses debugging, karena kita bisa memperkirakan bagian mana yang bermasalah tanpa harus membongkar seluruh kode yang sudah kita buat
Serta kekurangan dari menggunakan MVC yaitu :
Adanya peningkatan kompleksifitas sehingga pada aplikasi kecil yang tidak membutuhkan loose coupling pada Model yang menjadi blok penghalang dalam pola MVC ini sendiri.

Perbedaan antara Tier dan MVC

Tier adalah arsitektur pembuatan web yang digambarkan dalam bentuk fisik atau hardware membentuk lapisan-lapisan. Tier ini tampak jelas cara dan proses kerjanya, karena secara fisik kelihatan

Sedangkan MVC merupakan konsep atau metode yang digunakan dalam pembuatan web. Secara fisik tidak tampak jelas atau lebih tepatnya disebut dengan “Konsep Programming”.

Sumber :
Presentasi kelompok
https://boed89.wordpress.com/2012/10/01/arsitektur-aplikasi-web/

1 komentar: