Anda di halaman 1dari 18

Nama : Sefrika Agif Narfian Mengetahui Dosen Pengampu

NIM : 183307045
Kelas : Teknologi Informasi 4A TTD
Pertemuan : Tiga ACC
Tanggal : 13-02-2020 Revisi

Pokok-pokok Pembahasan:
1. Thread
2. Perbedaan Thread dengan Proses
3. Single Thread vs Multithread Process
4. Keuntungan Thread
5. Macam-macam Thread
6. Model-model Multithreading
7. Thread Cancelation
8. Client-server & Model
9. Agent
10. Klasifikasi agent software

Penjelasan Pokok-pokok pembahasan

1. Thread
Thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded
mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama.
Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber
daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur
multiprosesor. User level thread adalah thread yang tampak oleh programmer dan tidak
diketahui oleh kernel. User level thread secara tipikal dikelola oleh sebuah library thread
di ruang user. Kernel level thread didukung dan dikelola oleh kernel sistem operasi.
Secara umum, user level thread lebih cepat dalam pembuatan dan pengelolaan dari pada
kernel thread.
Thread adalah unit dasar dari penggunaan CPU, thread mengandung Thread ID, program
counter, register set, dan stack. Sebuah Thread berbagi code section, data section, dan
sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama.
Thread juga sering disebut lightweight process. Sebuah proses tradisional atau
heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali.
Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak
adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada
satu satuan waktu. Banyak software yang berjalan pada PC modern didesain secara
multithreading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah
dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah web
browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread
yang lain berfungsi sebagai penerima data dari network.

Java mempunyai pengunaan lain dari thread. Perlu dikeahui bahwa java tidak mempunyai
konsep asynchronous. Sebagai contohnya kalau program java mencoba untuk melakukan
koneksi ke server maka ia akan berada dalam keadaan block state sampai koneksinya
jadi(bisa dibayangkan apa yang terjadi apabila servernya mati). Karena java tidak memiliki
konsep asynchronous maka solusinya adalah dengan membuat thread yang mencoba untuk
melakukan koneksi ke server dan thread lain yang pertamanya tidur selamabeberap
waktu(misalnya 60 detik) kemudian bangun. Ketika waktu tidurnya habis maka ia akan
bangun dan memeriksa apakah thread yang melakukan koneksi ke server masih mencoba
untuk melakukan koneksi ke server, kalau thread tersebut masih dalam keadaan mencoba
untuk melakukan koneksi ke server maka ia akan melakukan interrupt dan mencegah thread
tersebut untuk mencoba melakukan koneksi ke server.

2. Perbedaan Thread dengan Proses


Thread berbeda dengan proses karena thread memiliki address space yang sama yang artiya
mereka berbagi variable global. karenanya masing2 thread dapat saling mengakses virtual
address, membaca, menulis bahkan menghentikan thread lain. sedangkan proses bisa
dimiliki oleh user dan kemungkinan proses tersebut menunggu atau ditahan proses yang
lain. proses selalu dimiliki oleh satu user sehingga mereka dapat saling bekerja sama tidak
saling berbenturan.
1) Pembentukan Thread membutuhkan waktu yang lebih sedikit daripada
pembentukan process.
2) Membutuhkan waktu yang lebih sedikit untuk menhakhiri Thread daripada process.
3) Lebih mudah dan cepat untuk melakukan switch antar Thread daripada switch antar
process.
4) Thread menggunakan secara bersama ruang alamat dari proses yang
menciptakannya. Proses memiliki ruang alamat sendiri-sendiri.
5) Thread memiliki akses langsung ke segemen data dari prosesnya. Masing-masing
proses memiliki salinan segmen data dari parent process-nya.
6) Thread dapat saling komunikasi dengan thread lain dalam satu process. Antar
proses harus menggunakan komunikasi antar proses.
7) Thread hampir tidak memiliki overhead. Proses memiliki overhead.
8) Thread dapat memiliki pengaruh kontrol yang besar terhadap thread lain dalam satu
proses. Proses hanya dapat mengendalikan proses anakannya.
9) Perubahan pada thread utama seperti pembatalan atau perubahan prioritas dapat
mempengaruhi tingkah laku thread lain dalam satu proses. Perubahan pada parent
proses tidak mempengaruhi proses anakan.
Berikut meripakan perbedaan antara Proses dengan Thread.
a. Proses
 Merupakan program yang sedang di eksekusi.
 Proses mencakup program counter, yaitu sebuah stack untuk menyimpan alamat
dari instruksi yang selanjutnya akan di eksekusi dan di registrasi.
 Memiliki ruang alamat atau IP address masing-masing.
 Dari satu proses dengan proses lainnya harus menggunakan komunikasi.
 Memiliki overhead.
 Hanya dapat mengendalikan proses turunannya.
 Perubahan pada parent proses tidak mempengaruhi proses turunannya.
 Pembentukan proses membutuhkan waktu yang lebih lama.
 Waktu yang dibutuhkan untuk mengakhiri proses lebih lama.

