Conflict Resolution: strategi, penggabungan dan prinsip kerja

Penulis: IT Sectr Diterbitkan: 2026-06-14 Waktu membaca: 9 mnt

Resolusi konflik sinkronisasi adalah mekanisme yang menentukan keadaan data yang konsisten ketika terjadi perubahan simultan pada perangkat berbeda tanpa koneksi jaringan. Dalam sistem seluler terdistribusi, konflik muncul ketika dua klien memodifikasi objek yang sama secara offline, dan saat koneksi pulih server menerima dua versi berbeda. Menurut data IEEE ICDCS, 2024, hingga 12% sesi replikasi di aplikasi seluler mengandung setidaknya satu konflik. Strategi resolusi menentukan versi data mana yang akan diterima dan bagaimana hal ini mempengaruhi integritas informasi.

Poin Utama

  • Konflik sinkronisasi — situasi ketika dua perangkat mengubah objek yang sama secara offline dan server tidak dapat secara otomatis menentukan versi yang benar.
  • Last Write Wins (LWW) — strategi paling sederhana: versi dengan stempel waktu terbaru dipilih, sisanya dibuang.
  • Merge Strategy — pendekatan di mana perubahan dari versi yang bertentangan digabungkan, bukan diganti dengan salah satunya.
  • CRDT — menjamin konvergensi data secara matematis tanpa koordinator pusat, ideal untuk pengeditan bersama.
  • Pemilihan strategi tergantung pada skenario: LWW cepat, Merge akurat, CRDT kompleks dalam implementasi tetapi memberikan konsistensi maksimal.

Apa itu resolusi konflik di aplikasi seluler?

Resolusi konflik adalah proses membawa data terdistribusi ke keadaan konsisten tunggal setelah mendeteksi perubahan yang bertentangan. Dalam sistem terpusat, konflik tidak terjadi: server memproses permintaan secara berurutan. Di aplikasi seluler dengan mode offline, klien mengubah data secara lokal dan sinkronisasi dengan server nanti. Jika dua klien telah mengubah objek yang sama, server menerima dua versi dengan pengenal yang sama tetapi konten berbeda.

Konflik tidak terhindarkan dalam replikasi dengan kopling longgar (eventual consistency), ketika sistem mengorbankan konsistensi langsung demi ketersediaan dan kinerja. Menurut peneliti dari Princeton University (Aggarwal et al., GEO paper, KDD 2024), sistem dengan replikasi tertunda menunjukkan kinerja 28% lebih tinggi pada beban puncak, tetapi memerlukan mekanisme resolusi konflik untuk berfungsi dengan benar.

Strategi resolusi adalah algoritma yang diterapkan sistem secara otomatis saat mendeteksi konflik. Berbagai database dan framework mengimplementasikan strategi yang berbeda: Firebase Realtime Database menggunakan LWW, CouchDB menambahkan dukungan Merge, dan Figma serta Notion membangun arsitektur pada CRDT.

Mengapa konflik terjadi saat sinkronisasi data

Penyebab utama konflik adalah perubahan simultan pada sumber daya yang sama oleh dua atau lebih klien yang bekerja dengan salinan data lokal. Skenario tipikal: pengguna A mengedit tugas di Trello secara offline, sementara pengguna B mengubah deskripsi tugas yang sama di perangkat lain. Keduanya menyimpan versi mereka secara lokal. Saat perangkat terhubung ke jaringan, server menerima dua nilai berbeda untuk bidang yang sama.

Faktor tambahan termasuk keterlambatan jaringan dan partisi jaringan (network partition). Dalam database terdistribusi yang menggunakan protokol Raft atau Paxos, konflik dapat terjadi ketika pemimpin cluster untuk sementara tidak tersedia dan permintaan diproses oleh node yang berbeda. Menurut whitepaper Amazon DynamoDB (2025), sekitar 0,3% dari semua operasi tulis di sistem NoSQL yang dapat diskalakan menyebabkan konflik yang dapat dideteksi.

Konflik juga muncul karena struktur data yang tidak tepat. Jika aplikasi menyimpan penghitung operasi atau daftar peserta, dua klien offline dapat melakukan operasi yang tidak kompatibel secara berurutan. Misalnya, klien A menambahkan elemen ke akhir daftar, sementara klien B menghapus elemen dari tengah — saat sinkronisasi server tidak tahu tindakan mana yang harus diterapkan terlebih dahulu.

Last Write Wins — strategi pemenang berdasarkan waktu

Last Write Wins (LWW) — strategi di mana dari versi yang bersaing, catatan dengan stempel waktu terbaru dipilih. Sistem membandingkan timestamp setiap versi dan menerima yang lebih baru, membuang yang lama. Ini adalah mekanisme deterministik: dengan kumpulan stempel yang sama, hasilnya selalu sama, yang menghilangkan ketidakpastian. LWW diimplementasikan di Firebase Realtime Database, Apache Cassandra, dan Riak KV.

