Monday, May 18, 2009

Quick guide on UNIX task scheduling with at and batch command

While task scheduling in UNIX commonly uses Crontab facilities, UNIX based system (actually, Windows provide it too, at.exe) also provide at command. Both related to the same area, task scheduling. While Crontab aims to schedule a recurring command (every minutes, every month, every week, etc), at command aims to schedule a task that run once, with specific time arguments. Here’s one example of how we can schedule a task with at command:

$ at now + 1 hour <>&1 > outfile | mailx mygroup
!

commands will be executed using /bin/tcsh
job 1242637613.s at Mon May 18 16:06:53 2009

As we can see from the example above, we want to schedule a task to be executed 1 hour from now, and the task to be executed is diff file1 file2 2>&1 > outfile | mailx mygroup. The at command then returns the job id, which we will able to list all the queueing at command using atq or at –l below:

$ atq
Rank Execution Date Owner Job Queue Job Name
1st May 18, 2009 17:06 minsat 1242637774.a a stdin

$ at -l
1242637774.a Mon May 18 16:18:45 2009

From above we can see that there are only 1 jobs queuing at queue named ‘a’ (this is special queue name for at, and it is used to distinguish between the job executed by at and batch command). We can also see that the execution time will be May 18, 2009 17:06.

And to cancel the scheduled at command, we use atrm or at –r command as follows:

$ atrm 1242637774.a
1242637774.a: removed

$ at -r 1242637774.a
1242637774.a: removed

There are lots of other parameter we can use for describing the time parameter and how to execute the at command which is I found it quite ‘human readable’. Here’s some list of other possible parameter we can use:

1. Direct time
$ at 01.30
$ at 0815am Jan 24
$ at 5 pm FRIday
2. Now keyword
$ at now + 1 minutes
$ at now + 1 hours
$ at now "+ 1day"
3. Tomorrow keyword
$ at 0830 tomorrow
4. Noon keyword
$ at noon tomorrow
5. Midnight keyword
$ at midnight tomorrow
6. Week keyword
$ at 2pm next week
7. Piped with other command
$ echo "mail -s 'REMINDER: Task Scheduler samples' lintang.jp@gmail.com" | at '5/18/2009 10:00AM'
8. Putting the job inside a file
$ at –f runScript.sh now + 1 hour
9. Sending an email after the job is completed
$ at –m –f runScript.sh now + 1 hour
10. Using another shell instead of the user’s default shell for execution
$ at –c –f runScript.sh now + 1 week // C Shell
$ at –k –f runScript.sh now + 1 week // Korn Shell
$ at –s –f runScript.sh now + 1 week // Bourne Shell

Several behaviors and conditions that must be known when running at command as follows:

1. All environment variables, current working directory, file creation mask, and system resource limits during at utility execution will be retained and used when the at job is executed. So it’s different with Crontab where we have to set our environment variables manually to be called inside our script execution.
2. The default shell environment to be used during execution is the user’s default shell, listed in /etc/passwd.
3. Any users that is allowed or forbidden to use at command are listed in the following file :

1. /usr/lib/cron/at.deny // denied user
2. /usr/lib/cron/at.allow // allowed user

If the file does not exist, for example: at.allow file does not exist, means that all users are allowed to use at command.

While batch command is similar with at -q b -m now commands. Meaning that the batch command will use different queue with at (special queue named ‘b’), and by default it will send a report via email. It will also execute right away. If the queue is full, then the command will have to wait to be executed one by one.

Resource : 1. Unix at man pages, with some slang modifications :p

Fiuh, alhamdulillah, that was hard to wrote :D

Tuesday, January 13, 2009

Telco Billing #2, Interconnect that matters...

