Friday, 29 March 2019

Mengenal Secara Mendasar Apa Itu Big Data dan 
Komponen-Komponen Data Analytics 


Pada Bulan September-Oktober 2018, saya mendapatkan pengalaman berharga dalam hidup saya. Saya mendapat kan beasiswa Short Term Award dari Australian Awards Indonesia dalam judul kegiatan : Better Climate Services - Weather Data Management Using Big Data and Artifial Intelligence Analytics. Saya mendapatkan kesempatan bertemu beberapa tenaga pendidik sekaligus pakar di bidangnya di Quensland University of Technology (QUT), Brisbane selama kurang lebih 3 minggu. 

Topik yang sangat luas menurut saya dan banyak mendapatkan pengetahuan dasar yang sangat penting untuk membangun pondasi pola pikir saya. Beberapa materi akan saya rangkum dalam kolom artikel terpisah sehingga teman-teman bisa fokus dalam memahaminya.

Salah satu topik yang sangat menarik buat saya adalah Data Analytics and Big Data yang jelaskan dengan sangat menarik oleh Dr. Richi Nayak. Woooow.. ulas abis.. kupas tuntas.. secara pemateri expert di bidang ini. Sayang dong kl ga dapat apa-apa dari dia. Yuks ikuti..

Isi materi :
  • Pengertian prinsip big data dan fitur utama;
  • 8V Big Data : Volume, Value, Veracity, Visualization, Variety, Velocity, Viscosity, Virility
  • Big data analytics : tantangan dan kompleksitas; dan
  • Big data analytics : proses, metodologi, dan algoritma

Penjelasan :

Apa Itu Big Data ?

Menurut (Eaton, Dirk, Tom, George, & Paul) Big Data merupakan istilah yang berlaku untuk informasi yang tidak dapat diproses atau dianalisis menggunakan alat tradisional. Menurut (Dumbill, 2012) , Big Data adalah data yang melebihi proses kapasitas dari kovensi sistem database yang ada. Data terlalu besar dan terlalu cepat atau tidak sesuai dengan struktur arsitektur database yang ada. Untuk mendapatkan nilai dari data, maka harus memilih jalan altenatif untuk memprosesnya.

Berdasarkan pengertian para ahli di atas, dapat disimpulkan bahwa Big Data adalah data yang memiliki volume besar sehingga tidak dapat diproses menggunakan alat tradisional biasa dan harus menggunakan cara dan alat baru untuk mendapatkan nilai dari data ini. Setiap hari, kita menciptakan 2,5 triliun byte data - begitu banyak bahwa 90% dari data di dunia saat ini telah dibuat dalam dua tahun terakhir saja. Data ini berasal dari mana-mana, sensor digunakan untuk mengumpulkan informasi iklim, posting ke situs media sosial, gambar digital dan video, catatan transaksi pembelian, dan sinyal ponsel GPS untuk beberapa nama. Data ini adalah Big Data.

Big Data mengacu pada dataset yang ukurannya diluar kemampuan dari database software tools untuk meng-capture, menyimpan,me-manage dan menganalisis. Definisi ini sengaja dibuat subjective agar mampu digabungkan oleh definisi Big Data yang masih belum ada aturan yang baku. Ukuran big data sekitar beberapa lusin TeraByte sampai ke beberapa PetaByte tergantung jenis Industri, proses bisnis dan goal serta informasi dashboard yang menjadi output big data tersebut. Isi dari Big Data adalah Transaksi+interaksi dan observasi atau bisa dikatakan  segala sesuatu yang berhubungan dengan jaringan internet, jaringan komunikasi, dan jaringan satelit. Big Data dapat juga didefinisikan sebagai sebuah masalah domain dimana teknologi tradisional seperti relasional database tidak mampu lagi untuk melayani. Big Data lebih dari hanya masalah ukuran, itu adalah kesempatan untuk menemukan wawasan dalam jenis baru dan muncul data dan konten, untuk membuat bisnis maupun proses pengambilan keputusan akan lebih akurat dan menjawab pertanyaan yang sebelumnya dianggap di luar jangkauan.

Dimensi Big Data 

Dasar motivasi kenapa suatu instansi atau industri perlu bergerak menggunakan teknologi Big Data adalah karena fakta bahwa masukan dan keluaran pada proses bisnis mereka berkembang dengan sangat cepat, penggunakan sosial media dalam proses bisnis, keterbatasan kemampuan datawarehouse untuk mengatasi kebutuhan data proses yang sangat cepat, semakin luasnya komoditi  baru dari industri 4.0, dan lain-lain.  Semua fakta ini terangkum dalam pondasi identifikasi kebutuhan Big Data, yaitu 4V of Big Data. Beberapa sumber menyebutkan 5V, 6V, dan seterusnya bergantung pada parameter dalam bisnis mereka. Kita mulai dari yang sederhana saja dulu ya temen. Biar ga muntah.. hehehehe.. Oia jika ada istilah yang saya sebutkan tidak disertai dengan penjelasan, free will for ask me in commnet column yaa.. I'll answer all of your questions as soon as possible..

V ke 1 : Velocity

