Sarjana Intern Data Engineer Tiket.com

Sarjana Intern Data Engineer Tiket.com

Rampung sudah agenda intern alias kerja praktik saya sebagai Data Engineer di Tiket.com sejak tanggal 2 Agustus kemarin. Periode intern saya selama 40 hari alias 8 minggu alias 2 bulan.

Tentang proses rekrutmen buat internship di Tiket.com sudah saya tulis di KAPE: Siapa Tau Rezeki Kan.

Keseharian didokumentasikan di thread Twitter karena saya anaknya pelupa. Daripada ada yang skip di tulisan ini kan.




Data Rangers: Data Team at Tiket.com

Tim data di Tiket.com terdiri dari tiga role utama. Data Engineer (DE), Data Scientist (DS), dan Business Intelligence Engineer (BI). Tim data Tiket.com hanya ada di kantor Jakarta. Sebelum pindah, saya ngantornya di Grha Niaga Thamrin (GNT), tapi sekarang Data Rangers pindah ke Menara BCA Grand Indonesia. Tech team yang terpisah dari tech team yang lain. Orang-orang tech lain tetep kerja di GNT, cuma orang data doang yang pindah. Saya seneng-seneng aja sih soalnya Menara BCA lebih keren aja gitu. Hahaha.

Ketiga role tadi ngapain aja? DE yang menyiapkan data. DS yang membuat modelnya. BI yang menyiapkan tampilannya. Kurang lebih seperti itu. Kata senior saya pas magang, kalau pakai analogi, pekerjaan di tim data ini seperti kegiatan memasak. DE itu yang bertugas menyiapkan bahan-bahan masakannya. DS yang bertugas untuk membuat resepnya. Dan terakhir, BI bertugas untuk plating-nya. Analogi ini bakal membantu untuk memahami kenapa DE merupakan role paling krusial.


Data Engineer: What, Why, How

Apa itu Data Engineer? Data Engineer adalah insinyur (wkwk) yang tugasnya menyiapkan data biar siap dipakai sama pengguna yang berkepentingan. Pengguna yang berkepentingan ini bisa dari DS, BI, atau dari tim lain. Biasanya kalau orang yang nanya punya background IT saya lanjutin dengan contoh. Jadi gini kalimat pamungkasnya, "Tau MySQL, PostgreSQL, dan database (DB) lainnya kan? Nah, dari DB-DB atau sumber-sumber data yang bermacam-macam itu Data Engineer yang mengolahnya, lalu masukin ke satu platform, dalam hal ini pakainya Google BigQuery (BQ), terus orang-orang yang perlu tinggal pakai deh lewat BQ. ETL (extract, transform, loading) cuy, ETL pokoknya mah." Biasanya langsung manggut-manggut. Lebih ruwet kalau yang nanya nggak ada background IT sama sekali, contohnya ya keluarga saya. Pas saya ditanya, kerjaannya ngapain sih? Jawab saya, "Pokoknya mengolah data dari berbagai sumber, dijadiin satu biar siap pakai." Saya yakin 100% mereka nggak mudeng dan nggak bisa relate. Dan mungkin berpikir oh gitu aja kerjanya. Ya wajar sih, soalnya saya dulu juga gitu sebelum jadi Data Engineer beneran di Tiket.com.

Sebelum magang, anggapan saya terhadap DE.

"Eh apaan sih, nyiapin data doang kan."

Pas udah magang.

"Oh ternyata nggak 'gitu doang' ya."

??

Sebenarnya di DE sendiri dibagi jadi tiga. DE Core, Data Platform, sama Machine Learning (ML) Engineer. DE Core ya udah lah ya, DE yang sesungguhnya. Data Platform yang saat ini membangun platform khusus namanya Mercury buat memudahkan pengguna data. Kalau ML Engineer ini DE khusus buat memenuhi kebutuhan para DS. Saya termasuk ke DE Core.

Terus kenapa perlu ada Data Engineer? Masih kebayang kan analogi tim data itu seperti orang memasak? DE menyiapkan bahan, DS bikin resep, BI urusan plating. Kalau nggak ada BI, nggak ada plating, oke lah makanan masih enak tapi tampilan jelek. Kurang uwaw gitu jadinya. Kalau nggak ada DS, bikin masakannya ngasal, oke paling nggak makanannya masih bisa dimakan meskipun nggak enak. Kalau DE nggak ada, bahan-bahan yang ada jelek atau beracun, ya nggak ada gunanya memasak toh makanannya nggak bisa dimakan. Gitu. Pekerjaan sebagai DE merupakan pekerjaan paling penting untuk menentukan apakah datanya punya integrity? Akurat nggak? Konsisten nggak? Bisa dipercaya nggak? Data kan patokan utama decision making perusahaan. Kalau datanya aja nggak bener, bubar udah semuanya. Semua keputusan yang diambil dari data tersebut bisa tidak tepat dan merusak tatanan yang sudah ada. So, data engineering is the very first and crucial step.

Bagaimana kerjanya? Dateng ke kantor jam 9an. Hahahihi isi air minum dulu, kalau ada susu di meja ya dicomot dulu. Terus jam 10.30 ada stand up meeting. Di stand up ini tiap orang ngejelasin kemarin udah ngapain aja, ada masalah apa aja, terus rencana hari ini mau ngapain. Kalau masalahnya terlalu pelik, diselesainkannya abis stand up karena capek tau berdiri lama. Wkwkwk. Selama ini laporan stand up saya adalah yang paling singkat, "Kemarin saya migrasi. Hari ini saya migrasi." Oke, Ilma. ??

Migrasi tadi maksudnya memindahkan job-job dari Nifi versi lama ke Nifi versi baru. Kenapa migrasi? Karena Nifi versi baru memiliki load balancing lebih baik dan untuk menata job-job agar tidak redundan. Job yang redundan mengakibatkan cost menjadi tinggi. Selama ini tugas yang saya dapatkan seputar migrasi yang memang merupakan salah satu prioritas saat itu, membuat job untuk keperluan tertentu, membuat script untuk keperluan tertentu, dan saat akhir-akhir melakukan eksplorasi Kubeflow.


Tech Stack

Ini teknologi-teknologi yang dipakai oleh Data Engineer Tiket.com.


  • Google Cloud Platform (GCP)

Dengan segala produknya yaitu BigQuery, Cloud Storage, DataFlow, dll. Saya nggak hafal produk apa aja yang dipakai. Hehehe. GCP ini digunakan sebagai tempat penyimpanan data serta tempat pengguna mengakses data yang sudah bersih. Mungkin yang jadi pertanyaan kenapa pakai punya Google? Kenapa nggak Amazon Web Services (AWS)? Karena punya Google udah ada server di Asia Tenggara yaitu Singapura.


  • Apache Nifi

Ini merupakan tools buat mengotomasi proses data pipelining. Mengotomasi maksudnya gimana? Jadi begini ceritanya. Kan sumber data di Tiket.com banyak banget ya. Dan sumber-sumber data itu bentukannya macem-macem. Ada yang dari MongoDB, MySQL, PostgreSQL, Google Sheet, dan lain-lain. Semua sumber data itu harus dimasukkan ke BigQuery. Kenapa? Jawabannya untuk proses query yang mudah. Bayangin aja data bergiga-giga bytes dengan command SQL ratusan baris, server mana yang kuat untuk melakukan query data tersebut? Jawabannya cloud, dalam hal ini pakainya Google BigQuery. Terus kan sumber datanya pasti mengalami update dong, bisa per menit, per jam, per hari, atau per apapun. Nah, Nifi bertugas untuk memudahkan proses update itu ke data di BigQuery. Caranya dengan membuat yang namanya job yang berjalan tiap waktu tertentu, melakukan proses modifikasi yang diperlukan, lalu mengirim datanya ke BigQuery. Konsepnya yaitu tiap sebuah job berjalan, dia akan menghasilkan sebuah flowfile. Flowfile ini punya atribut dan konten. Segala info yang diperlukan untuk mengakses sumber data dimasukkan ke atribut lalu hasil datanya disimpan di bagian konten. Job tersebut juga bisa digunakan untuk memodifikasi data sesuai kebutuhan. Misalnya untuk handling masalah type casting yang berbeda antara tipe data di format Avro dengan tipe data di BigQuery menggunakan script Python. Hahaha. Mampus pusing nggak lo semua? Gampang tapi ternyata lumayan juga ya pas hands on langsung.

Sebenarnya saat saya datang sistemnya udah mulai oke gitu sih. Udah nggak eksplorasi-eksplorasi lagi. Makanya saya nyebutnya gampang, tapi kalau ngebayangin ngebangun dari awal ya sulit. Wkwkwk.

Nifi ini tampilannya berbentuk web. Cara pakainya drag and drop programming.


  • Apache Kafka

Ini buat data streaming.


  • Apache Spark

Ini juga buat data streaming.


  • Debezium

Ini juga buat data streaming.


  • Kubeflow

