Advertisement
aldikhan13

Summary

Apr 29th, 2025 (edited)
175
0
6 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Ok baik, saya akan menjelaskan beberapa pengalaman saya terkait backend engineering di tempat saya terakhir berkerja yaitu broom.id. Jadi ketika saya di broom.id saya terlibat dibeberapa service yang mereka miliki seperti dibawah ini:
  2.  
  3. 1. bff-service
  4. 2. user-service
  5. 3. scheduler-service
  6. 4. showroom-service
  7. 5. taktis-service
  8. 6. broom-core-service
  9. 7. payment-out-service
  10. 8. payment-service
  11. 9. buyback-service
  12. 10. inventory-service
  13. 11. Dan lainnya
  14.  
  15.  
  16. # CASE
  17.  
  18. Tapi yang menurut saya yang paling berkesan adalah ketika memindahkan proses sinkronisasi data dari metabase ke database showroom, dikarenakan proses sinkronisasi sebelumnya ini berjalan menggunakan scheduler setiap jam 2 pagi dan data showroom yang kita miliki itu kurang lebih di metabase ada 900+ showroom aktif dan ratusan buyback didalamnya, sebelum proses sinkronisasi di pindahkan menjadi manual yang dimana bisa di trigger melalui internal tools (gearbox), proses sinkronisasi tersebut berjalan mulus dikarenakan trafik pada jam 2 pagi sangat rendah dan pengunaan cpu dan memory juga tidak terlalu signifikan. Tetapi suatu hari ada permintaan dari tim operasional agar sinkronisasi showroom bisa dilakukan secara manual melalui internal tools (gearbox) dikarenakan ada kebutuhan untuk approval limit showroom ceiling, Usut punya usut katakanlah ketika fitur tersebut sudah berhasil di delivery terkait proses sinkronisasi showroom dari metabase ke database showroom, issue yang muncul adalah ketika tombol di trigger di tekan oleh tim ops duar showroom-service mati dikarenakan pengunaan cpu dan ram menaik pesat jika saya pantau dari datadog, impactnya adalah customer tidak bisa melakukan buyback dikarenakan service showroom mati.
  19.  
  20. # SOLUTION
  21.  
  22. Solusi untuk menghandle issue ini saya membuat sebuah child_process untuk mengisolasi process sinkronisasi data menjadi proses terpisah dari main proses, bisa dibilang menjadi child proses jadi antara main pid dan child pid itu berbeda, jadi ketika proses sinkronisasi berjalan itu tidak akan menggangu main prosesnya dan saya juga menambahkan extra penjagaan yang dimana user hanya bisa melakukan proses sinkroniasi sebanyak 1x, dan bisa melakukan proses sinkronisasi kembali ketika proses sinkronisasi sebelumnya itu selesai, jadi saya melakukan locking menggunakan redis untuk menyimpan keynya.
  23.  
  24.  
  25. Dan saya juga ada beberapa enahnce dan pegerjaan critical fiture lainnya yang saya kerjakan di broom contoh seperti.
  26.  
  27. - Enhance setiap service dengan menambahkan graceful shutdown dan clustering
  28. - Auto disbursement transaksi taktis
  29. - Enahnce setiap service ketika terjadi rejection service tidak langsung terminated
  30. - Dan lainnya
  31.  
  32. Mungkin sedikit itu saja yang bisa saya jelaskan
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement