چالش Data Sync 🔄💾
پیادهسازی همگامسازی دوطرفهی داده بسیار پیچیدهتر از چیزی بود که در ابتدا تصور میکردیم. دلیل اینکه نتوانستیم از راهکارهای موجودِ Change Data Capture (CDC) مانند Debezium استفاده کنیم اینها بود:
1️⃣ تبدیلهای پیچیده:
بسیاری از جدولهای legacy برای ساخت رکورد جدید نیازمند داده از چندین جدول در سیستم جدید بودند. این یک mapping سادهی یکبهیک —که ابزارهای CDC در آن عالی هستند— نبود. 🧩
2️⃣ اعمال Business Logic در فرآیند Sync:
فرآیند sync باید business ruleهای متعددی را در مرحلهی transformation اعمال میکرد. این فراتر از قابلیتهای ابزارهای replication معمول بود. ⚙️
3️⃣ نیازمندیهای دوطرفه (Bidirectional):
باید داده را در هر دو جهت همگام میکردیم، بدون آنکه دچار loop بینهایت شویم. سیستم legacy تا زمانی که برخی کامپوننتها مهاجرت نکرده بودند، همچنان source of truth باقی میماند. 🔁❗️
ما یک راهکار custom با استفاده از RabbitMQ برای انتقال پیام ساختیم. این راهکار برای نیازهای ما مناسب بود؛ اما درس بزرگ این است:
پیش از ساخت هر راهکار سفارشی، ابزارهای موجود را بهطور کامل ارزیابی کنید.
حتی اگر نتوانید آنها را تماموکمال استفاده کنید، از معماریها و الگوهای آنها چیزهای ارزشمندی خواهید آموخت. 🛠📘