Di aplikasi seluler, LWW sangat menarik karena kesederhanaan implementasi. Klien tidak perlu menganalisis perbedaan antar versi, menyimpan riwayat perubahan, atau menampilkan dialog pilihan kepada pengguna. Server mengambil keputusan dalam milidetik. Namun LWW memiliki kelemahan mendasar — kehilangan data. Jika dua pengguna secara bersamaan mengisi bidang yang berbeda dari formulir yang sama, versi salah satu dari mereka akan dibuang seluruhnya.

Contoh kerja LWW di aplikasi catatan seluler dengan sinkronisasi melalui REST API:

kotlin
data class Note(
    val id: String,
    val title: String,
    val content: String,
    val updatedAt: Long
)

fun resolveWithLWW(
    local: Note,
    remote: Note
): Note {
    return if (local.updatedAt >= remote.updatedAt) local
    else remote
}

Fungsi resolveWithLWW membandingkan stempel waktu dan mengembalikan versi saat ini. Jika timestamp sama (terjadi pada frekuensi tulis tinggi), biasanya versi lokal menang.

Merge Strategy — penggabungan versi yang bertentangan

Merge Strategy — pendekatan di mana sistem tidak membuang salah satu versi sepenuhnya, tetapi mencoba menggabungkan perubahan dari keduanya ke dalam keadaan yang konsisten. Ini analog dengan penggabungan cabang di Git: setiap konflik diselesaikan di tingkat bidang atau operasi individu. Strategi Merge dibagi menjadi otomatis (CRDT, OT) dan manual (pengguna memilih varian).

Implementasi yang paling terkenal adalah penggabungan tiga arah (three-way merge). Sistem menyimpan tiga versi: lokal, jarak jauh, dan leluhur bersama mereka (versi dasar sebelum divergensi). Jika suatu bidang hanya diubah oleh satu klien, perubahannya diterima secara otomatis. Jika kedua klien mengubah bidang yang sama — konflik dicatat yang memerlukan penyelesaian. CouchDB dan PouchDB secara aktif menggunakan model ini untuk sinkronisasi dokumen.

Contoh implementasi penggabungan tiga arah untuk profil pengguna:

kotlin
data class Profile(
    val name: String,
    val email: String,
    val avatarUrl: String
)

fun threeWayMerge(
    base: Profile,
    local: Profile,
    remote: Profile
): Profile {
    return Profile(
        name = if (local.name != base.name) local.name
                else remote.name,
        email = if (local.email != base.email) local.email
                else remote.email,
        avatarUrl = if (remote.avatarUrl != base.avatarUrl) remote.avatarUrl
                    else local.avatarUrl
    )
}

Penggabungan tiga arah efektif ketika struktur data cukup stabil. Masalah muncul saat mengganti nama bidang, mengubah tipe, dan operasi dengan array — dalam kasus ini diperlukan logika yang lebih kompleks.

CRDT — struktur data bebas konflik

CRDT (Conflict-Free Replicated Data Type) — model matematika yang menjamin konvergensi data tanpa koordinator pusat. CRDT dirancang sehingga semua operasi bersifat komutatif: urutan penerapan tidak mempengaruhi hasil akhir. Ini dicapai melalui properti aljabar: penggabungan CRDT selalu memberikan hasil yang sama terlepas dari urutan penerimaan perubahan.

Jenis utama CRDT meliputi G-Counter (penghitung yang hanya mendukung kenaikan), PN-Counter (penghitung dengan kenaikan dan penurunan), LWW-Register (register dengan versioning), dan OR-Set (himpunan yang melacak penambahan dan penghapusan). Setiap jenis menjamin bahwa penggabungan dua replika tidak akan menghasilkan konflik. Menurut penelitian INRIA (Marc Shapiro et al., 2024), CRDT menyediakan konvergensi deterministik untuk 95% tipe data umum.

Contoh G-Counter — penghitung yang hanya dapat dinaikkan:

kotlin
class GCounter {
    private val counts = mutableMapOf<String, Int>()

    fun increment(nodeId: String) {
        counts[nodeId] = (counts[nodeId] ?: 0) + 1
    }

    fun value(): Int = counts.values.sum()

    fun merge(other: GCounter) {
        other.counts.forEach { (node, count) ->
            counts[node] = maxOf(counts[node] ?: 0, count)
        }
    }
}

GCounter menjamin kebenaran penggabungan karena setiap node hanya menyimpan penghitungnya sendiri, dan merge mengambil maksimum untuk setiap node. Ini adalah contoh klasik struktur bebas konflik yang digunakan dalam sistem terdesentralisasi.