b. Thread
 Adalah alur kontrol dari suatu proses.
 Merupakan unit dasar dari penggunaan CPU dan sering disebut dengan lightweight
process.
 Ruang alamat atau IP address digunakan secara bersama-sama dari proses yang
menciptakannya.
 Memiliki akses langsung ke segmen data dari prosesnya.
 Dapat saling berkomunikasi dengan thread lain dalam satu proses.
 Hampir tidak memiliki overhead.
 Perubahan pada thread utama seperti pembatalan atau perubahan prioritas dapat
mempengaruhi tingkah laku thread lain dalam satu proses.
 Pembentukan thread membutuhkan waktu yang lebih sedikit.
 Waktu yang dibutuhkan untuk mengakhiri thread lebih sedikit.
 Lebih mudah dan cepat melakukan swicth antar thread daripada switch antar
proses.

3. Single Thread vs Multithread Process


a. Single-Threading merupakan sebuah lightweight process (proses sederhana) yang
mempunyai thread tunggal yang berfungsi sebagai pengendali/ controller.
b. Multi-Threading merupakan proses dengan thread yang banyak dan mengerjakan
lebih dari satu tugas dalam satu waktu.
4. Keuntungan Thread
Keuntungan dari program yang multithreading dapat dipisah menjadi empat kategori:
a. Responsi: Membuat aplikasi yang interaktif menjadi multithreading dapat
membuat sebuah program terus berjalan meski pun sebagian dari program tersebut
diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan
respons kepada pengguna. Sebagai contohnya dalam web browser yang
multithreading, sebuah thread dapat melayani permintaan pengguna sementara
thread lain berusaha menampilkan image.
b. Berbagi sumber daya: thread berbagi memori dan sumber daya dengan thread lain
yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah
mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda
dalam lokasi memori yang sama.
c. Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian
memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena
thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih
ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur
perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan,
tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan
thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan
thread, dan context switch proses 5 kali lebih lama dibandingkan context switch
thread.
d. Utilisasi arsitektur multiprocessor: Keuntungan dari multithreading dapat sangat
meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan
secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal,
CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat
cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu
thread yang dijalankan CPU pada satu-satuan waktu (satu-satuan waktu pada CPU
biasa disebut time slice atau quantum).
Selain keuntungan, Thread juga memiliki beberapa kerugian diantaranya:
a. Multiple thread bisa mengganggu satu sama lain saat berbagi hardware resource,
misalnya chace memory.
b. Execution time (waktu proses) dari sebuah single-thread tidak dapat diimprove
(ditambah), tapi malah bisa diturunkan. Ini terjadi karena penurunan frequensi yang
dibutuhkan ketika terjadi pergantian thread yang berjalan.
c. Harus ada dukungan dari hardware ataupun software untuk melakukan multi-
Threading.

5. Macam-macam Thread
a. Kernel-level threading:
Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna.
Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan thread,
thread pengguna cepat dibuat dan dikendalikan. Thread ini dibuat oleh pengguna yang
berkorespondensi 1-1 dengan entitas-entitas yang terjadwalkan yang berada di kernel.
Ini merupakan implementasi (penerapaan) paling sederhana dari threading.
 Thread kernel didukung langsung oleh sistem operasi.
 Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada
kernel space.
 Pengaturan thread dilakukan oleh sistem operasi, sehingga pembuatan dan
pengaturan kernel thread lebih lambat dibandingkan user thread.
b. User-level threading:
Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen
thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem operasi,
proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna.
Sebuah pemetaan N-1, yang berarti bahwa semua level aplikasi thread dipetakan ke
entitas tunggal yang ada di kernel. Dengan pendekatan ini, switching proses dapat
dilakukan dengan sangat cepat.
 Thread pengguna didukung kernel serta diimplementasikan dengan pustaka
(library) thread pada tingkatan pengguna.
 Pustaka (library) menyediakan fasilitas untuk pembuatan thread, penjadwalan
thread, dan manajemen thread tanpa dukungan dari kernel.
 Semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna tanpa
campur tangan kernel.

6. Model-model Multithreading
a. Model Many-to-One.
Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread.
tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga
efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu
saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor.
Contoh: Solaris Green Threads dan GNU Portable Threads.
b. Model One-to-One.
Model ini memetakan setiap thread tingkatan pengguna ke setiap thread. Ia
menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah
setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena
itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari
sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem. Contoh:
Windows NT/XP/2000 , Linux, Solaris 9.
c. Model Many-to-Many.
Many-to-many model multiplexes banyak user-level thread ke kernel thread yang
jumlahnya lebih kecil atau sama banyaknya dengan user-level thread. Jumlah
kernel thread bisa spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-
One model mengijinkan developer untuk membuat user thread sebanyak yang ia
mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang bisa
dijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency
yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak
thread dalam suatu aplikasi(dalam beberapa hal, developer hanya bisa membuat
thread dalam jumlah yang terbatas ). Many-to- Many model tidak menderita
kelemahan dari 2 model di atas. Developer bisa membuat user threadsebanyak yang
diperlukan, dan kernel thread yang bersangkutan bisa bejalan secara pararel pada
multiprocessor . Dan juga ketika suatu thread menjalankan blocking system call
maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh
sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.

