Pada tahun 2017, Tiket pun memasuki babak baru dalam dunia tech yakni kami mulai melakukan pengaplikasian microservice. Waktu itu setiap engineer sudah diminta untuk membaca clean code, microservice pattern, domain driven design dan banyak literatur lain untuk mendukung perancangan dan pembuatan microservice. Tidak hanya itu, para managers pun sudah melakukan meeting yang tidak henti-henti dan juga sempat mengajak para lead (waktu itu cuma sekali doank diajak) untuk merancang microservice yang akan kami buat pada tahun 2017. Setelah melalui meeting yang cukup panjang dan tanpa henti akhirnya para managers pun membuat blueprint yang disebut dengan nama The Port. Perjalanan panjang tim tech Tiket melakukan migrasi dari monolith ke microservice pun dimulai.
Grand Design The Port:
The Port sendiri memiliki filosofi bahwa microservice merupakan bagian-bagian kecil yang saling terhubung antara satu dengan yang lain. Saat itu para managers tidak hanya merancang dari sisi design arsitektur saja, melainkan juga memikirkan bagaimana agar apa yang telah dirancang bisa tercapai. Untuk mencapai tujuan tersebut terdapat beberapa requirement yang harus dipenuhi terlebih dahulu yakni:
- Man Power.
Diperlukan jumlah engineer yang cukup banyak agar bisa membuat ini tercapai. Netflix pada saat melakukan migrasi ke microservice, mereka lakukan dengan jumlah engineer sebanyak 600. - Prioritisasi.
Ketika melakukan migrasi ke microservice, perusahaan harus menyiapkan engineer yang tadinya dipakai untuk mendeliver project menjadi fokus untuk melakukan migrasi. - Waktu.
Hampir sama dengan prioritisasi, dibutuhkan waktu yang cukup lama agar bisa melakukan migrasi dengan baik dari monolith ke microservice. Sebagai gambaran, Netflix membutuhkan waktu kurang lebih 2 tahun untuk memindahkan secara sempurna sistem mereka dari monolith ke microservice.
Hal ini tentu saja didiskusikan oleh Ko Nat selaku CTO pada saat itu dengan CEO Tiket yakni Bapak Jonggi Manalu yang selalu dibilang Ko Nat sebagai seorang veteran (gatau pernah ikut perang apa gimana). Yang menarik disini adalah response dari Opung (panggilan orang Tiket kepada Bapak Jonggi Manalu) yang mengatakan bahwa beliau akan memberikan sekitar 90 orang engineer dan memberikan waktu untuk tim tech selama kurang lebih 9 bulan dalam mengerjakan project the Port ini. Setelah mendapatkan keputusan dari Opung, Ko Nat pun segera menyampaikan titah ini kepada seluruh tim tech saat itu. Tentu saja ini sungguh sangat membingungkan karena keadaannya saat itu adalah tim tech kami sendiri jumlah nya hanya 42 orang dan itu juga sudah termasuk QA, PMO dan support, jadi bisa dibilang jumlah engineernya jauh lebih sedikit lagi. Tidak hanya itu, kami pun harus menyelesaikan migrasi microservice dalam waktu 9 bulan. Netflix saja butuh 2 tahun untuk melakukan migrasi dari monolith ke microservice dengan jumlah engineer 600 orang, nah ini cuma 90 orang (pengennya begitu) dan harus selesai 9 bulan. Gw kadang suka ga paham dengan cara pikir orang tua ini karena sering diagung-agungkan di kantor tapi keputusannya tidak pernah memihak terhadap tech. Beliau selalu berpikir bahwa Tiket adalah perusahaan travel dan bukan perusahaan tech. Oleh karena itu beliau menganggap bahwa tech adalah bagian supporting dan bukan core dari perusahaan tersebut.
Mengetahui bahwa requirement yang disampaikan tidak dapat dipenuhi dan kocaknya adalah kami harus mencoba dengan tim yang ada, maka pengerjaan microservice pun dimulai. Gw pun masih cukup kagum dengan usaha tim kami waktu itu karena dengan jumlah engineer kurang dari 10 orang, kami ingin membangun sesuatu yang memiliki fundamental yang baik saat itu. Fundamental yang dimaksud adalah sebagai berikut.
- Membangun pipeline CI/CD.
Mungkin kedengaran lucu karena harusnya ini sudah menjadi standard untuk development yang baik. Tetapi pada masa jaman jahiliyah, ga ada yang ngurusin beginian. Pada waktu membangun microservice, kami pun memikirkan bagaimana agar development itu cepat dan juga teratur. Dibangun lah pipeline CI menggunakan travis. - Menggunakan unit test.
Jika pada microservice payment yang gw buat waktu itu masi ngeles untuk tidak menggunakan unit test, kali ini pak Faren meminta wajib menggunakan unit test dan tidak main-main, agar bisa lolos ke development maka harus lolos 90% dulu unit testnya.
Untuk tech stack yang digunakan saat itu adalah:
- Programming Language: NodeJS.
- Framework: Express
- Database: MySQL Percona.
- Cache: Redis.
- Message Broker: RabbitMQ
Kami pun waktu itu sampai mengundang orang yang memang ahli NodeJS yakni Kurniawan Junaidy atau kami panggil pak Iwan. Beliau mengatakan pernah melakukan migrasi microservice dari monolith menggunakan NodeJS. Tentunya kami pun ingin mencuri ilmunya karena di Tiket sendiri memang tidak ada yang paham bagaimana microservice berinteraksi satu dengan yang lain. Yang menarik disini adalah pada saat itu kami sudah mengerjakan microservice kurang lebih 2 bulan lamanya dan bentuknya sendiri sudah kelihatan hanya saja ketika pak Iwan bergabung, beliau mengatakan bahwa pattern yang digunakan kurang tepat sehingga kami pun merombak ulang semuanya. Jadi bisa dibilang pekerjaan kami 2 bulan tidak ada gunanya LOL.
Microservice yang pertama kami bangun saat itu adalah microservice car rental (penyewaan mobil). Mengapa car rental? karena secara nominal transaksi sangat kecil, bahkan sehari belum tentu ada transaksi sehingga resiko kegagalan microservice tersebut bisa dibilang memiliki dampak yang sangat minim. Selain itu juga, car rental adalah produk yang paling sedikit fiturnya sehingga ketika kami membangun yang baru, kami ingin agar fitur yang dimiliki microservice tersebut juga lebih banyak ketimbang daripada monolith. Sayangnya microservice car ini tidak pernah terwujud karena pada akhirnya Tiket pun diakusisi oleh Djarum melalui Blibli.com. Ketika itu, semua prioritas awal yang ingin memindahkan monolith ke microservice diubah sehingga mendeliver lebih banyak fitur ke production. Blue print ini pun berakhir hanya menjadi blue print saja dan tidak pernah terwujud (jadi sih, tapi ga sesuai blue print). Padahal kalau ini jadi, gw yakin bakal keren banget.
Kisah berikutnya gw akan bercerita mengenai akusisi Tiket oleh Blibli.com yang mengubah pola kerja di tim tech. Dibalik cerita tersebut terdapat Alpha dan Beta Investor yang hanya sebagian orang saja yang tahu di tim tech.