Ok, sekarang penentuan tarif interkoneksi.
Sejak tahun 2007, Indonesia menganut sistem Cost Based Interconnection (kalau di dunia lebih dikenal dengan Bottom Up-Long Run Incremental Cost, dan saat ini konsultan nya buat negara kita yaitu Ovum, yang merekomendasikan sistem Cost Based ini di Indonesia ). Ilustrasi di paragraf ketiga akan mencoba menjelaskan dengan bahasa manusial normal, tentang bagaimana sistem ini bekerja. Intinya adalah, semua variable yang berpengaruh dalam pembuatan sebuah panggilan, akan diperhitungkan di dalamnya. Seperti kita ketahui, ketika kita membuat suatu panggilan suara ( baca: nelpon ), di dalamnya kita melibatkan BTS, BSC, MSC, dan IN dari operator. Dan begitu juga ketika panggilan kita disampaikan ke nomer tujuan, komponen yang terlibat kurang lebih sama. Nah, semua komponen tersebut memiliki biaya produksi, termasuk diperhitungkan juga biaya penyusutannya. Hasilnya adalah tariff interkoneksi, lokal, SLJJ, dan Internasional, per menit, untuk durasi yang lebih dari 5 detik. Artinya, call yang melibatkan interkoneksi kurang dari 5 detik, tidak akan di charge. Kenapa 5 detik ? karena nilai ini dianggap sebagai waktu maksimum yang dibutuhkan agar perangkat-perangkat interkoneksi antar operator dapat berbicara satu sama lain. Kalau bisa kurang dari itu ya bagus, kalau tidak, kemungkinan besar anda akan dapat drop call.

Lalu apa untungnya memakai sistem Cost Based ini ? Syahdan pada jaman dahulu kala, terdapat duopoli sektor telekomunikasi di Indonesia, yep, Telkom dan Indosat. Seluruh traffik interkoneksi antar operator, haruslah transit melalui kedua operator ini, baik lokal, SLJJ, maupun internasional. Karena cuma dua operator ini, maka yang menentukan harga ya terserah yang jualan, ya tho ? Sampai akhirnya pada tahun 2006, muncullah peraturan menkominfo tentang pemberlakuan sistem interkoneksi yang baru. Peraturan ini memungkinkan operator untuk membuat interkoneksinya sendiri, atau tetap transit lewat dua operator tadi. Efeknya ? biaya interkoneksi jadi bisa bersaing ( baca: turun ). Kok bisa ? ya karena kalau ada dua operator membuat interkoneksi satu sama lain, dan ternyata cost nya lebih murah daripada transit ke dua operator duopolist diatas, ya kenapa tidak ? Sebaliknya, operator duopolist tentu akan pikir-pikir lagi kalau memasang tariff, kalau interkoneksi direct lebih murah, maka dagangan mereka nggak ada lagi yang beli dong, ya kan ? Imbas turunnya tariff interkoneksi ini juga sampai ke pelanggan seperti kita. Karena tariff interkoneksi turun, akibatnya tariff retail juga turun deh. Seperti judul diatas, kalau tidak ada interkoneksi, kita akan kuper, apalagi kalau kita operator baru.

Seperti uraian diatas, di dalam billing interkoneksi, juga dikenal istilah sambungan lokal, dan sambungan jarak jauh (SLJJ) seperti di billing retail. Bedanya, kalau di billing retail, penentuan lokal dan SLJJ didasarkan pada POC pemanggil dan penerima. Kalau POC nya sama, maka dihitung tariff lokal, dan kalau berbeda maka dihitung tariff SLJJ. Misal, kalau kita telpon dari Bandung yang POC nya 022 (Ingat, POC kira-kira sama dengan kode area, well...more or less) ke Bandung juga, maka tariffnya adalah lokal. Kalau dari Bandung ke Jakarta ( 021 ) maka tariffnya adalah interlokal (SLJJ), karena POC nya berbeda.
Nah, kalau di billing interkoneksi, penentuan lokal dan SLJJ agak sedikit berbeda. Di billing interkoneksi, yang berpengaruh adalah POI operator caller, dan POC operator yang dituju. Sebuah call diperhitungkan lokal, jika POI nya sama dengan POC tujuan. Misal, operator X dan Y membuat titik interkoneksi ( POI ) di Surabaya. Lalu ada pelanggan operator X dari Mojokerto misalnya, menelpon saudaranya yang berlangganan operator Y di Surabaya. Maka biaya interkoneksinya akan menjadi lokal. Kenapa ? karena POI operator X dan Y berada di Surabaya, dan operator tujuan ( operator Y ) adalah di Surabaya, POI = POC tujuan. Sedangkan si pengguna operator X di Mojokerto tadi, terkena charge tariff retail SLJJ, karena POC pemanggil != POC tujuan. Disinilah perbedaan mendasar antara billing retail dan billing interkoneksi.
Billing Retail ( billing yang dikenakan pada pelanggan ) :
1. Lokal, jika POC A = POC B
2. SLJJ, jika POC A != POC B
Billing interkoneksi ( billing antar operator ) :
1. Lokal, jika POI A = POC B
2. SLJJ, jika POI A != POC B

