Kolom Tekno

Membangun Sistem Skor Olahraga Real-Time via DynamoDB dan WebSocket

Ringkasan

  • Aplikasi Scoring AI menghadirkan papan skor olahraga waktu nyata yang disinkronisasi dari berbagai perangkat di pinggir lapangan maupun genggaman penonton.
  • Sistem ini memakai arsitektur terdistribusi berbasis DynamoDB dan WebSocket untuk menekan latensi pembaruan skor secara instan.

Aplikasi Scoring AI menawarkan solusi papan skor pertandingan olahraga yang dipicu oleh perintah suara dan dapat diakses dari berbagai perangkat secara bersamaan. Pemain cukup memulai pertandingan, membagikan tautan, lalu mengontrol skor dari tablet pinggir lapangan, ponsel penonton, maupun layar dinding tanpa perlu menekan tombol penyegaran.

Tantangan utamanya bukan sekadar menambah angka ketika sebuah tim mencetak poin. Ketika aplikasi web harus berjalan di tablet pinggir lapangan, ponsel penonton, dan layar lebar sekaligus dengan kontrol suara dan sentuhan, arsitektur di baliknya membutuhkan perhitungan yang jauh lebih rumit dari fiturnya yang terlihat sederhana.

Tim pengembang menyadari bahwa data pertandingan secara fundamental berbeda dari data bisnis di sekitarnya. Sebuah pertandingan hanya berlangsung sekitar satu jam, namun pembaruannya terjadi sangat cepat, bahkan bisa beberapa kali dalam satu detik saat rally berlangsung, dan harus dibaca oleh banyak penonton secara bersamaan.

Setelah pertandingan usai, data tersebut diarsipkan dan jarang diakses lagi. Pendekatan yang diambil memisahkan penyimpanan menjadi dua jalur: jalur panas (hot path) menggunakan DynamoDB untuk status pertandingan langsung, dan jalur dingin (cold path) menggunakan PostgreSQL untuk seluruh kebutuhan lainnya.

Pada jalur panas, DynamoDB menyediakan tulisan dengan latensi milidetik tunggal serta mekanisme penguncian optimistik untuk mencegah pembaruan skor bersamaan. Setiap rekamannya memuat kolom versi sebagai kunci pengaman. Sementara itu, PostgreSQL melalui Kysely menampung profil pengguna, langganan, riwayat pembayaran, dan arsip dengan dua puluh tabel bercabang relasi kompleks.

Pemisahan arsitektur ini memberikan pelajaran berharga bagi ekosistem startup teknologi di Indonesia. Banyak pengembang lokal kerap terjebak dalam pola monolitik yang menggunakan satu basis data untuk seluruh kebutuhan, sehingga menimbulkan kemacetan saat traffic memuncak pada fitur real-time seperti live streaming skor atau lelang online.

Di sisi lain, pendekatan decoupled system ala Scoring AI memungkinkan penambahan konsumen data baru hanya dengan menulis fungsi pemroses tanpa mengganggu sistem utama. Hal ini relevan bagi perusahaan rintisan olahraga Tanah Air yang mulai mengembangkan produk serupa untuk bulu tangkis atau sepak bola tingkat komunitas.

Komunikasi antarsistem dilakukan melalui DynamoDB Streams. Saat pertandingan selesai, pelanggan aliran data tersebut mengambil perubahan dan mengarsipkannya ke tabel match_history di PostgreSQL. Desain ini menjaga jalur panas tetap cepat dan jalur dingin tetap mudah ditanyakan (query).

Salah satu pengembang yang terlibat dalam proyek ini menjelaskan bahwa tidak ada satu pun orang yang memonopoli seluruh rancangan. "Saya berpartisipasi di sebagian besar area kecuali integrasi pembayaran yang ditangani developer lain," ujarnya. Kecantikan desain ini terletak pada pemutusan hubungan langsung antara endpoint pembaruan skor, sistem siaran, dan arsip.

Endpoint REST hanya bertugas menulis ke tabel DynamoDB dengan penguncian optimistik dan pengecekan idempotensi. Di belakang layar, DynamoDB Stream memicu dua fungsi Lambda terpisah: satu untuk menyiarkan skor via WebSocket API Gateway ke penonton, dan lainnya untuk mengarsipkan ke VPC PostgreSQL yang tidak dapat diakses publik. Koneksi WebSocket disimpan dengan masa hidup (TTL) 24 jam agar entri usang terhapus secara otomatis.

Mesin penilaian sendiri sengaja ditempatkan di frontend sebagai modul TypeScript murni yang hanya memproses status dan aksi tanpa panggilan API. Keputusan ini diambil karena bagian penilaian adalah yang paling sensitif terhadap latensi; jika ketukan layar membutuhkan waktu lebih dari seratus milidetik, pengalaman akan terasa lambat.

Modul tersebut mendukung empat struktur olahraga: rally, sideout, tenis, dan pickleball. Bagian paling halus adalah penanganan match point dengan jendela konfirmasi delapan detik. Jika tim sama mencetak poin lagi dalam rentang itu, kemenangan terkunci; jika lawan mencetak poin, laga berakhir. Ke depan, tren memindahkan logika bisnis krusial ke sisi klien guna menghilangkan latensi perjalanan bolak-balik akan semakin dominan di aplikasi olahraga real-time.

Mengapa Ini Penting

Pendekatan pemisahan jalur data panas dan dingin (hot/cold path) menjadi krusial bagi startup Indonesia yang ingin menghindari biaya infrastruktur tinggi saat menangani lonjakan traffic real-time. Mengadopsi pola decoupled melalui event streaming seperti DynamoDB Streams memungkinkan tim lokal bergerak gesit tanpa mengorbankan performa basis data relasional mereka. Lebih jauh lagi, memindahkan logika skor ke sisi klien menawarkan blueprint bagi aplikasi olahraga komunitas di daerah dengan konektivitas internet tidak stabil. Strategi ini menekan beban server sekaligus menjaga pengalaman pengguna tetap responsif meski latensi jaringan buruk.

Sumber Asli
Dev.to
Tanggal
15 Juli 2026
Waktu Baca
4 menit