Aplikasi Enterprise
BAB 1 ENTERPRISE
1.1. Definisi Enterprise Menurut kamus enterprise berarti:
Keberanian berusaha, kegiatan memulai usaha Perusahaan, firma.
Menurut Developing Enterprise Java Applications with J2EE and UML
by Khawar Zaman Ahmed, Cary E. Umrysh, istilah enterprise mengacu
pada suatu organisasi atau individu sebagai suatu kesatuan, yang
bekerja bersama-sama untuk mencapai beberapa tujuan umum.
Enterprise berkaitan erat dengan B2B (Business to Business) dan B2C
(Business to Customer). Kata enterprise biasa digunakan untuk
menyebut perusahaan dalam skala besar, seperti Microsoft, Intel,
Yahoo!, atau Ebay.
1.2. Elemen Enterprise Enterprise / Perusahaan mempunyai delapan
elemen yaitu : 1. Masyarakat Keuangan 2. Pemerintah 3. Masyarakat
Global 4. Pemasok 5. Pelanggan 6. Pesaing 7. Pemegang saham/Pemilik
Global 8. Serikat Buruh
1.3. Kebutuhan Enterprise Enterprise/Perusahaan mempunyai
beberapa kebutuhan pokok yaitu : Information sharing and
processing
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
1
Aplikasi Enterprise
Asset management and tracking Resource planning Customer or
client management Protection of business knowledge
1.4.
Arsitektur Enterprise
Definisi Arsitektur adalah Suatu cara di mana komponen-komponen
dalam sebuah komputer atau sistem komputer system diorganisasikan
dan diintegrasikan Dari definisi itu komponen-komponen pembentuk
sistem sangat penting untuk kesuksesan sebuah arsitektur. Pemahaman
terhadap komponen-komponen penyusun arsitektur tersebut diperlukan
agar kita bisa memahami arsitektur, karakteristik sistem dan
keterkaitannya dengan sistem lainnya. Kita perlu mengintegrasikan
sistem dalam suatu perusahaan sehingga terjadi komunikasi antar
elemen - elemennya. Sangatlah penting untuk mengerti system dasar
suatu organisasi dan mencatat bagaimana komponen-komponen tersebut
bekerja tetapi tidak harus mengetahui detail bagaimana cara
membentuk komponen komponen tersebut.
1.5.
Enterprise Software
Menurut Wikipedia.org: Enterprise Software is software that
solves an enterprise problem (rather than a departmental problem)
and usually enterprise software is written using Enterprise
Software Architecture. Dari definisi diatas dapat diartikan bahwa
Aplikasi Enterprise adalah aplikasi / perangkat lunak yang dapat
digunakan untuk menyelesaikan masalah perusahaan dan elemen
elemennya dan biasanya dibuat dengan Arsitektur Perangkat Lunak
Enterprise. Berikut adalah gambaran dari arsitektur aplikasi
enterprise :
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
2
Aplikasi Enterprise
Gambar 1.1. Arsitektur Aplikasi Enterprise
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
3
Aplikasi Enterprise
BAB 2 APLIKASI ENTERPRISE
2.1.
Kebutuhan Aplikasi Enterprise
Kebutuhan dari aplikasi enterprise adalah sebagai berikut :
Mengintegrasikan customer support dan in house product
knowledge melalui WEB. Dengan menghubungkan semua mesin-mesin
server dan data melalui internet secara online, marketing
perusahaan itu akan bertambah baik karena bisa menjangkau
pelangganpelanggan dari mana-mana. Perusahaan akan menghemat biaya
sales manajemen dan mempermudahnya, disamping itu dapat meraih
pasar baru. Enterprise software dapat membantu pekerjaan para
pekerja di perusahaan sehingga mempermudah, mempercepat pekerjaan,
mengefisiensikan pekerja, sekaligus memperkecil biaya
pengeluaran perusahaan. Contoh penerapana aplikasi enterprise
adalah pengelolaan gaji karyawan, daftar pasien rumah sakit, data
pengiriman barang, analisis keuangan, pencatatan kredit, asuransi,
pajak, pengelolaan eksport dan import, dan masih banyak lagi yang
lain.
2.2.
Karakteristik Aplikasi Enterprise
Ciri ciri aplikasi enterprise : Butuh persistent data, karena
data digunakan secara bersama oleh banyak aplikasi, bahkan
digunakan untuk jangka waktu yang lama. Walaupun sangat mungkin
terjadi perubahan sistem perusahaan, data tidak boleh berubah.
Enterprise application menghandle data yang sangat besar. Dulu
digunakan konsep file system (standalone) sekarang
digunakan databaserelasional
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
4
Aplikasi Enterprise
Pengguna enterprise application banyak dan beraneka ragam o
Bagaimana cara menghadle concurrent access -> transaction
management tool o Butuh log dan recovery
Memiliki banyak macam user interface di masing-masing client
Bagaimana agar seluruh data yang ada dapat direpresentasikan ke
seluruh user dengan semudah mungkin dan bermacam-macam user
interface tergantung kebutuhannya.
Butuh terintegrasi dengan aplikasi lain. Mampu memisahkan
business logic dengan presentasi
2.3.
Kesulitan Aplikasi Enterprise
Hardware yang masih mahal, yang mungkin juga tidak (belum)
berkembang sesuai keadaan dan kebutuhan sekarang. Kesulitan mencari
pekerja yang dapat memiliki kemampuan kerja yang baik, dan dapat
mengikuti perkembangan teknologi. Kesulitan dalam pembuatan seluruh
sistem software dan yang mampu Distributed
mengintegrasikan
bersifat
Software. (Distribution) Adanya multiple vendor juga mempersulit
pembuatan program. (Vendor Diverse) Contohnya: Perusahaan A
menggunakan SQL Server dan klien perusahaan A menggunakan Oracle.
Dalam hal ini dibutuhkan suatu software yang mampu mengatasi lintas
vendor. Adanya kebutuhan keamanan sistem dan integritas
data.(Security) Misalnya: o Mampu menghandle system failure dengan
system failure recovery o Rollback transaction untuk transaksi yang
salah atau batal o Transaction locking yang mampu mengatasi
keamanan data. Contohnya pada saat ada transaksi yang hampir
bersamaan. o Mampu menghandle multi user situation
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
5
Aplikasi Enterprise
Menjaga kekonsistensian data walau ada error, delay, dan
transaksi yang jauh.
2.4.
Kesuksesan Aplikasi Enterprise
Untuk mengukur kesuksesan dari aplikasi enterprise dapat dilihat
dari beberapa hal, antara lain: 1. Response time: adalah total
waktu yang dibutuhkan sistem untuk memproses sebuah request dari
luar sistem tersebut. Mungkin sebuah aksi UI, seperti penekanan
tombol, atau sebuah
pemanggilan server API. Min Response time 2. Responsiveness:
adalah seberapa cepat sistem mengenali sebuah request sebagai
tantangan untuk diproses. User bisa frustasi walapun response time
baik Walaupun belum selesai proses, sistem harus tetap
memberikan respon. Misalnya gunakan timer atau progressbar, atau
informasi lain. 3. Latency: adalah waktu minimum yang dibutuhkan
untuk
mendapatkan segala bentuk response, walaupun tujuan tidak ada
yang biasanya ditemui pada remote systems. Jika dilakukan di lokal,
maka response akan cepat namun pada remote system, hal itu akan
lama. Latency adaah alasan agar kita meminimalisasi remote call. 4.
Throughput : adalah berapa hasil yang diperoleh dalam suatu satuan
waktu tertentu. Jika kita mengukur copy file, throughput diukur
dalam berapa bytes per second. Untuk enterprise
applications pengukuran berdasarkan transactions per second
(tps), tapi masalahnya bergantung pada kompleksitas transaksi. 5.
Load adalah statement dari berapa tingkat tekanan stress sebuah
sistem, misalnya diukur dengan berapa banyak user yang sedang
terhubung saat itu. Biasanya diukur dengan parameter lain,
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
6
Aplikasi Enterprise
misalnya dengan: response time untuk beberapa request adalah 0.5
seconds dengan 10 users dan 2 seconds dengan 20 users. 6. Load
sensitivity adalah ekspresi tentang bagaimana response time
bervariasi dengan load. Misalnya sistem A memiliki response time
0.5 seconds untuk 10 sampai 20 users dan system B memiliki response
time 0.2 seconds untuk 10 users yang naik menjadi 2 seconds untuk
20 users. Pada contoh di atas, system A memiliki load sensitivity
yang lebih rendah daripada sistem B. 7. Efficiency adalah performa
dibagi dengan resources. Sebuah sistem yang memiliki 30 tps pada 2
CPU akan lebih efisien dibanding dengan sebuah sistem yang memiliki
40 tps pada CPU yang sama. 8. Capacity adalah indikasi maximum dari
throughput atau load yang efektif. 9. Scalability adalah ukuran
bagaimana penambahan resources (biasanya hardware) mempengaruhi
performance. Sebuah scalable system memperbolehkan kita untuk
menambah hardware dan mendapatkan peningkatan performa, seperti
penambahan server. Vertical scalability atau scaling up, berarti
menambahkan lebih banyak tenaga terhadap single server, seperti
penambahan memory. Horizontal scalability atau scaling out,
berarti
menambahkan lebih banyak servers.
2.5.
Evolusi Aplikasi Enterprise
Dahulu sistem bersifat Centralized Approach. Yaitu sistem dimana
bersifat stand alone, dan terpusat. Single system for all
processing needs Sehingga: physical limitations of scalability,
single points of failure, limited accessibility from remote
locations Bersifat single-tier : presentasi, logic business, code,
dan data menjadi satu kesatuan, tidak dipisah-pisah. Kekurangan
single-tier:
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
7
Aplikasi Enterprise
o Menyebabkan perubahan terhadap salah satu komponen diatas
tidak mungkin dilakukan, karena akan mengubah semua bagian. o Tidak
memungkinkan adanya re-usable component dan code. Sekarang sistem
bersifat Distributed Approach Yaitu sistem dimana bersifat tersebar
dan multiproses. Sistem ini bersifat On Demand Software dan
Software as Service On Demand Software: berarti software tersebut
mampu mendukung sistem terdistribusi sehingga dapat diakses melalui
Internet Software as a Service berarti software tersebut berlaku
sebagai server dan memberikan pelayanan kepada customer melalui
Internet. Bersifat multi-tier : presentasi, logic business, dan
data terpisah pisah menjadi lapisan-lapisan tersendiri
Multitier Multi-tier bisa terdiri dari 2-tier, 3-tier, n-tier.
Contoh multi-tier adalah aplikasi client-server (2-tier) dimana
business logic (di server) dan presentasi (di client) terpisah
dalam beberapa lapisan (tier). Konsekuensi : tantangan untuk
mengupdate software aplikasi untuk jumlah client yang banyak dengan
biaya minimun dan gangguan yang kecil
Kelebihan N-Tier Cepat dan dapat menurunkan biaya pengembangan.
Aplikasi baru dapat dibuat lebih cepat menggunakan kembali data
access component dan data bisnis yang ada. Perubahan pada suatu
komponen tertentu tidak mempengaruhi komponen lain. Perubahan pada
satu tier tidak berpengaruh pada tier lain. Perubahan lebih dapat
di-manage. Lebih mudah untuk mengganti salah satu komponen bisnis
dengan yang baru dalam business-tier
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
8
Aplikasi Enterprise
(business logic) daripada menggantu ratusan application client
diseluruh dunia.
Gambar 2.1. Gambaran Tier
1.6.
Perbedaan Enterprise Software dan Component- Based Software
OOP dirasa kurang untuk menangani permasalahan yang besar karena
sifat strongly coupled nya. Waktu itu OOP hanya merupakan sebatas
metode yang sulit diaplikasikan langsung dalam proyek skala besar
Hal ini dapat diatasi dengan menggunakan component based software.
Software Component didesain dengan level yang lebih tinggi dari
hanya sekedar obyek, memiliki abstraksi/interface dan
service-service yang lengkap. (Ingat kembali OOP )
Software Component bersifat loosely coupled. Contoh Software
Component: JavaBeans dari Sun Microsystem dan DCOM & ActiveX
dari Microsoft.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
9
Aplikasi Enterprise
BAB 3 TEKNIK ARSITEKTUR ENTERPRISE
3.1.
Layering
Layering salah satu teknik umum di mana para software designers
menggunakan hal itu untuk memecah sebuah sistem yang rumit ke dalam
bagian-bagian yang lebih sederhana. Contoh: Networking: lapisan
layer OSI dan TCP/IP. Ketika sistem dibagi dalam layer-layer, maka
principal subsystems dalam software diatur dalam layer, di mana
setiap layer bergantung pada lower layer. The higher layer
menggunakan various services yang didefinisikan oleh lower layer,
tetapi lower layer tidak perlu mengetahui the higher layer. Each
layer biasanya menyembunyikan lower layernya dari layer atasnya,
sehingga layer 4 menggunakan services dari layer 3, yang
menggunakan services dari layer 2, tetapi layer 4 tidak tahu menahu
tentang 2. Kelebihan Layering Kita hanya tahu bahwa aplikasi
tersebut terdiri dari satu single layer saja tanpa harus tahu
layer-layer yang lain. Sebagai contohnya kita dapat mengetahui
bagaimana membuat FTP service pada TCP tanpa harus tahu bagaimana
cara kerja Ethernet Card secara fisik. Dapat mengganti layer-layer
dengan aplikasi lain yang
mengimplementasikan servis dasar yang sama. Sebuah FTP service
yang mungkin berbeda-beda dapat tetap berjalan tanpa harus
mengganti Ethernet, PPP, atau kabel-kabel. Dapat meminimalisasi
ketergantungan antar layer-layer. Jika kita mengganti kabel
jaringan, kita tidak perlu juga mengganti FTP service.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
10
Aplikasi Enterprise
Layer sangat mendukung standarisasi. TCP / IP adalah standard
karena mereka mendefinisikan bagaimana layer-layer mereka harus
beoperasi.
Sesudah layer terbentuk, kita dapat menggunakannya untuk
bermacam-macam servis lainnya. Contoh, TCP/IP digunakan oleh FTP,
telnet, SSH, dan HTTP. Semua protokol-protokol inipun memiliki
lower-level protokolnya masing-masing juga.
Kelemahan Layering Penggunaan Layer menyebabkan dan menambah
tingkat
kompleksitas proses. Karena terdiri dari beberapa layer, maka
setiap layer harus memiliki fungsinya masing-masing, dan suatu
proses harus melewati masing-masing layer tersebut terlebih dahulu
baru dapat menghasilkan output. Jadi masing-masing layer harus
memiliki kemampuan memproses yang berlainan. Layer mengenkapsulasi
fungsi-fungsinya masing-masing sehingga tidak dapat mengetahui
detail fungsi suatu layer. Layer bekerja secara bersama-sama
menjadi satu kesatuan sehingga seluruh layer harus bekerja secara
optimal. Penambahan suatu layer juga akan mempengaruhi efisiensi
sistem secara keseluruhan.
Prinsip Layer Presentation logic: mengatur bagaimana menghandle
interaksi antara user dan software. Bisa berupa simple command-line
atau text-based menu system, tapi sekarang bisa berupa rich-client
graphics UI atau HTML-based browser UI. Tanggungjawab utama
responsibilities dari presentation layer adalah untuk menampilkan
informasi ke user dan untuk menginterpretasikan perintah dari user
ke dalam aksi terhadap domain dan data source. Data source logic:
mengatur komunikasi dengan sistem lain yang mengerjakan tugas untuk
kepentingan applikasi. Bisa berupa
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
11
Aplikasi Enterprise
transaction monitors dan messaging systems. The biggest piece of
data source logic adalah database yang bertanggungjawab untuk
menyimpan persistent data. Domain logic / business logic. Mengatur
kejelasan aturan bisnis suatu aplikasi. Misalnya melakukan
kalkulasi berdasarkan input dan data yang tersimpan, validasi dari
data yang datang dari layer presentasi, dan menggambarkan secara
tepat mana data source logic yang dibutuhkan, tergantung pada
perintah yang diterima dari layer presentasi.
Evolusi Layer (tier) Tahun 1990an: Client-Server (Two-layer
systems) o Di sisi client, terdapat user interface dan aplikasi
lain, dan di sisi server biasanya ada relational database. Contoh
client tool adalah VB, Powerbuilder, dan Delphi. o Problem:
business rules, validations, calculations o Biasanya ditulis di
client, tapi jika sudah semakin kompleks? o Bisa ditulis sebagai
stored procedure di dalam database, tapi jika ganti database?
Sekarang, three-layer system: presentation layer untuk UI, domain
layer/logic layar untuk your domain logic, dan data
source/database. Implementasinya bisa dibuat dalam bentuk
subrutin-subrutin untuk masing-masing layer, atau class-class, atau
bahkan service, dan database terdistribusi.
3.2.
Businness Logic
3.1.1. Transaction Script Adalah sebuah prosedur/routine yang
mengambil input dari
presentation layer dan memprosesnya dengan berbagai validasi dan
kalkulasi, menyimpan data dalam database, dan melakukan beragam
operasi dari sistem yang lain.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
12
Aplikasi Enterprise
Transaction script biasanya berupa script yang digunakan untuk
menghandle berbagai aksi yang mungkin dilakukan oleh user dan
berbagai transaksi bisnis lainnya. Tidak harus dijadikan satu
script, tapi dapat dipisah-pisah, dalam bentuk procedure-procedure,
fungsi-fungsi, atau bahkan class. Contoh: script untuk checkout
barang, menambah barang ke shopping cart, untuk menampilkan status
delifery, dan lain-lain.
Gambar 3.1. Transaction Script
Kelebihan Transaction Script Berupa prosedur yang simpel dan
muda dimengerti oleh para developer. Mudah digunakan dan
digabungkan dengan data source layer menggunakan database gateway.
Mudah ditentukan batas transaksinya. Dimulai dari opening
transaction dan diakhiri dengan penutupannya.
3.1.2. Domain Model Adalah suatu sistem pengorganisasian bisnis
logik dengan pendekatan sistem berorientasi obyek, sehingga kita
diharuskan membangun sebuah model dari domain permasalahan yang
kita
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
13
Aplikasi Enterprise
hadapi. Misalnya suatu obyek shipment akan juga berisi logika
untuk menghitung ongkos pengiriman dan biaya antar. Semua logika
tersebut dimasukkan dalam method/routine obyek tersebut.. Perbedaan
antara Domain Model dan Transaction Script adalah pada pendekatan
yang dilakukan. Transaction Script beorientasi method/fungsi/rutin
di mana seluruh logic user dijadikan satu dalam fungsi-fungsi tanpa
memperhatikan domain permasalahan, sedangkan pada Domain Model
logic user dibuat dalam obyek-obyek yang berkaitan dengan domain
permasalahan.
Gambar 3.2. Calculating Revenue Domain Model.
3.1.3. Table Module Table Module sama seperti Domain Model
karena Table Module juga memiliki kelas-kelas seperti layaknya
Domain Model, namun Domain Model memiliki 1 instance untuk setiap
kelasnya di dalam database. Sedangkan Table Module hanya memiliki 1
instance saja untuk seluruh kelas dan didesain untuk bekerja dengan
Record Set. Semua query yang dilakukan harus melalui Record Set dan
akan membuat obyek dari kelas dan mengirimkannya ke Record Set
sebagai suatu argument. Client dapat menggunakan semua
operasioperasi pada suatu kelas untuk melakukan banyak hal.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
14
Aplikasi Enterprise
Gambar 3.3. Table Module.
3.3. Pengelompokan Businness Logic Pendekatan umum untuk
menghandle bisnis logic adalah membagi bisnis logic ke dalam 2
bagian.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
15
Aplikasi Enterprise
o Service Layer: digunakan jika menggunakan Domain Model atau
Table Module. Service Layer beraksi seperti API Service. o Domain
Layer: digunakan jika menggunakan Transaction Script
3.4. Mapping to Relational Database Dari segi arsitektur:
bagaimana domain logic berhubungan dengan database Karena SQL tidak
terlalu seragam, maka jalan terbaik adalah memisahkan akses SQL
dari domain logic dan
menempatkannya dalam kelas yang terpisah. Satu kelas untuk satu
tabel. Kelas-kelas ini akan membentuk Gateway ke dalam tabel-tabel
tanpa harus tahu tentang SQL Model Pengaksesan data: per 1 record
dan sekaligus seluruh/beberapa record dalam 1 tabel oleh 1
query
3.5. Web Presentation Template View dan Transform View:
memperbolehkan kita untuk menulis presentasi/tampilan dan program
dalam struktur halaman secara langsung dan embedded sehingga
halaman tersebut memiliki konten dinamis sesuai yang diinginkan.
Contoh: PHP, JSP & ASP Classic. Mudah dibuat tapi kode dan
tampilan tidak terpisahkan! Transform View menggunakan sebuah
transformasi dari program. Contohnya XSLT, dan semua View tersebut
bersifat single stage.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
16
Aplikasi Enterprise
Gambar 3.4. Web Presentation
Model View Controller (MVC) Model ini membagi user interface
menjadi tiga elemen :
Gambar 3.5. Model View Controller
View merpresentasikan tampilan dari UI, Controller menghandle
semua perubahan terhadap informasi. Controller mengambil inputan
user, memanipulasi model, dan menyebabkan view untuk
mengupdatenya.sedangkan UI adalah kombinasi dari view dan
controller. Model mengatur business policies, dan interaksi dengan
database
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
17
Aplikasi Enterprise
Page Controller Sebuah object yang menangani sebuah request
untuk suatu halaman tertentu atau suatu aksi terhadap suatu
website.
Gambar 3.6. Page Controller
Front Controller Adalah sebuah controller yang menangani semua
request untuk sebuah Website, serta merupakan sebuah single handler
object, memiliki method-method umum, yang dapat dimodifikasi pada
saat runtime. Kemudian handler akan melakukan perintah berdasarkan
request yang ada
Gambar 3.7. Front Controller
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
18
Aplikasi Enterprise
Gambar 3.8. Front Controller Detail
Template View Template View merender informasi ke dalam HTML
dengan menempelkan tanda-tanda dalam halaman HTML. Ketika halaman
melayani sebuah request, maka tanda-tanda tersebut akan diganti
dengan hasil dari komputasi seperti misalnya dari database
query.
Gambar 3.9. Template View
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
19
Aplikasi Enterprise
Transform View Sebuah view yang memproses domain data elemen
demi elemen dan mengubahnya ke dalam HTML, Proses transformasi
hanya pada elemen atau bagian yang diperlukan saja. Contoh:
ditransformasikan ke dalam XML
Two Step View Mengubah domain data ke dalam HTML dalam 2
langkah: pertama dengan membentuk semacam logical page, kemudian
merender halaman logical tersebut ke dalam HTML.
Application Controller Menghandle layar navigasi dan aliran
aplikasi. Menggunakan interface.
3.6. Concurrency Problems Jika ada dua atau lebih proses/thread
yang mengakses data yang sama Lost updates: yang terakhir update
yang akan mengupdate. Inconsistent read: jika ada 2 atau lebih
pembacaan, tapi salah satu ada yang menyimpan, maka data menjadi
tidak konsisten Semua menyebabkan data tidak benar Harus ada
mekanisme: isolation dan perlu memperhatikan immutable data: o
Optimistic locking: semua dapat copy dari data, jika salah satu
proses sudah mengupdate data, maka proses lain masih dibiarkan
mengakes data sampai proses tersebut hendak mengupdate data, dan
pada saat itu, akan dilakukan blocking. (conflict detection).
Deteksi dilakukan dengan version checker. o Pessimistic locking:
semua dapat copy dari data, jika sudah ada proses yang mengupdate
data, maka semua proses lain
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
20
Aplikasi Enterprise
langsung diblok, semua proses lain harus menunggu (conflict
prevention) dan dapat menyebabkan deadlock
Cara mencegah dan mengatasi deadlock Atomicity: setiap langkah
dalam suatu sekuens harus bergantian dan bersifat uninterrupable,
jadi suatu kejadian harus selesai terlebih dahulu baru kejadian
berikutnya. Consistency: sumber daya sistem harus
konsisten,noncorrupt sampai selesai transaksi. Isolation: hasil
dari individual transaction tidak bolehdiketahui oleh proses lain,
sampai berhasil di commit. Durability: hasil apapun yang sudah
dicommit harus bersifat permanen. Harus bisa mengatasi jika terjadi
crash.
Request-Response Web Server Process-per-session : satu session
satu proses, boros resource, tapi simple Process-per-request :
banyak session ditangani oleh satu proses, tidak perlu
multithreading, tapi yang perlu diperhatikan adalah semua resource
yang sudah selesai dipakai pada suatu request harus dapat direlease
setelah request selesai. Thread-per-request : setiap request
dihandle oleh satu thread dalam satu process, thread membutuhkan
request yang lebih sedikit dibandiongkan dengan process, sehingga
kita dapat menghandle lebih banyak request dalam satu thread.
Kelemahannya: tidak ada mekanisme isolasi data antar thread yang
ada.
Stateless & Stateful Server Stateless server berarti server
tersebut tidak pernah menyimpan suatu data dari sebuah request yang
diajukan kepadanya setelah proses response berakhir, stateful
server butuh untuk menjaga
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
21
Aplikasi Enterprise
semuastatenya
sementara
sedang
menunggu
seoranguser
menyelesaikan requestnya.
3.7. Session Kita membutuhkan server object yang berguna
untuk
menyimpan suatu data dari user dalam suatu waktu tertentu, yaitu
session, Seorang user memiliki session yang berbeda-beda. Session
berbeda dengan record data, disebut dengan record data. session
yang sudah dicommit baru
Cara Menyimpan Session Client session state: menyimpan data di
client. Ex: hidden field, URL encoding, dan cookies. Kelemahan:
butuh transfer data dari client ke server, keamanan, dan
integritas. Hanya mungkin digunakan untuk data-data kurang penting
dan kecil ukurannya. Server session state: menyimpan data di memori
server pada saat request terjadi. Ex: session object dengan
session_id. Harus ada mekanisme session_timeout. Sulit menangani
system crash. Database session state: menyimpan data di database.
Kompleks tapi mampu menangani sistem crash.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
22
Aplikasi Enterprise
BAB 4 ARSITEKTUR SOFTWARE
4.1. Arsitektur Software Arsitektur software merupakan struktur
statis dari sebuah software. Struktur statis mengacu pada bagaimana
elemen-elemen dari software berhubungan antara satu dengan lainnya.
Struktur dinamis dari sebuah software, yang berarti relasi antar
elemen dapat berubah selama masa hidup software tersebut dan
mengetahui bagaimana keadaan pada saat sebuah software saat sedang
berjalan. Komposisi (atau Dekomposisi) dari software. Mengacu pada
bagian penting dari software, seperti subsystem dan modules.
Komponen-komponen dan interaksi diantara mereka. Layer-layer dan
interaksi diantara mereka.
4.2. Middleware Software yang berfungsi sebagai lapisan konversi
atau penerjemah diantara komponen aplikasi dengan tujuan untuk
mengurangi
kekompleksitasan aplikasi terdistribusi. Contoh Arsitektur yang
menggunakan Middleware: Client/Server Contoh: Http server, di mana
client (browser) meminta dokumen, sedangkan server mengirimkan
dokumen yang diminta
Gambar 4.1. Software
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
23
Aplikasi Enterprise
4.3. Karakteristik Client/Server Service : Menyediakan layanan
terpisah yang berbeda. Shared resource : Server dapat melayani
beberapa client pada saat yang sama dan mengatur pengaksesan
resource Asymmetrical Protocol : antara client dan server merupakan
hubungan one-to-many. Client memulai komunikasi dengan
mengirim request ke server. Server menunggu permintaan dari
client. Transparency Location : proses server dapat ditempatkan
pada mesin yang sama atau terpisah dengan proses client.
Client/server akan menyembunyikan lokasi server dari client.
Mix-and-match : tidak tergantung pada platform
Message-based-exchange : antara client dan server berkomunikasi
dengan mekanisme pertukaran message. Encapsulation of service :
message dari client memberitahu server apa yang akan dikerjakan
tanpa harus tahu detail service. Integrity : kode dan data server
diatur secara terpusat, sedangkan pada client tetap pada komputer
tersendiri.
4.4. Service Oriented Architecture (SOA) SOA adalah sebuah
konsep Software Architecture yang mendefinisikan penggunaan layanan
untuk mendukung kebutuhan pengguna software. SOA bersiftat loosely
coupled (tingkat
ketergantungannya rendah), high interoperable (mudah
dioperasikan), reusable (dapat digunakan kembali), dan
interoperability (antar platform). SOA menggunakan definisi
interface yang mengenkapsulasi semua implementasi yang ada. SOA
bersifat behind the scence, SOA tidak terlihat secara langsung oleh
client, SOA dihadapkan pada client melalui client UI. SOA merupakan
suatu service yang hanya menunggu (listen) secara terus-menerus
untuk digunakan.
Implementasi SOA adalah web service.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
24
Aplikasi Enterprise
4.4.1. Beberapa Istilah dalam SOA Service: Suatu fungsi yang
menerima satu atau lebih request dan mengembalikan satu atau lebih
response yang terdefinisi dengan baik dengan menggunakan interface
yang standar. Service tidak boleh tergantung pada suatu fungsi atau
proses lain. Stateless: Tidak tergantung pada kondisi apapun.
Service menerima semua informasi yang dibutuhkan untuk menyediakan
response dari suatu request. Pengguna service akan menggunakan
service yang diperoleh untuk digunakan dalam application logic
mereka. Provider: Fungsi yang menyediakan service dan meresponse
sebuah request. Consumer: Fungsi yang membutuhkan response dari
service yang dihasilkan oleh provider. Binding: Hubungan antara
provider dan consumer bersifat dinamis dan hubungan itu dibuat pada
saat runtime berdasarkan mekanisme binding.
4.4.2. Kelebihan SOA Bersifat Standard SOA bersifat lebih
interoperability dibandingkan dengan RPC, DCOM, CORBA (Common
Object Request Broker Architecture), EJB (Enterprise Java Bean),
dan RMI (Remote Metho Invocation). SOA dapat didefinisikan sebagai
function, object, dan method. Karena sifat platform
independence-nya maka perusahaan dapat menggunakan software dan
hardware yang lebih bebas sesuai dengan pilihan mereka. Tidak
tergantung pada satu vendor tertentu saja. SOA mendukung
pengembangan yang terus menerus, distribusi, dan maintenance yang
bertahap.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
25
Aplikasi Enterprise
Perusahaan dapat menggunakan software yang telah mereka punyai
dan menggunakan SOA untuk membuat aplikasi tanpa harus mengganti
aplikasi yang sudah ada.
Biaya pelatihan rendah.
4.4.3. Hubungan antar Service (Coupling) Tight Coupling: tingkat
ketergantungan tinggi. Disatu sisi permorfa baik namun akan membuat
kesulitan pada maintenance problems. Loose Coupling: tingkat
ketergantungan rendah. Service provider mendefinisikan dan
mempublikasikan service mereka menggunakan bahasa yang standar.
Interface mendefinisikan method-method yang dapat diinvoke oleh
service consumer. Dengan ketergantungan rendah maka pengubahan
implementasi tidak akan mempengaruhi
keseluruhan sistem.
Binding Binding adalah hubungan yang terjadi antara 2 atau lebih
service. Static binding: diasumsikan definisi service dan interface
tidak sering berubah. Hal ini dilakukan jika konsumen service sudah
mengetahui dengan jelas method-method yang ada di service. Contoh:
penggunaan RMI di Java. Broker binding: konsumen service
mengirimkan request ke service broker (perantara) terlebih dahulu,
kemudian akan diteruskan ke service provider. Service consumer
tidak perlu tahu dimana provider dan bagaimana implementasi
service. Contoh: penggunaan client stub pada CORBA. Dynamic
binding: diasumsikan konsumen service memanggil provider secara
langsung. Diasumsikan juga bahwa definisi service dan interface
yang disediakan oleh provider berubah secara cepat. Sehingga untuk
setiap pemanggilan, konsumen harus mengkontak service directory
untuk merequest definisi yang diminta. Berdasarkan informasi yang
diperoleh dari service directory, konsumen melakukan
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
26
Aplikasi Enterprise
bind ke service provider. Dynamic binding melakukan lookup dan
binding. Contoh: - Penggunaan DII (Dynamic Invocation
Interface)pada CORBA. - Web Service 4.4.4. SOAs Invocation Gunakan
pemanggilan synchronous service ketika sebuah
response secara segera/cepat harus segera diberikan. Konsumen
service akan diblok selama menunggu response dari service. Pada
model asynchronous, konsumen mengirim request dan meneruskan proses
lainnya. Service provider merespond ketika proses telah selesai
dilakukan, waktu yang dibutuhkan tergantung pada waktu server load.
Pada kenyataannya, untuk multiple applications, asyncrhronous
service akan lebih baik, karena proses tidak terhenti, adanya
garansi pertukaran message.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
27
Aplikasi Enterprise
BAB 5 PERKEMBANGAN SOFTWARE
Pada awalnya semua perusahaan software di dunia mempunyai tipe
bisnis yang sama yaitu : Mempertahankan serta menutup hasil
kekayaan intelektual. Software hanya dikembangkan oleh karyawannya
sendiri Dikirim dalam format yang telah dienkripsi Berlisensi hanya
untuk computer yang dipakai user
Pada jaman sekarang ini, kebanyakan software dikembangkan dengan
platform opensource.
5.1. Sejarah Open Source Opensource mulai dikenal sejak tahun
1960, dengan ide yang cukup sederhana yaitu : Programmer dapat
melihat source code Programmmer dapat mendistribusikan ulang code
Programmer dapat memodifikasi source code Sehingga programmer dapat
meningkatkan, memperbaiki bug, dan mengubah program yang ada dengan
tetap mencantumkan lisensi. Open Source menganggap bahwa di dalam
open source model, program akan menjadi lebih baik karena para
programmer dapat saling bantu. Pada tahun 1988 terjadi open source
movement yang dipicu oleh Mozilla source code yang dilepas oleh
Netscape, yang hanya free for academics only. Keudian berdiri The
Open Source Initiative (OSI) oleh Eric S. Raymond and Bruce Perens.
Open Source Definition digunakan oleh Open Source Initiative untuk
mengidentifikasikan sebuah lisensi software open source atau bukan.
Definisi ini berdasarkan Debian Free Software Guidelines.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
28
Aplikasi Enterprise
Open source berarti bahwa source code program tersedia bagi
seluruh user, biasanya tersedia dengan gratis dan Open source
berbeda dengan freeware dengan perbedaan bahwa Open source
menyertakan source code dan Freeware hanya gratis, belum tentu
menyertakan source code, bahkan dapat juga freeware untuk suatu
batasan waktu tertentu saja.
5.2. Kriteria Open Source Free Redistribution: software dapat
diberikan dan dijual secara bebas. Source Code Available: source
code harus disertakan atau dapat diperoleh dengan bebas, misalnya
di website tertentu. Obsfucator tidak diijinkan. Derived Works:
pendistribusian kembali dari source yang telah dimodifikasi
diperbolehkan. Integrity of The Author's Source Code: pengubahan
source harus tetap menyertakan nama pembuat asli dari source code.
Jika ada modifikasi harus disertakan tanggal, waktu, oleh, dan
versi. No Discrimination Against Persons or Groups: siapapun
diperbolehkan dalam open source, tidak ada perbedaan. No
Discrimination Against Fields of Endeavor: user komersial juga
boleh ikut. Contoh: Microsoft juga boleh ikut. Distribution of
License: hak yang berkenaan dengan program harus dipakai oleh semua
pengguna program tanpa harus ada
penandatanganan lisensi dengan pihak ketiga. License Must Not Be
Specific to a Product: program tidak bisa dilisensi dari sebagai
bagian dari distribusi yang lebih besar. Jadi perbagian sottware
kecil juga harus dapat didistribusikan sendiri. License Must Not
Restrict Other Software: lisensi tidak boleh menuntut program lain
juga harus menjadi open source juga.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
29
Aplikasi Enterprise
5.3. Lisensi Opensource Contoh lisensi open source: Apache
License, BSD license, GNU General Public License, GNU Lesser
General Public License, MIT License, Eclipse Public License and
Mozilla Public License.
5.4. Lambang Open Source (www.opensource.org)
Gambar 5.1. Lambang Opensource
Contoh Open Source Project yang terkenal di dunia: o
Sourceforge.net : http://www.sourceforge.net dengan lebih dari
70.000 projectnya. o Freshmeat.net : http://www.freshmeat.net
dengan lebih dari 30.000 projectnya. o Apache Software Foundation :
http://www.apache.org o MySQL, PHP, dan Perl
5.5. Free Software Richard Stallman mendefinisikan free software
sebagai software berdasarkan Four Freedoms untuk usernya: Kebebasan
untuk menjalankan program, untuk tujuan apapaun (freedom 0).
Kebebasan untuk belajar bagaimana program bekerja dan
mengadaptasinya untuk kebutuhan kita sendiri (freedom 1). Akses
ke source code merupakan prasyarat untuk freedom 1. Kebebasan untuk
mendistribusikan kembali kopi dari program sehingga dapat membantu
yang lain (freedom 2).
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
30
Aplikasi Enterprise
Kebebasan untuk menambahkan kemampuan program dan merelease
pengubahan tersebut ke publik, sehingga seluruh
komunitas publik mendapatkan keuntungan darinya. (freedom 3).
Akses ke source code merupakan prasyarat untuk freedom 3. Richard
Stallman adalah pendiri Free Software Foundation dan yang
mempublikasikan GPL (General Public License). Pada tahun 1995 Free
Software Foundation mengeluarkan istilah copyleft: Copyleft is a
license that permits people to freely copy, modify, and
redistribute software so long as they do not keep others from also
having the right to freely copy, modify, and redistribute the
software. Copyleft provisions in a license require that anyone
modifying the software can distribute only their modified versions
under the terms of the open source license they originally received
with the software. You can actually sell Copyleft software, but you
must also offer the source for free, either with the product or
available for free (or for the cost of copying/shipping) to anyone
on request. (from http://c2.com/cgi/wiki?CopyLeft)
5.6. Keuntungan Open Source Access to Source Code: bisa melihat,
mengubah Community: besar dan saling mendukung Cost: gratis
License: license untuk melihat, mengubah, dan mendistribusikan
ulang.
5.7. Open Source vs Close Source Open source menitikberatkan
pada source code yang diperbolehkan untuk dilihat dan diubah. Open
source memberikan software gratis dan installation support (contoh:
Linux).
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
31
Aplikasi Enterprise
Open source kadang juga membuat versi komersial sehingga user
dapat memilih. Contoh: Open Office dan Star Office Masalah
security: Many Eyes make Bugs Shallow Open Source mungkin banyak
bug, tapi cepat difix karena banyak dukungan. Jika closed source:
harus bayar dan bagaimana bug bisa diketahui?
5.8. Open Source vs Free Software Open Source adalah source code
bias dilihat dan diubah, Free Software adalah mendistribusikan
software dengan bebas, dengan atau tanpa source code.
5.9. Open Source Participants Partisipan Open Source dibagi
menjadi 2 jenis: Core: developer yang mengubah/membuat source
code
(programmer) Peripheral: user yang menggunakan software, report
bug dan suggest fixes. Partisipan opensource biasanya terdiri dari:
Project leaders: yang terdiri dari Core, hanya memanage. Volunteer
developers: terdiri dari Core, melakukan coding: Senior members
Peripheral developers Occasional contributors Maintainers Everyday
users: yang melakukan testing, identify bugs, deliver bug reports.
Posters (Periphery): yang berpartisipasi secara dalam newsgroups
and discussions, tetapi tidak coding.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
32
Aplikasi Enterprise
5.10. Open Source Development Tools Source code revision
control: dibutuhkan karena usernya sangat banyak dan
terpencar-pencar. CVS (Concurrent Versions System): agar pengubahan
dapat terkontrol, tidak tercampur, dapat dikemabalikan ke previous
version SVN (The Subversion Revision Control System): Enhanced CVS
Testing Tools: testing sebelum diintegrasikan. Tinderbox: mampu
mendeteksi error, kenapa error dan siapa pembuat error
Bug/Error/Defect tracking tools: mendeteksi dan melaporkan error,
bug yang ada, mencatat sudah fix atau belum. GNU GNATS Buggzilla
Communication: jika project sudah selesai dan dibubarkan komunikasi
terjadi melalui: web (sourceforge.net, freshmeat.net, GNU
mailman)
5.11. Commercial vs Open Source Tabel 5.1. Perbandingan
Komersial dengan Opensource
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
33
Aplikasi Enterprise
5.12. Model dan Metode Software Engineering Open Source/Free
Software
5.12.1.
Bazaar Model
Pada tahun 1997, essay The Cathedral and the Bazaar oleh Eric S.
Raymond mengusulkan sebuah model developing Open Source Software
(OSS) yang disebut Bazaar model. Traditional model seperti layaknya
membangun kathedral : dikerjakan oleh orang yang sesedikit mungkin.
Bazaar model : dikerjakan secara bersama-sama dengan great
bubbling, different agendas, and approaches. Menurut Gregorio
Robles, Bazaar Model harus: Users should be treated as
co-developers: user juga developer sehingga dapat mengakses source
code. Linus's law : "Given enough eyeballs all bugs are shallow."
Early Releases: agar dapat langsung dilihat dengan cepat oleh user.
Frequent Integration Several Versions: minimal ada 2 versi, versi
development dan stable High Modularization: sehingga mudah
dikerjakan secara bersama. Dynamic decision making structure.
5.12.2.
Open Source Maturity Model
Adalah sebuah proses formal untuk mengakses tingkat kematangan
dari open source software. Software Maturity adalah konsep yang
mengetahui kematangan produk, apakah sudah siap digunakan, seperti
how scalable, manageable, and supportable. Macam-macam Pengguna :
Early Adopter: User tipe ini beranggapan bahwa teknolongi baru akan
membawa manfaat bagi perkembangan perusahaannya.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
34
Aplikasi Enterprise
Sehingga teknologi tersebut akan langsung diterapkan walaupun
memiliki strategi yang berbeda dengan yang sudah ada. Pragmatis:
User tipe ini hampir sama dengan user bertipe early adopter, yang
berbeda hanyalah teknologi baru diterapkan untuk mendukung strategi
yang sudah ada bukan mengganti strategi yang ada seperti pada early
adopter. Tabel 5.2. Perbandingan Produk Immature dan Mature
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
35
Aplikasi Enterprise
5.12.3.
Penilaian Mature
OSMM menilai kematangan suatu produk dalam 3 fase: Menilai
setiap kematangan elemen produk dan memberikan nilai kematangan.
Mendefinisikan bobot untuk setiap elemen berdasarkan pada
permintaan organisasi. Menghitung seluruh nilai kematangan produk
tersebut.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
36
Aplikasi Enterprise
Tabel 5.3. Fase fase Element Maturity
Fase 1: Assessment Element Maturity Mengidentifikasikan
kematangannya. Elemen kunci suatu produk adalah sebagai berikut:
Product software Support Documentation Training Product integration
Professional services elemen kunci produk dan menilai tingkat
Setiap elemen dinilai dan diberikan nilai kematangan melalui 4
tahap proses: Define organizational requirements, Bertujuan untuk
mendefinisikan persyaratan organisasi. Locate resources, Bertujuan
untuk menempatkan sumber daya. Assess element maturity, Bertujuan
untuk menilai kematangan elemen. Assign element maturity score on a
scale of 1 to 10, Bertujuan untuk memberikan nilai untuk setiap
elemen.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
37
Aplikasi Enterprise
Fase 2: Assign Weighting Factors OSMM memberikan bobot untuk
setiap elemen untuk merefleksikan pentingnya elemen tersebut. Tabel
5.4. Assign Weighting Factors
Fase 3: Calculate the Product's Overall Maturity Score Bertujuan
untuk seluruh nilai kematangan produk tersebut.
Tujuan OSMM Didesain untuk untuk membuat penilaian dengan cepat
terhadap kematangan suatu produk open source. Didesain agar grup
yang kecil dapat memberikan penilaian dalam waktu yang singkat.
Tabel 5.5. Maturity Score
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
38
Aplikasi Enterprise
Tabel 5.6. Contoh JBoss
Tabel 5.7. Recommended OSMM Scores
Analisis Dari tabel diatas dapat dilihat bahwa nilai minimum
untuk early adopter lebih rendah dibandingkan dengan pragmatist.
Hal itu dikarenakan user tipe early adopter lebih berani menanggung
resiko yang besar daripada user tipe pragmatist. Sehingga untuk
user tipe pragmatist diberikan nilai minimum yang cukup tinggi
menggingat user tipe ini kurang berani atau lebih berhati-hati
dalam menerapkan produk atau software yang baru. Untuk penggunaan
experimentation diberikan nilai minimum yang rendah, nilai minimum
menengah diberikan untuk penggunaan pilot dan nilai minimum yang
tertinggi diberikan untuk penggunaan production.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
39
Aplikasi Enterprise
BAB 6 REMOTE METHOD INVOCATION
6.1.
Pengenalan RMI
RMI adalah salah satu bagian dari J2SE yang digunakan untuk
membangun aplikasi terdistribusi menggunakan bahasa Java. RMI
adalah kumpulan kelas dalam Java yang digunakan untuk menangani
pemanggilan (invocation) method secara jarak jauh (remote) dalam
suatu jaringan atau Internet. Idenya memisahkan obyek-obyek
secara
terdistribusi dalam mesin-mesin yang berbeda. RMI menggunakan
prinsip pemrograman berorientasi obyek dimana obyek satu dapat
saling berkomunikasi dengan obyek lainnya. Untuk membangun aplikasi
RMI dibutuhkan Interface. RMI terdiri dari RMI client dan server.
RMI server biasanya akan membuat beberapa remote obyek dan
referensi-nya yang dapat diakses oleh RMI client menggunakan suatu
URL dan menunggu RMI client meminta ke server. Sedangkan RMI client
akan membuat koneksi ke server dan meminta pemanggilan ke beberapa
remote obyek berdasarkan referensi yang diterimanya. RMI client
akan menggunakan remote obyek sebagai lokal obyek. Setiap remote
obyek yang dibuat oleh RMI server didaftarkan terlebih dahulu ke
dalam RMI registri agar ketika client membutuhkannya dapat meminta
dengan mudah ke RMI registry.
Gambar 6.1. Arsitektur RMI
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
40
Aplikasi Enterprise
RMI Server akan mendaftarkan remote obyeknya ke RMI Registry
melalui bind dengan nama unik. RMI Client yang akan melakukan suatu
pemanggilan method dari remote obyek, harus meminta referensi obyek
ke RMI Registry berdasarkan nama kelas obyek tersebut. Dalam RMI
harus ada pendefinisian interface (behaviour) dan
implementasi interface (berupa kelas), RMI hanya dimiliki oleh
bahasa Java saja. RMI memungkinkan membuat dua kelas yang
menerapkan /
mengimplementasikan satu interface yang telah didefinisikan.
Satu kelas menerapkan method dari interface (yang ada di server)
dan satu kelas lagi bertindak sebagai proxy untuk remote service
(server object) yang berjalan di client.
6.2.
Stub & Skeleton
Merupakan interface antara aplikasi dan RMI system. Stub
bertindak sebagai client side proxy Skeleton bertindak sebagai
server side proxy Selama remote invocation stub bertanggung jawab
untuk: Meminta lokasi remote server obyek pada remote reference
layer Marshalling : merangkaian argumen pada output stream
Memberitahu remote reference layer bahwa semua data parameter telah
terkirim, sehingga pemanggilan method sesungguhnya dapat dilakukan
oleh server Unmarshalling: rangkaian nilai yang diterima dari
remote Obyek Memberitahu remote reference layer bahwa pemanggilan
telah lengkap Skeleton bertanggung jawab untuk: Marshalling: nilai
kembalian atau exception kepada stub client Mengirimkan panggilan
method pada server object sesungguhnya
6.3.
Remote Reference Menemukan lokasi remote obyek Membuat panggilan
point to point dan rekoneksi secara otomatis,
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
41
Aplikasi Enterprise
Mengaktifkan proses server baru jika belum pernah diaktifkan
sebelumnya Memelihara replikasi (panggandaan) jika diperlukan
6.4.
Transport Layer Memelihara tabel yang berisi obyek-obyek pada
JVM Membuat dan memelihara dua koneksi antara 2 JVM menggunakan
TCP/IP Transport Layer hanya tersedia di level virtual machine
(pada java.net) Menerima dan merespon setiap pemanggilan dari atau
ke server dan client
6.5.
RMI Registry
Tool RMI registry menggunakan rmiregistry dengan port default
1099 Ketika server membuat remote method dengan cara membuat lokal
obyek yang menerapkan method dari interface tersebut, maka obyek
akan diekspor ke RMI, dan diregisterkan ke RMI Registry dengan
public name. RMI Registry akan membuat layanan listen yang menunggu
permintaan dari client. Di sisi Client, RMI Registry diakses
menggunakan static class naming. Class ini menyediakan metode
lookup() untuk melakukan query ke registry. Metode lookup menerima
URL yang menyatakan nama server dan nama service yang diminta dan
kemudian mengembalikan remote reference obyek yang diminta. Format
URL RMI: rmi://[:]/ RMI registry is a running process on a host
machine
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
42
Aplikasi Enterprise
BAB 7 CORBA
7.1. Pengertian CORBA CORBA (Common Object Request Broker
Architecture) adalah cara lain untuk melakukan pemrograman jaringan
terdistribusi dan open system, dimana obyek yang dipanggil tidak
hanya berasal dari program yang dibuat dengan bahasa Java saja
tetapi juga bisa dibuat dengan bahasa lain. Corba di buat oleh OMG
(Object Management Group www.omg.org), suatu organisasi yang
mengurusi teknologi berbasis obyek. OMG berdiri tahun 1989 dan
jugan mengurusi tentang UML. Corba dikatakan merupakan standar
sistem terdistribusi (distributed sistem standard) karena dengan
menggunakan corba, sistem secara keseluruhan dapat saling terhubung
dan berkomunikasi antar platform (sistem operasi dan hardware) yang
berbeda. Corba juga dikatakan sebagai open system karena teknologi
corba merupakan suatu standar yang terbuka bagi siapa saja yang
ingin menerapkannya. Dengan corba kita dapat membangun aplikasi
yang dapat saling berkomunikasi walau satu sama lain menggunakan
bahasa pemrograman dan platform yang berbeda. CORBA memiliki
Interface Definition Interface yang mendukung mapping ke suatu
bahasa pemrograman tertentu. CORBA menyediakan API untuk
berkomunikasi antar obyek secara remote. Beberapa yang sudah
menerapkan spesifikasi corba adalah: Borland (VisiBroker): C++ dan
Java Mapping IONA (Orbix) : C++, Java, dan SmallTalk Mapping Sun
Microsystem (JavaIDL)
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
43
Aplikasi Enterprise
7.2. Arsitektur CORBA
Gambar 7.1. Arsitektur CORBA
7.3. ORB Bertindak sebagai broker (perantara) antara client dan
server yang berjalan pada tiap mesin yang berisi API untuk mencari
obyek dan menerima request. ORB mengkomunikasikan hubungan antar
obyek menggunakan sistem IIOP (Internet Inter-ORB Protocol) ORB
tersedia untuk beberapa platform yang berbeda-beda. ORB mencari
obyek, merequest remote method melalui interface CORBA, dan
mengembalikannya ke client. Menangani secara menyeluruh terhadap
suatu permintaan (request) dari client ke object atau sebaliknya
(response) dari obyek ke client. ORB harus tersedia di sisi server
dan client. Pada sisi client, ORB memiliki fungsi: Menghubungkan ke
interface repository / IR (penyedia definisi interface). Membantu
client dalam menyusun suatu permintaan (invocation) ke object
server secara dinamis dengan menggunakan DII (Dynamic Invocation
Interface). Pada sisi server, ORB berfungsi:
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
44
Aplikasi Enterprise
Selain bertanggung jawab untuk mengirimkan response dari server
ke client yang dituju, ORB juga membantu untuk memulai dan
menghentikan operasi terhadap object server yang diminta.
7.4. Langkah Pengembangan CORBA
Gambar 7.2. Langkah membangun CORBA
Langkah pertama: mendefinisikan interface yang berisi
layanan-layanan yang tersedia oleh obyek server menggunakan bahasa
IDL. Langkah kedua: mengkompilasi bahasa IDL ke bahasa Java. Kita
gunakan IDL-to-Java compiler. Yaitu : idlj. Hasil dari kompilasi
ini dihasilkan client stub dan skeleton server. Untuk menghasilkan
aplikasi client, kita perlu menuliskan aplikasi client dan
dikompilasi dan dilink bersama dengan library CORBA serta client
stub yang dihasilkan dari IDL compiler. Dari sisi server : dari
definisi yang sudah didefinisikan perlu dibuat sebuah kelas sebuah
kelas yang merupakan implementasi dari interface tersebut. Sehingga
sebuah aplikasi server dihasilkan dari kompilasi dan linking antara
kode program aplikasi server, implementasi obyek dan skeleton.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
45
Aplikasi Enterprise
BAB 8 WEB SERVICES
8.1. Pengantar Web Services Saat ini web services menjadi sangat
populer di enterprise karena kemampuannya dalam mengintegrasikan
aplikasi-aplikasi yang berbeda platform. Web Services adalah sebuah
komponen layanan aplikasi yang dapat diakses melalui protokol
terbuka yang memanfaatkan Web melalui Simple Object Access Protocol
(SOAP) dengan bahasa Web Services Description Language (WSDL) dan
teregistrasi dalam Universal Discovery Description and Integration
(UDDI). Web services mendukung komunikasi antar aplikasi dan
integrasi aplikasi dengan menggunakan XML dan Web. XML (eXtensible
Markup
Language) adalah sebuah standar untuk mendefinisikan data dalam
format yang sederhana dan fleksibel. Mengapa web services menjadi
sangat populer saat ini? Jawabannya adalah karena web services
mampu mengintegrasikan aplikasi yang berbeda platform secara lebih
sederhana dan mampu memperbaiki kelemahan dari middleware
konvensional. Web services adalah komponen yang independen terhadap
platform ataupun bahasa. Web services menggunakan web protokol
(HTTP) yang sangat mendukung heterogenoitas dan interoperabilitas
serta
memudahkan integrasi. Selain itu web services mendukung koneksi
loosely coupled, sehingga sebuah perubahan pada satu aplikasi tidak
akan memaksa perubahan pada aplikasi yang lain. Sebuah web services
memiliki interface berupa web API (Application Programming
Interface) yang dapat dipanggil oleh suatu aplikasi untuk mengakses
aplikasi yang mengimplementasikan layanan web services.
Interoperabilitas Enterprise adalah prioritas Integration utama
(EAI) sebuah dan enterprise dalam
Application
Business-to-Business
Integration (B2Bi).
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
46
Aplikasi Enterprise
EAI dan B2Bi adalah permasalahan yang dihadapi oleh enterprise
untuk mengintegrasikan berbagai macam aplikasi yang sudah ada. Web
services dapat diimplementasikan sebagai komponen yang mendukung
komunikasi antar aplikasi dalam enterprise. Web services saat ini
semakin banyak digunakan oleh enterprise untuk memudahkan akses
pada produknya, meningkatkan layanan ke
konsumen dan ke business partner melalui internet atau corporat
extranet . Sebagai contoh mengintegrasikan dan mengotomasikan
proses bisnis, supply chain, dan costumer relationship. Saat sebuah
enterprise ingin mengintegrasikan sistem bisnisnya dengan
partnernya menggunakan internet, informasi yang dialirkan harus
dipastikan dalam kondisi aman. Oleh karena itu keamanan menjadi isu
yang sangat penting untuk keperluan tersebut. Dalam beberapa kasus,
layanan keamanan berbasis Operating System dan Internet Information
Services (IIS) dapat
diandalkan. Akan tetapi lingkungan implementasi yang heterogen
selalu menimbulkan celah-celah ancaman keamanan baru. Ancaman
terhadap keamanan web services antara lain unauthorized access,
parameter manipulation, network eavesdropping, disclosure of
configuration data, dan message replay. Jika nilai informasi yang
dibawa oleh web services tinggi, maka web services tersebut harus
diamankan dari ancamanancaman diatas.
8.2. Web Services Security Specification Saat web services
menggunakan secure connection seperti Secure Sockets Layer (SSL)
atau Transport Layer Security (TLS) membangun koneksi end to end
yang aman tidak akan sulit. Akan tetapi jika terdapat perantara
pada komunikasi tersebut, maka dibutuhkan protokol yang memiliki
tingkat keamanan yang tinggi. Berikut adalah spesifikasi dari
keamanan web services. Spesifikasi berikut termasuk message
security model (WS-Security) yang memberikan dasar bagi spesifikasi
yang lain . Kemudian diatasnya terdapat lapisan khusus yang
menangani masalah policy, yaitu WS-Policy, WS-Trust dan
WSPrivacy.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
47
Aplikasi Enterprise
WS-Policy mendeskripsikan kemampuan dan batasan dari keamanan,
WS-Trust mendeksripsikan framework yang digunakan, dan WS-Privacy
mendeskripsikan model privasi untuk web services.Lapisan tersebut
memberikan fondasi untuk keamanan WS-Security. Diatas lapisan
policy terdapat lapisan yang memberikan fondasi, yaitu
WSSecureConversation, WS-Federation, dan WS-Authorization.
WSSecureConversation yang mengelola dan mengautentifikasi pesan,
WSFederation yang mengelola relasi dan lingkungan yang heterogen,
dan WS-Authorization yang mengelola otorisasi data.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
48
Aplikasi Enterprise
BAB 9 KEAMANAN WEB
9.1 Pendahuluan Pembahasan tentang web programming belum lengkap
apabila belum mempelajari tentang keamanan dalam aplikasi.
Fasilitas yang melimpah, fungsi yang sangat banyak tidak akan
berarti apabila aplikasi kita gagal dalam hal pengamanan data.
Pada bab ini,
kita
akan
mempelajari
bagaimana
mengamankan
komunikasi antara server dan client melalui SSL. Kita juga akan
mempelajari tentang 10 celah keamanan pada aplikasi web dan
mempelajari bagaimana cara menanggulanginya.
9.2 SSL SSL telah menjadi standar de facto pada komunitas untuk
mengamankan komunikasi antara client dan server. Kepanjangan dari
SSL adalah Secure Socket Layer; SSL adalah sebuah layer protocol
yang berada antara layer TCP/IP standar dengan protocol di atasnya
yaitu application-level protocol seperti HTTP. SSL mengijinkan
server untuk melakukan autentikasi dengan client dan selanjutnya
mengenkripsi komunikasi.
9.3. Celah keamanan pada aplikasi web Open Web Application
Security Project (OWASP) adalah project open source yang dibangun
untuk menemukan penyebab dari tidak amannya sebuah software dan
menemukan cara menanganinya. Ada 10 celah kemanan aplikasi web yang
ditemukan dan rekomendasi mereka tentang menanganinya sebagai
sebuah standard keamanan minimal dari aplikasi web.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
49
Aplikasi Enterprise
Berikut ini adalah 10 celah tersebut dan cara agar kita dapat
mengatasi masalah tersebut.
I. Unvalidated input
Semua aplikasi web menampilkan data dari HTTP request yang
dibuat oleh user dan menggunakan data tersebut untuk melakukan
operasinya. Hacker dapat memanipulasi bagianbagian pada request
(query string, cookie information, header) untuk membypass
mekanisme keamanan.
Berikut ini tiga jenis penyerangan yang berhubungan dengan
masalah ini:
Cross site scripting Buffer overflows Injection flaws
Ada beberapa hal yang dapat dicatat ketika menangani validasi
pada aplikasi kita. Pertama, adalah tidak baik pada aplikasi web
untuk percaya pada client side scripting. Script tersebut biasanya
menghentikan form submission apabila terdapat sebuah input yang
salah. Akan tetapi, cript tersebut tidak dapat mencegah hacker
untuk membuat HTTP requestnya sendiri yang erbebas dari form.
Menggunakan client side validation masih bisa membuat aplikasi web
yang mudah diserang.
Kedua, beberapa aplikasi menggunakan pendekatan "negative"
(negative approach) pada alidasinya : Aplikasi mencoba mendeteksi
jika terdapat elemen yang berbahaya pada request arameter. Masalah
dari jenis pendekatan ini adalah hanya bisa melindungi dari
beberapa erangan yaitu : hanya serangan yang dikenali oleh
validation code yang dicegah. Ada banyak ara dimana hacker dapat
membypass keamanan dari unvalidated input; Masih ada kemungkinan
imana cara yang baru tidak dikenali oleh
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
50
Aplikasi Enterprise
aplikasi dapat membypass validasi dan melakukan erusakan. Adalah
cara yang lebih baik untuk menggunakan pendekatan "positive"
(positive pproach) yaitu : membatasi sebuah format atau pola untuk
nilai yang diijinkan dan memastikan nput tersebut sesuai dengan
format tersebut.
II. Broken Access Control Banyak aplikasi yang mengkategorikan
user-usernya ke dalam role yang berbeda dan level yang erbeda untuk
berinteraksi dengan content yang dibedakan dari kategori-kategori
tersebut. Salah atu contohnya, banyak aplikasi yang terdapat user
role dan admin role : hanya admin role yang iijinkan untuk
mengakses halaman khusus atau melakukan action
administration.Masalahnya adalah beberapa aplikasi tidak efektif
untuk memaksa agar otorisasi ini bekerja.
Contohnya, beberapa program hanya menggunakan sebuah checkpoint
dimana hanya user yang terpilihyang dapat mengakses : untuk proses
lebih lanjut, user harus membuktikan dirinya erotorisasi dengan
menggunakan user name dan password. Akan tetapi, Mereka tidak
menjalankan pengecekan dari checkpoint sebelumnya : dimana apabila
user berhasil melewati halaman login, mereka dapat bebas
menjalankan operasi.
Masalah lain yang berhubungan dengan access control adalah:
Insecure Ids Beberapa site menggunakan id atau kunci yang
menunjuk kepada user atau fungsi. ID dapat juga ditebak, dan jika
hacker dapat mudah menebak ID dari user yang terautorisasi, maka
site akan mudah diserang.
File permissions Kebanyakan web dan aplikasi server percaya
kepada external file yang menyimpan daftar dari user yang
terotorisasi dan resources mana saja yang dapat dan/atau tidak
dapat diakses. Apabila file ini dapat dibaca dari luar, maka
hacker
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
51
Aplikasi Enterprise
dapat memodifikasi dengan mudah untuk menambahkan dirinya pada
daftar user yang diijinkan.
Filter atau komponen tadi dapat menjamin hanya user yang
terotorisasi dapat mengakases. Untuk melindungi dari insecure Ids,
kita harus mengembangkan aplikasi kita agar tidak percaya pada
kerahasiaan dari Ids yang dapat memberi access control. Pada
masalah file permission, file-file tersebut harus berada pada
lokasi yang tidak dapat diakses oleh web browser dan hanya role
tertentu saja yang dapat mengaksesnya.
III. Broken Authentication dan Session Management Authentication
dan session management menunjuk kepada semua aspek dari pengaturan
user authentikasi dan management of active session. Berikut ini
beberapa hal yang perlu diperhatikan :
Password strength Aplikasi kita harus memberikan level minimal
dari keamanan sebuah password, dimana dapat dilihat dengan cara
melihat panjang dari password dan kompleksitasnya. Contohnya sebuah
aplikasi dimana terdapat user baru yang akan mendaftar : aplikasi
tidak mengijinkan password dengan panjang 3-4 karakter atau
katakata simpel yang dapat mudah ditebak oleh hacker.
Password use Aplikasi kita harus membatasi user yang mengakses
aplikasi melakukan login kembali ke sistem pada tenggang waktu
tertentu. Dengan cara ini aplikasi dapat dilindungi dari serangan
brute force dimana hacker bisa menyerang berulang kali untuk
berhasil login ke sistem. Selain itu, log in yang gagal sebaiknya
dicatat sebagai informasi kepada administrator untuk
mengindikasikan kemungkinan serangan yang terjadi.
Password storage password tidak boleh disimpan di dalam
aplikasi. Password harus disimpan dalam format terenkripsi dan
disimpan di file lain seperti file database atau file password. Hal
ini dapat
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
52
Aplikasi Enterprise
memastikan bahwa informasi yang sensitif seperti password tidak
disebarkan ke dalam aplikasi.
Issue lain yang berhubungan : password tidak boleh dalam bentuk
hardcoded di dalam source code.
Session ID Protection server biasanya menggunakan session Id
untuk mengidentifikasi user yang masuk ke dalam session. Akan
tetapi jika session ID ini dapat dilihat oleh seseorang pada
jaringan yang sama, orang tersebut dapat menjadi seorang
client.
Salah satu cara yang dapat digunakan untuk mencegah terlihatnya
session ID oleh seseorang pada suatu jaringan yang sama adalah
menghubungkan komunikasi antara sever dan client pada sebuah
SSLprotected channel.
IV. Cross site scripting Cross site scripting terjadi ketika
seseorang membuat aplikasi web melalui script ke user lain. Hal ini
dilakukan oleh penyerang dengan
menambahkan content (seperti JavaScript, ActiveX, Flash) pada
request yang dapat membuat HTML output yang dapat dilihat oleh user
lain. Apabila ada user lain yang mengakses content tersebut,
browser tidak mengetahui bahwa halaman tersebut tidak dapat
dipercaya. Cara yang bisa digunakan untuk mencegah serangan cross
site scripting adalah dengan melakukan validasi data masuk dari
user request (seperti header, cookie, user parameter, ...). Cara
negative approach tidak digunakan : mencoba untuk memfilter active
content merupakan cara yang tidak efektif.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
53
Aplikasi Enterprise
V. Buffer overflows
Penyerang dapat menggunakan buffer overflows untuk merusak
aplikasi web. Hal ini dilakukan karena penyerang mengirimkan
request yang membuat server menjalankan kode-kode yang dikirimkan
oleh penyerang. Kelemahan buffer overflow biasanya sulit dideteksi
dan sulit dilakukan oleh hacker. Akan tetapi penyerang masih bisa
mencari kelemahan ini dan melakukan buffer overflow pada sebagian
aplikasi web.
Terima kasih atas desain dari Java environment, dimana aplikasi
yang berjalan pada J2EE server aman dari jenis serangan ini.
Untuk memastikan keamanan, cara yang paling baik adalah
melakukan pengawasan apabila terdapat patch atau bug report dari
produk server yang digunakan.
VI. Injection flaws
Salah satu kelemahan yang populer adalah injection flaw, dimana
hacker dapat mengirimkan atau menginject request ke operating
system atau ke external sumber seperti database.
Salah satu bentuknya adalah SQL injection. Berikut ini salah
satu contoh dari SQL injection :
Gambar 9.1. Contoh SQL Injection
URL diatas akan memproses pencarian dengan kata kunci 'jedi'.
Implementasi dimana tidak ada validasi input adalah seperti SQL
code berikut ini :
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
54
Aplikasi Enterprise
Gambar 9.2. Contoh Eksekusi SQL Injection
dimana value adalah nilai dari parameter searchString yang ada
pada HTTP request.
Bagaimana jika, hacker melakukan input dari URL seperti ini
:
Gambar 9.3. Contoh SQL Injection Http
SQL query yang terbentuk adalah seperti ini :
Gambar 9.4. Contoh Eksekusi SQL Injection Http
Statement awal pasti akan diterima dimana terdapat klausa AND
TRUE. Dan statement selanjutnya yaitu DROP DATABASE juga akan
diekseskusi yang akan memberikan kerusakan pada aplikasi. Serangan
ini bisa mungkin terjadi karena input yang tidak divalidasi. Ada
dua cara yang bisa dilakukan untuk mencegah serangan ini yaitu:
Daripada menggunakan statement SELECT, INSERT, UPDATE dan DELETE
statement, bisa dibuat fungsi yang melakukan hal serupa. Dengan
menggunakan fungsi diharapkan ada pengamanan
terhadap parameter. Selain itu dengan adanya fungsi,
parameter
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
55
Aplikasi Enterprise
yang masuk harus sama dengan tipe data dari parameter yang
dideklarasikan. Hak akses dalam aplikasi juga harus dibatasi.
Contohnya, jika aplikasi hanya bertujuan untuk melihat data, tidak
perlu diberikan hak akses untuk melakukan INSERT, UPDATE atau
DELETE. Jangan menggunakan account admin pada aplikasi web untuk
mengakases database. Hal ini juga dapat meminimailkan serangan dari
hacker.
VIII. Insecure storage Aplikasi web biasanya perlu menyimpan
informasi yang sensitif seperti password, informasi kartu kredit,
dan yang lain. Dikarenakan item-item tersebut bersifat sensitif
item-item tersebut perlu dienkripsi untuk menghindari pengaksesan
secara langsung. Akan tetapi beberapa metode enkripsi masih lemah
dan masih bisa diserang.
Berikut ini beberapa kesalahan yang sering terjadi :
Kesalahan untuk mengenkripsi data penting Tidak amannya kunci,
certificate, dan password Kurang amannya lokasi penyimpanan data
Kurangnya penghitungan dari randomisasi Kesalahan pemilihan
algoritma Mencoba untuk menciptakan algoritma enkripsi yang baru
Berdasarkan skenario berikut ini : Terdapat sebuah aplikasi, dimana
terdapat password pada user object. Akan tetapi, aplikasi menyimpan
user object ke dalam session setelah user login. Permasalahan yang
akan muncul pada skenario ini adalah password dapat dilihat oleh
seseorang yang dapat melihat session dari user tersebut.
Salah
satu
cara
yang
dilakukan
untuk
menghindari
kesalahan
penyimpanan informasi yang sensitif adalah : tidak membuat
password
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
56
Aplikasi Enterprise
sebagai atribut dari kelas yang mewakili informasi user;
Daripada mengenkripsi nomor kartu kredit dari user, akan lebih baik
untuk menanyakannya setiap kali dibutuhkan.
Selain itu, menggunakan algoritma enkripsi yang sudah ada akan
lebih baik daripada membuat algoritma sendiri. Anda cukup
memastikan algoritma yang akan digunakan telah diakui oleh public
dan benar-benar dapat diandalkan.
IX. Denial of Service Denial of Service merupakan serangan yang
dibuat oleh hacker yang mengirimkan request dalam jumlah yang
sangat besar dan dalam waktu yang bersamaan. Dikarenakan
request-request tersebut, server menjadi kelebihan beban dan tidak
bisa melayani user lainnya.
Serangan DoS mampu menghabiskan bandwidth yang ada pada server.
Selain itu dapat juga menghabiskan memory, koneksi database, dan
sumber yang lain.
Pada umumnya sangat sulit untuk melindungi aplikasi dari
serangan ini. Akan tetapi masih ada cara yang dapat dilakukan
seperti membatasi resource yang dapat diakses user dalam jumlah
yang minimal. Merupakan ide / cara yang bagus untuk membuat load
quota yang membatasi jumlah load data yang akan diakses user dari
sistem.
Salah satu contoh adalah pada implementasi bulletin board :
adanya pembatasan user pada saat melakukan search, dimana operasi
ini hanya dapat dilakukan setiap 20 detik. Dengan cara ini dapat
dipastikan bahwa user tidak bisa menghabiskan koneksi dari
database.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
57
Aplikasi Enterprise
Solusi yang lain adalah mendesain aplikasi web dimana user yang
belum terotorisasi hanya memiliki akses yang sedikit atau tidak
memiliki akses ke content web yang berhubungan dengan database.
X. Insecure Configuration Management
Biasanya kelompok (group) yang mengembangkan aplikasi berbeda
dengan kelompok yang mengatur hosting dari aplikasi. Hal ini bisa
menjadi berbahaya, dikarenakan keamanan yang diandalkan hanya dari
segi aplikasi : sedangakan dari segi server juga memiliki aspek
keamanan yang perlu diperhatikan. Adanya kesalahan dari konfigurasi
server dapat melewati aspek keamanan dari segi aplikasi. Berikut
ini adalah kesalahan konfigurasi server yang bisa menimbulkan
masalah : Celah keamanan yang belum dipatch dari software yang ada
pada server administrator tidak melakukan patch software yang ada
pada server. Celah keamanan server dimana bisa menampilkan list
dari direktori atau juga serangan berupa directory traversal.
File-file backup atau file contoh (sample file), file-file script,
file konfigurasi yang tertinggal / tidak perlu. Hak akses direktori
atau file yang salah. Adanya service yang seperti remote
administration dan content management yang masih aktif. Penggunaan
default account dan default password. Fungsi administrative atau
fungsi debug yang bisa diakses. Adanya pesan error yang informatif
dari segi teknis. Kesalahan konfigurasi SSL certificate dan setting
enkripsi. Penggunaan self-signet certificates untuk melakukan
autentikasi. Penggunaan default certificate. Kesalahan autentikasi
dengan sistem eksternal.
Ahmadi Yuli Ananta, ST. Program Studi Manajemen Informatika
58