Anton Rifco Susilo
Single Identity Number Indonesia Facebook Cassandra
2010
[email protected]
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.
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 2|Page
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 3|Page
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.
4|Page
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
5|Page
kolom dan super-kolom tersebut dibungkus ke dalam ColumnFamily1 dan SuperColumnFamily2. 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 faulttolerant. 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).
6|Page
•
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.
7|Page
Column dan ColumnFamily
SuperColumn dan SuperColumnFamily 8|Page
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 S INGLE 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 Jumlah Pengguna
Facebook
Single Identity Number NKRI
> 400.000.000
238.452.952
Serangkaian profile
Serangkaian Informasi Identitas,
pengguna, yang mengacu
yang mengacu pada nomor
pada username (atau alamat
penduduk unik (SIN).
Potensial Bentuk Model Data
email unik). Aktivitas akses data
Sangat tinggi (> 35 juta
Sangat tinggi (dengan asumsi
(read-write
aktivitas per day)
aktivitas per hari >= 10% jumlah
operations over
pengguna, diperoleh kisaran > 25
data)
juta akses per hari)
Tingkat Ketersediaan 100% (Tidak ada toleransi
100% (Tidak ada toleransi terhadap
terhadapt loss of availability)
loss of availability)
Tingkat Fleksibilitas
Tinggi (penambahan bentuk
Cukup tinggi (penambahan bentuk
Data
profile baru sering terjadi)
profile baru kadang terjadi)
Sistem (Availability) (0 – 100 %)
9|Page
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 S INGLE 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 . KKLL . DDMMYY . XXXX 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
direpresentasikan
Identity
dalam
Number
beberapa
pada
framework
ColumnFamily
/
Apache
Cassandra
Super-ColumnFamily.
ini
Untuk
mempermudah penggambaran model, akan digunakan penjabaran detail dari masingmasing 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 (Current10 | 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 : {
11 | 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. Masingmasing index menyimpan data historikal pendidikan, dengan key Tanggal mulai akses jenjang pendidikan (Date-Start). Pendidikan terdiri dari data: Nama Institusi (Institutionname), Status pengakuan Institusi (Institution-Accredication), Alamat Institusi (InstitutionAddress), 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: {
12 | P a g e
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,
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 (DateStart). 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:
13 | 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: {
}, }, }
14 | P a g e
Election-name
: a election name,
Election-Purpose
: description,
Date
: date,
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 (ProgramName), 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: {
15 | P a g e
Program-Name
: name,
Description
: description,
Issuer-Institution
: institution-name,
Issuer-Address
: institution-address,
Issuer-City
: institution-city,
Reason
: reason,
Reccurence
: weekly / monthly / annually / once / ..,
Amount
: xx,
Date-Start
: date,
Date-Last-Acquired
: date,
Title
: title,
Issuer-Institution
: institution-name,
Issuer-Address
: institution-address,
Issuer-City
: institution-city,
Date
: date,
Valid-Until
: date,
}, }, } Driving-License: { SIN: { Title: {
} } }
Law-Activity (Optional Data) { SIN: { Date: {
16 | P a g e
Activity
: activity-name,
Description
: description,
City
: city,
Punishment
: punishment-title,
Punishment-Level
: punishment-level,
Date-start
: date,
Date-Resolve
: date,
} } } 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-BankBranch), 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 17 | P a g e
Kartu-kredit, yang terdiri dari key Nomor akun (Account-Number), Nama Bank (Bankname), Identitas cabang Bank (Issuer-Bank-Branch), Alamat cabang Bank (Issuer-BankBranch-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: {
}, },
18 | P a g e
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,
}
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 (CompanyStatus), 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-TaxBranch), 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: {
}, },
19 | P a g e
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,
}
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 : {
}, }
20 | P a g e
Email-Address
: valid-email-address,
Website/Blog-Address
: valid-website-address,
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 21 | 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 bekerjasama 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
22 | P a g e
PROTOTIPE API DAN PORTAL AKSES S INGLE 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
23 | P a g e
DAFTAR PUSTAKA [1]
CIA – The World Factbook – Indonesia, http://www.cia.gov/library/publications/theworld-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-ryanking [6]
Looking
into
the
future
with
Cassandra
|
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
24 | P a g e
Digg
About,