بهترین کد کدی هست که نوشته نشود.(قسمت اول)
در این مقاله من تجربه خودم رو راجب سیستم های Distributed و Real-time نوشته ام امیدوارم که براتون مفید باشه.
حدود یک سال و نیم پیش من مسئله ای داشتم برای انتقال داده های بزرگ از یک دیتابیس RDBMS به چندین دیتابیس Schema less به صورت لحظه ای و با کمترین قطعی و دیتایی هم که داشت منتقل میشد باید روش یک سری عملیات انجام میشد (Aggregations) و به صورت هدفمند روی دیتابیس های مقصد نوشته میشد و اپلیکیشن های جدید هم این دیتا های Aggregated شده رو از این دیتابیس های جدید میخوندند و دیتا رو نشون میدادن .
در ابتدا من شروع کردم به بررسی و اولین گزینه ای که برای پیاده سازی بود ست کردن Trigger ها روی دیتابیس مبدا بود و انجام عملیات بعد از call شدن اون Trigger ها .
مشکلی که وجود داشت باید برای تک تک Operation ها روی هر Table کد مینوشتم در لایه دیتابیس و این پیچیدگی دیتابیس اصلی رو میبرد بالا
و من به این باور رسیده بودم قبلا که
بهترین کد کدی هست که نوشته نشود
پس شروع کردم به جستجو و تحقیق و با شرکت Confluent اشنا شدم . در یک سال و نیم اخیر من حدود ۸ تا از ایونت های شرکت Confluent رو حضور داشتم آخرینش هم Kafka Summit Europe 2021 که چند هفته پیش برگزار شد. و من اطلاعاتی راجب سیستم های Distributed Mode ها و Event Driven Application ها کسب کردم و موازی با این کنفرانس ها شروع به یادگیری ، تحقیق و پیاده سازی این سیستم ها کردم و اون مسئله ای که من داشتم با کمترین پیچیدگی ، با کمترین قطعی (بالاترین uptime) و نوشتن کمترین کد به همراه ویرایش داده ها در بین مسیر به دیتابیس های مقصد مینوشتم.
شکل زیر نمای کلی از کاری که من میخواستم انجام بدم رو نشان میدهد.
خوشبختانه این تنها مزیت این سیستم نیست و این سیستم ها به ما کمک میکنه به پردازش لحظه ای داده (Real-time process) و اینکه داده هایی که داریم رو بهتر بشناسیم یا اینکه روی این داده ها پردازشی انجام بدیم و این داده ها رو به اشتراک بگذاریم بین تیمهای مختلف از جمله تیم های پردازش داده و یادگیری ماشین ، برنامه نویسی و تیم های دیگر و یا اینکه این داده ها رو Visualize کنیم.
نمونه هایی اجرا شده از این سیستم در صنعت های مختلف هست مثل صنعت های مالی ، بازی ، فروشگاه ای اینترنتی گردشگری و نمونه هایی از این جنس که دیتا به صورت لحظه ای تغییر میکنه و جایی رو این داده ها تصمیمات بیزینسی گرفته میشه یا به کاربر چیزی اطلاع داده میشود.
نمونه ای از پیاده سازی این سیستم در صنعت بازی در شکل زیر میبینید
ممنون از وقتی که گذاشتین و مطالعه کردین ?
منابع :
وبسایت ها
کتاب ها
Kafka The Definitive Guide REAL-TIME DATA AND STREAM PROCESSING AT SCALE
Data Sharing for Dummies
مطلبی دیگر از این انتشارات
ما برنامه نویس ها « از کجا ، به کجا ؟! »
مطلبی دیگر از این انتشارات
دوران سربازی یک برنامهنویس
مطلبی دیگر از این انتشارات
برنامه نویسی ربات سرخطی بورس