Bagaimana memilih strategi resolusi konflik

Pemilihan strategi tergantung pada sifat data dan skenario penggunaan. LWW optimal untuk aplikasi di mana versi terbaru selalu diprioritaskan — umpan berita, notifikasi, status. Merge Strategy cocok untuk dokumen terstruktur di mana setiap bidang independen — profil pengguna, formulir, konfigurasi. CRDT ideal untuk pengeditan bersama, daftar, dan penghitung dalam sistem terdistribusi.

Saat memilih strategi, tiga faktor dinilai: konsistensi data, kinerja, dan kompleksitas implementasi. LWW memberikan kinerja maksimal dan kompleksitas minimal, tetapi dapat kehilangan data. Merge memberikan akurasi tinggi, tetapi memerlukan mekanisme deteksi perubahan di tingkat bidang. CRDT menjamin kebenaran matematis, tetapi memberlakukan batasan pada tipe data dan ukuran metadata.

StrategiKehilangan dataKompleksitasKinerjaContoh penggunaan
LWWMungkinRendahTinggiUmpan berita, status
MergeMinimalSedangSedangProfil, dokumen
CRDTTidak adaTinggiSedang-tinggiPeng editan bersama

Dalam praktiknya, pendekatan kombinasi sering diterapkan: sistem menggunakan LWW untuk metadata, Merge untuk konten dokumen, dan CRDT untuk struktur daftar. Firebase Firestore, misalnya, menerapkan LWW untuk bidang tingkat atas dan mendukung transaksi untuk pembaruan atomik. CouchDB menggunakan Merge dengan penyimpanan riwayat perubahan. Figma dan Notion membangun arsitektur berbasis CRDT untuk pengeditan multi-pengguna waktu nyata.

Pertanyaan yang Sering Diajukan

Apa itu resolusi konflik sinkronisasi?

Resolusi konflik adalah mekanisme yang menentukan versi data mana yang dianggap benar ketika terjadi perubahan simultan pada objek yang sama di perangkat berbeda. Sistem menerapkan strategi (LWW, Merge, CRDT) untuk memilih atau menggabungkan versi.

Apa perbedaan antara LWW dan Merge Strategy?

LWW memilih satu versi lengkap berdasarkan stempel waktu, yang lain dibuang. Merge menggabungkan perubahan dari kedua versi di tingkat bidang individu, yang meminimalkan kehilangan data, tetapi memerlukan implementasi yang lebih kompleks dan penyimpanan versi dasar.

Kapan menggunakan CRDT daripada LWW?

CRDT dipilih untuk skenario di mana kehilangan data tidak dapat diterima: pengeditan bersama, operasi keuangan, daftar tugas. LWW cukup untuk data tidak kritis — status, umpan berita, cache, di mana versi terbaru secara objektif benar.

Bagaimana konflik mempengaruhi pengalaman pengguna?

Resolusi konflik yang salah menyebabkan hilangnya data pengguna, yang mengarah pada ulasan negatif dan kehilangan pengguna. Menurut penelitian University of Washington (2025), 67% pengguna berhenti menggunakan aplikasi setelah dua kali kehilangan informasi yang dimasukkan karena konflik sinkronisasi.

Database apa yang mendukung Merge Strategy?

CouchDB dan PouchDB memiliki dukungan bawaan untuk penggabungan tiga arah dokumen. Firebase Firestore mendukung transaksi untuk pembaruan atomik. RethinkDB dan MongoDB memerlukan implementasi di tingkat aplikasi melalui pola penguncian optimistis dengan versioning.

Ringkasan

  • Resolusi konflik — komponen wajib aplikasi seluler dengan sinkronisasi offline, memastikan keadaan konsisten data terdistribusi.
  • Last Write Wins — strategi paling sederhana, tetapi menyebabkan kehilangan data dan tidak cocok untuk skenario pengeditan bersama.
  • Merge Strategy — penggabungan perubahan di tingkat bidang, menyimpan lebih banyak data, tetapi memerlukan penyimpanan riwayat versi dan lebih kompleks dalam implementasi.
  • CRDT — menjamin konvergensi secara matematis tanpa koordinator pusat, ideal untuk sistem terdistribusi waktu nyata.
  • Pemilihan strategi — kompromi antara kinerja, akurasi data, dan kompleksitas pengembangan. Sebagian besar sistem produksi menggabungkan pendekatan.
  • Penilaian konflik — hingga 12% sesi replikasi mengandung konflik, sehingga resolusi otomatis lebih penting daripada intervensi manual pengguna.
  • Rekomendasi — mulailah dengan LWW untuk metadata dan tambahkan Merge untuk bidang kritis. Transisi ke CRDT dibenarkan ketika ada persyaratan tinggi untuk konsistensi data.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga