Pendahuluan
Apa itu clickstream tracker? sederhananya adalah sebuah sistem yang
mampu merekam data klik dari berbagai click event yang dihasilkan
oleh pengunjung suatu website terhadap bagian tertentu dari website
tersebut.
Biasanya yang direkam adalah titik koordinat (x, y), URL dari halaman
yang dikunjungi, dan elemen yang diklik. Namun itu hanya beberapa
bagian umum yang dicatat oleh clickstream tracker dan kita bisa saja
menambahkan informasi lain sesuai dengan tujuan yang ingin kita atau
perusahaan capai.
Namun pada tulisan ini, kita hanya akan fokus bagaimana membuat
sebuah clickstream tracker hanya dari sisi backend-nya saja tanpa harus
melibatkan dashboard dan application management. Kita akan fokus
juga tanpa melibatkan autentikasi dan autorisasi.
• koordinat x
• koordinat y
• source URL
• userId
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 1/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
• applicationId
• createdAt
• API Gateway
• AWS Lambda
• AWS SQS
• Elasticsearch
• Node.js
• Elasticsearch
• Text Editor
• Java 8
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 2/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
$ elasticsearch
Bila intalasi yang dilakukan tidak ada masala, maka pada terminal atau
konsol Anda akan muncul tampilan seperti berikut:
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 3/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
// PUT http://localhost:9200/mylog/
{ "mappings": {
"clickstreamLog":{
"properties":{
"mouse_position_x":{
"type":"integer"
},
"mouse_position_y":{
"type":"integer"
},
"sourceUrl": {
"type":"text"
},
"userId": {
"type":"text"
},
"applicationId": {
"type":"text"
},
"createdAt":{
"type" :"date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
} }
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 4/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
Berikut ada kode producer yang akan menerima payload data klik dari
client. Payload tersebut akan diantrikan ke AWS SQS dan tidak diproses
langsung untuk disimpan ke Elasticsearch. Producer akan mengirimkan
data ke AWS SQS dengan menggunakan method sendMessage().
Pertama buatlah AWS Lambda baru melalui AWS Console, buat saja
dengan template basic untuk Node.js. Kemudian pilihlah API Gateway
sebagai event trigger.
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 5/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
Anda juga dapat mengatur kon gurasi sesuai keinginan Anda mulai
dari concurrency hingga network yang telah Anda bangun diatas AWS.
Tentu saja yang paling wajib adalah memilih execution role. Jangan
sampai kita tidak dapat menjalankan Lambda function hanya karena
masalah permission dari role yang diterapkan ke function tersebut.
Bila semuanya sudah OK, kamu hanya tinggal menekan tombol Save .
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 6/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
Selain itu kamu juga dapat melakukan testing pada form testing yang
disediakan API Gateway. Mirip Postman namun lebih sederhana.
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 7/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 8/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
Kon gurasi permission dan nama ARN dari antrian yang telah dibuat
Lalu Anda pun dapat melihat berbagai informasi yang disajikan melalui
halaman monitoring dari antrian AWS SQS. Seperti
NumberMessageSent NumberMessageReceived NumberMessageDeleted
dan lainnya.
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 9/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
Anda juga dapat melihat pesan yang sudah ditampung di antrian SQS.
Tentu saja bila pesannya memang sudah Anda. Dengan klik kanan pada
nama antrian yang dituju, Anda akan melihat tabel yang menampilkan
pesan yang ditampung di antrian di SQS.
Message .
Akhirnya bila pesan — pesan sudah masuk, kamu dapat melihat setiap
pesan yang ditampung juga dapat melihat informasi seperti panjang
pesan dan waktu masuk pesan ke antrian di SQS.
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 10/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 11/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 12/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
45 } else if (data.Messages) {
46
47 console.log(data.Messages.length);
48
49 var log = JSON.parse(data.Messages[0].Body);
50 console.log(log);
51
52 client.index({
53 index: 'mylog',
54 id: uuidV4(),
55 type: "clickstreamLog",
56 body: {
57 mouse_position_x: log.mouse_position_x,
58 mouse_position_y: log.mouse_position_y,
59 sourceUrl: log.sourceUrl,
60 userId: log.userId,
61 applicationId: log.applicationId,
62 createdAt: dateFormat(new Date(), "yyyy-
63 }
64 },function(err,resp,status) {
$ node consumer.js
Bila di AWS SQS Anda sudah menerima data dari producer maka data
yang diantrikan tersebut akan ditarik satu persatu dalam jangka waktu
satu detik. Dan tampilan konsol consumer pun akan seperti ini.
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 13/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
http://localhost:9200/mylog/clickstreamLog/_search
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 14/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 15/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
Setelah data diterima oleh Lambda, maka payload yang berisi data
clickstream tersebut akan diteruskan ke SQS yang bernama
clickstreamQueueDev . Di dalam antrian tersebutlah semua payload
akan diproses oleh consumer yang akan dijalankan di server tersendiri
dan mengambil setiap record-nya dari SQS.
Setiap record yang diambil dari SQS akan diambil satu per satu setiap
satu detik. Dan data yang diambil akan disimpan ke Elasticsearch
dengan index mylog/clickstreamLog , dan sesampainya disana, data
clickstream dapat kamu gunakan untuk analisa lebih lanjut. Contoh
paling sederhana adalah menganalisanya dengan menggunakan
Kibana.
Kesimpulan
Cukup mudah bukan untuk sekadar mencoba?
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 16/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 17/18
6/24/2018 Membangun Serverless Clickstream Tracker Dengan API Gateway, AWS Lambda dan AWS SQS
https://medium.com/serverless-indonesia/membangun-serverless-clickstream-tracker-dengan-api-gateway-aws-lambda-dan-a… 18/18