Ini merupakan tools yang digunakan oleh ML Engineer untuk memudahkan implementasi model yang dibangun oleh DS ke skala production. Bayangkan saja, seorang DS dalam melakukan eksplorasi untuk membangun sebuah model pasti membutuhkan berbagai dependencies. Proses maintaining banyak model, dengan masing-masing model memiliki banyak dependencies pula, tentu tidak mudah. Selain itu, jika sudah mencapai skala production, proses data training yang dilakukan pasti menggunakan data real dengan ukuran yang sangat besar. Gimana cara pembagian beban kerja servernya dan sebagainya? Untuk memudahkan penyelesaian kendala tadi, digunakan Kubeflow. Jadi Kubeflow itu seperti mempertemukan kebutuhan DS dengan kemampuan ML Engineer. DS bisa tidak dibatasi kreativitasnya dalam membangun model, sementara di sisi lain ML Engineer tidak kesulitan untuk melakukan delivery model tersebut ke production.

Gimana caranya? Caranya dengan membuat docker image yang berisi model beserta informasi dependencies yang diperlukan. Singkatnya docker image itu adalah satu paket program yang bisa running. Docker image tersebut disimpan di Google Container Registry (gcr.io). Selanjutnya yaitu membuat pipelining atau urut-urutan docker image mana yang running. Terakhir tinggal create run untuk pipeline tersebut. Kalau berhasil centang ijo.

Menurut ML Engineer di Tiket.com sendiri, Kubeflow merupakan level abstraksi lebih tinggi dari Kubernetes.


  • Tableau

Ini lebih ke teknologi milik BI sih. Akhir dari semua data yang susah-susah diolah tadi adalah dijadiin visualisasinya dalam bentuk dashboard di Tableau. Pengguna paling akhir lah yang akan melakukan decision making berdasarkan visualisasi ini.

Ada yang kelewatan nggak ya saya lupa. Hahaha.


Saya dikasih kekuasaan di Apache Nifi, BigQuery, sama Kubeflow dikit. Keliatan kan dari tulisan di atas banyak bawelnya dimana. Hehehe. Iya, kekuasaan di sini bertingkat-tingkat ya. Sampai-sampai saya pernah seharian cuma request access mulu. Wkwkwk. Tentu saja ini semua demi security mengingat yang kami handle ini data penting ya kan.

Kalau perlu ngoding-ngoding gitu biasanya pakai Python sama Java. Sekarang bakal merambah ke Golang juga. Katanya.

Udah ah bagian serius-seriusnya. Saatnya bagian tidak serius. Hehehe.

Random Stuffs

Jumlah orang di DE Core adalah 8 orang. Rasio perempuan dan laki-lakinya adalah 1:7. Iya, saya perempuan sendirian. Hahaha. Kalem. Perempuan kayaknya lebih privileged di sini karena saya kalau kirim email ke IT Support cepet dibalesnya. Wkwkwk.

Saya suka ada meja open source. Isinya makanan-makanan yang bisa dicomot secara bebas. Kayak meja halal. Anak asrama can relate pasti. Wkwkwk.

Saya suka kantor lama yang dalam satu ruangan khusus terus ada TV-nya jadi bisa nyetel lagu serasa di ruang karaoke. Tapi saya suka kantor baru yang view ke luarnya bagus, enak buat berkontemplasi alias ngelamun. Hahaha. Gara-gara ngelamun ini nih saya dikira orang-orang punya masalah hidup berat. Soalnya abis itu saya dapet wejangan panjang lebar dari tiap orang DE. Dari masalah prospek kerja dan pengembangan diri di startup, DE versus DS (karena sesungguhnya saya awalnya pengen menjadi DS terus terhasut buat nyoba jadi DE), skripsi, kerja atau S2, sampai masalah cowok. ??

Kantor Lama Tim Data Tiket.com
Kantor lama. Tinggal kasih mic jadi ruang karaoke.
Kantor Baru Tim Data Tiket.com
Kantor baru. Ruangannya terbuka mana bisa nyanyi-nyanyi.
View Lantai 40 Menara BCA
Tapi view kantor baru terbaik sih. Menara BCA lantai 40 soalnya. Hahaha.

Saya bersyukur ada satu orang intern juga yang seangkatan saya dan satu orang yang kayak kating. Nggak ada sungkan-sungkannya udah sama mereka berdua. Wkwkwk. Dua orang tersering saya ganggu, makasih loh ya.

Selama intern di Tiket.com saya mendapatkan salary per hari. Di kantor dapet makan siang 4 sehat 5 gratis. Kalau sore makanannya masih ada, boleh ngambil lagi. Tiap Rabu dan Jumat ada snack kayak pempek atau cilok atau es krim atau kolak atau apalagi ya lupa. Biasanya di meja open source ada jatah bebas susu bear brand kecintaan. 