7. Thread Cancelation
Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan
tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM( Java
Virtual Machine ) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan
dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda :
1. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target
thread.
2. Defered cancellation: target thread secara perodik memeriksa apakah dia harus
berhenti, cara ini memperbolehkan targetthread untuk memberhentikan dirinya
sendiri secara terurut.
Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber
daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain
adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan
thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous
cancellation . Sistem operasi akan mengambil kembali sumber daya dari thread yang
diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber
daya dari thread yang diberhentikan. Alternatifnya adalah dengan menggunakan Deffered
cancellation .

Cara kerja dari deffered cancellation adalah dengan menggunakan 1 thread yang berfungsi
sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian
hanya akan terjadi jika target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini
memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia
bisa diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagai cancellation
points .Pada umumnya sistem operasi memperbolehkan proses atau thread untuk
diberhentikan secara asynchronous . Tetapi Pthread API menyediakan deferred
cancellation . Hal ini berarti system operasi yang mengimplementasikan Pthread API akan
mengijinkan deferred cancellation.

8. Client-server & Model


1) Client-Server
a. Client Server

Dalam ilmu komputer, client server adalah model arsitektur perangkat lunak yang
terdiri dari dua bagian yaitu sistem client dan sistem server yang berkomunikasi
baik melalui jaringan komputer ataupun pada komputer yang sama.
Aplikasi client server adalah sistem terdistribusi yang terdiri dari perangkat lunak
client dan juga server. Aplikasi server client menyediakan cara yang lebih baik
untuk berbagi beban kerja. Proses client selalu memulai koneksi ke server,
sementara proses server selalu menunggu permintaan dari client mana pun.

b. Cara Kerja Client Server


Ketika proses client dan proses server berjalan pada komputer yang sama, proses
ini disebut pengaturan single seat. Tipe lain dari arsitektur perangkat lunak terkait
dikenal sebagai peer-to-peer, karena setiap host atau instance aplikasi dapat secara
bersamaan bertindak sebagai client dan server (tidak seperti server terpusat dari
model client server) dan karena masing-masing memiliki tanggung jawab dan
status yang setara. Arsitektur peer-to-peer sering disingkat menggunakan akronim
P2P.

Hubungan client server menggambarkan hubungan antara client dan bagaimana ia


membuat permintaan layanan ke server, dan bagaimana server dapat menerima
permintaan ini, memprosesnya, dan mengembalikan informasi yang diminta
kepada client. Interaksi antara client dan server sering digambarkan menggunakan
diagram urutan. Diagram sekuens distandarisasi dalam Bahasa Pemodelan
Unified.
Kini baik client-server dan arsitektur P2P sudah digunakan secara luas dalam
dunia teknologi informasi. Tipe dasar arsitektur perangkat lunak client server
hanya mempekerjakan dua jenis host yaitu client dan server. Jenis arsitektur ini
kadang-kadang disebut juga sebagai two tiered atau dua tingkat. Arsitektur dua
tingkat berarti bahwa client bertindak sebagai satu tingkat dan proses server
bertindak sebagai tingkat lainnya.

Arsitektur perangkat lunak client server telah menjadi salah satu model dasar
komputasi jaringan. Banyak jenis aplikasi telah dibuat menggunakan model client
server.
Fungsi-fungsi jaringan standar seperti pertukaran Email, akses web dan akses
database, didasarkan pada model client server ini. Misalnya, browser web adalah
program client di komputer pengguna yang dapat mengakses informasi di server
web manapun di dunia. Model pemrograman client server adalah arsitektur
komputasi terdistribusi yang memisahkan penggunaan informasi (client) dari
penyedia informasi (server).
 Aplikasi client adalah aplikasi yang membutuhkan sesuatu seperti halaman
web atau alamat IP dari server. Client dapat menghubungi server untuk
mendapatkan informasi ini kapan saja. Client adalah pengguna informasi.
 Aplikasi server adalah aplikasi yang menyediakan informasi atau sumber daya
untuk client. Itu harus selalu berjalan dan berjalan, menunggu permintaan dari
client.
Aplikasi client berkomunikasi hanya dengan aplikasi server dan sebaliknya. Client
tidak berkomunikasi langsung dengan client lain.

2) Model Arsitekstur Client-Server