Velocity (Kecepatan) mengacu pada kecepatan perpindahan data dan penyusunan data. Bayangkan kecepatan validasi kartu kredit saat kita bertransaksi, atau saat membuka Youtube dan memainkan beberapa video secara bersamaan, dan kecepatan saat kita mengecek pulsa selular. Teknologi big data mampu memproses dan menganalisis data ketika sedang digunakan tanpa harus diletakkan di database.

V ke 2 : Variety

Jika kita memiliki cloud storage seperti Google Drive dan Dropbox kita dapat mengupload file apa saja seperti JPEG, MKV, AVI, DOCX, APK, ISO, dan lain sebagainya dalam satu tempat. Disamping itu masih ada kebutuhan kecepatan akses seperti chatting, video call, sound recorder yang memiliki aneka ragam jenis data. Jika disusun menjadi sebuah database, akan menghasilkan database yang tidak terstruktur sehingga akses menuju file tersebut akan lambat. Dengan teknologi database sekarang kita bisa mengelompokkan semua jenis data kedalam database yang lebih terstruktur.

V ke 3 : Varicity
Menyangkut tentang ke-valid-an sebuah data apakah bisa dipercaya atau tidak. Dengan banyaknya bentuk data, kebenaran tentang sebuah informasi menjadi kurang terkontrol. Contoh sistem akademik sebuah fakultas dimana untuk jenis kelamin dibedakan menjadi L (laki-laki) dan P (perempuan) sedangkan di sistem akademik fakultas lain menggunakan P (pria) dan W (wanita). Big data dengan teknologi analisis membantu kita untuk dapat bekerja dengan data tersebut melalui hasil analisis, karena semakin besar volume suatu data, maka terdapat kecenderungan data semakin kurang akurat.

V ke 4 : Variety
Nilai sebuah data menentukan keputusan yang kita ambil setelah memproses seluruh data. Dalam dunia bisnis, sangat penting untuk mengetahui nilai dari sebuah data. Tanpa mengetahui nilai dari sebuah data, maka kita akan kesulitan atau bahkan salah dalam mengambil langkah selanjutnya. Pemanfaatan nilai data yang tepat akan membuat bisnis menjadi lebih efisien.

Pada V lainnya juga menyebutkan Volume, Veracity, Variability, Value, Viability, Virality, Visualisation, Viscocity dan V lainnya.

Big Data Analisis Untuk Peningkatan Kapasitas Data

Peningkatan kapasitas data sangat signifikan mulai dari GB, TB ke PB (peta) ke EB(exa) dan ZB (zeta) serta peningkatan kapasitas komputasi seperti komputasi cloud dan komputasi paralel merupakan kunci dari Big Data analytics. Beberapa sumber peningkatan data yang fenomenal ini seperti data sosial media, perangkat mobile (smartphone), internet of things, serta termasuk data satelit, data pengamatan cuaca dan iklim. Peningkatan tersebut diprediksi hingga 44 kali lipat dalam 1 dekade. Diperkirakan pada tahun 2009, ada sekitar 800.000 Petabytes data dan akan meningkat hingga 35 Zetabytes data hingga akhir 2020. Namun peningkatan jumlah data tersebut tidak berbanding lurus dengan peningkatan jumlah pengetahuan yang dapat digali dari dalamnya.


Gambar 1.  Perbandingan antara peningkatan kapasitas data dan penyediaan penyimpanan

Gambar 1 memperlihatkan terjadinya selisih prediksi perbandingan antara jumlah data yang dihasilkan serta jumlah peningkatan kapasitas storage hingga mencapai 17000 EB. Sehingga perlu diterapkan metode penyimpanan dengan tingkat efisiensi yang baik dalam hal kompresi kapasitas. Berikut adalah variasi dari tipe data yang kemungkinan dihasilkan oleh masing-masing bidang.

Tabel 1. Variasi tipe data yang dihasilkan

Pada perkembangannya data tidak terstruktur tumbuh di tahun 2000 dan sangat meningkat tajam di tahun 2010. Hal ini terjadi seiring dengan tumbuhnya media sosial, perkembangan teknologi selular dan revolusi di bidang industri.


Gambar 2. Prediksi perkembangan data terstruktur dan tidak terstruktur

Perkembangan data yang terjadi seperti yang ditunjukkan pada Gambar 2, tidak dibarengi dengan peningkatan kualitas pada data analisis. Jarak yang sangat lebar ini perlu untuk mendapatkan perhatian. Analisis yang dihasilkan dari populasi data yang semakin meningkat perlu diupayakan kenaikannya secara linear. 

Semakin banyaknya variasi jenis data yang dihasilkan serta perbandingan antara jumlah data terstruktur dan data tidak terstruktur, semakin lebar pula jarak antara jumlah data yang ada pada saat ini terhadap jumlah analisis yang telah dilakukan terhadap data tersebut.


Data Analisis

