فکر کنم اکثر ما با بازی "تلفن شکسته" آشنا هستیم. بازی ای که در آن یک جمله به نفر اول گفته می شود و این جمله نفر به نفر منتقل می شود تا به نفر آخر برسد. معمولاً جمله هر چقدر جلوتر می رود تغییر می کند و تبدیل به یک جمله خنده دار و متفاوت می شود. حالا همین اتفاق در نرم افزارهای در حال رشد که حجم زیادی داده دارند نیز می تواند اتفاق بیفتد. در شروع طراحی در ابتدا همه چیز خوب پیش می رود و داده ها را از منابع مختلف جمع آوری کرده و در دیتابیس ذخیره می کنیم. اما مشکل از جایی شروع می شود که هر سیستم مدل مربوط به خودش را از این داده ها می سازد. مثلاً وقتی داده ای را از یک سیستم به سیستم دیگر منتقل می کنیم به احتمال زیاد در هر بخش ساختار داده ها متفاوت می باشد/تغییر می کند. به عبارت دیگر هرچه تبدیل ها بیشتر باشد مفاهیم اصلی داده ها بیشتر تغییر می کند.
بعضی وقت ها اختلافی که بین ساختار و مفاهیم داده ها داریم زیاد می باشد. برای مثال دو سیستم را در نظر بگیرید که می خواهند با یکدیگر ادغام شوند. حالا هرکدام از این سرویس ها تعاریف و مدل های خاص خودشان را دارند. مثلاً ممکن است در یکی از آن ها تامین کنندگان(vendors) به عنوان مشتریان(clients) در نظر گرفته شده باشند. حالا همین تفاوت کوچک می تواند باعث شود که اطلاعات و تعاریف به شکل مداوم تغییر کرده و باعث مشکلات اساسی مانند افزایش هزینه ها, تصمیم گیری های اشتباه, ریپورت های غیر دقیق و... شود. برای حل این مشکل معمولاً یک سیستم برای تطبیق داده ها ایجاد می کنیم و مدام اطلاعات را بررسی و همگام می کنیم، یا به سمت Master Data Management می رویم که هدف آن هماهنگی و کیفیت داده ها می باشد.
راه حل دیگر استفاده از پلتفرم های استریمینگ مثل Kafka است. در اینجا پلتفرم ها مانند یک سیستم عصبی مرکزی عمل می کنند و تمامی برنامه ها را به یک Single Source of Truth متصل می کنند. با توجه به اینکه داده ها به صورت Immutable در لاگ ذخیره می شوند می توانیم در صورت نیاز یا بروز مشکل تغییرات را با استفاده از داده های اصلی انجام دهیم. در این رویکرد از تکنیک هایی مانند Command Sourcing، Event Sourcing و Lean Data استفاده می کنیم که کمک می کنند تا در صورت بروز مشکل تاثیرات آن را رفع کنیم.
در پایان, باید توجه داشته باشیم که برای مدیریت مشکلات مربوط به اختلاف داده ها باید به هم راستا بودن داده ها با ساختار و نیازهای مربوط به بیزینس توجه داشته باشیم. این مدیریت فقط یک چالش فنی نمی باشد بلکه به تعیین استانداردهای مشترک, هماهنگی مداوم بین تیم ها و ایجاد زیرساخت های مناسب نیز نیاز دارد. همچنین باید از همان ابتدا با طراحی درست و استفاده از راه حل های مناسب از بروز این مشکلات جلوگیری کنیم چرا که داده ها یکی از مهم ترین دارایی های هر نرم افزار و بیزینس می باشند.