Single Identity Number Using Apache Cassandra
-
Upload
anton-rifco-susilo -
Category
Documents
-
view
340 -
download
5
description
Transcript of Single Identity Number Using Apache Cassandra
An
ton
Rif
co
Su
sil
o
20
10
Sin
gle
Id
en
tity
Nu
mb
er
In
do
ne
sia
Fa
ce
bo
ok
Ca
ssa
nd
ra
Untuk mendukung sistem birokrasi Indonesia yang lebih baik,
transparan, serta cepat tanggap dibutuhkan inisiatif pengelolaan
data penduduk yang baik dan auditable. Dalam makalah ini,
alternatif dari pendekatan tersebut dicoba untuk diimplementasi
menggunakan Framework penyimpanan Apache Cassandra,
sebuah basis data non-relasional berbasis noSQL. Framework
ini telah berhasil memberikan kesuksesan pada implementasi
konsep penyimpanan pada banyak kebutuhan dunia maya,
seperti Facebook dan Twitter. Oleh karenanya, makalah ini
menawarkan pendekatan solusi dunia maya pada implementasi
dunia birokrasi, khususnya birokrasi Indonesia.
2 | P a g e
Implementasi “Single Identity Number” Indonesia dengan
Facebook Cassandra
Oleh :
Anton R Susilo ([email protected])
NOMOR IDENTIFIKASI NASIONAL
Implementasi konsep nomor identifikasi nasional telah dilakukan oleh banyak pemerintahan
di dunia untuk mengetahui aktivitas dari penduduknya, baik penduduk permanen maupun
penduduk asing. Informasi tersebut umumnya digunakan untuk kebutuhan birokrasi
pemerintah terhadap penduduk yang bersangkutan. Meskipun masing-masing negara
memiliki sudut pandang yang berbeda mengenai seberapa jauh nomor tersebut digunakan,
namun kesamaannya ialah bahwa setiap negara setuju bahwa nomor tersebut harus dimiliki
oleh setiap penduduk.
Awalnya negara menjalankan konsep penomoran itu untuk tujuan yang spesifik, tetapi
seiring dengan berjalannya waktu kebutuhan akan nomor identifikasi ini menjadi semakin
tergeneralisir. Misalnya saja, Amerika Serikat pada awalnya mengembangkan sistem Social
Security Number (SSN) untuk mempermudah pengelolaan pembagian tunjangan serta
kebutuhan Social Security lainnya. Kemudian fungsionalitas-nya dikembangkan untuk tujuan
lainnya seperti, identifikasi dalam pembuatan akun bank, kartu kredit, dan pengeluaran
Surat Ijin Mengemudi.
KARTU TANDA PENDUDUK INDONESIA
Berdasarkan informasi dari CIA World Facts, Indonesia merupakan negara dengan jumlah
penduduk terbesar keempat di dunia (238.452.952 individu)[1]. Sejumlah individu tersebut
tersebar ke dalam tigapuluh-tiga provinsi yang terletak pada enam pulau (kepulauan) utama.
Sebagai materi identifikasi, hingga makalah ini dipublikasikan Indonesia menerapkan sistem
Kartu Tanda Penduduk (KTP) yang terdiri dari enam-belas digit angka unik. Dengan jumlah
tersebut, Indonesia menempati urutan kedua setelah China (delapan-belas digit) untuk
implementasi penomoran penduduk terpanjang[2].
Dalam implementasinya, Kartu Tanda Penduduk menjadi acuan/referensi utama dari hampir
seluruh aktivitas sosial penduduk, meliputi: identifikasi sosial (kartu keluarga, pekerjaan,
kesehatan, perpajakan, tunjangan sosial), identifikasi politik (daftar pemilih aktif pada
3 | P a g e
pemilu), identifikasi internasional (passport), serta aktivitas dan transaksi lainnya yang
melibatkan sesama penduduk Indonesia maupun antara penduduk Indonesia dengan
masyarakat Internasional. Setiap penduduk Republik Indonesia yang sah dapat mengajukan
pembuatan Kartu Tanda Penduduk dengan membuat surat permohonan yang divalidasi
oleh beberapa level birokrasi terkait (RT, RW, Kecamatan, sampai Kelurahan). Implementasi
tersebut sudah dianggap baik jika saja kita tidak mengetahui fakta bahwa DATA tersebut
sangat SULIT DIAKSES, bahkan untuk kebutuhan rutin kenegaraan seperti Pemilihan
Umum.
Diagram Keterkaitan Data Penduduk
Sewajarnya, negara harus dapat melakukan penyimpanan serta pemeliharaan data
penduduk dengan baik sehingga dapat mempermudah bisnis proses kenegaraan. Setiap
penduduk yang terdaftar melalui lingkungan sistem yang baik (serta auditable) akan
diberikan sebuah nomor unik identifikasi. Melalui nomor tersebut (Single Identity Number),
setiap penduduk dan semua stakeholder yang terkait dan berwenang dapat mengetahui
informasi yang mengikat individu itu. Dengan kata lain, nomor yang terikat pada individu
dapat digunakan untuk mengacu data: Pendidikan (Education), Identitas (Citizen Identity),
Pekerjaan dan Perpajakan (Jobs and Taxation), Data dan Transaksi Perbankan (Banking
Information), Rekam Medis (Medical Record), Ikatan Keluarga (Family Information), Daftar
Pemilih Tetap (Electoral Systems), Identitas Internasional (Passport), Aktivitas Hukum dan
Perijinan (Law Activity & License), serta Status dan Tunjangan Sosial (Social Security
4 | P a g e
Identity)[3]. Beberapa informasi tersebut merupakan data utama Individu. Implementasi
Single Identity Number seharusnya tidak boleh dibatasi hanya pada beberapa informasi
yang didefinisikan di awal. Seiring dengan perkembangan jaman, ke depannya mungkin
akan ada tambahan informasi krusial individu, seperti Telco Profile (data nomor handphone
penduduk), Identitas Dunia Maya (e-mail), dan lainnya.
Diagram Single Identity Number (SIN) Framework
Selain kegunaannya yang cukup luas, pada implementasi Single Identification Number ini
juga terdapat ancaman keamanan data. Konsep SIN ini menyimpan hampir seluruh
informasi terkait setiap individu penduduk Indonesia. Tentu sangat berbahaya jika informasi
tersebut jatuh ke tangan yang tidak bertanggung jawab. Pencurian data ini bisa terjadi
melalui ancaman eksternal (seperti Hacking, dan Social Engineering), maupun dari internal
(seperti operasional birokrasi yang buruk). Implementasi Single Identification Number yang
baik harus mampu mengurangi resiko ancaman keamanan data.
5 | P a g e
Di luar ancaman dari keamanan data, Single Identity Number memiliki trade-off yang cukup
seimbang. Implementasinya dapat memperkuat Keamanan Nasional (dengan memberikan
informasi riwayat hukum setiap individu), mengendalikan imigran ilegal (penduduk lokal
maupun asing yang tidak memiliki SIN tidak diperbolehkan mengakses layanan publik),
meningkatkan transparansi hukum, serta memfasilitasi sistem e-Goverment di Indonesia.
INTERNET SEBAGAI MEDIA PENGGERAK KEBUTUHAN KOMUNIKASI
Awal abad dua puluh satu ini dimulai dengan era kejayaan dunia internet. Dimulai dari
kebutuhan militer, internet berkembang pesat dan cepat hingga saat ini dapat diakses oleh
hampir setiap individu. Salah satu alasan utama mengapa kejayaan internet ini dapat terjadi
secara instans ialah kenyataan bahwa internet mampu menjadi media yang dapat
mengalirkan data dan informasi secara reliable dan cepat. Dengan internet, komunikasi
berlangsung dalam hitungan detik. Oleh karenanya, transformasi perilaku komunikasi
individu pun mulai terjadi secara perlahan namun pasti[4].
Kemudian fasilitas komunikasi dunia maya berkembang semakin progresif dengan
munculnya aplikasi jejaring sosial (social network application), seperti Facebook. Aplikasi
seperti itu sangat mengetahui seberapa jauh kebutuhan manusia akan komunikasi, yakni
untuk tetap menjalin hubungan dengan setiap relasi dimanapun mereka berada. Di
dalamnya, setiap individu dapat menyimpan profile yang terkait informasi pribadi diri. Melalui
informasi itulah setiap individu ingin dikenal. Meskipun begitu, pengguna dapat mempunyai
akses untuk membuka dan mengunci informasi / beberapa informasi terkait dirinya. Di
sinilah kekuatan utama dari Facebook, keamanan informasi (security over information).
Hanya pihak yang berwenang dapat mengakses data. This means everything!
APACHE CASSANDRA : APLIKASI DATA STORE FRAMEWORK DARI FACEBOOK
Kekuatan dari Facebook ini ditunjang oleh framework media penyimpanan-nya yang sangat
handal, Apache Project codename Cassandra. Framework ini dikembangkan oleh insinyur
Implementasi Facebook, Avinash Lakshman dan Prashant Malik pada 2008.
Pengembangan Cassandra ini diterapkan dengan model NoSQL, sebuah konsep database
non-relasional berbasis key-value store. Apache Cassandra ialah media penyimpanan yang
berorientasi kolom dan super-kolom (column-based, super-column-based). Rangkaian dari
6 | P a g e
kolom dan super-kolom tersebut dibungkus ke dalam ColumnFamily1 dan Super-
ColumnFamily2. Tujuan utama penerapannya ialah untuk memperoleh rataan akses dan
simpan data secara penuh (high-availability and high-accessibility). Hal ini terbukti serta
tercapai dalam performa portal Facebook yang sangat bagus. Bahkan beberapa aplikasi lain
mulai beralih dari konsep database relasional ke Apache Cassandra, seperti: Twitter.com[5]
dan Digg.com[6].
Secara teknis, Apache Cassandra mempunyai fitur sebagai berikut[7]:
• Terpusat (Centralized)
Tidak memerlukan konsep sharding (pembagian penyimpanan data pada beberapa
server berdasarkan aturan spesifik pemecahan key, misal distribusi penyimpanan
berdasar regional atau nama depan). Pada Cassandra, konsep distribusi yang ada
ialah untuk meningkatkan availability sistem.
• Tanpa Titik Rentan (No Single Point of Failure)
Setiap node pada cluster Cassandra bersifat identik, sehingga tidak ada single point
of failure.
• Fault-Tolerant
Data secara automatis ter-replikasi pada beberapa node untuk menjamin fault-
tolerant. Mendukung replikasi data pada data center yang berbeda. Node yang rusak
dapat diganti tanpa perlu downtime pada aplikasi.
• Tingkat Konsistensi sesuai kebutuhan (Tunable Consistency)
Operasi Baca (read) dan Tulis (write) dapat disesuaikan pada level konsistensi yang
sesuai kebutuhan bisnis proses. Level konsistensi mendukung opsi “writes never fail”
(performa cepat) hingga “block all replicas to be readable” (performa lambat).
1 ColumnFamily adalah sebuah struktur data yang dapat menyimpan jumlah tupple kolom
(key-value) tanpa batas. Bagi mereka yang familiar dengan latar belakang RDBMS
(Relational Database), ColumnFamily menyerupai struktur tabel.
2 Super-ColumnFamily merupakan struktur penyimpanan yang hampir serupa dengan
Column-Family, hanya saja pada Super-ColumnFamily, struktur yang disimpan ialah tupple
Super-Column (key-column).
7 | P a g e
• Elastisitas tinggi (Elasticity)
Throughput Operasi meningkat seiring dengan penambahan mesin (node) baru.
Tidak diperlukan downtime dalam penambahannya.
• Data Model yang terstruktur
Sebuah tabel pada Cassandra sederhananya ialah sebuah Map multi-dimensi
terdistribusi yang ter-index pada key. Pada implementasi yang baik, mendukung data
model yang terstruktur dengan baik.
8 | P a g e
Column dan ColumnFamily
SuperColumn dan SuperColumnFamily
9 | P a g e
Dengan Apache Cassandra, sampai dengan saat ini Facebook mampu menampung hingga
lebih dari empat ratus juta pengguna aktif, dengan lebih dari tigapuluh lima juta aktivitas
pengguna setiap harinya [8]. Dari jumlah tersebut, aktivitas pembangkitan dan penggunaan
informasi yang ada berlangsung terus menerus tanpa adanya hambatan yang berarti dalam
aksesibilitas data. Dari fakta ini, kita dapat mempelajari dan menemukan fakta bahwa
performa baik pada aplikasi yang berbasis profile (informasi) pengguna dapat diperoleh
dengan menerapkan framework yang serupa dengan implementasi yang diterapkan pada
Facebook, yakni Apache Cassandra.
CASSANDRA SEBAGAI ALTERNATIF IMPLEMENTASI SINGLE IDENTITY NUMBER
Sebagai alternatif solusi dari implementasi Single Identity Number untuk penomoran
penduduk negara kesatuan Republik Indonesia, framework Apache Cassandra dapat
diterapkan. Kesimpulan ini ditarik dari upaya membandingkan spesifikasi latar belakang dan
kebutuhan aplikasi Facebook dan Single Identity Number dari penduduk Negara Kesatuan
Republik Indonesia (NKRI).
Perbandingan Facebook Single Identity Number NKRI
Jumlah Pengguna
Potensial
> 400.000.000 238.452.952
Bentuk Model Data Serangkaian profile
pengguna, yang mengacu
pada username (atau alamat
email unik).
Serangkaian Informasi Identitas,
yang mengacu pada nomor
penduduk unik (SIN).
Aktivitas akses data
(read-write
operations over
data)
Sangat tinggi (> 35 juta
aktivitas per day)
Sangat tinggi (dengan asumsi
aktivitas per hari >= 10% jumlah
pengguna, diperoleh kisaran > 25
juta akses per hari)
Tingkat Ketersediaan
Sistem (Availability)
(0 – 100 %)
100% (Tidak ada toleransi
terhadapt loss of availability)
100% (Tidak ada toleransi terhadap
loss of availability)
Tingkat Fleksibilitas
Data
Tinggi (penambahan bentuk
profile baru sering terjadi)
Cukup tinggi (penambahan bentuk
profile baru kadang terjadi)
10 | P a g e
Dari tabel perbandingan tersebut, dapat dilihat bahwa latar belakang kebutuhan kedua
aplikasi hampir serupa. Implementasi Single Identity Number menggunakan kerangka kerja
(framework) Apache Cassandra adalah sebuah bentuk adaptasi kesuksesan implementasi
sebuah aplikasi dunia maya ke dalam kebutuhan dunia nyata.
PERMODELAN SINGLE IDENTITY NUMBER
Ketika makalah ini ditulis, Indonesia menerapkan konsep penomoran penduduknya dengan
Kartu Tanda Penduduk (KTP). Setiap KTP menyimpan informasi pribadi penduduk, meliputi
Nama, Alamat, Tanggal lahir, dan data pribadi lainnya dengan 16-digit nomor penduduk
sebagai index-nya. Di dalam nomor tersebut, terkandung informasi asal daerah penduduk
serta tanggal lahir-nya. Jika ada beberapa penduduk yang lahir pada tanggal yang sama
dan dari daerah yang sama pula, maka nomor pembedanya ada pada beberapa digit
terakhir.
PP . KKL L . DDMMYY . X XXX
PP = Kode Provinsi
KK = Kota / Kabupaten
LL = Kelurahan
DDMMYY = Tanggal Lahir Penduduk
XXXX = Data Inkremental Komputer
Untuk tujuan kemudahan implementasi, makalah ini akan menerapkan konsep penomoran
yang serupa dengan konsep KTP.
Implementasi Single Identity Number pada framework Apache Cassandra ini
direpresentasikan dalam beberapa ColumnFamily / Super-ColumnFamily. Untuk
mempermudah penggambaran model, akan digunakan penjabaran detail dari masing-
masing struktur dan representasi JSON (JavaScript Object Notation)-nya, seperti berikut:
1. Identitas Penduduk (Main Citizen Identity)
Representasi dari identitas utama data penduduk, Biodata. Setiap biodata penduduk
dimodelkan dalam ColumnFamily Citizen-Identity dengan index SIN. Setiap SIN
mengacu pada data: Nama lengkap (Fullname), Nama panggilan (Surname), Agama
(Religion), Tanggal-lahir (Birthday), Tempat lahir (Birth-Place), Alamat (Current-
11 | P a g e
Address), Kota (Current-City), Nomor telpon (Phone-Number), Kebangsaan (Nationality),
Jenis kelamin (Gender), Foto (Photo-Path). Mode pengurutan (sorting) yang dipakai
untuk ColumnFamily ini ialah Long / Integer.
Identity:
{
SIN :
{
Fullname : Full-Name,
Surname : Name,
Religion : religion,
Birthday : date,
Birth Place : city,
Current Address : street,
Current City : city,
Phone-Number : a-phone-number,
Nationality : a-nation,
Gender : male / female,
Photo-path : directory-path of photo,
},
}
2. Riwayat Medis (Medical-Record)
Representasi dari riwayat kesehatan penduduk. Direpresentasi dalam Super-
ColumnFamily Medical-Record dengan index SIN. Masing-masing index menyimpan
data historikal catatan medis, dengan key Tanggal mulai pengaksesan fasilitas
kesehatan (Date-Start). Catatan Medis terdiri dari data: diagnosa penyakit (Diagnosa),
Keterangan (Description), Level keakutan (Severity-Level), Nama Institusi Kesehatan
(Medical-Institution-name), Alamat Institusi Kesehatan (Medical-Institution-Address),
Kota Institusi Kesehatan (Medical-Institution-City), Daftar pengobatan (Prescription)
dalam respresentasi JSON (Javascript Object Notation), Tanggal mulai (Date-Start),
Tanggal akhir (Date-End).
Medical-Record:
{
SIN :
{
12 | P a g e
Date-Start :
{
Diagnosa : a disease,
Description : some descriptions,
Severity-Level : EASY / NORMAL / HARD / ACCUTE,
Medical-Institution-name : an Institution name,
Medical-Institution-Address : a address,
Medical-Institution-City : a city,
Prescription {json format} : {1:remedy-name, 2:remedy-name, ...}
Date-start : date,
Date-end : date,
},
},
}
3. Pendidikan (Education)
Representasi riwayat pendidikan yang sedang / pernah ditempuh penduduk.
Representasi-nya ialah Super-ColumnFamily Education dengan index SIN. Masing-
masing index menyimpan data historikal pendidikan, dengan key Tanggal mulai akses
jenjang pendidikan (Date-Start). Pendidikan terdiri dari data: Nama Institusi (Institution-
name), Status pengakuan Institusi (Institution-Accredication), Alamat Institusi (Institution-
Address), Kota Institusi (Institution-City), Jenjang pendidikan (Education-Level),
Keterangan penjurusan (Major), Nilai lulus (Final Score), Keterangan tambahan
(Description), Tanggal mulai (Date-Start), Tanggal akhir (Date-End).
Education:
{
SIN :
{
Date-Start:
{
Institution-name : an-Institution-name,
Institution-Accreditacion : A/B/C/D/E,
Institution-Address : address,
Institution-City : city,
Education-Level : SD/SMP/SMA/D1/D3/D4/S1/S2/S3,
Major : major,
13 | P a g e
Final Score : score / max.score,
Description : description,
Date-Start : date,
Date-end : date,
},
},
}
4. Identitas Internasional (Passport)
Representasi riwayat kunjungan internasional dari seorang penduduk. Diimplementasi
dalam sebuah Super-ColumnFamily Passport dengan index SIN. Masing-masing index
menyimpan data historikal kunjungan, dengan key Tanggal masuk kunjungan (Date-
Start). Identitas internasional terdiri dari data: Negara yang dikunjungi (Country-Visited),
Tujuan kunjugan (Visiting-Purpose), Tanggal masuk negara (Date-Start), Tanggal keluar
negara (Date-End).
Passport:
{
SIN:
{
Date-start:
{
Country-Visited : a country,
Visiting-Purpose : description,
Date-Start : date,
Date-End : date,
},
},
}
5. Relasi Keluarga (Family)
Representasi relasi keluarga dari seorang penduduk. Diimplementasi dalam sebuah
ColumnFamily Family dengan index SIN. Relasi Keluarga terdiri dari data: Ayah biologis
(Biological-Father), Ibu biologis (Biological-Mother), Ayah terakhir (Father), Ibu terakhir
(Mother), Riwayat pernikahan (Marital History), Pasangan nikah (Spouse), Anak
(Children).
Family:
14 | P a g e
{
SIN :
{
Biological Father : biological-father-name,
Biological Mother : biological-mother-name,
Father : latest-father-name,
Mother : latest-mother-name,
Marital History {json format} :{SIN:{date-start:xx,date-end:yy,SIN:xxx}, ...}
Spouse : latest-spouse-SIN,
Children {json format} : {1 : SIN, 2 : SIN, ...}
},
}
6. Partisipasi Pemilu (Electoral-Participation)
Representasi riwayat partisipasi dalam pemilihan umum (pemilu) dari seorang
penduduk. Diimplementasi dalam sebuah Super-ColumnFamily Electoral-Participation
dengan index SIN. Masing-masing index menyimpan data historikal partisipasi, dengan
key Tanggal berlangsungnya pemilu (Date). Struktur Partisipasi pemilu terdiri dari data:
Nama pemilihan umum (Election-name), Tujuan pemilihan umum (Election-Purpose),
serta Tanggal berlangsung pemilihan umum (Date). Dalam struktur data Riwayat
Partisipasi Pemilu ini, yang ditekankan hanyalah data keikutsertaan penduduk saja.
Mengenai data detail hasil maupun peserta pemilu merupakan data private dari Sistem
Informasi Pemilu itu sendiri dan tidak dapat diakses melalui sistem Single Identity
Number ini.
Electoral-Participation:
{
SIN:
{
Date:
{
Election-name : a election name,
Election-Purpose : description,
Date : date,
},
},
}
15 | P a g e
7. Identitas Sosial dan Keamanan (Social-Security)
Representasi informasi identitas sosial dan keamanan dari seorang penduduk.
Diimplementasi dalam dua buah Super-ColumnFamily Tunjangan Sosial (Allowance)
dan Lisensi Kendaraan (Driving-License) dengan index keduanya pada SIN. Pada
struktur Tunjangan Sosial, masing-masing index SIN menyimpan data historikal
tunjangan sosial yang pernah diperoleh, dengan key nama program tunjangan
(Program-Name). Masing-masing program menyimpan data Nama program (Program-
Name), Deskripsi (Description), Nama institusi pemberi tunjangan (Issuer-Institution),
Alamat Institusi (Issuer-Address), Kota Institusi (Issuer-City), Alasan pemberian
Tunjangan (Reason), Rataan-pengulangan (Reccurence), Jumlah tunjangan (Amount),
Tanggal mulai pemberian tunjangan (Date-Start), Tanggal pemberian tunjangan terakhir
(Date-Last-Acquired). Sedangkan pada struktur lisensi kendaraan, masing-masing index
SIN menyimpan semua lisensi kendaraan yang dimiliki penduduk, dengan Judul lisensi
(Title) sebagai key. Masing-masing lisensi menyimpan data Judul lisensi (Title), Nama
Institusi pemberi lisensi (Issuer-Institution), Alamat Institusi (Issuer-Address), Kota
Institusi (Issuer-City), Tanggal dikeluarkannya lisensi (Date), Tanggal akhir berlaku
lisensi (Valid-Until).
Selain kedua struktur di atas, sebagai struktur data opsional untuk kebutuhan Social
Security mungkin membutuhkan informasi Catatan Hukum (Law-Activity) serta
Penghargaan Sosial (Social-Reward). Penjelasannya hanya akan diberikan melalui
representasi model JSON-nya.
Allowance:
{
SIN:
{
Program-Name:
{
Program-Name : name,
Description : description,
Issuer-Institution : institution-name,
Issuer-Address : institution-address,
Issuer-City : institution-city,
Reason : reason,
Reccurence : weekly / monthly / annually / once / ..,
16 | P a g e
Amount : xx,
Date-Start : date,
Date-Last-Acquired : date,
},
},
}
Driving-License:
{
SIN:
{
Title:
{
Title : title,
Issuer-Institution : institution-name,
Issuer-Address : institution-address,
Issuer-City : institution-city,
Date : date,
Valid-Until : date,
}
}
}
Law-Activity (Optional Data)
{
SIN:
{
Date:
{
Activity : activity-name,
Description : description,
City : city,
Punishment : punishment-title,
Punishment-Level : punishment-level,
Date-start : date,
Date-Resolve : date,
17 | P a g e
}
}
}
Social-Reward (Optional Data)
{
SIN:
{
Date:
{
Title : reward-title,
Level : reward-level,
Description : description,
City : city,
Date : date,
}
}
}
8. Identitas Perbankan (Banking Information)
Terdapat dua alternatif implementasi dalam penetapan struktur Identitas Perbankan,
apakah struktur akan menyimpan informasi profile-nya saja, ataukah diperlukan detail
transaksi perbankan masing-masing penduduk. Mengingat tujuan utama dari
implementasi Single Identitiy Number ialah sebagai acuan high-level saja, dan bukannya
sebagai referensi data transaksional, maka yang disimpan hanyalah data terkait profile
saja. Adapun untuk masing-masing profile, disertakan saldo (balance) terakhir dari
masing-masing akun. Jika diperlukan pengacuan kepada data transaksional, maka
negara dapat mengacu pada data yang disimpan setiap bank.
Identitas Perbankan dimodelkan dalam dua struktur Super-ColumnFamily Akun
Perbankan (Bank-Account) dan Akun Kartu-kredit (Credit-Card-Account) dengan
masing-masing index mengacu pada SIN. Pada akun perbankan, setiap SIN menyimpan
data akun perbankan yang pernah dibuka oleh suatu penduduk. Akun tersebut memiliki
key Nomor akun (Account-Number), dan terdiri dari data Tanggal pembukaan akun
(Registration-Date), Nama Bank (Bank-name), Identitas cabang Bank (Issuer-Bank-
Branch), Alamat cabang Bank (Issuer-Bank-Branch-Address), Kota cabang Bank
(Issuer-Bank-Branch-City), Tanggal transaksi terakhir (Last-Transaction-Date), Saldo
(Balance). Sementara pada struktur akun kartu kredit, setiap SIN menyimpan data Akun
18 | P a g e
Kartu-kredit, yang terdiri dari key Nomor akun (Account-Number), Nama Bank (Bank-
name), Identitas cabang Bank (Issuer-Bank-Branch), Alamat cabang Bank (Issuer-Bank-
Branch-Address), Kota cabang Bank (Issuer-Bank-Branch-City), Tipe kartu kredit
(Credit-Card-Type), serta Tanggal transaksi terakhir (Last-Transaction-Date).
Bank-Account:
{
SIN:
{
Account-Number:
{
Registration-Date : date,
Bank-Name : bank-name,
Issuer-Bank-Branch : bank-branch,
Issuer-Bank-Branch-Address : bank-branch-address,
Issuer-Bank-Branch-City : bank-branch-city,
Last-Transaction-Date : date,
Balance : balance,
},
},
}
Credit-Card-Account:
{
SIN:
{
Account-Number:
{
Registration-Date : date,
Bank-Name : bank-name,
Issuer-Bank-Branch : bank-branch,
Issuer-Bank-Branch-Address : bank-branch-address,
Issuer-Bank-Branch-City : bank-branch-city,
Credit-Card-Type : VISA / MASTERCARD / xx,
Last-Transaction-Date : date,
},
},
19 | P a g e
}
9. Pekerjaan dan Perpajakan (Jobs-Taxation)
Representasi identitas Pekerjaan dan Perpajakan dari seorang penduduk.
Diimplementasi dalam dua buah Super-ColumnFamily Pekerjaan (Jobs) dan Pajak
terbayar (Taxation-Payment) dengan index keduanya pada SIN. Pada struktur
Pekerjaan, masing-masing index SIN menyimpan data historikal pekerjaan formal yang
pernah dijalani, dengan key Tanggal mulai pekerjaan (Date-Start). Masing-masing key
menyimpan data Nama perusahaan (Company-Name), Status perusahaan (Company-
Status), Alamat perusahaan (Company-Address), Kota perusahaan (Company-City),
Peran dalam pekerjaan (Role), Penjelasan pekerjaan (Description), Tanggal mulai
pekerjaan (Date-Start), Tanggal terakhir pekerjaan (Date-End). Sedangkan pada struktur
Perpajakan, masing-masing index SIN menyimpan semua kewajiban pajak yang harus /
telah dibayar penduduk, dengan nama Pajak (Tax-Title) sebagai key. Masing-masing
tax-title menyimpan data Nama Pajak (Tax-Title), Nama Institusi pajak (Issuer-Tax-
Branch), Alamat Institusi (Issuer-Tax-Address), Kota Institusi (Issuer-Tax-City), Alasan
kewajiban pajak (Reason), Penjelasan penetapan wajib pajak (Description), Jumlah
pembayaran pajak terakhir (Amount), Tanggal penetapan wajib pajak (Date-Start),
Tanggal terakhir pembayaran pajak (Date-Last-Payment), Tingkat pengulangan
kewajiban pajak (Reccurence).
Jobs:
{
SIN :
{
Date-Start:
{
Company-name : company-name,
Company-Status : company-status,
Company-Address : company-address,
Company-City : company-city,
Role : job-role,
Description : job-description,
Date-Start : date,
Date-end : date,
},
},
20 | P a g e
}
Taxation-Payment:
{
SIN :
{
Tax-Title :
{
Tax-Title : tax-title,
Issuer-Tax-Branch : tax-branch,
Issuer-Tax-Address : tax-branch-address,
Issuer-Tax-City : tax-branch-city,
Reason : reason,
Description : description,
Amount : amount,
Date-Start : date,
Date-Last-Payment : date,
Reccurence : monthly / annualy / none / xx,
},
},
}
10. Identitas Opsional Lainnya
Seiring perkembangan jaman, terkadang dibutuhkan informasi terkait penduduk lainnya.
Implementasi Single Identity Number yang baik harus dapat mempertimbangkan hal
tersebut. Sebagai contoh, di sini kita akan mengimplementasi data informasi terkait
telekomunikasi (Telco) dan dunia maya (Internet).
Internet-Identity:
{
SIN :
{
Email-Address : valid-email-address,
Website/Blog-Address : valid-website-address,
},
}
21 | P a g e
Telco-Identity :
{
SIN :
{
Phone-Number : {1:xx , 2:yy, ...}
Main-Phone-Number : xx,
},
}
ARSITEKTUR SOLUSI SINGLE IDENTITY NUMBER
Secara keseluruhan, sebagai sebuah solusi, sistem Single Identity Number diimplementasi
dalam arsitektur server-client. Server SIN melayani setiap request yang diijinkan dari setiap
entitas sistem eksternal yang terhubung, seperti Sistem Pemilihan Umum untuk
mendapatkan data valid calon pemilih, Sistem Informasi Kesehatan untuk memperoleh dan
memperbaharui data kesehatan penduduk, dan lainnya. Untuk aksesibilitasnya, setiap
server eksternal harus terdaftar untuk dapat mengakses (add / update / delete) data
penduduk. Tergantung kebutuhannya, sistem eksternal tersebut hanya dapat mengakses
struktur data SIN yang di-provision untuknya. Misalnya, sistem perbankan suatu bank dapat
mengakses data perbankan pelanggan serta data pekerjaan dan perpajakan penduduk
untuk kebutuhan transaksi pembukaan akun bank. Dengan begitu maka dapat memangkas
22 | P a g e
beberapa tahap birokrasi offline. Dari sini diharapkan dapat pula memangkas praktek kolusi
dan nepotisme yang biasa berlangsung dalam model birokrasi offline.
Framework SIN ini diimplementasi dengan konsep terdistribusi ke dalam beberapa server
penyimpanan data yang identik. Sesuai dengan ide dasar Cassandra yang tidak
mengijinkan point of failure, maka masing-masing server yang identik tersebut akan bekerja-
sama melayani setiap request yang ada secara bergantian (round-robin load balanced).
Mengingat saat ini cost mesin penyimpanan relatif sangat murah dibandingkan peripherals
lainnnya, maka replikasi data pada setiap cluster server penyimpanan tidaklah menjadi
masalah. Ke depannya, jika ingin menambahkan cluster baru untuk meningkatkan performa,
tidak diperlukan downtime layanan. Implementasi yang sangat baik untuk konsep mesin
penyimpanan.
Berikut adalah detail teknis implementasi Application Progamming Interface (API) dari
framework SIN yang ditawarkan dalam makalah ini:
1. Untuk kebutuhan aksesibilitas, framework SIN akan mendukung beberapa metode
akses, yakni: Plain Http GET / POST, SMPP (Short Message Peer-to-Peer),
RESTful3 (Representational State Transfer), dan web services.
2. Synchronous access (Stateless), setiap komunikasi client-server dilakukan dalam
mode transaksi tertutup. Hal ini berarti bahwa transaksi selesai dalam satu kali
request, sehingga tidak perlu ada penyimpanan state transaksi pelanggan.
3. Melalui setiap metode aksesnya, server akan memberikan respon dalam format data
JSON (Javascript Object Notation) atau XML, tergantung opsi yang dipilih client.
Kedua format data ini cukup populer pada industri informatika, sehingga client yang
akan mengakses diharapkan tidak kesulitan dalam mengadaptasinya.
4. Aksesibilitas-nya dibatasi hanya untuk yang berhak saja. Setiap client akan
didaftarkan IP nya. Untuk mendapatkan akses, client harus menggunakan username
serta password yang valid. Kemudian server akan menentukan apakah pasangan
username-password tersebut mempunyai akses kepada struktur data yang diminta.
3 Sebuah konsep akses client-server yang setiap fungsinya diimplementasi melalui HTTP Method, seperti PUT,
GET, DELETE, dan POST
23 | P a g e
PROTOTIPE API DAN PORTAL AKSES SINGLE IDENTITY NUMBER FRAMEWORK
Di bawah ini adalah screenshot dari portal solusi Single Identity Number yang diusulkan
dalam makalah ini.
Portal Management S.I.N4
4 Free Template by Template World, http://templateworld.com
24 | P a g e
DAFTAR PUSTAKA
[1] CIA – The World Factbook – Indonesia, http://www.cia.gov/library/publications/the-
world-factbook/geos/id.html
[2] National Identification Number,
http://en.wikipedia.org/wiki/National_identification_number
[3] Prasojo, Eko. Kurniawan, Teguh. Holidin, Defny. 2007. An Analysis of the Government
System in Indonesia. Administrative Sciences Department University of Indonesia and
Korea-Australasia Research Centre University of New South Wales.
[4] Zhao, Shanyang. 2006. The Internet and the Transformation of the Reality of Everyday
Life: Toward a New Analytic Stance in Sociology. Temple University.
[5] Cassandra @ Twitter : An Interview with Ryan King,
http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-
king
[6] Looking into the future with Cassandra | Digg About,
http://about.digg.com.blog/looking-future-cassandra
[7] The Apache Cassandra Project, http://cassandra.apache.org
[8] Facebook’s Statistics, http://facebook.com/press/info.php?statistics