Data analisis adalah proses untuk mendapatkan pengetahuan/knowledge (tidak-sepele, implisit, valid, sebelumnya tidak diketahui, berpotensi bermanfaat dan akhirnya dapat dimengerti) dari sejumlah data yang terkumpul. Data analisis memiliki berbagai macam alternatif penamaan diantaranya: data mining, machine learning, data science, business intelligence dan lain sebagainya. Data Analisis tradisional lebih difokuskan terutama pada data terstruktur (RDBMS). Namun pada Big Data analisis, fokus utama adalah pada data tidak terstruktur, sehingga kita dapat lebih melakukan beberapa kombinasi analisis antara data terstruktur dengan data tidak terstruktur.  Penerapan Data analisis harus menyesuaikan kepada domain data yang akan dilakukan analisa, karena jika melakukan teknik data analisis tanpa mengetahui domain aplikasi adalah sesuatu yang kurang baik (semacam buta).


Supervised Learning

Supervised learning adalah pembelajaran terarah/terawasi. Artinya, pada pembelajaran ini, ada guru yang mengajar (mengarahkan) dan siswa yang diajar. Dalam supervised learning, kita akan memberi satu set data dan sudah tahu seperti apa output yang benar, dan kita memiliki gagasan bahwa ada hubungan antara input dan output. Tujuan supervised learning, secara umum untuk melakukan klasifikasi. Ada tiga hal penting pada supervised learning yaitu input, desired output, dan learning parameters.


Unsupervised Learning

Jika pada supervised learning ada guru yang mengajar, maka pada unsupervised learning tidak ada guru yang mengajar. Berbeda dengan supervised learning yang memiliki desired output, pada unsupervised learning tidak ada desired output dan lebih kepada mencari sifat-sifat (properties) dari input.


Learning Process

Pada supervised maupun unsupervised learning, kita ingin mengestimasi sesuatu dengan teknik machine learning. Kinerja machine learning berubah-ubah sesuai dengan parameter pembelajaran. Kinerja machine learning diukur oleh fungsi tujuan (utility function/performance measure), yaitu mengoptimalkan nilai fungsi tertentu; misalnya meminimalkan nilai galat, atau meminimalkan data hilang. Secara intuitif, machine learning sama seperti saat manusia belajar. Kita awalnya membuat banyak kesalahan, tetapi kita mengetahui/diberi tahu mana yang benar. Untuk itu kita menyesuaikan diri secara perlahan agar menjadi benar (iteratif). Inilah yang juga dilakukan machine learning, yaitu mengubah-ubah parameter pembelajaran untuk mengoptimalkan suatu fungsi tujuan. Machine learning adalah inferensi berdasarkan data. Raw data atau data mentah adalah sekumpulan fakta (record, event) yang kemungkinan besar tidak memberikan penjelasan apapun. Raw data pada umumnya bersifat tidak rapi, misalnya mengandung missing value atau ada data yang tidak memiliki label padahal data lainnya memiliki label.

Agar mampu menganalisis raw data menggunakan teknik machine learning, pertama-tama kita harus merapikan data sesuai dengan format yang kita inginkan (dataset). Setelah itu, kita menggunakan teknik-teknik yang ada untuk menemukan pola-pola yang ada di data. Dalam komunitas peneliti basis data, dipercaya bahwa data memiliki sangat banyak relasi yang mungkin tidak bisa dihitung. Teknik machine learning hanya mampu mengeksplorasi sebagian relasi yang banyak itu. Lalu, kita analisis informasi yang kita dapatkan menjadi pengetahuan yang digunakan untuk memecahkan permasalahan atau membuat keputusan.

Terdapat 3 hal umum yang menjadi tolak ukur sebuah hasil machine learning yaitu :
    1.       Performance measure, yaitu menampilkan seberapa "bagus" model/metode yang dibuat dan dibandingkan dengan menggunakan teknik-teknik seperti metode kuantitatif, seperti p-value dalam statistik(hypothesis testing);
     2.       Trend, yaitu pola-pola umum dalam data yang sesuai dengan tujuan analisis (permasalahan). Biasa disajikan dalam bentuk teks, kurva, atau grafik; dan
      3.       Outlier, yaitu data-data yang "jarang" atau tidak sesuai dengan tren yang ada. Apa beda sifat data outlier ini dibanding data pada tren?. Hal ini perlu dianalisis untuk meningkatkan performance measure pada penelitian / analisis mendatang.


Data Pre-Processing

Sebagian besar data di dunia ini adalah data mentah. Seperti yang terangkum dibawah ini :
1.         Tidak Lengkap (Incomplete)
·      Data hilang / Kosong
·      Kekurangan atribut tertentu atau atribut yang tidak berkesesuaian
·      Hanya berisi data agregat
2.         Noise
·      Mengandung kesalahan/galat atau merupakan value yang tidak wajar.
·      Mengandung data yang outlier
3.         Tidak Konsisten
·      Mengandung perbedaan dalam kode atau nama

Data yang bisa diterima untuk bisa diproses menjadi informasi atau knowledge adalah data yang mempunyai kualitas diantaranya akurat, lengkap, konsisten, relevan, bisa dipercaya, mempunyai nilai tambah dan mudah untuk dimengerti. Pada kenyataannya, proses penyiapan data dalam proses data analisis membutuhkan hampir 60% usaha dari keseluruhan usaha yang dilakukan dalam proses data analisis.


Gambar 3. Relative effort in Data Analytics



Topik2 berikutnya yang sangat menarik tentu saja tentang data analytics. Banyak hal yang bisa kita gali disini. Beberapa hal di bawah ini akan juga sangat menarik. Yuks ikuti lagi.


Metodelogi Data Analytics: CRISP-DM

Cross-Industry Standard Process Model for Data Mining(CRISP-DM) secara umum menjelaskan tentang proses data mining dalam enam tahap. Proses ini salah satu tujuannya untuk menemukan pola yang menarik dan bermakna dalam data. Serta melibatkan beberapa disiplin ilmu, seperti Statistika, Machine Learning, Artificial Intelligence, Pattern Recognition, dan Data Mining. Salah satu keuntungan dari menggunakan proses ini adalah menjelaskan langkah paling umum dalam proses-prosesnya. Proses ini juga melibatkan manajer dan praktisi secara bersamaan. Dimana manajer secara garis besar memberikan arahan tujuan utama proyek yang akan dikerjakan, ketersediaan data dan model - model yang akan digunakan. Sedangkan praktisi akan bekerja sesuai dengan bidangnya dalam setiap proses yang ada, praktisi disinipun bisa terdiri dari berbagai disiplin ilmu, bisa dari matematika, statistika, ataupun teknik informatika.

Gambar 4. Siklus Pemrosesan Data

1.         Business Understanding

Secara garis besar untuk mendefinisikan proyek. Ini adalah tahap pertama dalam CRISP-DM dantermasuk bagian yang cukup vital dalam proyek dan selama pengerjaan pada proses selanjutnya. Pada tahap ini membutuhkan pengetahuan dari objek bisnis, bagaimana membangun atau mendapatkan data, dan bagaimana untuk mencocokan tujuan pemodelan untuk tujuan bisnis sehingga model terbaik dapat dibangun.

2.         Data Understanding

Secara garis besar untuk memeriksa data, sehingga dapat mengidentifikasi masalah dalam data. Tahap ini memberikan fondasi analitik untuk sebuah proyek dengan membuat ringkasan dan mengidentifikasi potensi masalah dalam data. Tahap ini juga harus dilakukan secara cermat dan tidak terburu - buru, seperti pada visualisasi data, yang terkadang maknanya sangat sulit didapat jika dihubungkan dengan ringkasan datanya. Jika ada masalah pada tahap ini yang belum terjawab, maka akan mengganggu pada tahap pemodelan. Ringkasan data dapat berguna untuk mengkonfirmasi apakah data terdistribusi sudah seperti yang diharapkan, atau mengungkapkan penyimpangan tak terduga yang perlu ditangani pada tahap selanjutnya (Data Preparation). Masalah dalam data biasanya seperti nilai-nilai yang hilang, outlier, berdistribusi spike, berdistribusi bimodal harus diidentifikasi dan diukur sehingga dapat diperbaiki dalam Data Preparation.

3.         Data Preparation

Secara garis besar untuk memperbaiki masalah dalam data, kemudian membuat variabel derived. Tahap ini jelas membutuhkan pemikiran yang cukup matang dan usaha yang cukup tinggi untuk memastikan data tepat untuk algoritma yang digunakan. Bukan berarti saat Data Preparation pertama kali dimana masalah-masalah pada data sudah diselesaikan, data sudah dapat digunakan hingga tahap terakhir. Tahap ini merupakan tahap yang sering ditinjau kembali saat menemukan masalah pada saat pembangunan model. Sehingga dilakukan iterasi sampai menemukan hal yang cocok dengan data. Tahap sampling dapat dilakukan disini dan data secara umum dibagi menjadi dua, data training dan data testing.

4.         Modeling

Secara garis besar untuk membuat model prediktif atau deskriptif. Pada tahap ini akhirnya kita dapat menggunakan Statistika dan Machine Learning untuk mendapatkan makna  yang berguna dari data untuk mencapai tujuan proyek. Beberapa pemodelan yang biasa dilakukan adalah classificationscoring, ranking, clustering, finding relation, dan characterization.

5.         Evaluation

Secara garis besar untuk menilai model agar dapat melaporkan efek yang diharapkan dari modelSetelah mempunyai model, kita harus menentukan apakah sesuai dengan tujuan kita. Beberapa pertanyaan di bawah ini bisa membantu apakah model kita sudah sesuai dengan tujuan atau belum :
-         Apakah cukup akurat untuk kebutuhan kita ? Apakah mengeneralisasi dengan baik ?
-     Apakah model itu melakukan lebih baik daripada hanya menebak lebih baik dari perkiraan apapun yang  saat ini Anda gunakan ?
-         Apakah hasil dari model (koefisien,cluster,rule) masuk akal dalam konteks masalah domain?

6.         Deployment

Secara garis besar untuk rencana penggunaan modelTahap ini adalah tahap yang paling penting dari proses CRISP-DM. Perencanaan untuk Deployment dimulai selama Business Understanding dan harus menggabungkan tidak hanya bagaimana untuk menghasilkan nilai model, tetapi juga bagaimana mengkonversi skor keputusan, dan bagaimana untuk menggabungkan keputusan dalam sistem operasional. Pada akhirnya, rencana sistem Deployment mengakui bahwa tidak ada model yang statis. Model tersebut dibangun dari data yang diwakili data pada waktu tertentu, sehingga perubahan waktu dapat menyebabkan berubahnya karakteristik data. Modelpun harus dipantau dan mungkin diganti dengan model yang sudah diperbaiki.