a. Arsitektur Mainframe
Pada arsitektur ini, terdapat sebuah komputer pusat (host) yang memiliki sumber
daya yang sangat besar, baik memori, processor maupun media penyimpanan.
Mainframe menyediakan sedikit waktu dan sebagian memorinya untuk setiap
pemakai (user), kemudian berpindah lagi kepada pemakain lain, lalu kembali
kepemakai yang pertama. Perpindahan ini tidak dirasakan oleh pemakai, seolah-
olah tidak ada apa-apa. Jenis komputer ini memiliki suatu Central Processing
Unit, Storage Device yang agak besar (kira-kira sebesar 2 lemari pakaian) dan
ditempatkan pada tempat tersendiri. Peralatan CPU dan Storage tersebut
dihubungkan dengan banyak terminal yang terdiri dari keyboard dan monitor saja.
Melalui komputer terminal, pengguna mengakses sumber daya tersebut.
Komputer terminal hanya memiliki monitor/keyboard dan tidak memiliki CPU.
Semua sumber daya yang diperlukan terminal dilayani oleh komputer host. Model
ini berkembang pada akhir tahun 1980-an.

b. Arsitektur File Sharing


Pada arsitektur ini komputer server menyediakan file-file yang tersimpan di media
penyimpanan server yang dapat diakses oleh pengguna. Arsitektur file sharing
memiliki keterbatasan, terutama jika jumlah pengakses semakin banyak serta
ukuran file yang di shaing sangat besar. Hal ini dapat mengakibatkan transfer data
menjadi lambat. Model ini populer pada tahun 1990-an.

c. Arsitektur Client/Server
Karena keterbatasan sistem file sharing, dikembangkanlah arsitektur client/server.
Dengan arsitektur ini, query data ke server dapat terlayani dengan lebih cepat
karena yang ditransfer bukanlah file, tetapi hanyalah hasil dari query tersebut.
RPC (Remote Procedure Calls) memegang peranan penting pada arsitektur
client/server. Arsitektur Client-Server Telematika terdiri dari 2 buah arsitektur
yakni, arsitektur sisi client dan sisi server-nya.

d. Arsitektur Sisi Client


Istilah ini merujuk pada pelaksanaan atau penyimpanan data pada browser
(koneksi HTPP atau client) sisi koneksi HTTP. JavaScript adalah sebuah contoh
dari sisi eksekusi client dan Cookie adalah contoh dari sisi penyimpanan pada
Client. Lihat Cookie, Server Side.
Karakteristik Client
 Selalu memulai permintaan ke server.
 Menunggu balasan.
 Menerima balasan.
 Biasanya terhubung ke sejumlah kecil dari server pada satu waktu.
 Biasanya berinteraksi langsung dengan pengguna akhir dengan
menggunakan antarmuka pengguna seperti antarmuka pengguna grafis.
 Khusus jenis klien mencakup: web browser, e-mail klien, dan online chat klien

e. Arsitektur Sisi Server


Sebuah eksekusi sisi server adalah server Web khusus eksekusi yang melampaui
standar metode HTTP itu harus mendukung. Sebagai contoh, penggunaan CGI
script sisi server khusus tag tertanam di halaman HTML; tag ini memicu tindakan
terjadi atau program untuk mengeksekusi.
Karakteristik Server
 Selalu menunggu permintaan dari salah satu klien.
 Melayani klien permintaan kemudian menjawab dengan data yang diminta ke
klien.
 Sebuah server dapat berkomunikasi dengan server lain untuk melayani
permintaan klien.
 Jenis server khusus mencakup: web server, FTP server, database server, E-mail
server, file server, print server. Kebanyakan web layanan ini juga jenis server.
Jadi, secara umum Arsitektur Client-Server atau jaringan komputer adalah sebuah
aplikasi terdistribusi arsitektur yang partisi tugas atau beban kerja antara penyedia
layanan (server) dan pelayanan pemohon, disebut klien. Sering kali klien dan server
beroperasi melalui jaringan komputer pada hardware terpisah. Sebuah mesin server
adalah performa tinggi host yang menjalankan satu atau lebih program server yang
berbagi sumber daya dengan klien. Seorang klien tidak berbagi apapun dari sumber
daya, tetapi meminta server layanan konten atau fungsi. Oleh karena itu klien
memulai sesi komunikasi dengan server yang menunggu (mendengarkan) masuk
permintaan.
Dalam perkembangannya, client/server dikembangkan oleh dominasi perusahaan
software besar yaitu Baan, Informix, Lotus, Microsoft, Novell, Oracle, PeopleSoft,
SAP, Sun, dan Sybase. Perusahaan-perusahaan ini adalah superstar pada era
pertama dimunculkannya konsep client/ server. Saat ini perusahaanperusahaan ini
telah menjadi perusahaan komputer yang stabil dan besar.