Eh, ada monthly team lunch juga di tempat makan luar. Kebodohan saya pas team lunch ini adalah pesen makanan yang mengandung wine. Ya kan saya nggak bisa dan nggak boleh konsumsi wine. Untung temen saya mau tuker makanannya dengan punya saya. Inilah akibat membaca tidak teliti ya saudara-saudara.

Kalimat tersering saya ucapkan, "Mas, ada kerjaan lagi nggak? Mas, mau kerjaan. Hehehe." Kerjaan saya emang meneror pembimbing perusahaan ya.

Saya sudah kenyang dengan hiruk pikuk krl. Kalau beneran kerja di Jakarta lagi bakal cari kos-kosan yang deket kantor aja. Capek banget asli. Kadang kalau pas di krl saya kena gencet parah saya suka nggak semangat kerja. Kadang berangkat disiang-siangin, terus pulangnya dimalem-malemin. Hahaha.

Pas baru masuk semua orang kaget karena nggak ada yang tau dong kalau saya dateng tanggal itu. Reaksinya, "Oh, ini yang dari ITB itu??? Kirain nggak jadi dateng." Oke sip. Pantes ya pas bagi-bagi laptop kantor nama saya nggak ada yang berakibat saya pulang cepat di hari pertama. ??

Pas acara onboarding alias pengenalan gitu-gitu saya menang lombanya loh. Membanggakan kan. Lumayan ya hadiahnya dapet voucher produk Tiket.com.

Menang Lomba Tiket.com

Ini dia caption yang berhasil membujuk orang People at Tiket buat memenangkan saya. Hahaha.



Banyak amat acaranya People at Tiket tuh. Kemarin halal bi halal sampai dua kali. Yang pertama tukar kado, yang kedua ada lomba fashion lucu-lucuan. Wkwkwk. Terus sekarang lagi ada acara Bulan Olahraga dan Kesenian Tiket (Burket) yang isinya lomba-lomba buat memperingati ulang tahun Tiket.com sekaligus 17 Agustus. Gaya banget pokoknya, udah kayak class meeting anak-anak sekolahan aja. Terus saya dapet jersey Data Rangers padahal main kagak. Hahaha.

Jersey Data Rangers Tiket.com

Di tim data ada sebuah aturan tak tertulis, laptop kalau ditinggal-tinggal harus di-lock. Kalau nggak, harus mengisi celengan dengan uang 5 ribu rupiah. Akibatnya? Orang-orang berlomba-lomba buat ngelaporin satu sama lain kalau laptopnya nggak di-lock. Laptopnya difoto terus dikirim grup. Hahaha. Tapi ada yang sengaja menggocek dong. Lockscreen-nya diatur menggunakan gambar tampilan Nifi biar dikira nggak di-lock. Hahaha ngeselin.

Orang-orang DE punya bahasa aneh-aneh. Apache Spark = Apache Percikan. Script Python = Script Ular. Dan seterusnya.

Pas last day intern, ada acara farewell kecil-kecilan terus saya dikasih dua kado ini terus saya salting. Hahaha. Akhirnya aku punya boneka T-Man.

Kado Farewell

Terima kasih untuk kesempatan, sharing-sharing, guyonan aneh, dan semuanya. I learned a lot really.



UPDATE:
Hari ini, 23 Oktober 2019 akhirnya saya melaksanakan seminar kerja praktek yey. Berbekal ngebut seminggu menyelesaikan draft laporan sejak kelas KP pertama kali semester ini. Ngebut biar bisa ke Jakarta buat minta tanda tangan di laporan sekalian di form nilai yang lupa ditandatangani. Agak sedih ya ini, tapi nggak papa karena jadi ada motivasi kuat menyelesaikan laporan KP sehingga laporan saya cepet selesai. Wkwkwk. Bimbingan tiga kali terus langsung bisa seminar. Seminar tercepat ketiga di angkatan membanggakan nggak aku tuh? Hehehe. Deg-degannya setengah mampus padahal seminarnya cuma di depan dosen pembimbing aja sama mahasiswa. Gimana sidang tugas akhir ya yang ada pengujinya dan saya bakal dicecar? Tambah drama lagi kabel VGA proyektornya nggak bisa dicolok ke laptop sendiri, akhirnya pakai laptop temen, terus mati listrik dong pas saya lagi ngomong. ??

Tapi lega banget karena dua sks ini akhirnya berakhir yey. Dan yang penting lagi, di akhir seminar tetep bilang, "Mau kemana? Semua ada TIKETnya". Wkwkwk. Seminar ini juga tiket loh, tiket menuju gelar S.T. yuhu. ??

Sarjana Intern Data Engineer Tiket.com