Metodelogi Data Analytics: SEMMA

Sample, Explore, Modify, Model and Assess (SEMMA) adalah metode yang diperkenalkan oleh SAS Institute yang menjelaskan tentang tahapan dalam proses data analytic. Terdapat lima tahap juga dalam proses ini, yaitu:
Ø    Sample: Mengambil sampel data. Tahap ini merupakan opsional;
Ø  Explore: Mengeksplorasi data untuk pola dan keanehan yang tidak diharapkan dengan tujuan untuk mendapatkan pengertian dan ide;
Ø  Modify: Memodifikasi data dengan membuat, menyeleksi dan mentransformasi variabel-variabel untuk fokus pada proses pemilihan model;
Ø  Model: Memodelkan data dengan menyediakan software untuk mencari kombinasi data yang memprediksi hasil terpercaya yang diinginkan secara otomatis; dan
Ø  Assess: Menilai data dengan mengevaluasi kegunaan dan keandalan penemuan dari proses data mining dan mengevaluasi sebaik mana itu bekerja.

Gambar 5. Metodologi Data Analytics SEMMA

Overfitting dan Underfitting

Tujuan machine learning adalah membuat model yang mampu memprediksi data yang belum pernah dilihat (unseen instances) dengan tepat atau disebut sebagai generalisasi (generalization). Kita dapat membagi dataset menjadi training, development, dan testing dataset. Ketiga dataset ini berasal dari populasi yang sama dan dihasilkan oleh distribusi yang sama (identically dan independently distributed). Dalam artian, ketiga jenis dataset mampu melambangkan (merepresentasikan) karakteristik yang sama. Dengan demikian, kita ingin kehilangan atau galat pada trainingdevelopment, dan testing bernilai kurang lebih bernilai sama (i.e., kinerja yang sama untuk data dengan karakteristik yang sama). Akan tetapi, underfitting dan overfitting mungkin terjadi.

Underfitting adalah keadaan ketika kinerja model bernilai buruk baik pada training atau development maupun testing data. Overfitting adalah keadaan ketika kinerja model bernilai baik untuk training tetapi buruk pada unseen data. Seperti yang diilustrasikan pada Gambar 2.9, Underfitting terjadi akibat model yang terlalu tidak feksibel (memiliki kemampuan yang rendah untuk mengestimasi variasi fungsi), sedangkan overfitting terjadi ketika model terlalu feksibel (memiliki kemampuan yang terlalu tinggi untuk mengestimasi banyak fungsi) atau terlalu mencocokkan diri terhadap training data.

Gambar 6.  Underfitting vs Overfitting

Apabila kita gambarkan grafik kinerja terhadap konfigurasi model (model order), fenomena underfitting dan overfitting dapat diilustrasikan seperti Gambar 2.10. Model yang ideal adalah model yang memiliki kinerja yang baik pada training, development, dan testing data. Artinya, kita ingin perbedaan kinerja model pada berbagai dataset bernilai sekecil mungkin. Untuk menghindari overfittingtting atau underfitting, kita dapat menambahkan fungsi noise/bias dan regularisasi. Hal yang paling perlu dipahami adalah untuk jangan merasa senang ketika model machine learning yang dibuat memiliki kinerja baik pada training data. Perlu adanya pengecekan pada development dan testing data, serta memastikan kesamaan karakteristik data (e.g., apakah training dan testing data benar diambil dari distribusi yang sama).

Rancang Bangun Single Sign On (SSO) Pada Multi Database 

Pada kesempatan yang lalu saya sempat membuat rancang bangun SSO. Uji literatur cukup lama saya lakukan dan akhirnya mendapatkan konsep yang sederhana untuk bisa menerapkan SSO pada beberapa database yang saya miliki. Untuk memulainya perlu untuk memahami konsep sederhana tentang SSO. Semoga mudah dipahami ya, temens.

Single Sign On (SSO) merupakan suatu konsep mengenai sistem autentikasi yang memudahkan pengguna dalam mengakses banyak layanan namun hanya dengan satu kali login saja. Sedangkan kebalikannya, Single Log Out (SLO) merupakan suatu sistem yang digunakan pengguna untuk keluar dari layanan dengan hanya satu kali logout saja. Tehnologi ini sangat dinikmati, khususnya dalam jaringan sistem yang besar dan bersifat heterogen (di saat sistem operasi serta aplikasi yang digunakan oleh komputer adalah berasal dari banyak vendor, dan pengguna dimintai untuk mengisi informasi dirinya ke dalam setiap platform yang berbeda tersebut yang hendak diakses oleh pengguna). Proses otentifikasi yang banyak pada beberapa aplikasi dapat dihindari dengan mengintegrasikan sebuah Central Authentication Service(CAS) agar aplikasi berbasis web yang telah ada dapat di SSO-kan, sehingga semua proses otentikasi akan ditangani oleh CAS dan proses otentikasi dapat disederhanakan. CAS harus dapat memberikan otentikasi yang kuat, salah satu metode yang dapat dilakukan adalah dengan mengunakan Lightweight Directory Access Protocol(LDAP) sebagai datastore dan Remote Accses Dial In Pengguna (RADIUS) sebagai backend dari CAS guna menghasilkan sebuah sistem SSO. Dengan memusatkan data pengguna pada LDAP dan membebankan proses otentikasi pada RADIUS dan mengintegrasikan keduanya ke dalam CAS telah berhasil membentuk sebuah sistem SSO yang cukup stabil dan dapat diandalkan.

