Implementasi Cluster Message Broker Sebagai Solusi Skalabilitas Middleware Berbasis Arsitektur Publish-Subscribe pada Internet of Things (IoT)

  

Vol. 2, No. 12, Desember 2018, hlm. 6861-6867 http://j-ptiik.ub.ac.id

Implementasi Cluster Message Broker Sebagai Solusi Skalabilitas

  

Middleware Berbasis Arsitektur Publish-Subscribe pada Internet of Things

1 2,

(IoT)

3 Jessy Ratna Wulandari , Eko Sakti Pramukantoro Heru Nurwarsito

  Program Studi Teknik Informatika, Fakultas Ilmu Komputer, Universitas Brawijaya 1 2 3 Email: jessyratnawulandari@gmail.com, ekosakti@ub.ac.id, heru@ub.ac.id

  

Abstrak

  Pada middleware IoT yang yang digunakan untuk mengatasi permasalahan syntactical

  

interoperability , ditemui permasalahan terbatasnya jumlah data yang mampu ditampung oleh sejumlah

memory karena menggunakan redis yang memanfaatkan memory RAM sebagai buffer data.

  Permasalahan tersebut dapat diatasi dengan penambahan cluster message broker yang berfungsi untuk membagi data ke dalam beberapa redis. Tujuan dari penelitian ini adalah membangun cluster message

  

broker dari beberapa redis yang telah dikonfigurasikan ke dalam mode cluster, di mana cluster tersebut

  akan berfungsi membagi data atau topik ke dalam beberapa redis secara acak. Selain itu juga ditambahkan Ioredis pada middleware yang berfungsi untuk mengintegrasikan cluster dengan

  

middleware . Pengujian dilakukan untuk menguji kemampuan berjalannya node sensor sebagai

publisher , middleware yang telah menerapkan cluster message broker, dan subscriber serta untuk

  menguji pembagian data atau topik dibeberapa redis. Berdasarkan pengujian yang dilakukan data yang dikirimkan oleh publisher dapat diterima oleh middleware dan middleware dapat mengirimkan data dari

  

publisher ke subscriber. Selain itu data atau topik yang diterima oleh middleware dapat didistribusikan

ke beberapa redis yang ada didalam cluster.

  Kata kunci: cluster, redis, skalabilitas, Middleware, Internet of Things (IoT)

Abstract

  

IoT middleware that used to solve syntactical interoperability, face a limited storage resource due to

Redis implementation which used RAM as a data buffer. This problem can be solved by adding a cluster

message broker to distributing data to several Redis. The goal of this research is to develop a cluster

message broker from several Redis that already configured into cluster mode, in order to randomly

distribute data or topic into several Redis. Besides that, Ioredis also added the middleware to integrate

cluster with the middleware. Testing was done to test the capability of the sensor node as a publisher,

cluster message broker in the middleware, and subscriber also to test the distributed data or topic in

several Redis. The results show that data sent from the publisher can be received by middleware and

middleware can send data from the publisher to the subscriber. Besides that, data or topic received by

middleware can be distributed to the several Redis in the cluster.

  Keywords: cluster, redis, scalability, Middleware, Internet of Things (IoT)

  tersebut dilanjutkan oleh Rozi yang melakukan 1.

   PENDAHULUAN pengujian performansi dan skalabilitas untuk

  mengetahui kinerja Middleware. Berdasarkan Pada penelitian sebelumnya oleh Anwari hasil pengujian yang telah dilakukan, arsitektur telah dibangun sebuah Middleware yang

  middleware dan penggunaan redis sebagai

  berfungsi untuk mengatasi permasalahan

  broker dapat mempengarui kinerja middleware syntactical interoperability protokol komunikasi

  yang menghasilkan nilai delay yang tinggi. CoAP, MQTT, dan Websocket dengan cara

  Kinerja redis bergantung pada space memory menerapkan gateway multi-protokol. Gateway yang tersedia untuk redis tersebut, oleh karena yang dibuat untuk masing-masing protokol itu akan terjadi permasalahan skalabilitas di komunikasi dihubungkan dengan sebuah broker mana data yang mampu ditangani oleh sejumlah yaitu Redis. Dalam implementasinya, penelitian

  memory yang tersedia menjadi terbatas.

  Fakultas Ilmu Komputer Universitas Brawijaya

