Arsitektur perangkat lunak mengacu pada struktur yang dibuat dalam aplikasi, yaitu seluruh modul dan komponen program dan bagaimana mereka berinteraksi. Pemrogram telah mengerjakan arsitektur yang baik untuk waktu yang sangat lama, jadi tidak mengherankan jika kami mendengar banyak pola arsitektur. Anda perlu memahaminya: saat menulis aplikasi web, sangat penting untuk menghasilkan arsitektur yang baik, karena aplikasi web memiliki lebih banyak komponen dan modul daripada aplikasi biasa. Sebuah pola arsitekturadalah cara cerdas untuk memecahkan beberapa masalah desain perangkat lunak. Anda mungkin menemukan pola desain seperti factory method, abstract factory, builder, prototype, singleton, dan mungkin lainnya. Kami menggunakannya saat menulis kode, membuat kelas, dan merencanakan bagaimana kelas akan berinteraksi. Pola arsitektur digunakan pada tingkat abstraksi yang lebih tinggi, saat merencanakan interaksi pengguna dengan server, data, dan komponen lainnya. Mari kita lihat beberapa pola dan cara menggunakannya.
arsitektur klien-server
Nama itu memberi kesan bahwa segala sesuatu tentang pola ini sederhana dan jelas. Tetapi mari kita perjelas beberapa poin, sehingga ketika Anda mulai mempelajari Musim Semi, Anda akan mengerti apa yang sedang kita bicarakan. Katakanlah Anda telah menulis aplikasi obrolan, dan Anda serta seorang teman mulai menggunakannya. Anda dapat mengadopsi pendekatan yang sangat sederhana, mengirim pesan satu sama lain secara langsung melalui Internet menggunakan alamat IP yang diketahui:
Pada awalnya, semuanya tampak berfungsi dengan baik sampai salah satu teman Anda yang lain meminta untuk bergabung dalam obrolan. Jadi, saat Anda memutuskan untuk menambahkan teman bersama ke obrolan, Anda menghadapi masalah arsitektural: untuk setiap peserta obrolan, Anda perlu memberikan informasi terkini tentang jumlah pengguna, dan alamat IP pengguna baru. Dan ketika sebuah pesan terkirim, itu harus disampaikan ke semua peserta. Ini adalah masalah paling jelas yang akan muncul. Banyak masalah lain akan disembunyikan di dalam kode itu sendiri. Untuk menghindarinya, Anda perlu menggunakan server, yang akan menyimpan semua informasi tentang pengguna, termasuk alamat mereka. Pesan hanya perlu dikirim ke server. Itu, pada gilirannya, mengirim pesan ke masing-masing penerima. Saat Anda memutuskan untuk menambahkan bagian server ke aplikasi obrolan Anda, Anda mulai membangun arsitektur server-klien.
Komponen arsitektur client-server
Mari kita lihat apa itu semua. Arsitektur client-server adalah pola desain yang digunakan untuk membuat aplikasi web. Arsitektur ini terdiri dari tiga komponen:
-
Klien — Dari namanya, kita dapat mengetahui bahwa komponen ini menggunakan beberapa layanan (aplikasi web), menghubungi server untuk meminta beberapa informasi.
-
Server — Di sinilah aplikasi web Anda atau bagian servernya berada. Ini menyimpan informasi pengguna yang diperlukan atau dapat memintanya. Selain itu, ketika klien mengirim permintaan, serverlah yang mengembalikan informasi yang diminta.
-
Jaringan — Bagian ini sederhana. Ini memfasilitasi pertukaran informasi antara klien dan server.
-
modul klien — berisi antarmuka grafis untuk masuk dan mengirim/menerima pesan
-
modul server — aplikasi web yang dihosting di server dan menerima pesan dari pengguna, memprosesnya, lalu mengirimkannya ke penerima
Saat kami ingin melihat informasi yang berguna (atau tidak terlalu berguna) di Internet, kami membuka browser, memasukkan kueri di bilah pencarian, dan mendapatkan informasi dari mesin pencari sebagai tanggapan. Dalam rantai ini, browser adalah kliennya. Ini mengirimkan permintaan dengan informasi tentang apa yang kami cari ke server. Server memproses permintaan, menemukan hasil yang paling relevan, mengemasnya dalam format yang dapat dipahami browser (klien) dan mengirimkannya kembali. Layanan kompleks seperti mesin telusur dapat memiliki banyak server. Misalnya, server otorisasi, server untuk menemukan informasi, server untuk menghasilkan respons, dll. Tetapi klien tidak mengetahui dan tidak peduli tentang semua ini: untuk klien, server adalah entitas terpadu. Klien hanya tahu tentang titik masuk, yaitu, alamat server tujuan pengiriman permintaan. Ingat aplikasi yang kami periksabagian sebelumnya dari seri ini . Itu untuk memantau suhu udara rata-rata di semua negara secara real time. Arsitekturnya terlihat seperti ini:
Aplikasi kita terletak di server. Katakanlah setiap lima detik mengirimkan permintaan ke server yang dioperasikan oleh stasiun meteorologi lokal, menerima informasi suhu untuk negara tertentu dari server, dan menyimpan informasi ini. Saat klien meminta kami untuk "melihat suhu udara dunia saat ini", kami mengembalikan informasi yang paling baru disimpan, diurutkan berdasarkan negara. Jadi, aplikasi kita bertindak sebagai server (saat memproses permintaan pengguna) dan klien (saat menerima informasi dari server lain).
| Inilah poin penting: konsep server bukan tentang komputer tertentu, melainkan tentang hubungan antara entitas jaringan . |
Arsitektur tiga tingkat
Ini adalah pola arsitektur yang memperkenalkan modul ketiga — penyimpanan data . Dalam pola ini, ketiga tingkatan tersebut biasa disebut layer atau tier:
-
Lapisan klien adalah antarmuka pengguna, juga disebut tingkat presentasi. Itu bisa berupa browser web yang menerima halaman HTML, atau antarmuka pengguna grafis yang ditulis menggunakan JavaFX. Hal utama adalah lapisan ini memungkinkan pengguna mengirim permintaan ke server dan memproses responsnya.
-
Lapisan logika adalah server yang memproses permintaan/tanggapan. Sering juga disebut lapisan server. Ini juga tempat semua operasi logika berlangsung: perhitungan matematis, operasi data, panggilan ke layanan lain atau penyimpanan data, dll.
-
Lapisan data adalah server basis data: server kami berinteraksi dengannya. Lapisan ini menyimpan semua informasi yang diperlukan agar aplikasi dapat beroperasi.
Keuntungan dari arsitektur tiga tingkat
Arsitektur seperti ini memberi kita banyak keuntungan, antara lain:-
Kemampuan untuk melindungi dari injeksi SQL (ini adalah serangan pada server; melibatkan pengiriman kode SQL yang, ketika dieksekusi, memungkinkan penyerang memengaruhi basis data kami).
-
Pemisahan data yang ingin kita kontrol akses penggunanya.
-
Kemampuan untuk memodifikasi data sebelum mengirimkannya ke klien.
-
Skalabilitas (kemampuan untuk memperluas aplikasi kita ke beberapa server yang akan menggunakan database yang sama.
-
Persyaratan yang lebih ketat pada kualitas koneksi pengguna. Saat membuat respons di server, kami sering mendapatkan banyak informasi berbeda dari database dan memformatnya, hanya menyisakan apa yang dibutuhkan pengguna. Melakukan hal ini mengurangi jumlah informasi yang kami kirimkan sebagai tanggapan kami kepada klien.
GO TO FULL VERSION