Fungsi LDAP

Fungsi LDAP yaitu untuk merapihkan serta membuat database menjadi terpusat. Dengan adanya jaringan yang terpusat, memungkinkan pengguna untuk berpindah tempat tanpa harus membawa-bawa PC nya.

Kelebihan LDAP
  • Proses otentifikasi dilakukan dengan sederhana
  • Terdapat mekanisme yang menjamin kerahasiaan dan integritas data.
Kekurangan LDAP
  • Terdapat kemungkinan client mengakses server
  • Terdapat mekanisme yang menjamin kerahasiaan dan integritas data.


Langkah selanjutnya kita perlu untuk mengidentifikasi minimal dua database yang akan dilibatkan ke dalam pembuatan SSO. 

Arsitektur SSO Dengan LDAP

LDAP (Light Weight Directory Access Protocol) adalah sebuah protokol yang mengatur mekanisme pengaksesan layanan direktori (directory service), yang dapat digunakan untuk mendeskripsikan banyak informasi seperti informasi tentang data pengguna aplikasi, atau sumber daya pada suatu jaringan seperti printer dan scanner.

Arsitektur Sistem yang akan dibangun dengan berbasis Single Sign On akan dibagi menjadi dua bagian, yaitu flowchart proses login aplikasi SSO dan flowchart proses logout aplikasi SSO.



 Gambar 1.  Flowchart Proses Login Aplikasi SSO


 Gambar 2.  Flowchart Proses Logout Aplikasi SSO


Konsep Kerja LDAP
Adapun penjelasannya adalah sebagai berikut :
  1. Otentifikasi
a.    Otentisasi Username dan Password
·      Pertama-tama, Pengguna X masuk ke portal AppSatker atau E-Kinerja dengan alamat yang sudah ditentukan. Sistem secara otomatis akan melakukan redirect Pengguna X ke portal SSO untuk melakukan login terlebih dahulu.
·     Pengguna X memasukkan Username dan password miliknya ke halaman portal SSO tersebut.
b.    Membuat dan Menerima Identitas Tiket
Portal SSO kemudian akan melakukan pengecekan ke LDAP terkait Pengguna dan password Pengguna tersebut. Jika LDAP mengembalikan hasil pengecekan ‘OK’, maka kemudian Pengguna X akan mendapatkan tiket untuk masuk ke dalam sistem tersebut. Karena sebelumnya Pengguna X akan masuk ke portal AppSatker atau E-Kinerja, maka sistem selanjutnya melakukan redirect ke portal AppSatker atau E-Kinerja setelah otentikasi di Portal SSO tersebut. Pada tiket tersebut tersimpan beberapa informasi meliputi: portal apa yang dituju, id Pengguna tersebut, dan hak akses ke portal lainnya.

  1. Otorisasi
a.    Otorisasi Grup
Setelah di-redirect masuk ke portal AppSatker atau E-Kinerja, portal ini kemudian melakukan pengecekan kembali terhadap Pengguna X. Pengecekan dilakukan untuk melihat Pengguna X masuk ke dalam grup Pengguna apa. Misal Pengguna X termasuk dalam grup administrator. Maka portal inventori kemudian menampilkan menu-menu dan aksi (view, add, edit, delete) yang telah terdefinisi untuk grup administrator di portal inventori tersebut.

b.    Perijinan Grup
·        Selanjutnya Pengguna X dapat melakukan aksi pada portal AppSatker atau E-Kinerja tersebut sesuai hak aksesnya. Perlakuan masing-masing terhadap Pengguna X adalah sama, setiap masuk Pengguna X akan dicek masuk ke grup apa dalam portal tersebut.
·        Jika telah selesai menggunakan suatu portal, maka Pengguna X keluar (logout) dari sistem. Sistem selanjutnya akan menghapus session dan tiket untuk Pengguna X. Sehingga jika ingin masuk kembali, Pengguna X harus melakukan autentikasi ulang.

Pelaksanaan Kegiatan Instalasi Dan Konfigurasi LDAP

LDAP adalah suatu bentuk protokol client-server yang digunakan untuk mengakses suatu directory service. Pada tahap awalnya, LDAP digunakan sebagai suatu front-end bagi X.500, tetapi juga dapat digunakan bersama directory server yang stand-alone dan juga yang lainnya. LDAP memungkinkan kita untuk mengembangkan kemampuan kita yang dapat digunakan untuk mencari suatu organisasi, mencari suatu individu dan juga mencari sumber daya yang lainnya misalnya file maupun alat/device didalam suatu jaringan/network.



Informasi pada LDAP disimpan dalam entry. Layaknya entry pada basis data umunya, setiap entry memiliki beberapa atribut. Setiap atribut dapat memiliki satu atau lebih nilai. Namun, jika pada basis data kita memiliki primary key untuk membedakan suatu entry dengan entry lainnya, dalam LDAP kita memiliki Distinguished Name (DN) yang bernilai unik untuk tiap entry. DN didapat dengan mengurutkan lokasi entry hingga akar hirarki.


Gambar 3.  Hirarki Database Directory Service Pada SSO

Secara prinsip struktur database pada directory service adalah hierarchy seperti yang ditunjukkan pada gambar di atas. Seperti pada struktur hirarki pada umumnya, pada suatu database directory service akan memiliki suatu item yang dijadikan sebagai root. Untuk sebuah titik root, secara umum ditunjukkan dengan suatu atribut dc (Domain Component), namun dapat juga langsung ditunjuk dengan atribut cn (Common Name) atau ou (Organization Unit). Kemudian pada titik daun (leaf) biasanya akan berisi suatu item denga atribut uid (User ID) ataupun cn.

Di dalam LDAP terdapat 2 service utama yaitu : slapd dan slurp. Slapd merupakan LDAP daemon yang melayani request atau permintaan dari client, query dan berkomunikasi dengan backend database. Sedangkan slurp merupakan replication daemon yang berfungsi melayani replikasi data agar terus terjadi sinkronisasi data antara client dan server.

Untuk membangun sebuah server LDAP, ada 3 hal yang perlu diketahui. Yaitu : Schema, Object Class dan Attribute. Schema adalah seperangkat aturan yang mendeskripsikan jenis data apa saja yang akan disimpan, schema akan membantu untuk menjaga konsistensi dan kualitas data sehingga dapat mengurangi terjadinya duplikasi data. Object Class adalah sekumpulan masukan yang memberi informasi jenis group dan membutuhkan atribut yang biasanya terdiri atas attribute names, attribute type, dan attribute syntax yang semuanya terkumpul dalam suatu data yang valid pada setiap kelasnya. Attribute adalah masukan yang sifatnya unik seperti uid, cn, sn, dan lain sebagainya. Attribute sendiri dapat menggunakan single value maupun multiple value.


Kebutuhan Pembangunan SSO 

Melihat dari banyaknya  kesamaan dalam infrastruktur sistem dari pada kedua aplikasi maka dapat dibangun SSO dengan lebih mudah. SSO akan dibangun pada halaman web dengan kebutuhan sebagai berikut :

-          Aplikasi VMWare xSphere
·         ISO Ubuntu Server 16.04(64 bit)
·         2x VM Ubuntu Server (untuk Keycloak dan LDAP)
·         1x Perangkat Mikrotik (untuk bridging network)/Alternatif : gunakan host-only network.
·         Aplikasi KeyCloak
·         OpenJDK & OpenJRE
·         OpenLDAP & phpLDAPAdmin
·         Database1 + plugin SAML 2.0 Single Sign On
·         Database2 + Plugin SAML 2.0 Single Sign On

Instalasi dan Konfigurasi LDAP Server SSO di Ubuntu
Implementasi SSO pada Sistem dibagi menjadi beberapa tahap, yaitu :

1.   Instalasi paket-paket LAMP yang dibutuhkan
      2.    Instalasi LDAP Server
      3.    Menyeting hirarki pada sistem PHPLDAPAdmin
4.  Instalasi SSO pada LDAP Server

Pada tulisan kali ini, akan dibagi menjadi dua karena step yang cukup panjang pada langkah 1 dan 2. Pada tulisan berikutnya akan dibahas langkah 3 dan 4. Selamat mencoba.

Langkah 1 : Instalasi paket-paket LAMP yang dibutuhkan

·        Web Server (menggunakan Apache Web Server)
      #apt-get install apache2


      Ketik 'Y' untuk meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.



Mengetes Apache sudah aktif dengan mengetik '\\localhost' pada web browser.



·           Php5
               Untuk mengetahui versi php yang tersedia pada root, cek dengan perintah berikut :
               #php -v



       #sudo apt-get install php7.0-cli



      Ketik 'Y' untuk meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.



·           Database Server
              # sudo apt-get install mysql-server


      Ketik 'Y' untuk meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.



       Tulis password yang diinginkan, misalnya 'SSOok'. Tekan tombol Enter untuk meneruskan.



        Tulis kembali password yang diinginkan, misalnya 'SSOok'. Tekan tombol Enter untuk meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.


       # sudo apt-get install mysql-client



·           Plugin untuk MySql
       #sudo apt-get install php7.0-mysql


·           Untuk mengamankan database MySQL yang sudah terinstall
       #mysql_secure_installation


     Tulis 'N' dan menunggu proses dilanjutkan.


     Tulis 'Y' dan menunggu proses dilanjutkan.


     Tulis 'Y' dan menunggu proses dilanjutkan.


     Tulis 'Y' dan menunggu proses dilanjutkan.


      Tulis 'Y' dan menunggu proses ditampilkan tulisan
      'Success
     All done!'

·       Front End atau web base untuk Database Server (menggunakan phpmyadmin)
             # sudo apt-get install phpmyadmin


Ketik 'Y' untuk meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.


   Tekan tombol enter pada pilihan 'Apache2'.


    Tekan tombol enter pada pilihan 'Yes'.


   Tulis password database server yang diinginkan, misalnya 'SSOMySQL'. Tekan tombol Enter untuk meneruskan.


     Tulis kembali password yang diinginkan, misalnya 'SSOMySQL'. Tekan tombol Enter untuk meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.


·           Untuk meningkatkan kecepatan PHP lakukan perintah ini:
       # apt-get -y install php7.0-opcache php-apcu


·           Mengaktifkan website SSL di Apache
               # a2enmod ssl
               # a2ensite default-ssl
       # systemctl restart apache2


·   Mengamankan website dengan Let's Encrypt SSL Certificate dengan menginstall phyton-letsencript-apache
      # apt-get -y install python-letsencrypt-apache


·           Akses Root ke PHPMyAdmin dengan MariaDB
               # mysql -u root -p
               Masukkan password MySQL yang dudah terinstall : SSOok

       Langkah 2 : Instalasi LDAP Server

       ·         Edit hostname VM
            # gedit /etc/hostname
            Ubah nama server dari : [PCname]-virtual-machine
     menjadi : server.ldap.org


     simpan file dan keluar
    # reboot

·         Instalasi LDAP
       # apt-get install slapd ldap-utils


     Tulis 'Y' dan menunggu proses dilanjutkan.


    Tulis password Root : 'myrootpassword'. Tekan tombol Enter untuk meneruskan.


·         Mengubah konfigurasi LDAP
             # gedit /etc/ldap/ldap.conf
      Ubah isi file konfigurasi berikut ini :

    
     Menjadi seperti ini :


      dengan perubahan pada :
      BASE          dc=ldap,dc=com
      URI              ldap://localhost:389

·         Mengkonfigurasi ulang konfigurasi SLAPD
      # dpkg-recongure slapd


     Pilih 'No' dan menunggu proses dilanjutkan.


     Gunakan nama domain default yang sudah ditentukan. Tekan tombol Tab untuk mengarahkan kursor ke Tombol 'OK'. Tekan tombol 'OK' dan menunggu proses dilanjutkan.


     Tulis password Root : 'myrootpassword'. Tekan tombol Enter untuk meneruskan.


   Pilihkah default 'HDB' dengan cara mengarahkan kursor atas ke pilihan 'HDB'. Tekan tombol Enter untuk meneruskan.


    Pilih 'No' dan menunggu proses dilanjutkan.


    Pilih 'Yes' dan menunggu proses dilanjutkan.


   Pilih 'No' dan menunggu proses dilanjutkan. Tunggu beberapa saat hinggu kursor muncul kembali.


·         Mengetes server LDAP
      # ldapsearch -x


·         Menginstall LDAP Server Administration 
      # apt-get install phpldapadmin


      Tulis 'Y' dan menunggu proses dilanjutkan. Tunggu beberapa saat hinggu kursor muncul kembali. Sebelum meneruskan proses selanjutnya perlu untuk mempersiapkan IP address untuk konfigurasi selanjutnya. Untuk itu, IP dapat dilihat dengan perintah ifconfig.

      # ifconfig



      Buka file konfigurasi pada /etc/phpldapadmin/config.php
      Perubahan pada baris 161


     Perubahan pada baris 285, 292, dan 299.


     Perubahan pada baris 325.


     Klik tombol 'Save' dan keluar. Restart service apache2.
     # systemctl restart apache2
     Note : usahakan untuk terus login dengan Root

     Menyeting hirarki pada sistem PHPLDAPAdmin dengan membuka web browser dan uji phpldapadmin di IP http://192.192.1.1/phpldapadmin.



      Lakukan login pada PHPLDAPAdmin dan tulis password Root. Klik tombol 'Authenticate' dan tunggu hingga muncul menu utama.


     Klik pohon hirarki 'dc=ldap, dc=com' dan pilih 'Create new entry here' pada sebelah kanan menu. Pilih radio button 'Generic : Organisational Unit'.


     Tulis nama unit organisasi : 'database1' dan klik tombol 'Create Object'.


    Klik tombol 'Commit'.


     Klik pilihan 'Create a child entry'.


     Pilih pilihan 'Generic : Posix Group'.


     Tulis nama grup : 'database1-group' dan klik tombol 'Create Object'.


     Klik tombol 'Commit'.


      Hasil dari proses ini dapat dilihat dari bertambahnya cabang pada unit organisasi database1,yaitu bertambah dg adanya group 'database1-group'. Selanjutnya menambahkan user group dengan cara klik pilihan 'Create a child entry'.


      Pilih pilihan 'Generic : User Account'.


       Buat akun user dari group : database1-group
       Common name      : (lewati saja krn akan terbentuk sendiri)
       First name              : Dum
       GID Number          : database1-group
       Home directory      : /home/users/mr.dummy
       Last name              : My
       Login shell             : bin/sh
       Password                : (misal) thePassw0rd
       (confirm pwd)           thePassw0rd
       Klik tombol 'Create Object'

     Klik tombol 'Commit'.
     Hasil :

Reviu Jurnal : Optimal Control Problem Of Treatment For Obesity In A Closed Population Oleh :  D. Aldila, N. Rarasati, N. Nuraini...