6861

  Dalam mengatasi permasalahan skalabilitas tersebut dibutuhkan sebuah metode yang mampu mendukung skalabilitas. Beberapa metode telah dilakukan dalam berbagai penerapan. (Son et al. 2015) mengatasi skalabiltas pada Smart Home dengan cara membangun sebuah Middleware terdistribusi yang dapat membuat perangkat cerdas dapat mempelajari perilaku pengguna dan bertindak secara otomatis dengan berkerja sama dengan perangkat lain melalui gateway. (Jutadhamakorn et al. 2017) membangun MQTT

  4.1 Perancangan lingkungan sistem

  Penelitian (Li, Jiang, and Shi 2017) membangun teknologi cluster web berbasis redis dalam menjaga konsistensi session web server dan meningkatkan ekspansi. Redis cluster tersebut berfungsi untuk menyimpan session. Hasil pengujian menunjukkan redis cluster menyediakan kecepatan read-write data dan memiliki tingkat availability yang tinggi dalam pengunaannya.

  Hanafi, 2017) . Penelitian ini akan berfokus

  pada bagian Redis yang berfungsi sebagai

  broker yang bersifat scalable dengan metode clustering dalam menangani sejumlah besar

  broker . Sistem yang dibangun terdiri dari dua

  perangkat sensor yang mengirimkan data suhu dan kelembapan melalui protokol CoAP dan MQTT. Data tersebut akan diterima oleh

  Middleware yang menerapkan cluster message broker dan kemudian akan dibagi secara acak ke

  beberapa redis yang ada di cluster untuk disimpan dalam bentuk topik/key. Kemudian data akan dikirimkan ke subscriber yang telah melakukan subscribe dengan topik/key tertentu.

  4. PERANCANGAN

  Dalam penelitian ini menggunakan lingkungan IoT pada penelitian sebelumnya. Terdapat tiga komponen yang berinteraksi yaitu sensor suhu dan kelempaban, Middleware, dan

  Penelitian ini merupakan implementasi pengembangan lanjut dari penelitian sebelumnya oleh (Anwari, Pramukantoro, and

  menggabungkan beberapa redis. Selain itu dilakukan penambahan Ioredis yang berfungsi untuk mengintegrasikan cluster dengan middleware .

  message broker tersebut dibangun dengan

  data atau topik ke dalam beberapa redis. Cluster

  Middleware . Cluster berfungsi untuk membagi

  mengatasi permasalahan skalabilitas pada IoT

  message broker yang digunakan untuk

  Berdasarkan pembahasan diatas, maka dilakukan pengembangan pada penelitian sebelumnya dengan mengusulkan cluster

  ekspansi. (Thomas, Alexander, and Pm 2017) membangun sistem menggunakan metode berbasis cluster menggunakan redis yang memiliki performa tinggi dalam menyimpan, memproses, dan mengambil data geospasial dinamis untuk mengatasi masalah tracking lokasi kendaraan pada lingkungan Smart City.

  session dan meningkatkan kemampuan

  perangkat IoT. (Li, Jiang, and Shi 2017) membuat teknologi cluster web server berbasis redis yang berfungsi untuk menjaga konsistensi

  3. DESKRIPSI UMUM SISTEM

2. KAJIAN PUSTAKA

  antara sensor sebagai publisher yang menggunakan protokol CoAP dan MQTT, middleware , serta subscriber yang menggunakan protokol Websocket.

  dilakukan berkaitan dengan integrasi sistem

  mengakses broker. Redis berada pada sisi service unit yang difungsikan sebagai broker.

  unit difungsikan sebagai interface bagi sensor gateway dan application gateway untuk

  Sensor gateway difungsikan sebagai interface bagi sensor yang mengirimkan data suhu dan kelembapan melalui CoAP dan MQTT. Service

  gateway , service unit, dan application gateway.

  membangun Middleware yang memiliki tiga komponen utama yaitu sensor

  Hanafi, 2017)

  Penelitian (Anwari, Pramukantoro, and

  subscriber . Sensor berfungsi sebagai publisher yang mengirimkan data ke Middleware.

  Kemudian subscriber yang akan menerima data dari Middleware.

  Pada gambar 1 sensor suhu dan kelembapan yang menggunakan module dht 11/22 akan mengirimkan data melalui protokol CoAP dengan topik home/kitchen dan MQTT dengan topik home/garage ke Middleware. Selanjutnya Middleware akan menyimpan data tersebut ke Redis yang tersedia di cluster ke dalam bentuk topik/key. Apabila subscriber telah melakukan subscribe ke Middleware dengan topik/key tertentu maka Middleware akan mengirimkan data dengan topik/key tersebut secara real-time.

  Application gateway difungsikan sebagai interface bagi aplikasi untuk membaca data dari Middleware melalui Websocket. Pengujian yang

  Gambar 1 Lingkungan sistem

  6381, 6382, 6382, dan 6384. Port tersebut berguna untuk mengidentifikasi node redis dalam penyimpanan data.

  Raspberry pi yang saling terhubung

  Redis tersebut diimplementasikan pada tiga

  5.1 Implementasi Cluster Cluster dibangun dari beberapa Redis yang dikonfigurasikan kedalam mode cluster.

  5. IMPELEMENTASI

  Tabel 1 Payload data Var payload = { protocol: string, //nama protokol yang digunakan timestamp: string, //time server topic: string, //nama topik yang digunakan sensor: { tipe: string, //tipe sensor index: string, //index sensor ip: string, //ip yang digunakan untuk sensor module: string, //modul yang digunakan dht11/22 } humadity: { value: number, // nilai humadity unit: string, //satuan humadity } temperature: { value: number, //nilai temperature unit: string, //satuan temperature } }

  dikirimkan sensor ke Middleware. Data yang dikirimkan berupa format JSON menggunakan protokol CoAP dan MQTT. Pada tabel 1 menunjukkan Payload data berupa nama protokol, timestamp, topik, tipe sensor, index sensor, IP sensor, modul yang digunakan (dht11/22), dan nilai suhu dan kelembapan yang dicatat oleh sensor.

  4.3 Perancangan Payload Data sensor Payload berisi informasi data yang

  Gambar 2 Perancangan cluster

  cluster . Redis terdiri dari port 6379, 6380,

  4.2 Perancangan Cluster

  Pada gambar 2 merupakan gambar topologi mesh yang digunakan pada

  yang terhubung mampu saling berkomunikasi.

  master . Cluster menggunakan topologi mesh TCP connection di mana setiap node

  kerja master jika master mengalami kegagalan sistem. Selama redis berperan sebagai slave maka slave tersebut hanya diberikan ijin untuk Read sehingga tidak bisa mengubah data yang disimpan pada

  slave . Slave berfungsi untuk menggantikan

  ditanam pada tiga Raspberry pi. Setiap redis tersebut berperan sebagai master atau

  Cluster menggunakan enam Redis yang

  Dalam penelitian ini cluster berfungsi dalam pembagian data yang disimpan dalam bentuk topik/key. Cluster dibangun dengan menggunakan beberapa redis yang dikonfigurasikan ke dalam mode cluster.

  menggunakan koneksi wlan0. Masing-masing redis memiliki identitas berupa IP dan Port.

  Penelitian ini menggunakan sensor suhu dan kelembapan yang dikirimkan melalui protokol CoAP dan MQTT. Program sensor menggunakan framework node.js dan dijalankan

  Pada penelitian ini Redis yang berperan sebagai slave yang dibuat memiliki port 6380, 6383, dan 6384. Node Redis slave akan ditambahkan sebagai anggota Cluster dengan perintah ./ redis- trib add-node

  5.3 Implementasi Sensor

  port 6382 dan 6383, dan node dengan IP 192.168.42.28 dengan port 6379 dan 6384.

  192.168.42.100 dengan port redis 6380 dan 6381, node dengan IP 192.168.42.41 dengan

  Port dan IP host redis terdiri dari node dengan IP

  Integrasi yang dilakukan adalah dengan menambahkan library Ioredis. Selain itu juga dilakukan inisialisasi semua port dan IP host redis yang ada pada cluster. Hal tersebut dilakukan agar Middleware mengetahui redis mana saja yang ada pada daftar node cluster.

  Middleware terletak pada Raspberry pi dengan IP 192.168.42.100.

  berfungsi sebagai broker dan sekaligus melakukan penyimpanan data secara persistent.

  Middleware terletak pada sisi service unit yang

  Penelitian ini menggunakan Middleware pada penelitian sebelumnya. Setelah cluster redis sudah terbentuk maka perlu di integrasikan dengan Middleware tersebut. Redis pada

  5.2 Implementasi Middleware

  Gambar 4 Penambahan node slave pada Cluster

  Pada gambar 4 menunjukkan perintah dalam menambahkan slave pada masing-masing master menggunakan redis-trib.rb add-node

  node -master] IP-slave:port-slave IP-master:port-master .

  Selanjutnya setiap node master akan diberikan satu slave yang berfungsi untuk menggantikan master jika master mengalami kegagalan sistem.

  • –slave

  Gambar 3 Implementasi Cluster

  IP 192.168.42.42 dengan port 6382, dan IP 192.168.42.100 dengan port 6381. Ketiga Redis tersebut akan memiliki peran sebagai master pada Cluster.

  IP 192.168.42.28 dengan port 6379,

  ./redis-trib.rb create. Perintah redis-trib juga akan mengkonfigurasi key slot secara otomatis untuk ketiga Redis tersebut. Pada gambar 3 menunjukkan perintah redis- trib untuk membuat cluster dengan

  Selanjutnya membuat Cluster dengan menggunakan redis-trib yang disediakan oleh redis. Perintah yang digunakan yaitu

  sudah active (running) maka redis sudah dapat digunakan.

  sudo service [namafileservice] status . Jika status

  Setelah dilakukan konfigurasi pada masing- masing file redis, selanjutnya dilakukan pengecekan status redis tersebut dengan perinta

  Tabel 2 File konfigurasi redis port 6379 cluster-enabled yes cluster-config-file node - 6379.conf cluster-node -timeout 5000 appendonly yes

  beberapa hal yang ada pada file konfigurasi redis agar redis berjalan pada mode cluster:

  file konfigurasi sendiri yang terletak di /etc/redis. Tabel 2 berikut ini merupakan

  Masing-masing Redis tersebut memiliki

  IP 192.168.42.100. Redis master_2 dengan port 6382 dan dan slave_2 dengan port 6383 terletak pada Raspberry pi dengan IP 192.168.42.41.

  Redis master_3 dengan port 6379 dan slave_3 dengan port 6384 terletak pada Raspberry pi dengan IP 192.168.42.28. Redis master_1 dengan port 6380 dan slave_1 dengan port 6381 terletak pada Raspberry pi dengan

  • slavemaster-id [id-
di Raspberry pi. Perbedaan dari pengiriman data menggunakan protokol CoAP dan MQTT adalah ketika menggunakan CoAP data yang telah di baca oleh sensor akan langsung dikirim ke

  middleware , sedangkan ketika menggunakan

  dilakukan.

  menunjukkan bahwa middleware dengan mode

  cluster mampu menerima data suhu dan

  kelembapan melalui protocol CoAP untuk topik

  home /kitchen dari klien publisher dengan IP

  192.168.42.41. Berdasarkan hasil pengujian PF_001 disimpulkan bahwa integarasi

  middleware yang mengimplementasikan cluster message Broker dengan node sensor berhasil

  6.2 Middleware mampu menerima data melalui protokol MQTT Gambar 6 Pm2 logs middleware dari MQTT

Gambar 5.3 menunjukkan tampilan pm2

  Gambar 6 menunjukkan tampilan pm2

  logs pada middleware . Hasil pengujian

  menunjukkan bahwa middleware dengan mode

  cluster mampu menerima data suhu dan

  kelembapan melalui protocol MQTT untuk topik

  home /garage dari klien publisher dengan IP

  logs pada middleware . Hasil pengujian

  6.1 Middleware mampu menerima data melalui protokol CoAP Gambar 5 Pm2 logs middleware dari CoAP

  MQTT sensor harus terhubung dahulu ke

  SET async = require async SET MQTT = require mqtt SET payload = payload data and read humidity and temperature from sensor DO async (1, next) DO print Date in String DO connect to MQTT Gateway using ip and port DO publish (topik, payload in JSON, use qos 1) END DO next (err) DO print “terkirim” END

  Middleware

  sebelum mengirimkan data yang telah berhasil terbaca oleh sensor. Tabel 3 merupakan Pseudocode program sensor yang mengirimkan data suhu dan kelembapan melalui protokol CoAP ke

  Middleware dengan IP 192.168.42.100 dan port

  5683. Pada proses ini data akan langsung dikirimkan ke Middleware tanpa sensor harus terhubung ke Middleware terlebih dahulu.

  Tabel 3 Pseudocode program sensor dengan protokol CoAP SET sensorlib = require node -dht- sensor SET temp = read temperature from sensor SET hum = read humidity from sensor DEFINE coapp () SET coap = require coap SET cron = require node -cron SET payload = payload data from sensor DO send payload in JSON with method POST

  DO print Date and “terkirim” END Tabel 4 Pseudocode sensor dengan protokol MQTT

  Pada tabel 4 merupakan Pseudocode program sensor yang mengirimkan data suhu dan kelembapan melalui protokol MQTT ke

  IP 192.168.42.12 untuk mengirim data suhu dan kelembapan melalui MQTT ke Middleware dengan IP 192.168.42.100.

  Middleware

  dengan IP 192.168.42.100 dan port 1883. Proses ini akan mengirimkan data sensor setelah sensor melakukan koneksi dan terhubung ke MQTT Gateway pada middleware. Pada program ini juga ditentukan menggunakan QoS 1 pada MQTT.

  6. PENGUJIAN DAN HASIL PENGUJIAN

  Pengujian fungsional dilakukan untuk mengetahui apakah sensor sebagai publisher,

  middleware yang menerapkan cluster message

  broker serta subscriber sudah dapat saling berkomunikasi dan apakah data yang diterima oleh middleware mampu dibagi ke dalam beberapa redis. Pengujian dilakukan berdasarkan prosedur pengujian yang telah ditentukan. Pada pengujian akan dilakukan pengiriman data suhu dan kelembapan dari sensor dengan IP 192.168.42.41 untuk CoAP dan sensor dengan

  192.168.42.41. Berdasarkan hasil pengujian

  • –scan. Perintah tersebut berfungsi

  redis . Hasil pengujian menunjukkan pada redis

  7. KESIMPULAN

  Pada Gambar 11 menunjukkan topik dht/A1 ada di redis dengan port 6382 dan IP 192.168.42.41 sedangkan topik dht/A4 ada di redis dengan port 6379 dan IP 192.168.42.79. Kemudian redis dengan port 6381 dengan IP 192.168.42.100 mencoba mengakses topik-topik tersebut dengan melakukan perintah MGET [nama_topik]. Hasilnya dapat dilihat pada gambar bahwa redis dengan port 6380 dapat mengakses data di redis dengan port 6382 dan 6379. Hal tersebut ditunjukkan dengan keterangan “Redirected” yang berarti redis port 6380 dialihkan ke port 6382 dengan lokasi data untuk topik dht/A1 di slot 7738, dan redis port 6380 juga dialihkan ke port 6379 dengan lokasi data untuk topik dht/A2 berada di slot 3743. Data yang ditampilkan berupa Buffer.

  6.7 Redis dapat saling terhubung satu sama lain Gambar 11 Pm2 logs akses data redis

  . Payload data yang berisi data suhu yang bernilai 30 o C dan kelembapan yang bernilai 20% tersebut dikirimkan oleh publisher dengan IP 192.168.42.41 melalui protokol MQTT dengan topik home/garage. Berdasarkan hasil pengujian PF_006 disimpulkan bahwa integrasi middleware yang mengimplementasikan cluster message Broker dengan subscriber berhasil dilakukan.

  subscriber

  Pada Gambar 10 menunjukkan sebuah tampilan payload data yang diterima oleh

  6.6 Middleware mampu mengirimkan data dengan protokol MQTT ke subscriber melalui protokol Websocket Gambar 10 Pm2 logs MQTT dan Websocket

  Broker dengan subscriber berhasil dilakukan.

  middleware yang mengimplementasikan cluster message

  yang bernilai 30 o C dan kelembapan yang bernilai 20% tersebut dikirimkan oleh publisher dengan IP 192.168.42.41 melalui protokol CoAP dengan topik home/kitchen menggunakan module dht11. Berdasarkan hasil pengujian PF_005 disimpulkan bahwa integrasi

  subscriber . Payload data yang berisi data suhu

  Pada Gambar 9 menunjukkan sebuah tampilan payload data yang diterima oleh

  6.5 Middleware mampu mengirimkan data dengan protokol CoAP ke subscriber melalui protokol Websocket Gambar 9 Pm2 logs CoAP dan Websocket

  dengan IP 192.168.42.41 dan port 6382 menyimpan topik home/garage, sedangkan redis dengan IP 192.168.42.100 dan port 6380 menyimpan topik home/kitchen yang berarti bahwa middleware dengan mode cluster mampu membagi data yang diterima ke dalam beberapa redis yang terdapat pada cluster.

  untuk melihat topik apa saja yang ada pada suatu

  PF_002 disimpulkan bahwa integarasi

  cluster mampu menerima data suhu dan

  middleware yang mengimplementasikan cluster message Broker dengan node sensor berhasil

  dilakukan.

  6.3 Middleware mampu menerima data melalui protokol CoAP dan MQTT Gambar 7 Pm2 logs middleware CoAP dan MQTT

  Pada Gambar 7 menunjukkan tampilan

  pm2 logs pada middleware. Hasil pengujian

  menunjukkan bahwa middleware dengan mode

  kelembapan melalui protocol CoAP untuk topik

  [IP] -p [port]

  home /kitchen dari klien publisher dengan IP

  192.168.42.41 dan melalui protokol MQTT untuk topik home/garage dari klien publisher mqtjs_a2830b21. Berdasarkan hasil pengujian PF_003 disimpulkan bahwa integarasi

  middleware yang mengimplementasikan cluster message Broker dengan node sensor berhasil

  dilakukan.

  6.4 Cluster mampu membagi data yang diterima oleh Middleware Gambar 8 pm2 logs pembagian data/topik

  Pada Gambar 8 merupakan tampilan yang menunjukkan hasil perintah redis-cli -h

  Berdasarkan hasil perancangan, implementasi dan pengujian dapat disimpulkan penerapan metode cluster message Broker menggunakan Redis dapat diimplementasikan pada Middleware IoT. Dengan penambahan Ioredis maka cluster dapat diintegrasikan dengan

  middleware

  . IoT middleware yang telah menerapkan cluster message broker dapat berkomunikasi dengan sensor melalui protokol CoAP dan MQTT serta dapat berkomunikasi dengan subscriber melalui protokol Websocket. Selain itu data yang terima oleh middleware dapat dibagi ke dalam beberapa redis dalam bentuk topik/key.

  2017. “Design of High PerformanceClusterbased Map for Vehicle Tracking of Public Transport Vehicles in Smart City.” Ieee, 2–6.

8. DAFTAR PUSTAKA

  Middleware Berbasis Event-Based

  https://doi.org/10.1109/ICACSIS.2017.83 55008. Rozi, Mohammad Fahrur, Eko Sakti Pramukantoro, and Kasyful Amron. 2017.

  Anwari, H, Pramukantoro, Eko Sakti, and Hanafi, Hanats

  23 –32. https://doi.org/10.1109/COMPSAC.2015. 101. Thomas, George, G Alexander, and Sasi Pm.

  Proceedings - International Computer Software and Applications Conference 2:

  Dongman Lee, Soon J. Hyun, Junsung Lim, and Hyunseok Lee. 2015. “A Distributed Middleware for a Smart Home with Autonomous Appliances.”

  ” 1 (7): 593 –601. Son, Heesuk, Bjorn Tegelund, Taehun Kim,

  “Analisis Performansi Dan Skalabilitas Pada Event-Based IoT Middleware

  Conference on Advanced Computer Science and Information Systems (ICACSIS) 00.

  Denga n Protokol” 1 (12): 1560–67. Jutadhamakorn, Pongnapat, Tinnapat Pillavas,

  “Perform Evaluation of IoT Middleware for Syntactical Interoperability.” International

  . 2017. “Pengembangan Iot

  13th International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery (ICNC-FSKD) ,

  7. “Redis-Based Web Server Cluster Session Maintaining Technology.” 2017

  ing System.” Li, Songhuan, Hong Jiang, and Mingkang Shi. 201

  Cluster

  Vasaka Visoottiviseth, Ryousei Takano, Jason Haga, and Dylan Kobayashi. 2017. “A Scalable and Low-Cost MQTT Broker

  3065 –69. Pramukantoro, Eko Sakti, Widhi Yahya, and Fariz Andri Bakhtiar. 2017.