3) Kolaborasi Client-Server
Berikut ini adalah penjelasan mengenai beberapa kolaborasi arsitektur sisi client dan sisi
server
a. Arsitektur Single- Tier (Stand Alone)
Definisi satu-tier arsitektur adalah semua komponen produksi dari sistem
dijalankan pada komputer yang sama. Ini adalah sederhana dan paling mahal
alternatif. Ada kurang perlengkapan untuk membeli dan mempertahankan.
Kelemahan dari jenis ini pelaksanaan keamanan lebih rendah dan kurangnya
skalabilitas. Sebuah arsitektur skalabel ketika dapat dengan mudah diperluas atau
ditambah untuk memenuhi kebutuhan peningkatan kinerja.
Setelah semua komponen utama situs dan data di satu komputer di belakang
firewall daun domain situs lebih rentan terhadap serangan berbahaya. Menjalankan
semua komponen situs pada sebuah komputer juga membatasi ekspansi dan
optimalisasi kemungkinan. Anda hanya dapat menambahkan begitu banyak
memori atau begitu banyak CPU untuk sebuah server tunggal.
b. Arsitektur Two-tier (client/server)
Dalam dua lapis client / server arsitektur, antarmuka pengguna pengguna
ditempatkan di lingkungan desktop dan sistem manajemen database jasa biasanya
dalam sebuah server yang lebih kuat merupakan mesin yang menyediakan
layanan bagi banyak klien. Pengolahan informasi dibagi antara sistem user
interface lingkungan dan lingkungan server manajemen database. Manajemen
database server mendukung untuk disimpan prosedur dan pemicu.. Vendor
perangkat lunak menyediakan alat-alat untuk menyederhanakan pengembangan
aplikasi untuk dua lapis client / server arsitektur.

Dalam model client/server, pemrosesan pada sebuah aplikasi terjadi pada client
dan server. Client/server adalah tipikal sebuah aplikasi two-tier dengan banyak
client dan sebuah server yang dihubungkan melalui sebuah jaringan, seperti
terlihat dalam gambar 1.2. Aplikasi ditempatkan pada komputer client dan mesin
database dijalankan pada server jarak-jauh. Aplikasi client mengeluarkan
permintaan ke database yang mengirimkan kembali data ke client-nya.

Arsitektur two-tier lebih aman dan terukur daripada pendekatan single-tier.


Pilihan ini bergerak Database Server ke mesin terpisah di belakang firewall yang
kedua. Ini menambah keamanan tambahan dengan menghapus data pelanggan
sensitif dari DMZ. Memiliki database pada komputer yang terpisah meningkatkan
kinerja keseluruhan situs. Kelemahan dari opsi ini adalah biaya yang mahal dan
kompleksitas arsitektur.
Model Two-tier terdiri dari tiga komponen yang disusun menjadi dua
lapisan, client(yang meminta serice) dan server (yang menyediakan service). Tiga
komponen tersebut yaitu :
 User Interface. Adalah antar muka program aplikasi yang berhadapan
dan digunakan langsung oleh user.
 Manajemen Proses.
 Database.
 Model ini memisahkan peranan user interface dan database dengan jelas,
sehingga terbentuk dua lapisan

Pada gambar tersebut, user interface yang merupakan bagian dari program aplikasi
melayani input dari user. Input tersebut diproses oleh Manajemen Proses dan
melakukan query data ke database (dalam bentuk perintah SQL). Pada database
server juga bisa memiliki Manajemen Proses untuk melayani query tersebut,
biasanya ditulis ke dalam bentuk Stored Procedure.
Dalam client/server, client-client yang cerdas bertanggung jawab untuk bagian dari
aplikasi yang berinteraksi dengan user, termasuk logika bisnis dan komunikasi
dengan server database. Tipe-tipe tugas yang terjadi pada client adalah :
1. Antarmuka pengguna
2. Interaksi database
3. Pengambilan dan modifikasi data
4. Sejumlah aturan bisnis
5. Penanganan kesalahan
Server database berisi mesin database, termasuk tabel, prosedur tersimpan, dan
trigger (yang juga berisi aturan bisnis). Dalam sistem client/server, sebagian besar
logika bisnis biasanya diterapkan dalam database. Server database manangani :
1. Manajemen data
2. Keamanan
3. Query, trigger, prosedur tersimpan
4. Penangan kesalahan
Arsitektur client/server merupakan sebuah langkah maju karena mengurangi beban
pemrosesan dari komputer sentral ke komputer client. Ini berarti semakin banyak
user bertambah pada aplikasi client/server, kinerja server file tidak akan menurun
dengan cepat. Dengan client/server user dair berbagai lokasi dapat mengakses data
yang sama dengan sedikit beban pada sebuah mesin tunggal. Namun masih terdapat
kelemahan pada model ini. Selain menjalankan tugas-tugas tertentu, kinerja dan
skalabilitas merupakan tujuan nyata dari sebagian besar aplikasi. Model client/server
memiliki sejumlah keterbatasan :
1. Kurangnya skalabilitas
2. Koneksi database dijaga
3. Tidak ada keterbaharuan kode
4. Tidak ada tingkat menengah untuk menangani keamanan dan transaksi
Aplikasi-aplikasi berbasis client/server memiliki kekurangan pada skalabilitas.
Skalabilitas adalah seberapa besar aplikasi bisa menangani suatu kebutuhan yang
meningkat – misalnya, 50 user tambahan yang mengakses aplikasi tersebut.
Walaupun model client/server lebih terukur daripada model berbasis host, masih
banyak pemrosesan yang terjadi pada server. Dalam model client/server semakin
banyak client yang menggunakan suatu aplikasi, semakin banyak beban pada server.
Koneksi database harus dijaga untuk masing-masing client. Koneksi menghabiskan
sumber daya server yang berharga dan masing-masing client tambahan
diterjemahkan ke dalam satu atau beberapa koneksi. Logika kode tidak bisa didaur
ulang karena kode aplikasi ada dalam sebuah pelaksanaan executable monolitik pada
client. Ini juga menjadikan modifikasi pada kode sumber sulit. Penyusunan ulang
perubahan itu ke semua komputer client juga membuat sakit kepala.
Keamanan dan transaksi juga harus dikodekan sebagai pengganti penanganan oleh
COM+/MTS. Bukan berarti model client/server bukanlah merupakan model yang
layak bagi aplikasi-aplikasi. Banyak aplikasi yang lebih kecil dengan jumlah user
terbatas bekerja sempurna dengan model ini. Kemudahan pengembangan aplikasi
client/server turut menjadikannya sebuah solusi menarik bagi perusahaan.
Pengembangan umumnya jauh lebih cepat dengan tipe sistem ini. Siklus
pengembangan yang lebih cepat ini tidak hanya menjadikan aplikasi meningkat dan
berjalan dengan cepat namun juga lebih hemat biaya.

