Single Identity Number Using Apache Cassandra

24
Anton Rifco Susilo 2010 Single Identity Number Indonesia Facebook Cassandra 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. [email protected]

description

Implementasi Single Identity Number menggunakan Apache Cassandra

Transcript of Single Identity Number Using Apache Cassandra

Page 1: 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.

[email protected]

Page 2: Single Identity Number Using Apache Cassandra

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

Page 3: Single Identity Number Using Apache Cassandra

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

Page 4: Single Identity Number Using Apache Cassandra

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.

Page 5: Single Identity Number Using Apache Cassandra

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

Page 6: Single Identity Number Using Apache Cassandra

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).

Page 7: Single Identity Number Using Apache Cassandra

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.

Page 8: Single Identity Number Using Apache Cassandra

8 | P a g e

Column dan ColumnFamily

SuperColumn dan SuperColumnFamily

Page 9: Single Identity Number Using Apache Cassandra

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)

Page 10: Single Identity Number Using Apache Cassandra

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-

Page 11: Single Identity Number Using Apache Cassandra

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 :

{

Page 12: Single Identity Number Using Apache Cassandra

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,

Page 13: Single Identity Number Using Apache Cassandra

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:

Page 14: Single Identity Number Using Apache Cassandra

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,

},

},

}

Page 15: Single Identity Number Using Apache Cassandra

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 / ..,

Page 16: Single Identity Number Using Apache Cassandra

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,

Page 17: Single Identity Number Using Apache Cassandra

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

Page 18: Single Identity Number Using Apache Cassandra

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,

},

},

Page 19: Single Identity Number Using Apache Cassandra

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,

},

},

Page 20: Single Identity Number Using Apache Cassandra

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,

},

}

Page 21: Single Identity Number Using Apache Cassandra

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

Page 22: Single Identity Number Using Apache Cassandra

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

Page 23: Single Identity Number Using Apache Cassandra

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

Page 24: Single Identity Number Using Apache Cassandra

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