Lalu bagaimana dengan tariff interkoneksi untuk internasional call ( SLI ) ? Seperti yang kita ketahui, kini ada 3 operator yang memiliki lisensi untuk SLI ini, Telkom, Indosat, dan BTel. Artinya, mau tidak mau, operator yang ada haruslah memiliki perjanjian transit dengan salah satu dari 3 operator ini. Dari sini, tariffnya adalah tariff per-negara. Dan biasanya, operator-operator yang lain tinggal membundling tariff SLI dari operator pemilik lisensi SLI ini, ke dalam tariff retail mereka, dan sistemnya adalah komisi. Biaya interkoneksi dibayarkan penuh, namun untuk tiap panggilan yang melewati sistem interkoneksi operator pemilik lisensi SLI tadi, operator pemanggil akan mendapatkan komisi, yang besarnya tentu saja tergantung dari volume traffik yang dilewatkan. Begitu juga dengan panggilan masuk dari luar negeri. Trafficnya juga hanya bisa melalui 3 operator SLI tadi, dan tariffnya tergantung perjanjian antara operator SLI dengan operator penerima panggilan yang sebenarnya.

Kira-kira demikianlah proses interkoneksi. Mungkin di lain kesempatan akan dibahas tentang billing retail. Any comments ? please wrote it down.

Sunday, January 11, 2009

Telco Billing #1, Interconnect that matters...

Seperti disebutkan dalam judul diatas, bidang interkoneksi adalah bidang yang sangat berpengaruh dalam kelangsungan operasional sebuah operator, terutama buat operator non incumbent. Bagaimana tidak, bagi operator baru, tidak ada interkoneksi berarti tidak terhubung ke jaringan lain, pelanggan tidak akan bisa bertelpon/ber-sms ke operator lain ( terutama jika operator itu incumbent ), dan ini vital sekali. Peraturan Menkominfo tentang interkoneksi ini bisa di unduh disini .
Dalam bidang interkoneksi dikenal istilah-istilah berikut :
1. POC (Point of Charge)
Kalau jaman PSTN(telpon rumah kabel) hanya ada cuma Telkom saja seperti dulu, POC ini kita kenal dengan istilah kode area. Katakanlah Mojokerto, maka kode area nya 0321, Surabaya, 031, dst. Seiring dengan waktu, muncullah telepon seluler, yang untuk menentukan POC nya sebenarnya lebih sulit, karena sifatnya yang mobile dan dapat berpindah-pindah, akibatnya POC untuk telepon seluler ini tidak menyerap 100% dari POC milik PSTN dan FWA(telepon cdma yang non seluler, seperti flexi, esia, hepi). POC ini adalah basis yang digunakan untuk menentukan dimana lokasi penelpon dan penerima telpon.
2. POI (Point of Interconnection)
Adalah titik dimana alur traffic mengarah masuk atau keluar, dari network lokal milik operator yang bersangkutan, menuju ke network milik operator lain. Kita akan lebih mudah memahami ini dengan contoh kasus, yang akan diulas lebih lanjut di bawah. Yang jelas, semakin banyak kita memiliki POI dengan operator lain (dan yang ter-utilisasi dengan optimal tentunya ) maka cost interkoneksi ini akan jauh lebih bisa ditekan.
3. Originasi
Adalah titik dimana alur traffic berasal.
4. Transit
Adalah titik dimana alur traffic disalurkan melalui network operator lain, untuk kemudian bisa sampai ke tujuan. Bayangkan ini seperti ketika kita memaketkan barang lewat tiki. Tiki adalah titik transit pertama kita, untuk kemudian bisa sampai ke tujuan.
5. Terminasi
Adalah titik dimana alur traffic berakhir di tujuan.
Ke-lima komponen ini berpengaruh penting dalam penentuan tarif biaya interkoneksi, yang pada ujungnya juga akan mempengaruhi tarif retail akhir yang akan ditawarkan ke pelanggan. Itulah kenapa ketika pemerintah memutuskan untuk menurunkan tarif interkoneksi antar operator, tarif retail juga diharapkan akan ikut turun.
Kita akan bahas ini dengan mengambil contoh langsung kasusnya, sebuah perusahaan telekomunikasi selular X.
Ketika pertama kali didirikan, operator X sudah harus menetapkan basis daerah awal dimana saja mereka akan beroperasi. Dari sinilah kemudian operator tersebut menyusun POC mana saja yang akan mereka miliki. Dan dari sini pulalah mereka akan membuat pemetaan prefix nomor mereka. Sebagai contoh, untuk daerah Jakarta, operator X akan membuat prefix 08XX170YYYY. 4 digit pertama (08XX) dikenal sebagai NDC, National Destination Code. Ini prefix yang menandakan blok nomor seluler tertentu milik operator tertentu.
Setelah memiliki POC, maka operator X harus juga membuka layanan interkoneksi dengan operator lain. Karena di Indonesia terdapat 12 operator, maka interkoneksi ini harus dibuat ke seluruh operator-operator tersebut. Pembuatan infrastruktur interkoneksi menuju operator-operator lain ini juga bukan dengan biaya yang kecil, apalagi jika alur traffic menuju operator-operator tersebut masih sangat kecil, karena tentu operator X juga membutuhkan biaya untuk balik modal kan ;).
Dari sini, muncullah operator Y yang bertindak sebagai operator transit. Artinya, operator X tidak perlu membangun jaringan interkoneksi ke seluruh operator yang ada, yang diperlukan hanya 1 buah infrastruktur interkoneksi, menuju operator Y sebagai operator transit, yang nantinya akan menyalurkan alur traffic menuju operator tujuan yang sebenarnya. Dari sini kita sudah mendapatkan gambaran, bagaimana kira-kira maksud dari originasi, terminasi, dan transit.