c. Arsitektur Three-tier / Multi-Trier


Arsitektur Three-Tier diperkenalkan untuk mengatasi kelemahan dari arsitektur
two-tier. Di tiga tingkatan arsitektur, sebuah middleware digunakan antara sistem
user interface lingkungan klien dan server manajemen database lingkungan.
Middleware ini diimplementasikan dalam berbagai cara seperti pengolahan
transaksi monitor, pesan server atau aplikasi server. The middleware menjalankan
fungsi dari antrian, eksekusi aplikasi dan database pementasan. Di samping itu
middleware menambahkan penjadwalan dan prioritas untuk bekerja di kemajuan.
Three-tier klien / server arsitektur digunakan untuk meningkatkan performa untuk
jumlah pengguna yang besar dan juga meningkatkan fleksibilitas ketika
dibandingkan dengan pendekatan dua tingkat.
Model three-tier atau multi-tier dikembangkan untuk menjawab keterbatasan pada
arsitektur client/server. Dalam model ini, pemrosesan disebarkan di dalam tiga
lapisan (atau lebih jika diterapkan arsitektur multitier). Lapisan ketiga dalam
arsitektur ini masing-masing menjumlahkan fungsionalitas khusus. Yaitu :
1. Layanan presentasi (tingkat client)
2. Layanan bisnis (tingkat menengah)
3. Layanan data (tingkat sumber data)
Layanan presentasi atau logika antarmuka pengguna ditempatkan pada mesin
client. Logika bisnis dikeluarkan dari kode client dan ditempatkan dalam tingkat
menengah. Lapisan layanan data berisi server database. Setiap tingkatan dalam
model three-tier berada pada komputer tersendiri.

Konsep model three-tier adalah model yang membagi fungsionalitas ke dalam


lapisan-lapisan, aplikasi-aplikasi mendapatkan skalabilitas, keterbaharuan, dan
keamanan. Pada model ini disisipkan satu layer tambahan diantara user interface
tier dan database tier. Tier tersebut dinamakan middle-tier. Middle-Tier terdiri
dari bussiness logic dan rules yang menjembatani query user dan database,
sehingga program aplikasi tidak bisa mengquery langsung ke database server,
tetapi harus memanggil prosedur-prosedur yang telah dibuat dan disimpan pada
middle-tier. Dengan adanya server middle-tier ini, beban database server
berkurang. Jika query semakin banyak dan/atau jumlah pengguna bertambah,
maka server-server ini dapat ditambah, tanpa merubah struktur yang sudah ada.
Ada berbagai macam software yang dapat digunakan sebagai server middle-tier.
Contohnya MTS (Microsoft Transaction Server) dan MIDAS.
Kekurangan dari tiga tingkatan arsitektur adalah bahwa lingkungan
pengembangan lebih sulit untuk digunakan daripada pengembangan aplikasi dari
dua lapis.
a) Three tier dengan pesan server
Pada arsitektur ini, pesan akan diproses dan diprioritaskan
asynchronously. Header pesan memiliki prioritas yang mencakup
informasi, alamat dan nomor identifikasi. Server pesan link ke relasional
DBMS dan sumber data lainnya. . Pesan sistem alternatif untuk
infrastruktur nirkabel.
b) Three tier dengan server aplikasi
Arsitektur ini memungkinkan tubuh utama untuk menjalankan sebuah
aplikasi pada tuan rumah bersama bukan di sistem user interface
lingkungan klien. Server aplikasi logika bisnis saham, perhitungan dan
pengambilan data mesin. . Dalam aplikasi arsitektur ini lebih terukur dan
biaya instalasi kurang pada satu server dibandingkan mempertahankan
masing-masing pada klien desktop.
Arsitektur three-tier, ditunjukkan pada gambar di atas, memisahkan Web
Server ke mesin yang terpisah di DMZ. Pilihan ini, sementara ini adalah
yang paling mahal, adalah yang paling aman dan terukur dari tiga pilihan.
Masing-masing dari tiga server kini dapat dioptimalkan untuk puncak
efisiensi operasi. Fungsi utama Web Server jaringan I / O, Perdagangan
Server CPU-intensif dan Database Server disk I / O intensif.

