BAB III ANALISIS DAN PERANCANGAN
Pada bab ini akan dibahas mengenai metodologi perancangan sistem yang akan digunakan. Pada tahap awal yang dilakukan adalah melakukan pengumpulan data-data yang dibutuhkan dalam perancangan sistem. Data yang dibutuhkan berupa gambaran sistem yang sedang berjalan dan data log transaksi. Data yang sudah terkumpul kemudian dianalisis dan diolah untuk dapat memenuhi kebutuhan sistem yang tepat. Setelah pengolahan data lalu semua proses tersebut digambarkan dalam diagram aliran data.
3.1
Analisis Sistem Yang Sedang Berjalan Aplikasi SMS Gateway yang sedang berjalan pada PT Intitek Virtulindo
Mandiri dapat dilihat pada Gambar 3.1. Start
Gateway In
Proses SMS dan Gateway Out
Database SQL Server 2000
end
Gambar 3.1 Sistem SMS Gateway yang sedang berjalan
Sedikit penjelasan dari Gambar 3.1, ketika ada permintaan SMS dari user yang dikirim oleh operator, SMS langsung ditangani oleh gateway in umumnya berupa file PHP yang akan menerima data SMS dari operator (protokolnya berupa HTTP dan SMPP). Selanjutnya, SMS akan dilempar ke server lain untuk diolah
19
20
datanya, kemudian setelah diolah SMS akan dikirim lagi ke operator dengan menggunakan parameter-parameter yang sudah ditentukan. Dan terakhir data SMS di simpan ke basis data sebagai log transaksi. Aplikasi Gateway SMS ini berjalan secara syncronous/langsung (tidak terputus).
3.1.1 Gateway In Gateway in adalah server linux yang digunakan sebagai pintu masuk SMS dari operator. Untuk koneksi ke operator yang mengunakan protokol HTTP, maka gateway in berupa file php. Sedangan untuk koneksi yang menggunakan protokol SMPP, maka gateway in berupa aplikasi kannel. Data yang dikirim operator dengan protokol HTTP bisa berupa teks atau XML (Telkomsel, Flexi dan Indosat). Sedangkan XL dan ESIA yang menggunakan protokol SMPP, datanya berupa teks yang menggunakan aplikasi kannel.
3.1.2 Pemroses SMS dan Gateway Out Pemroses SMS berupa server Windows yang digunakan untuk melakukan proses data SMS untuk memperoleh balasan SMS sesuai dengan permintaan yang dilakukan oleh user. Server ini tidak terkoneksi dengan internet dengan alasan keamanan. Proses pengolahan data SMS dilakukan oleh file php yang berjalan pada webserver apache dengan menggunakan SQL Server 2000 sebagai basis data untuk memproses SMS. Setelah diproses, balasan SMS kemudian secara langsung dikirim ke operator (Gateway Out). Karena server tidak bisa terkoneksi dengan internet, maka pengirimannya menggunakan socket yaitu w3socket yang dapat diunduh : (http://www.dimac.net/Products/FreeProducts/w3Sockets/start.htm). Bagian akhir dari pemroses SMS adalah data akan disimpan ke basis data SQL Server 2000 sebagai log transaksi. Ada 3 tabel yang digunakan sebagai log transaksi yaitu sms_in, sms_out dan sms_dlr.
21
3.1.3
Data Log Transaksi Sebagai informasi tambahan, terlampir rangkuman data log transaksi
selama periode bulan Mei – Juni 2011: Tabel 3.1 Data log transaksi periode bulan Mei - Juni 2011 Bulan
Total Data SMS
Total service-id null
Mei
226,982
25,822
Juni
218,042
21,695
Data transaksi di atas adalah data yang diperoleh dari basis data transaksi. Dan untuk data lengkapnya bisa dilihat di lampiran. Berdasarkan tabel di atas, ada beberapa data yang service-id null atau kosong karena sistem gagal melakukan query ke basis data pada saat proses SMS. Sehingga ketika SMS dikirim ke operator, akan gagal (invalid transaksi) karena data yang dikirim kurang lengkap. Semua itu menunjukkan bahwa sistem aplikasi SMS gateway yang sedang berjalan kurang optimal.
3.1.4
Alternatif Solusi Dengan permasalahan yang sudah dikemukakan, maka ada beberapa solusi
yang bisa dilakukan untuk mengatasinya: 1. Menambah komputer server yang digunakan sebagai pemroses SMS. 2. Menggunakan penyeimbang beban (Load Balancing), bisa berupa perangkat keras ataupun perangkat lunak. 3. Membuat aplikasi antrian (Queue) SMS. Jika solusi pertama dipilih, maka perusahaan harus mengeluarkan biaya yang besar untuk membeli komputer server dan license perangkat lunak untuk sistem operasinya. Belum biaya pemeliharaan untuk menyewa rak di data center dan lain sebagainya. Disamping itu pembelian komputer server kurang efisien, karena sebenarnya data SMS yang banyak tidak terjadi setiap hari. Biasanya jika terjadi promo oleh operator terutama melalui cek pulsa, maka permintaan SMS dari pelanggan akan meningkat.
22
Alternatif solusi yang kedua yaitu penyeimbang beban, jika menggunakan perangkat keras maka sama seperti solusi pertama. Perusahaan akan mengeluarkan biaya yang tidak sedikit untuk pembelian perangkat keras penyeimbang beban. Jika penyeimbang beban menggunakan perangkat lunak, perusahaan tetap harus menyediakan tambahan server untuk penyeimbang beban. Misalnya menggunakan 2 server yang digunakan sebagai pemroses SMS. Penggunaan penyeimbang beban sendiri tidak wajib karena hanya operator Flexi yang mengharuskan proses SMS gateway terjadi secara synchronous (sinkron). Operator yang lainnya (Telkomsel, Indosat, XL dan Esia), proses SMS bisa dilakukan secara asynchronous. Artinya untuk operator selain Flexi kita bisa mengirimkan balasan SMS dari permintaan user secara terpisah dengan datangnya permintaan SMS. Solusi yang terakhir adalah dengan membuat aplikasi antrian (queue) SMS. Yaitu dengan memutus alur program yang selama ini berjalan, sehingga proses SMS Gateway menjadi asynchronous. Tetapi aplikasi ini tidak akan bisa berjalan untuk operator Flexi karena memang mengharuskan proses SMS Gateway secara synchronous. Dengan beberapa alternatif solusi yang diberikan, maka penulis memilih alternatif terakhir yaitu membuat aplikasi antrian. Karena dengan membuat aplikasi antrian, tidak akan ada biaya yang dikeluarkan oleh perusahaan. Dan semua permintaan SMS akan ditampung, sehingga tidak akan ada data SMS yang tidak valid ketika dikirim ke operator. Dan akan memudahkan dalam proses pemeliharaan aplikasi SMS Gateway itu sendiri. Dengan catatan bahwa proses SMS Gateway untuk operator Flexi berjalan seperti aplikasi yang sekarang berjalan.
3.2
Perancangan Sistem Setelah dilakukan analisis terhadap sistem yang berjalan, solusi yang
dipilih adalah membuat suatu aplikasi antrian. Dalam tahap perancangan inilah dijelaskan bagaimana sistem aplikasi antrian akan dibuat dengan spesifikasi proses-proses yang diterangkan secara rinci.
23
Metodologi penelitian yang digunakan untuk membuat aplikasi ini adalah build and fix. Dimana model ini sangat cocok untuk mengerjakan proyek yang berskala kecil. Dan aplikasi antrian ini, akan terus mengalami pengembangan sampai aplikasi antrian ini bisa menangani permintaan SMS yang sangat besar.
3.2.1
Sistem Yang Diusulkan
3.2.2
Start
Gateway In
PILIH OPERATOR
Antrian Proses ESIA
Antrian Proses ISAT
Antrian Proses TSEL
Antrian Proses XL
Proses SMS
Proses SMS
Proses SMS
Proses SMS
Aplikasi SMS Gateway yang diusulkan dapat dilihat pada Gambar 3.2.
T
T
T
T
Antrian Kirim
Antrian Kirim
Antrian Kirim
Antrian Kirim
DATA OK
DATA OK
DATA OK
DATA OK
Y
Y
Y
Y Y
Kirim SMS ke Operator
Kirim SMS ke Operator
Kirim SMS ke Operator
Kirim SMS ke Operator
Antrian Database
Database SQL Server 2000
end
Gambar 3.2 Perancangan SMS gateway dengan menggunakan antrian Multiple Channel dan Multi Phase Sistem
24
Sesuai dengan Gambar 3.2, maka konfigurasi aplikasi antrian yang digunakan yaitu multiple channel dan multi phase sistem. Karena setiap pelanggan akan dilayani sesuai dengan operatornya (multiple channel), ada 4 operator yaitu Esia, Indosat, Telkomsel dan XL. Dan setiap pelanggan akan mengalami 3 kali pemberhentian (multi phase) dari sistem antrian yaitu antrian proses, antrian kirim dan terakhir antrian basis data. Gambar 3.1 bagian ”Proses SMS dan Gateway Out” akan dibagi menjadi 3 bagian, yaitu: 1. Antrian Proses Adalah antrian yang menampung data SMS sebelum data diproses. Datanya diperoleh dari Gateway In berupa parameter GET, yang diterima oleh aplikasi PHP. Kemudian data SMS tersebut dibuat menjadi file teks yang disimpan ke dalam suatu folder. Aplikasi antrian proses akan berjalan di background untuk membaca file teks tersebut satu demi satu, mengirim datanya ke URL pemroses SMS kemudian menghapus file tersebut. Aplikasi ini akan membaca inputan file konfigurasi, yang berisi parameter-parameter yang digunakan dalam menjalankan program. Aplikasi ini berupa program konsol yang dijalankan melalui command prompt dan dibuat menggunakan bahasa pemrograman Delphi 7. 2. Antrian Kirim Adalah antrian yang menampung data SMS setelah diproses. Sama seperti antrian proses, antrian kirim juga menggunakan file teks yang disimpan kedalam folder untuk menampung datanya. Data file teks dari antrian kirim, dibuat oleh pemroses SMS. Aplikasi untuk membaca file teksnya sama seperti antrian proses menggunakan program konsol yang dijalankan melalui command prompt. Tugas utamanya adalah membaca file teks satu demi satu, mengirim datanya ke operator dan menghapus filenya apabila sudah dikirim. Untuk menyimpan alamat URL tiap operator beserta parameter yang dikirim, digunakanlah file konfigurasi. 3. Antrian Basis Data Adalah antrian yang menampung data SMS untuk disimpan ke dalam basis data transaksi. Sama seperti antrian proses dan kirim, antrian basis data juga menggunakan file teks yang disimpan dalam folder. File teksnya dibuat oleh
25
aplikasi antiran kirim. Antrian basis data akan membaca file teks dan menyimpannya kedalam basis data transaksi. Koneksi ke basis data SQL Server 2000 menggunakan komponen ADO (ActiveX Data Object). 3.2.3
Perancangan Format File Gambar perancangan format file, dapat dilihat pada Gambar 3.3–3.7. [SMSQUEUE] msisdn= sms= trx_id= trx_date= operator= sdc= channel= meta_data= ip=
Gambar 3.3 Perancangan format file teks antrian proses
Keterangan: 1. [SMSQUEUE] : tag pengenal antrian proses. 2. msisdn, varchar(20) : nomor pelanggan yang melakukan permintaan SMS, menggunakan internasional kode. Contoh: 628161455992. 3. sms, varchar(500) : isi permintaan SMS dari pelanggan. Contoh: REG THR. 4. trx_id, varchar(100) : id transaksi, yang bersifat uniq dan dikirim oleh operator. Contoh: 1sms11130465545369525046422. 5. trx_date, datetime : tanggal transaksi dengan format: 20110709181315. 6. operator, varchar(8) : operator telekomunikasi. Contoh: TSEL (telkomsel), ISAT (indosat), XL dan ESIA. 7. sdc, varchar(8) : Short Dial Code atau nomor pendek untuk pengiriman SMS. contoh: 9886. 8. channel, varchar(5): channel promo. Contoh: UMB, SMS. 9. meta_data, varchar(50) : data tambahan yang khusus digunakan untuk operator XL. Contoh: ?smpp?TX_ID=627665760. 10. ip, varchar(15) : Informasi IP address dari operator. Contoh: 202.3.219.2.
26
[SMSC] live= protocol= get_response= proxyhost= proxyport= addrsuffix= smsin= [SDC] url_9886=
Gambar 3.4 Perancangan format file konfigurasi antrian proses
Keterangan: 1. [SMSC] : tag pengenal antrian proses, bagian SMSC. 2. live, boolean : menandai apakah program dijalankan live atau tidak. 3. protocol, varchar(10) : keterangan koneksi protokol yang digunakan. 4. get_response, boolean : response ketika data dikirim, berupa boolean variabel. 5. proxyhost, varchar(20) : proxy host yang digunakan. 6. proxyport, varchar(6) : port proxy yang digunakan. 7. addrsuffix, varchar(2) : format awalan nomor pelanggan menggunakan internasional kode. Contoh: 62. 8. smsin, varchar(100) : folder yang menampung data SMS antrian proses. contoh: D:\app\inbox\QueueProccess\TSEL\ 9. [SDC] : tag pengenal antrian proses, bagian SDC. 10. url_9886, varchar(500) : alamat URL pemroses dari SDC yang digunakan. contoh: http://localhost/port_http/receive.php?msisdn=@@msisdn@@&sms=@@sms @@&trx_id=@@trx_id@@&trx_date=@@trx_date@@&operator=@@oper ator@@&sdc=@@sdc@@&channel=@@channel@@&meta_data=@@meta _data@@&ip=@@ip@@
27
[SMSOUT] ip= keyword= fullsms= channel= operator= sdc= msisdn= sid= text= tid= tarif= type= programid= short_name= content_type=
Gambar 3.5 Perancangan format file teks antrian kirim
Keterangan: 1. [SMSOUT] : Tag pengenal antrian proses bagian SMSOUT. 2. ip, varchar(15) : Informasi IP address dari operator. Contoh: 202.3.219.2. 3. keyword, varchar(20) : keyword dari program SMS. Contoh: THR. 4. fullsms, varchar(500) : isi permintaan SMS dari pelanggan. Contoh: REG THR. 5. channel, varchar(5) : channel promo. Contoh: UMB, SMS. 6. operator, varchar(8) : operator telekomunikasi. Contoh: TSEL (telkomsel), ISAT (indosat), XL dan ESIA. 7. sdc, varchar(8) : Short Dial Code atau nomor pendek untuk pengiriman SMS. Contoh: 9886. 8. msisdn, varchar(20) : nomor pelanggan yang melakukan permintaan SMS, menggunakan internasional kode. Contoh: 628161455992. 9. sid, varchar(30) : service id yang digunakan dalam program SMS. Contoh: ivm_9886_push250. 10. text, varchar(200) : reply balasan SMS. Contoh: Slmt dtg anda akn dpt info arti dibalik hr kelahiran Anda. 2rb/sms/hr. CS:0217201478.
28
11. trx_id, varchar(100) : id transaksi, yang bersifat uniq dan dikirim oleh operator. Contoh: 1sms11130465545369525046422. 12. tarif, varchar(5) : tarif SMS. Contoh: 2000. 13. type, varchar(8) : type SMS. Contoh: REG, UNREG, PULL. 14. programid, varchar(4) : id program SMS. Contoh: 2045. 15. short_name, varchar(15) : parameter tambahan untuk operator XL. 16. content_type, varchar(15) : parameter tambahan untuk operator XL. [SMSC] live= protocol= get_response= proxyhost= proxyport= addrsuffix= qbox= smsbox= dlrbox= sleep= [DB] conn= [SDC] ok_status_tsel= ok_status_isat= ok_status_esia= ok_status_xl= sdc= url_isat= url_tsel= url_tsel_pull= url_xl= url_esia=
Gambar 3.6 Perancangan format file konfigurasi antrian kirim
29
Keterangan: 1. [SMSC] : tag pengenal antrian proses, bagian SMSC. 2. live, boolean : menandai apakah program dijalankan live atau tidak. 3. protocol, varchar(10) : keterangan koneksi protokol yang digunakan. 4. get_response, boolean : response ketika data dikirim, berupa boolean variabel. 5. proxyhost, varchar(20) : proxy host yang digunakan. 6. proxyport, varchar(6) : port proxy yang digunakan. 7. addrsuffix, varchar(2) : format awalan nomor pelanggan menggunakan internasional kode. Contoh: 62. 8. qbox, varchar(100) : folder yang menampung data SMS antrian kirim. Contoh: D:\app\inbox\ReQueue\ 9. smsbox, varchar(100) : folder yang menampung data SMS antrian kirim. Contoh: D:\app\inbox\QueueSend\TSEL\ 10. dlrbox, varchar(100) : folder yang menampung data SMS antrian kirim. Contoh: D:\app\inbox\QueueDatabase\ 11. sleep, integer : jeda waktu pengiriman SMS, menggunaan mili second. Contoh: 1000. 12. [DB] : tag pengenal antrian kirim bagian DB. 13. conn, varchar(300) : settingan koneksi ke basis data transaksi. Contoh: Provider=SQLOLEDB.1; Password=c4r3r4; Persist Security Info=True; User ID=sa; Initial Catalog=smsgw; Data Source=192.168.2.5. 14. [SDC] : tag pengenal antrian kirim bagian SDC. 15. ok_status_tsel, varchar(10) : status sukses operator Telkomsel. Contoh: 1. 16. ok_status_isat, varchar(10) : status sukses operator Indosat. Contoh: 2. 17. ok_status_esia, varchar(10) : status sukses operator Esia. Contoh: 1. 18. ok_status_xl, varchar(10) : status sukses operator XL. Contoh: 0. 19. sdc, varchar(8) : Short Dial Code atau nomor pendek untuk pengiriman SMS. Contoh: 9886. 20. url_isat, varchar(500) : alamat URL operator Indosat. Contoh:http://202.152.162.221:55000/?uid=intiv&pwd=intivpwd&msisdn=@ @msisdn@@&serviceid=@@serviceid@@&trx_date=@@tid@@&transid= @@tid@@&smstype=0&sms=@@sms@@
30
21. url_tsel, varchar(500) : alamat URL operator Telkomsel. Contoh:http://@@ip@@:9100/push/submit.jsp?&cp_name=IVM&pwd=ivm3 61&msisdn=@@msisdn@@&sid=@@sid@@&tid=@@tid@@&sms=@@s ms@@ 22. url_tsel_pull, varchar(500) : alamat URL operator Telkomsel untuk type SMS Pull. Contoh:http://@@ip@@:8100/cp/submitSM.jsp?&appsid=IVM&pwd=ivm36 1&msisdn=@@msisdn@@&sid=@@sid@@&sms=@@sms@@&trx_id=@ @tid@@ 23. url_xl, varchar(500) : alamat URL operator XL. Contoh:http://192.168.2.2:14013/cgibin/sendsms?username=ivm9886&password= ivmpass9886&from=@@serviceid@@&to=+@@msisdn@@&text=@@sms @@&metadata=%3Fsmpp%3FTX_ID=@@tid@@&Shortname%3D@@short_name@ @%26Content-Type%3D@@content_type@@ 24. url_esia, varchar(500) : alamat URL operator Esia. Contoh:http://192.168.2.1:16013/cgibin/sendsms?username=ivm9886&password =ivmpass9886&from=@@serviceid@@&to=+@@msisdn@@&text=@@sm s@@&dlr-mask=3&dlr-url=@@dlr_url@@
31
[SMSADO] keyword= fullsms= channel= operator= sdc= ok_status= msisdn= sid= text= tid= tarif= type= programid= dlr_status= dtm= trx_date=
Gambar 3.7 Perancangan format file teks antrian basis data
Keterangan: 1. [SMSADO] : Tag pengenal antrian basis data. 2. keyword : keyword dari program SMS. Contoh: THR. 3. fullsms : isi permintaan SMS dari pelanggan. Contoh: REG THR. 4. channel: channel promo. Contoh: UMB, SMS. 5. operator : operator telekomunikasi. Contoh: TSEL (telkomsel), ISAT (indosat), XL dan ESIA. 6. sdc : Short Dial Code atau nomor pendek untuk pengiriman SMS. Contoh: 9886. 7. ok_status : status sukses delivery SMS. Contoh: 1. 8. msisdn : nomor pelanggan yang melakukan permintaan SMS, menggunakan internasional kode. Contoh: 628161455992. 9. sid
:
service
id
yang digunakan
dalam
program
SMS.
Contoh:
ivm_9886_push250. 10. text : reply balasan SMS. Contoh: Slmt dtg anda akn dpt info arti dibalik hr kelahiran Anda. 2rb/sms/hr. CS:0217201478.
32
11. trx_id : id transaksi, yang bersifat uniq dan dikirim oleh operator. Contoh: 1sms11130465545369525046422. 12. tarif : tarif SMS. Contoh: 2000. 13. type : type SMS. Contoh: REG, UNREG, PULL. 14. programid : id program SMS. Contoh: 2045. 15. dlr_status : delivery report SMS. Contoh:
<STATUS>0 3608757700 <MSG>Message processed successfully 16. dtm: tanggal transaksi dengan format: 07-17-2011. 17. trx_date : tanggal dan jam transaksi dengan format: 07-17-2011 5:49:19 PM. Format file konfigurasi yang digunakan untuk antrian basis data sama seperti format file konfigurasi antrian kirim.
3.2.4 Perancangan Tampilan Karena aplikasi berupa konsol yang dijalankan menggunakan command prompt maka praktis tidak ada rancangan tampilan seperti bila menggunakan form. Gambar 3.8 – 3.10 mempelihatkan rancangan format tampilan output. Bulan/tanggal/tahun jam:menit:detik am/pm > nama_folder\ is empty directory URL proses reply SMS Bulan/tanggal/tahun jam:menit:detik am/pm > nama_folder\ is empty directory
Gambar 3.8 Perancangan tampilan antrian proses Bulan/tanggal/tahun jam:menit:detik am/pm > nama_folder\ is empty directory URL operator response status Bulan/tanggal/tahun jam:menit:detik am/pm > nama_folder\ is empty directory
Gambar 3.9 Perancangan tampilan antrian kirim
33
Bulan/tanggal/tahun jam:menit:detik am/pm > nama_folder\ is empty directory nama_file nama_file deleted OK Bulan/tanggal/tahun jam:menit:detik am/pm > nama_folder\ is empty directory
Gambar 3.10 Perancangan tampilan antrian basis data