Kembali ke Studi Kasus

Revamp Transaksi Konsultasi

Tech Lead - Initiative
Team: 3 Core · 10+ Collab
2024-01 - 2024-06
Revamp Transaksi Konsultasi

Technology Stack

GolangMongoDBRedisDockerJenkins

Revamp Transaksi Konsultasi

Ringkasan

Perombakan total alur pembuatan pengiriman, memigrasikan logika pricing dan kalkulasi kritis dari frontend ke backend Golang yang aman dan berkinerja tinggi. Inisiatif ini mengeliminasi kerentanan kalkulasi dan memastikan integritas data di semua jenis transaksi.

Dampak Proyek

Konteks & Kebutuhan

Alur pembuatan pengiriman yang ada memiliki kerentanan kritis:

  • Kalkulasi Sisi Klien: Pricing dihitung di frontend, rentan manipulasi
  • Hasil Tidak Konsisten: Hasil kalkulasi berbeda antara web dan mobile
  • Tidak Ada Audit Trail: Sulit melacak bagaimana harga final ditentukan
  • Masalah Performa: Kalkulasi kompleks memperlambat user experience

Kebutuhan Bisnis:

  • Eliminasi kerentanan manipulasi pricing
  • Konsistensi 100% di semua platform
  • Waktu respons di bawah satu detik
  • Audit trail lengkap untuk semua transaksi

Arsitektur

Alur Transaksi Aman

Tech Stack:

KomponenTeknologiTujuan
Calculation EngineGolangKalkulasi berkinerja tinggi, type-safe
DatabaseMongoDBPenyimpanan dokumen fleksibel untuk semua transaksi
CachingRedisCaching data rate, manajemen session
ContainerDockerDeployment terkontainerisasi
CI/CDJenkinsPipeline build dan deployment otomatis

Keputusan Kunci & Tradeoffs

Mengapa Kalkulasi di Backend?

PendekatanKelebihanKekurangan
Frontend (Lama)Feedback UI cepatRentan, tidak konsisten
Backend (Baru)Aman, autoritatifMemerlukan network call

Solusi Kami: Pendekatan hybrid dengan verifikasi backend

Memigrasikan semua kalkulasi pricing dari JavaScript sisi klien ke backend Golang yang aman, mengeliminasi kemungkinan manipulasi harga dan memastikan hasil konsisten di semua platform.

Mengapa Golang?

Memilih Golang untuk calculation engine karena:

  1. Performa: Bahasa compiled dengan dukungan concurrency excellent
  2. Type Safety: Strong typing mencegah error kalkulasi saat compile
  3. Standard Library: Dukungan built-in untuk kalkulasi desimal presisi
  4. Deployment: Binary tunggal, mudah di-deploy dan scale

Highlight Implementasi

1. Calculation Engine

Membangun calculation service yang robust dengan:

  • Format Harga Konsisten: Library penanganan desimal yang terstandarisasi untuk memastikan representasi harga seragam di semua jenis transaksi
  • Rule Engine: Aturan pricing yang bisa dikonfigurasi tanpa perubahan kode
  • Rate Versioning: Preservasi rate historis untuk audit

2. Validation Layer

Validasi input komprehensif:

  • Limit Berat: Constraint per jenis layanan
  • Kalkulasi Jarak: Verifikasi geocoding sisi server
  • Ketersediaan Layanan: Pengecekan rute real-time

3. Audit System

Traceability transaksi lengkap:

  • Setiap kalkulasi dicatat dengan konteks penuh
  • Record audit immutable di database terpisah
  • Resolusi dispute dengan data historis

Hasil & Metrik

Perbandingan Sebelum vs Sesudah

Pencapaian Utama:

  • Mengeliminasi 100% kerentanan manipulasi pricing
  • Mempertahankan response time konsisten di bawah 1 detik — andal dan aman dengan semua logika dipindah ke BE
  • Zero dispute pricing akibat error kalkulasi
  • Audit trail lengkap untuk kepatuhan regulasi
  • Pricing konsisten di web, iOS, dan Android

Kepemimpinan Tim

Memimpin langsung tim inti 3 engineer, dengan kolaborasi lintas fungsi bersama 10+ stakeholder — mobile developer, QA engineer, Product Manager, dan Product Owner — untuk memastikan migrasi backend selaras dengan kebutuhan di semua platform dan tim.

  • Mendesain dan mendokumentasikan arsitektur baru
  • Mengimplementasikan calculation service Golang
  • Migrasi transaksi yang ada tanpa downtime
  • Menetapkan monitoring dan alerting di semua platform

Yang Akan Saya Tingkatkan

Perbaikan yang direncanakan:

  1. Update Rate Real-time: Perubahan rate push-based tanpa redeployment
  2. Deteksi Fraud ML-based: Identifikasi pola mencurigakan secara otomatis
  3. Dukungan Multi-currency: Kalkulasi exchange rate dinamis
  4. Load Testing: Benchmark performa lebih komprehensif

Pelajaran

"Kalkulasi security-critical tidak boleh mempercayai input klien. Selalu verifikasi di backend, meskipun terlihat redundant."

Proyek ini memperkuat pentingnya "trust but verify" - meskipun kami tetap menampilkan estimasi harga di frontend untuk UX, kalkulasi autoritatif selalu terjadi di server.