Arsitektur three-tier, ditunjukkan pada gambar di atas, memisahkan Web


Server ke mesin yang terpisah di DMZ. Pilihan ini, sementara ini adalah
yang paling mahal, adalah yang paling aman dan terukur dari tiga pilihan.
Masing-masing dari tiga server kini dapat dioptimalkan untuk puncak
efisiensi operasi. Fungsi utama Web Server jaringan I / O, Perdagangan
Server CPU intensif dan Database Server disk I / O intensif.
Beberapa Kuntungan Arsitektur Three-Tier
 Keluwesan teknologi
 Mudah untuk mengubah DBMS engine
 Memungkinkan pula middle tier ke platform yang berbeda
 Biaya jangka panjang yang rendah
 Perubahan-perubahan cukup dilakukan pada middle tier daripada pada
aplikasi keseluruhan
 Keunggulan kompetitif
9. Agent
Software Agent adalah entitas perangkat lunak yang didedikasikan untuk tujuan tertentu
yang
memungkinkan user untuk mendelegasikan tugasnya secara mandiri, selanjutnya
software agent nantinya disebut agent saja. Agen bisa memiliki ide sendiri mengenai
bagaimana menyelesaikan suatu pekerjaan tertentu atau agenda tersendiri. Agen yang
tidak berpindah ke host lain disebut stationary agent. Definisi agen yang lebih rinci,
ditinjau dari sudut pandang sistem, adalah obyek perangkat lunak yang:
1) Diletakan dalam lingkungan eksekusi
2) Memiliki sifat sebagai berikut :
a) Reaktif, dapat merasakan perubahan dalam lingkungannya dan bertindak sesuai
perubahan tersebut.
b) Autonomous, mampu mengendalikan tindakannya sendiri
c) Proaktif, mempunyai dorongan untuk mencapai tujuan
d) Bekerja terus menerus sampai waktu tertentu
3) Dapat mempunyai sifat ortogonal sebagai berikut :
a) Komunikatif, dapat berkomunikasi dengan agen yang lain.
b) Mobile , dapat berpindah dari satu host ke host yang lain
c) Learning, mampu menyesuaikan diri berdasarkan pengalaman sebelumnya
d) Dapat dipercaya sehingga menimbulkan kepercayaan kepada end user.
Karakteristik dari Agen:
1. Autonomy: Agent dapat melakukan tugas secara mandiri dan tidak dipengaruhi
secara langsung oleh user, agent lain ataupun oleh lingkungan (environment).
Untuk mencapai tujuan dalam melakukan tugasnya secara mandiri, agent harus
memiliki kemampuan control terhadap setiap aksi yang mereka perbuat, baik aksi
keluar maupun kedalam [Woolridge et. al., 1995]. Dan satu hal yang penting yaitu
mendukung autonomy dan masalah intelegensi (intelligence) dari agent.
2. Intelligence, Reasoning, dan Learning: Setiap agent harus mempunyai standar
minimum untuk bisa disebut agent, yaitu intelegensi (intelligence). Dalam konsep
intelligence, ada tiga komponen yang harus dimiliki: internal knowledge base,
kemampuan reasoning berdasar pada knowledge base yang dimiliki, dan
kemampuan learning untuk beradaptasi dalam perubahan lingkungan.
3. Mobility dan Stationary: Khusus untuk mobile agent, dia harus memiliki
kemampuan yang merupakan karakteristik tertinggi yang dia miliki yaitu
mobilitas. Berbeda dengan stationary agent. Tetapi keduanya tetap harus memiliki
kemampuan untuk mengirim pesan dan berkomunikasi dengan agent lain.
4. Delegation: Sesuai dengan namanya dan seperti yang sudah kita bahas pada
bagian definisi, agent bergerak dalam kerangka menjalankan tugas yang
diperintahkan oleh user. Fenomena pendelegasian (delegation) ini adalah
karakteristik utama suatu program disebut agent.
5. Reactivity: Karakteristik agent yang lain adalah kemampuan untuk bisa cepat
beradaptasi dengan adanya perubahan informasi yang ada dalam suatu lingkungan
(enviornment). Lingkungan itu bisa mencakup: agent lain, user, informasi dari
luar, dsb [Brenner et. al.,1998].
6. Proactivity dan Goal-Oriented: Sifat proactivity boleh dibilang adalah kelanjutan
dari sifat reactivity. Agent tidak hanya dituntut bisa beradaptasi terhadap
perubahan lingkungan, tetapi juga harus mengambil inisiatif langkah penyelesaian
apa yang harus diambil [Brenner et. al., 1998]. Untuk itu agent harus didesain
memiliki tujuan (goal) yang jelas, dan selalu berorientasi kepada tujuan yang
diembannya (goal-oriented).
7. Communication and Coordination Capability: Agent harus memiliki kemampuan
berkomunikasi dengan user dan juga agent lain. Masalah komunikasi dengan user
adalah masuk ke masalah user interface dan perangkatnya, sedangkan masalah
komunikasi, koordinasi, dan kolaborasi dengan agent lain adalah masalah sentral
penelitian Multi Agent System (MAS). Bagaimanapun juga, untuk bisa
berkoordinasi dengan agent lain dalam menjalankan tugas, perlu bahasa standard
untuk berkomunikasi. Tim Finin [Finin et al., 1993] [Finin et al., 1994] [Finin et
al., 1995] [Finin et al., 1997] dan Yannis Labrou [Labrou et al., 1994] [Labrou et
al., 1997] adalah peneliti software agent yang banyak berkecimpung dalam riset
mengenai bahasa dan protokol komunikasi antar agent. Salah satu produk mereka
adalah Knowledge Query and Manipulation Language (KQML). Dan masih
terkait dengan komunikasi antar agent adalah Knowledge Interchange Format
(KIF).

10. Klasifikasi agent software


Software Agent bisa diklasifikasikan sebagai :
1. Desktop Agent
Yaitu agent yang hidup dan bertugas dalam lingkungan Personal Computer
(PC), dan berjalan diatas suatu Operating System (OS). Yang termasuk dalam
klasifikasi ini adalah:
 Operating System Agent
 Application Agent
 Application Suite Agent
2. Internet Agent
Yaitu agent yang hidup dan bertugas dalam lingkungan jaringan Internet,
melakukan tugasnya yaitu memanage informasi yang ada di Internet. Yang
termasuk dalam klasifikasi ini adalah :
 Web Search Agent
 Web Server Agent
 Information Filtering Agent
 Information Retrieval Agent
 Notification Agent
 Service Agent
 Mobile Agent
3. Intranet Agent
Yaitu Agent yang hidup dan bertugas dalam lingkungan jaringan Intranet,
melakukan tugas memanage informasi yang ada di Intranet. Termasuk dalam
klasifikasi ini adalah:
 Collaborative Customization Agent
 Process Automation Agent
 Database Agent
 Resource Brokering Agent

Bahasa Pemrograman
Bahasa pemrograman yang dipakai untuk tahap implementasi dari software agent,
sangat menentukan keberhasilan dalam implementasi agent sesuai dengan yang
diharapkan. Beberapa peneliti memberikan petunjuk tentang bagaimana karakteristik
bahasa pemrorgaman yang sebaiknya di pakai [Knabe, 1995] [Brenner et al., 1998].
Diantaranya yaitu :
1. Object-Orientedness
Karena agent adalah berhubungan dengan obyek, bahkan beberapa peneliti
menganggap agent adalah obyek yang aktif, maka juga agent harus
diimplementasikan kedalam pemrorgaman yang berorientasi obyek (object-
oriented programming language).
2. Platform Independence
Seperti sudah dibahas pada bagian sebelumnya, bahwa agent hidup dan
berjalan diberbagai lingkungan. Sehingga idealnya bahasa pemrograman yang
dipakai untuk implementasi adalah yang terlepas dari platform, atau dengan
kata lain program tersebut harus bisa dijalankan di platform apapun (platform
independence).
3. Communication Capability
Pada saat berinteraksi dengan agent lain dalam suatu lingkungan jaringan
(network environment), diperlukan kemampuan untuk melakukan komunikasi
secara fisik. Sehingga diperlukan bahasa pemrograman yang dapat
mensupport pemrograman yang berbasis network dan komunikasi.
4. Security
Faktor keamanan (security) adalah factor yang sangat penting dalam memilih
bahasa pemrorgaman untuk implementasi software agent. Terutama untuk
mobil agent, diperlukan bahasa pemrograman yang mensupport level-level
keamanan yang bisa membuat agent bergerak dengan aman.
5. Code Manipulation
Beberapa aplikasi software agent memerlukan manipulasi kode program
secara runtime, sehingga diperlikan bahasa pemrograman untuk software
agent yang dapat menangani masalah runtime tersebut. Dari karakteristik
diatas dapat disimpulkan bahwa bahasa pemrograman yang layak untuk
mengimplementasikan software agent adalah sebagai berikut :
 Java
 Telescript
 Tcl/Tk, Safe-Tcl, Agent-Tcl

Anda mungkin juga menyukai