Lalu, kapan sebuah operator perlu membangun jaringan interkoneksinya sendiri ? Dari data statistik operator X tiap bulan, tentu operator X bisa melihat kemana tujuan paling banyak alur traffic dari pelanggannya. Dan begitu juga darimana pelanggannya paling banyak menerima panggilan. Jika cost transit ini diperkirakan sudah akan lebih mahal daripada membangun infrastruktur interkoneksi langsung dengan operator tujuan, maka sudah saatnya infrastruktur interkoneksi langsung ini dibangun.

Oh ya, dari tadi ini kita masih membicarakan panggilan suara (voice) yah, kalau untuk SMS, infrastruktur interkoneksi harus dibuat satu-persatu menuju operator tujuan, karena SMS ke operator lain tidak bisa disampaikan melalui jaringan transit.

Lalu bagaimana dengan penentuan tarif interkoneksi ? Tunggu di bagian #2 yah...

Monday, December 22, 2008

Bye bye apache, welcome Nginx

Bagi saya, php tetap memiliki kenangan yang indah dalam mengisi hari-hari pemrograman saya terdahulu. Programming language yang fleksibel, dan nggak pake ribet. Justru kesulitan ditemui ketika deploy di server. Kebanyakan server yang tersedia sudah diinstall default dengan bundle apache, beserta modul-modul yang sudah di tentukan sebelumnya. Kalau pake keluarga Redhat, iya kalau kebetulan dapet rpm yang pas versinya, kalo nggak ? Cara paling enak memang tetap dengan compile dari source, karena kita bisa bongkar pasang modul yang kita inginkan, tambahkan semaunya, kurangi sesukanya. Jaman dulu(nggak dulu banget sih, 2004), saya hanya kenal Apache dan IIS buat jadi webserver untuk skrip php saya. Belakangan ini, muncul sebuah webserver yang tidak terlalu terkenal, tapi sepertinya ampuh. Kenapa ampuh ? Coba anda pergi ke netcraft.com, dan coba anda scan situs wordpress.com dan detik.com, apa webserver mereka ? Mereka pakai Nginx (baca:engine X). Ini dua situs besar loh, dan saya sangat yakin, tiap hari banyak diantara kita yang berinteraksi dengan kedua situs ini, ya tho ? Nggak mungkin dong mereka pake webserver yang kurang 'terkenal' kalo nggak karena mereka merasakan keampuhan dibaliknya, tul ndak ? Coba buka aja deh langsung di situsnya.


Ok, karena saya bukan pembuat Nginx, sejarahnya tidak akan saya beberkan disini. Berikut sebagai pengingat saja buat saya (syukur kalau berguna buat anda juga) untuk ngebangun server PHP siap pakai dengan Nginx dan lighttpd.
Berikut Linux saya, ubuntu 7.10 :
lintang@cygnus:~$ uname -a
Linux cygnus 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux
Disini kebetulan waktu nginstall, saya pake apt-get saja untuk nginx nya, baru php dan lighttpdnya yang compile dari source. Selain nginx, kita juga harus install dependenciesnya, terutama pcre dan zlib, serta openssl kalau anda ingin.
root@cygnus:~# apt-get install libpcre3 libpcre3-dev zlib1g zlib1g-dev nginx
Tunggu sejenak, bikin kopi dulu juga boleh. Atau kalau anda ingin waktu anda efisien, mari kita donlot dulu PHP dan Lighttpd nya :D
Saya ambil PHP versi 5.2.6, dan Lighttpd versi 1.4.19. Dari mana ? please deh, silakan googling, mudah didapat kok kedua-duanya.
Ok, kita mulai dengan PHP dulu, silakan ekstrak, compile, dan install. Berikut opsi yang saya gunakan untuk PHP saya.
lintang@cygnus:~$ ./configure --prefix=/usr/local/php-5.2.6 --with-mysql --enable-fastcgi --with-sockets --with-zlib
Ini berarti, kita akan instal PHP kita nanti di direktori /usr/local/php-5.2.6, mengikut-sertakan library koneksi php untuk mysql, membuat PHP yang berfungsi sebagai interpreter CGI ( nantinya skrip PHP bisa dijalankan dari shell, mirip /bin/bash atau /usr/bin/perl), lalu PHP tersebut dapat memiliki/membuka socket tersendiri (nantinya PHP akan berjalan sebagai process yang terpisah dari webserver, tidak seperti model Apache dimana PHP berjalan sebagai modul di dalamnya), lalu yang terakhir, mengikut sertakan library php untuk support kompresi dengan tipe Gzip.
Tunggu sejenak, setelah sukses, silakan lakukan langkah dibawah seperti biasa :
lintang@cygnus:~$ make
lintang@cygnus:~$ sudo make install
Nah, coba cek di direktori /usr/local/php-5.2.6/bin, seharusnya ada file executable bernama php-cgi. File inilah yang akan berjalan sebagai interpreter PHP anda dari shell.
Menurut beberapa sumber dari internet, sebenarnya php-cgi ini saja cukup untuk dipanggil dari Nginx nantinya untuk menjalankan PHP, namun akan lebih baik apabila kita mengambil spawner dari project Lighttpd. Spawner ini akan mengeksekusi php-cgi kita. Berikut langkah-langkahnya, seperti biasa, silakan ekstrak Lig
lintang@cygnus:~$ ./configure --prefix=/opt/lighttpd-1.4.19 --enable-static --disable-shared
Kira-kira maksudnya, kita akan menconfigure Lighttpd sebagai library static yang dependenciesnya mutlak terhadap file-file .so tertentu. Opsi static ini membuat program yang kita compile akan jauh lebih cepat, karena versi dependencies di dalamnya seperti di hardcode. Berkebalikan dengan ketika kita compile dengan modus dinamis, hasilnya program akan lebih lambat, namun dependencies terhadap versi library tertentu bisa dihindari. Kalau kita ingin membuat server yang cepat, siapa peduli dengan dinamisasi, bukan begitu ? :p
Lalu seperti biasa, kita jalankan make, tapi kali ini tanpa make install.
lintang@cygnus:~$ make
Seharusnya nanti, di direktori src/ akan ada file bernama spawn-fcgi. Kopikan file tersebut ke directory /usr/bin sebagai berikut :
lintang@cygnus:~$ sudo cp spawn-fcgi /usr/bin/
Lalu anda buat skrip .sh sederhana sebagai berikut :
lintang@cygnus:/usr/local/php-5.2.6$ cat > /usr/bin/php-fastcgi << EOF
#!/bin/sh

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 8999 -f /usr/local/php-5.2.6/bin/php-cgi

EOF

Ini adalah skrip untuk menjalankan PHP sebagai proses CGI yang terpisah dari webserver anda nantinya. PHP akan membuka socket di port 8999, dan akan binding di interface lo(127.0.0.1) anda, sehingga hanya bisa diakses dari mesin anda sendiri.
Ok, langkah terakhir tinggal setup nginx.conf anda, punya saya ada di sini /etc/nginx/nginx.conf.
Berikut isi file konfigurasi Nginx saya :
user www-data;
worker_processes 4;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

access_log /var/log/nginx/access.log;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;

include /etc/nginx/sites-enabled/*;

}
Perhatikan baris yang di bold, bahwa Nginx saya berjalan atas nama user www-data, sehingga user ini mutlak harus ada sebelumnya, sepertinya kalau di Ubuntu, user ini dibuatkan otomatis ketika kita install Nginx yah, saya lupa sih :D.
Baris selanjutnya, worker_processes, saya isi 4. User yang mengakses webserver saya disini kurang dari 100 orang, dan selama ini, 4 worker sudah cukup sih.
Lalu selanjutnya, gzip on, ini modul gzip compress yang kita aktifkan setelah sebelumnya kita install zlib. Dan yang terakhir, kita akan meng-include kan semua file konfigurasi di direktori /etc/nginx/sites-enabled. Berikut contoh file konfigurasi saya di direktori tersebut :
Filename : atutor.conf
server {
listen 80;
server_name atutor;

access_log /var/log/nginx/atutor.access.log;

location / {
root /var/www/nginx-default;
index index.html index.htm index.php;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default/ATutor;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass 127.0.0.1:8999;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

Konfigurasi ini mengatakan bahwa, saya memiliki sebuah aplikasi (kebetulan aTutor), yang saya letakkan di /var/www/nginx-default, dan untuk semua URL yang berakhiran .php, maka saya akan lemparkan requestnya ke CGI interpreter PHP yang berjalan di port 8999 seperti konfigurasi PHP diatas.

And that's it, kita bisa mengetes konfigurasi nginx kita dengan perintah :
lintang@cygnus:~$ sudo nginx -t
Lalu untuk menjalankan nginx bisa dengan perintah sbb :
lintang@cygnus:~$ sudo nginx
Kalau kita ada perubahan konfigurasi nginx, setelah selesai mengedit file konfigurasi, untuk merestart nginx bisa dengan perintah sbb :
lintang@cygnus:~$ sudo killall -HUP nginx

Udah deh, silakan arahkan browser anda di port 80, aplikasi anda siap melayani user :)

Sunday, December 21, 2008

Teknologi CDMA 450

Minggu siang, iseng-iseng menyalakan speedy dan browsing. Saya menemukan banyak artikel tentang CDMA 450, yang pas banget dengan bidang tempat kerja saya sekarang.
Jadi ceritanya begono, pada jama dahulu kala, tersebutlah sebuah teknologi analog bernama NMT, Nordic Mobile Telephone. Teknologi NMT ini kira-kira sekelas dengan teknologi AMPS yang ada sebelum jaman GSM dulu.Orientasinya voice only, lalu muncullah teknologi GSM, yang perbedaan 'paling terlihat' nya dengan AMPS adalah kemampuannya untuk mengirim SMS, dan satu hal lagi yang waktu itu masih nice to have-tapi sangat berpengaruh saat ini, apa itu ? yak, anda benar, GPRS. Namanya juga industri yang berbasis teknologi, maka dunia telekomunikasi dan para pelaku-pelaku di dalamnya juga harus berbenah menghadapi evolusi teknologi yg semakin berkembang. Para pelaku di dunia telekomunikasi tadi juga semakin merasa, bahwa mereka memerlukan sebuah standarisasi dari varian teknologi yang banyak berkembang. Muncullah organisasi-2 seperti GSMA (GSM Association->3GPP), dan CDG(CDMA Development Group->3GPP2). Lalu, CDMA 450 ini posisinya dimana ? Sabar sabar...
Seperti namanya, CDMA 450 ini termasuk teknologi yang beraliran CDMA, dan teknologi di dalamnya masuk ke dalam spesifikasi yang dibuat oleh CDG. Seperti kita ketahui, selain di frekwensi 450Mhz, CDMA juga ada yg beroperasi di 800Mhz dan 1900Mhz. Frekwensi 450Mhz ini dibuat sebagai transitional path untuk para operator telekomunikasi yang berbasis teknologi NMT.
Gambar yang menarik saya temukan di situs CDG (http://www.cdg.org/technology/3g/cdma450.asp) berikut ini :
Spektrum 450Mhz diantara spektrum lainnya
Kalau dilihat dari gambar diatas, frekwensi 450Mhz berada di paling luar, yang berarti jangkauan dari sebuat BTS dengan frekwensi 450Mhz lebih luas dari yang lain. Artinya, untuk mencakup daerah yang dengan luas yang sama, jumlah BTS yang dibutuhkan akan lebih sedikit dengan frekwensi ini. Teknologi CDMA dengan frekwensi 450Mhz ini banyak terdapat di negara2 skandinavia(rusia, checz), dan beberapa negara asia, seperti laos, kamboja, vietnam, dan tentu saja Indonesia. Dan seharusnya ini adalah jawaban untuk menyediakan sarana telekomunikasi di banyak desa-desa pedalaman di Indonesia.
Tantangan berikutnya adalah implementasi. Para pebisnis telekomunikasi tentu selalu saja kembali ke pertanyaan mendasar, apakah marketnya ada kalau teknologi ini diimplementasikan di desa-desa pedalaman ? Pemerintah sih inginnya desa-desa tertinggal juga maju, tapi tetap saja, investasi kan butuh balik modal ? Apa penduduk desa-desa pedalaman itu mampu dan butuh teknologi ini ? Don't get me wrong, tetapi banyak desa-desa pedalaman di Indonesia sebenarnya justru adalah kantung-kantung konsumen strategis dan potensional. Kenapa ? Kalau anda berasal dari desa (baca:wong nDeso), berapa banyak teman-teman masa kecil anda yang merantau keluar kota ? atau keluar negeri bahkan ? Banyaknya perantau berarti banyak pula yang ingin berkomunikasi dengan keluarga di desa, bukan begitu ?Atau sebuah pertanyaan simple, berapa jumlah minimum ternak sapi atau kambing yang dimiliki penduduk di desa ? :D belum lagi pertanyaan jumlah hektar sawah yang mereka punya ? So, pertanyaan diatas sudah terjawab dengan sendirinya.

Lalu ada pertanyaan lain, "..jadi, teknologi ini hanya cocok untuk operator yang ingin bermain di pedesaan kah" ? Well, kalau itu sih masalah ekspansi pasar yah. Dengan makin berkembangnya handset yang beredar di pasaran saat ini, bukan tidak mungkin sebentar lagi akan keluar handset triple band, 450-800-dan 1900Mhz di pasaran. Selama ini kita baru mengenal handset yang support 2 band saja, 800 dan 1900Mhz. Dengan fleksibilitas ini, sebenarnya kalau operator ingin punya dual license, tinggal beli ke pemerintah kan ( atau not so simple yah ? sorry :D ) ? Atau jalan paling cepat yaaa, kerjasama roaming dengan operator CDMA yang sudah memiliki teknologi ini. Aneh ya denger kata CDMA Roaming ? kalau pake GSM kan sudah biasa bagi yang sering jalan2 keluar negeri, dengan istilah international roaming. Intinya handset harus support frekwensinya dulu. Dan yang saya tau, handset untuk frekwensi 450Mhz ini memang terbatas, merknya mungkin hanya Huawei, Quallcom, atau Ubiquam. Pasar baru lagi nih buat produsen handset, he he.

Pada akhirnya, konsumen kan sebenarnya tidak peduli dengan teknologi yang akan dipakai, mau itu CDMA, mau itu 3G, WiMax, pada frekwensi berapapun, jika itu bisa memenuhi kebutuhan mereka, ya why not. Biarlah para vendor yang berperang di tataran teknologi ini, kita tinggal daftar, nikmati layanannya, dan jangan lupa, bayar tagihannya :p Bagi yang butuh akses internet cepat, sudah ada HSDPA untuk para pengguna GSM 3G dan EvDO dengan berbagai versi revisinya buat para pengguna CDMA. O ya, untuk teknologi CDMA 450 ini, karena teknologi basisnya CDMA, dan hanya frekwensinya saja yang 'tidak umum', EvDO ini juga bisa jadi termasuk layanan yang ditawarkan. Dan kalau secara teori range frekwensinya bisa mencapai 50Km2, maka seharusnya teknologi EvDO yang berjalan di atas frekwensi ini akan sama-sama menjanjikannya dengan teknologi WiMax, hanya saja mungkin untuk bandwidth speed nya, WiMax masih akan lebih unggul. Tapi balik-balik lagi, kalau sudah cukup dengan 3.1Mbps (EvDO Rev.A) untuk sekedar buka web, chatting, voip dan video streaming, buat apa terlalu serakah ? :D