مهندسی داده
863 subscribers
113 photos
8 videos
24 files
336 links
BigData.ir کانال رسمی وب سایت
مطالبی راجع به مهندسی داده و طراحی زیرساخت‌های پردازش دیتا و ابزارهای مدرن دیتا
ارتباط با ادمین: @smbanaei
گروه تخصصی مهندسی داده 👇
https://t.iss.one/bigdata_ir_discussions2
کانال یوتیوب 👇
https://www.youtube.com/@irbigdata
Download Telegram
وقتی حجم داده ورودی به ClickHouse بالا می‌رود، مشکل اصلی CPU نیست: Write Amplification است!
ترکیب Apache Flink به‌عنوان یک موتور پردازش جریانی Stateful و قابل اتکا و استفاده از درج زمان‌بندی‌شده (Batch Inserts) در ClickHouse می‌تواند به‌طرز چشمگیری عملکرد سیستم شما را متحول کند.

اگر با ClickHouse کار کرده باشید می‌دانید که هر INSERT یک Part جدید ایجاد می‌کند و این Partها پشت‌صحنه مرتب ادغام (Merge) می‌شوند.
بنابراین هرچه تعداد INSERT کمتر اما حجیم‌تر باشد، بار Merge-Tree کمتر شده و کارایی به شکل محسوسی افزایش می‌یابد.


در سناریوهای پرترافیک، نوشتن رکورد به‌ازای هر پیام، به‌معنای فشار شدید روی دیسک و CPU است. اینجاست که Flink در نقش یک موتور پردازش جریان + مدیریت State + تجمیع هوشمند وارد می‌شود

🔎 بیایید این پست لینکدین را با هم واکاوی کنیم

پست اصلی: https://www.linkedin.com/posts/vijay-vishnu-7ab184337_apacheflink-databaseoptimization-streamprocessing-activity-7398355140300349440-svd2

در این مثال، داده ورودی ۱ میلیون رویداد در ثانیه بوده و به‌جای اینکه هر رویداد یک INSERT باشد، نویسنده از Flink برای تجمیع یک‌دقیقه‌ای (Tumbling Window) استفاده کرده است. نتیجه؟
به‌جای ۶۰ میلیون INSERT در دقیقه، تنها ۶۰ هزار INSERT اتفاق می‌افتد — یعنی حدود ۹۹.۹٪ کاهش عملیات نوشتن!

🔥 چرا این معماری (Flink + ClickHouse) مؤثر است؟

۱) کاهش چشمگیر عملیات نوشتن
⚡️فلینک رویدادها را در پنجره‌های زمانی جمع و تبدیل به Batchهای بزرگ می‌کند.
⚡️این کار write amplification را کاهش داده و MergeTree را سبک می‌کند.

۲) صرفه‌جویی جدی در منابع پایگاه‌داده : وقتی تعداد INSERT کم شود

⚡️ فشار IO کم می‌شود
⚡️ کوئری‌های read سریع‌تر می‌شوند
⚡️ کلیک‌هوس ظرفیت بیشتری برای تحلیل دارد

۳) پایداری و اعتبار داده : Flink با checkpointing و exactly-once تضمین می‌کند

⚡️نه داده گم می‌شود
⚡️نه دوبار نوشته می‌شود
⚡️نه ترتیب بهم می‌ریزد

۴) زمان‌بندی و پنجره‌بندی هوشمند : پنجره‌های زمانی (مثلاً ۶۰ ثانیه‌ای):

⚡️داده را برای ذخیره‌سازی بهینه می‌کند
⚡️امکان محاسبه min/max/avg/count را فراهم می‌سازد
⚡️دیتابیس را سبک و گزارش‌ها را سریع می‌کند

۵) نگهداری داده خام در Object Storage : رویدادهای خام در S3 / MinIO ذخیره می‌شوند:

⚡️بدون فشار به ClickHouse
⚡️هر زمان لازم شد می‌توانیم Replay یا تحلیل تاریخی انجام دهیم

۶) مقیاس‌پذیری بالا با هزینه کمتر

وقتی نوشتن ۹۹٪ کاهش یابد:
⚡️تعداد نودهای ClickHouse کمتر می‌شود
⚡️هزینه‌ها کاهش می‌یابد
⚡️توان سیستم برای ترافیک بالاتر افزایش پیدا می‌کند

🧠 جمع‌بندی

اگر جریان ورود رخدادهای و داده‌های شما سنگین است و ClickHouse با «Partهای زیاد» مشکل دارد، بهترین کار این است که:

🔰خام را در object storage نگه دارید (یا لیک‌هوس)
🔰تجمیع‌شده را در ClickHouse بنویسید
🔰 با Flink پنجره‌بندی و Stateful Aggregation انجام دهید
👍7
پیشنهاد ویژه Black Friday – مدرسه مهندسی داده سپهرام

به مناسبت Black Friday، امکان استفاده از ۴۰٪ تخفیف برای تمامی دوره‌های مدرسه مهندسی داده سپهرام فراهم شده است.

تنها کافی است هنگام خرید دوره، کد BLK1404 را وارد کنید.


در این کمپین، تمام دوره‌ها شامل این تخفیف می‌شوند:

🔰مبانی مهندسی داده

🔰 آپاچی کافکا

🔰آپاچی اسپارک ( از این هفته شروع می‌شود)

🔰 آپاچی ایرفلو

🔰 پستگرس

🔰 کلیک‌هوس

فهرست تمامی دوره‌ها:
https://sepahram.ir/courses/

اگر قصد ارتقای مهارت‌های فنی، ورود به دنیای مهندسی داده یا رشد شغلی دارید، این فرصت را از دست ندهید.

اعتبار: محدود و ویژه Black Friday (تا دهم آذرماه)

🎟 کد تخفیف: BLK1404

برای اطلاعات بیشتر و ثبت‌نام: https://t.iss.one/sepahram_ir
👍21
آغاز رسمی دوره جامع آموزش Apache Spark – مدرسه مهندسی داده سپهرام

با افتخار اعلام می‌کنیم که دوره تخصصی Spark Deep Dive رسماً آغاز شد!

این دوره برای مهندسان داده، تحلیل‌گران، علاقه‌مندان دنیای پردازش توزیع‌شده و تمام کسانی طراحی شده که می‌خواهند در مسیر حرفه‌ای کار با داده‌های حجیم، یک گام بزرگ به جلو بردارند.

برای اینکه با حال و هوای دوره آشنا شوید، جلسه اول دوره به صورت کامل و رایگان در اختیار همه علاقه‌مندان قرار گرفته است.

کافی است روی لینک زیر کلیک کنید و محتوای جلسه را مشاهده کنید:

👉 جلسه اول دوره آموزشی اسپارک

📌 محتوای جلسه اول – «آشنایی با مفاهیم پایه و شروع عملی با اسپارک»

در این جلسه مقدماتی، مفاهیم کلیدی زیر را به‌صورت ساده، دقیق و کاربردی مرور می‌کنیم:

🔰 مروری بر Apache Spark و جایگاه آن در معماری‌های نوین داده

🔰 آشنایی با معماری و مفاهیم پایه اسپارک (به همراه ویدئوی آموزشی)

🔰 معرفی موتورهای بهینه‌سازی Catalyst و Tungsten

🔰 مروری بر امکانات کلیدی در Spark 3 و Spark 4

🔰 معرفی RDDها، ترنسفورمیشن‌ها و اکشن‌های رایج (به همراه ویدئو)

🔰 نصب و راه‌اندازی Spark 4 به کمک Jupyter Notebook و PySpark


🎓 این جلسه، نقطه شروع مسیر شما برای ورود به دنیای پردازش توزیع‌شده است.

در ادامه دوره، گام‌به‌گام وارد مباحث عملی، معماری عمیق، پردازش‌های پیچیده، بهینه‌سازی و انجام پروژه‌های واقعی خواهیم شد.

اگر در مسیر نصب، راه‌اندازی یا اجرای مثال‌ها نیاز به هرگونه کمک داشتید، تیم ما در کنار شماست.

با آرزوی یک سفر هیجان‌انگیز در مسیر یادگیری Apache Spark!

مدرسه مهندسی داده سپهرام
5
معماری‌های مدرن؛ زمان بازنگری در نقش لایه‌ کش فرا رسیده است؟

برای سال‌ها، Redis سلطان بی‌رقیب کش کردن داده در حافظه است.

تقریباً هر معماری استانداردی یک «لایه کش» دارد:

درخواست می‌آید → اول سراغ Redis → اگر نبود → می‌رود سراغ دیتابیس → و نتیجه دوباره در Redis ذخیره می‌شود.

این الگو آن‌قدر جا افتاده است که کمتر کسی جرئت می‌کند بپرسد:

«آیا واقعاً همیشه به Redis نیاز داریم؟»

اما با پیشرفت‌های اخیر دیتابیس‌ها - مخصوصاً #PostgreSQL - حالا این سؤال دوباره ارزش پرسیدن دارد.

و داستان تیمی که اخیراً توانست کل لایه Redis خود را حذف کند، یک نمونه جذاب برای ما مهندسین داده است.

👉 https://freedium-mirror.cfd/https://medium.com/@ArkProtocol1/why-postgres-18-let-me-delete-a-whole-cache-tier-bba2b4f1c742

🔹 بیایید داستان را با هم مرور کنیم…

یک تیم محصول، مثل بسیاری از ما، سال‌ها بود که برای پاسخ‌های سریع از Redis استفاده می‌کرد. اما در روزهای پر ترافیک، خود Redis یک پای داستان بود:

⚠️بار CPU بالا

⚠️ تاخیرهای عجیب

⚠️شبکه تحت فشار

درحالی‌که دیتابیس… نسبتاً آرام و بی‌کار نشسته!

نقطه عطف زمانی بود که آن‌ها PostgreSQL 18 را تست کردند، نسخه‌ای با تغییرات جدی:

⚡️امکان I/O ناهمگام واقعی

⚡️بهبودهای چشمگیر در استفاده از ایندکس‌ها

⚡️امکان virtual generated columns برای محاسبات سریع‌تر و بدون لایه جانبی

این‌ها فقط «بهبود» نبود؛ بازی را عوض کرد.

تیم تصمیم گرفت یک آزمایش مخفیانه انجام دهد:

یک endpoint بسیار شلوغ را مستقیم روی #PostgreSQL بگذارد، بدون #Redis.

انتظار داشتند کندتر شود.

اما نتیجه دقیقاً برعکس بود:

🔰 معیار p95 از ۷۲ میلی‌ثانیه → رسید به ۵۴ میلی‌ثانیه

🔰 نرخ hit rate از ۹۱٪ → شد ۱۰۰٪

🔰 و دیگر خبری از فشار شبکه و CPU نبود.

در واقع لایه کش نه‌تنها کمکی نکرده بود، بلکه گلوگاه اصلی سیستم شده بود.

در نهایت، آن‌ها با خیال راحت Redis را کنار گذاشتند.

معماری ساده‌تر شد، پایش آسان‌تر شد، و منبع داده از دوگانگی خارج شد.

از آن مهم‌تر: عملکرد بهتر شد.

رد پای یک روند بزرگ‌تر: تجربه #ScyllaDB

سال گذشته هم در وبلاگ ScyllaDB نمونه مشابهی دیدم: جایی که تیم SecurityScorecard به این نتیجه رسیده بود که با توجه به سرعت بالا، معماری توزیع‌شده و کش داخلی ScyllaDB، دیگر نیازی به یک لایه Redis جداگانه ندارند. آن‌ها نیز مانند مثال بالا دریافتند که پیچیدگی همگام‌سازی دیتابیس و کش، در برابر توان پردازشی دیتابیس‌های مدرن، برای برخی سناریوها توجیه خود را از دست داده است.
https://www.scylladb.com/compare/scylladb-vs-cache

بنابراین اگر در پروژه‌های خود به‌صورت پیش‌فرض همه‌چیز را به Redis می‌سپارید، شاید وقت آن رسیده باشد که امکانات دیتابیس‌های جدید، یا حتی توان واقعی دیتابیس اصلی‌تان، را دوباره بررسی کنید. گاهی پاسخ سریع‌تر و ساده‌تر، همان‌جایی است که سال‌ها از آن عبور کرده‌ایم.


🔹 درس ماجرا چیست؟

این داستان نمی‌گوید «Redis را حذف کنید».

ردیس همچنان یک ابزار قدرتمند و ضروری برای بسیاری از سناریوهاست.

اما یک نکته مهم را روشن می‌کند:

گاهی فناوری‌های پایه آن‌قدر جلو می‌روند که معماری‌های کهنه دیگر بهترین انتخاب نیستند.

💡شاید وقت آن باشد که به جای تکرار الگوهای سال‌های گذشته، دوباره از خود بپرسیم:

⚡️ آیا دیتابیس ما امروز آن‌قدر قدرتمند شده که خودش نقش کش را بازی کند؟

⚡️ آیا لایه کش واقعاً سرعت‌دهنده است یا ناخواسته گره اضافه کرده‌ایم؟

⚡️ آیا پیچیدگی اضافه همیشه ارزشش را دارد؟
3👍1
ابزار ClickGraph v0.5.2 ؛ وقتی ClickHouse به یک موتور گراف تحلیلی تبدیل می‌شود:

تحلیل گرافی سال‌ها در قلمرو دیتابیس‌هایی مثل Neo4j بود؛ اما در سازمان‌هایی که همه‌چیز روی ClickHouse متمرکز است، انتقال داده به یک موتور جداگانه هزینه و ریسک بالایی دارد. ClickGraph برای همین متولد شده است: یک لایه تحلیلی گراف، سبک و stateless که روی ClickHouse سوار می‌شود، کوئری‌های Cypher را به SQL بهینه ترجمه می‌کند و آن‌ها را مستقیماً روی همان داده‌های موجود اجرا می‌کند؛ یعنی بدون مهاجرت داده، می‌توان یک دید گرافی قدرتمند از داده‌های ستونی ساخت و از اکوسیستم Neo4j مثل درایورها، cypher-shell، Browser و Bolt 5.8 استفاده کرد، در حالی که اجرا روی ClickHouse می‌ماند.
نسخه 0.5.2 روی همین ایده سوار است و آن را به بلوغ اینترپرایزی نزدیک کرده: پشتیبانی از الگوهای پیچیدهٔ اسکیمای گراف از پلی‌مورفیک تا denormalized و coupled edges، بهینه‌سازی مسیرهای چندمرحله‌ای و حفظ هم‌خوانی با ابزارهای Neo4j در کنار معماری سبک و تست‌شده، با تمرکز بر انعطاف در مدل‌سازی گراف و پرفورمنس قابل‌اتکا روی دیتاست‌های بزرگ.
@BIMining
2👍2
چگونه داده‌های تاریخی را در PostgreSQL آرشیو کنیم؟ و همچنان به تمام داده‌ها دسترسی داشته باشیم

داده‌ها هر روز بزرگ‌تر و پیچیده‌تر می‌شوند و مدیریت آن‌ها بدون افت عملکرد، یکی از چالش‌های بزرگ مهندسان داده است. در این ویدئو و کارگاه عملی، ما به شما نشان می‌دهیم چگونه با Foreign Data Wrapper (#FDW) و جداول پارتیشن‌بندی شده #PostgreSQL داده‌های قدیمی و تاریخی را آرشیو کنید، بدون اینکه عملکرد دیتابیس اصلی کاهش یابد و همزمان کاربر بتواند روی تمام داده‌ها، کوئری اجرا کند.

⚡️نگاهی به قابلیت FDW‌ در پستگرس

در این آموزش ابتدا مفهوم #FDW را بررسی می‌کنیم؛ یک مکانیزم قدرتمند اتصال به سایر دیتابیس‌ها در پستگرس. Foreign Data Wrapper مثل یک مترجم میان‌سیستمی عمل می‌کند؛ ابزاری که به #PostgreSQL یاد می‌دهد با دیتابیس‌های دیگر حرف بزند، آن‌ها را بفهمد و حتی با آن‌ها کار کند، درست مثل اینکه جزیی از خودِ سیستم باشند.

با FDW، مفهوم «دادهٔ خارجی» عملاً از بین می‌رود. کوئری‌ای که روی یک جدول محلی اجرا می‌کنید، می‌تواند بی‌صدا و هوشمندانه به سراغ یک جدول دوردست در سروری دیگر برود، نتایج را برگرداند و همه‌چیز را طوری نمایش دهد که انگار محلی بوده است. این یعنی یکپارچگی در دسترسی، بدون تغییر کدهای برنامه، بدون اتصال‌های اضافی و بدون مدیریت پیچیدگی‌های پشت‌صحنه.


قابلیت FDW جوهرهٔ یک ایده‌ی ساده اما قدرتمند است: داده می‌تواند هرجایی باشد، اما تجربهٔ کار با آن باید یکپارچه باقی بماند.

💡 آنچه در این کارگاه یک‌ساعته می‌بینید
در این کارگاه، یک راهکار عملی برای آرشیو داده‌ها با استفاده از پارتیشن‌بندی PostgreSQL و Postgres_FDW بررسی می‌شود تا بتوانید داده‌های تاریخی را شفاف، مقیاس‌پذیر و قابل‌مدیریت نگه دارید.

ایده بسیار ساده اما قدرتمند است:
ابتدا داده‌ها را در یک جدول پارتیشن‌بندی‌شده (مثلاً سالانه یا ماهانه) نگه می‌داریم. سپس یک دیتابیس جداگانه برای آرشیو می‌سازیم و پارتیشن‌های قدیمی را به آن منتقل می‌کنیم. پس از حذف پارتیشن محلی، همان پارتیشن را به‌صورت یک foreign table و همچنان به‌عنوان پارتیشنی از جدول اصلی تعریف می‌کنیم.

نتیجه:

داده‌های جدید روی سرور اصلی و با سرعت بالا بازیابی می‌شوند ⚡️

داده‌های قدیمی بی‌صدا از سرور آرشیو خوانده می‌شوند 🔗

سرور اصلی سبک و سریع باقی می‌ماند، درحالی‌که دسترسی به کل تاریخچه حفظ می‌شود 📉

ترکیب پارتیشن‌بندی و FDW یک معماری تمیز و قدرتمند برای آرشیو داده در PostgreSQL ایجاد می‌کند.


این آموزش شامل موارد زیر است:

🔰 ساخت جداول پارتیشن‌بندی شده برای مدیریت داده‌ها بر اساس تاریخ

🔰 ایجاد اتصال با FDW به یک دیتابیس آرشیو جداگانه

🔰 تبدیل جدول محلی به پارتیشن خارجی و مدیریت داده‌ها بین سرور اصلی و آرشیو

🔰 اجرای کوئری‌ها روی داده‌های توزیع‌شده بدون نیاز به تغییر در اپلیکیشن

🔰 مهاجرت و نگهداری داده‌های تاریخی به شکلی شفاف و قابل کنترل

با مشاهده این کارگاه، شما قادر خواهید بود داده‌های آرشیوی را به صورت امن، مقیاس‌پذیر و یکپارچه مدیریت کنید و تجربه‌ای عملی از استفاده‌ی FDW در سناریوهای واقعی آرشیو داده‌ها به دست آورید.

🎥 تماشای ویدئو:
YouTube - https://youtu.be/RdGUIbNzNH4

💻 کدهای ورکشاپ:

Workshop Codes - https://github.com/sepahram-school/workshops/tree/main/3-Postgres-Data-Archiving-With-FDW
کافکا کانکت؛ ستون اتصال کافکا به دنیای واقعی

در معماری‌های داده مدرن، تنها داشتن یک پلتفرم قدرتمند برای پردازش و انتقال پیام‌ها کافی نیست، ما باید بتوانیم به‌سادگی و بدون نوشتن کد اضافی، داده را از سیستم‌های مختلف به کافکا وارد کنیم یا از کافکا به مقصدهای متنوع منتقل کنیم. Kafka Connect یک فریم‌ورک استاندارد، مقیاس‌پذیر و قابل‌اعتماد برای اتصال Kafka به دنیای بیرون است.

کافکا کانکت سرویس جانبی و رایج کافکاست که وظیفه آن مدیریت و اجرای پایدار کانکتورها است؛ اجزایی پیکربندی‌محور که مشخص می‌کنند داده چگونه باید از یک سیستم خارجی وارد کافکا شود (Source) یا از کافکا به جایی دیگر برود (Sink). هر Connector تنها یک تعریف پیکربندی‌شده است که روی یک Plugin (مجموعه‌ای از کلاس‌های جاوا که باید نصب شود) سوار می‌شود و مشخص می‌کند داده چگونه باید از سیستم‌های خارجی وارد Kafka شود یا از Kafka به مقصد دیگری منتقل گردد. منطق تعامل، درون Plugin است، اما Kafka Connect مسئول اجرای مداوم، نظارت، مدیریت خطا، مقیاس‌پذیری و هماهنگی Taskها که در قالب کانکتورها تعریف می‌شوند را برعهده دارد.


از Datagen برای تولید داده‌های نمونه، تا #Debezium برای CDC روی دیتابیس‌ها و تا #Redis Sink برای انتقال داده به سیستم‌های کش، Kafka Connect پایه‌ اصلی ساخت Data Pipelineهای استاندارد، قابل اطمینان و Production-Grade است.

در ویدئوی جدید کانال یوتیوب مدرسه مهندسی داده سپهرام، یک کارگاه عملی کامل آماده کرده‌ایم که در آن:

⚙️ یک کلاستر Kafka Connect با Docker Compose راه‌اندازی می‌کنیم

📥کانکتور Datagen را اجرا می‌کنیم

🔄 کانکتور Debezium را روی PostgreSQL راه می‌اندازیم و تغییرات جدول‌ها را به کافکا استریم می‌کنیم

📤 داده‌ها را با Redis Sink Connector به Redis منتقل می‌کنیم

اگر می‌خواهید Kafka Connect را در عمل ببینید، این ویدئو مخصوص شماست

▶️ مشاهده در یوتیوب: https://youtu.be/Uxn5pJRhmjM

این بخش بخشی از دوره آموزشی کافکا در مدرسه مهندسی داده سپهرام است.
وقتی ابزارها از نیاز ما بزرگ‌ترند: درس‌هایی از Kafka و Flinkو هنر انتخاب درست

در دنیایی که هر ثانیه هزاران رویداد در سرویس‌ها، اپلیکیشن‌ها و سیستم‌های ما جریان دارد، طبیعی است که به سراغ ابزارهای قدرتمند برویم. ابزارهایی مثل Kafka ، Flink و اسپارک که نام‌شان با «مقیاس عظیم»، «پردازش بلادرنگ» و «زیرساخت حرفه‌ای» گره خورده است.

اما حقیقتی که کمتر درباره‌اش حرف می‌زنیم این است:

بیشتر ما اصلاً چنین مقیاسی نداریم.

سال‌هاست تیم‌های کوچک و متوسط، با داده‌های کم و نیازهای ساده، سراغ ابزارهایی می‌روند که برای غول‌هایی مثل اوبر، لینکدین یا نتفلیکس طراحی شده‌اند. نتیجه چیست؟

پیچیدگی بیشتر. هزینه بیشتر. زمان بیشتر. و در نهایت، زیرساختی بزرگ‌تر از نیاز واقعی.

دو مقاله‌ای که اخیرا با عنوان «Kafka’s 80% Problem» و «Flink’s 95% Problem» منتشر شده‌اند به کمک آمار و ارقام، ما را به توقفی کوتاه و تفکری جدی در این خصوص دعوت می‌کنند.

بیشتر خوشه‌های #Kafka زیر ۱ MB/s داده دارند و بیشتر کاربردهای استریم اصلاً نیازی به #Flink یا اسپارک ندارند. برای دو سوم پروژه‌ها، یک API ساده یا یک دیتابیس تحلیلی سبک کاملاً کافی است.

👌 پیام نویسندگان این دو مقاله روشن است: قبل از انتخاب ابزار، نیاز واقعی را بسنج.

گاهی به‌جای یک بیگ‌دیتای کامل، تنها چیزی که لازم داریم یک خط پردازش داده ساده است.

چرا باید حواسمان به این انتخاب‌ها باشد؟

🔹 زیرا بیشتر تیم‌ها درگیر «نیاز واقعی» نیستند، بلکه درگیر «تصور نیاز» شده‌اند.

🔹 بیشتر خوشه‌های Kafka کمتر از ۱ مگابایت در ثانیه داده دارند.

🔹 بیشتر کاربردهای استریم اصلاً نیازمند پیچیدگی Flink یا اسپارک نیستند.

🔹 وقتی ابزار از نیاز بزرگ‌تر باشد، هزینه‌ها، پیچیدگی، زمان، نیروی انسانی و ریسک عملیاتی بی‌دلیل بالا می‌رود. انتخاب اشتباه ابزار، فقط یک مسئله فنی نیست، یک هزینه سازمانی و یک ریسک محصولی است.

بسیاری از تیم‌ها، بدون بررسی دقیق، زیرساخت‌هایی می‌سازند که برای غول‌هایی مثل نتفلیکس یا اوبر طراحی شده، نه برای سرویس‌های متوسط.

نتیجه؟

⚠️زیرساخت سنگین برای بار سبک

⚠️هزینه مالی بالا

⚠️پیچیدگی عملیاتی غیرضروری

⚠️نیاز به تخصص خاص و دشوار

⚠️سرعت پایین‌تر توسعه

⚠️ و در نهایت، «مهندسی بیش‌ازحد»


درحالی‌که بسیاری از نیازها را می‌توان با ابزارهایی بسیار ساده‌تر حل کرد: یک API، یک دیتابیس تحلیلی سبک، یا حتی یک معماری batch.

دنیای ابزارهای داده و استریمینگ خانه‌ای بزرگ با امکانات فراوان است، اما هر ابزار قدرتمندی مناسب هر کاری نیست.

🔰 مقاله «Kafka’s 80% Problem» به ما می‌گوید که بسیاری از سازمان‌ها با داده کم، زیرساخت بزرگ می‌سازند.

🔰 مقاله «Flink’s 95% Problem» هشدار می‌دهد که اغلب پروژه‌ها نیازی به پیچیدگی فنی فلینک ندارند.

💡 پیام مشترک این دو مقاله روشن و ارزشمند است:

به‌جای انتخاب ابزارهای بزرگ، نیاز کوچک خود را دقیق بفهمیم.

گاهی بهترین معماری، ساده‌ترین معماری است، نه چون امکانات کمتری دارد، بلکه چون بیشترین هم‌خوانی را با واقعیت دارد.آیا واقعاً به سیستم‌های سنگین و «enterprise-grade» نیاز داریم، یا فقط درگیر مد روز مهندسی شده‌ایم؟ در معماری داده، هوشمندی در انتخاب ابزار همیشه مهم‌تر از بزرگی ابزار است.
پس شاید بهتر باشد از خودمان بپرسیم:

آیا واقعاً به سیستم‌های سنگین و «enterprise-grade» نیاز داریم، یا فقط درگیر مد روز مهندسی شده‌ایم؟

در معماری داده، هوشمندی در انتخاب ابزار همیشه مهم‌تر از بزرگی ابزار است.

گاهی سادگی، بهترین راه‌حل مهندسی است.
👍2
معرفی کتاب «چالش‌های اخلاقی علم داده»

امروز در جهانی زندگی می‌کنیم که داده‌ها، آرام و بی‌صدا اما قدرتمند، در تار و پود زندگی ما تنیده شده‌اند. از تصمیم‌های ساده روزمره تا سیاست‌گذاری‌های کلان، ردّ پای الگوریتم‌ها را همه‌جا می‌بینیم؛ الگوریتم‌هایی که شاید هیچ‌وقت آن‌ها را نشناسیم، اما به‌راحتی ما را دسته‌بندی می‌کنند، برایمان پیشنهاد می‌سازند، رفتارمان را پیش‌بینی می‌کنند و حتی در موقعیت‌های حساس، به جای ما تصمیم می‌گیرند.

اما سؤال مهم این است:

⚠️ چه کسی به اخلاقِ پشتِ این سیستم‌ها فکر می‌کند؟

⚠️ آیا توسعه‌دهندگان، تحلیل‌گران داده، استارتاپ‌ها، سازمان‌ها و دولت‌ها همیشه به پیامدهای انسانی و اجتماعی تصمیمات مبتنی بر داده آگاه‌اند؟




در جامعه علمی دنیا، سال‌هاست که اخلاق داده جدی گرفته می‌شود؛ همان‌طور که درباره محیط‌زیست، فلسفه اخلاق، یا اخلاق پژوهش‌های انسانی ادبیات عظیمی شکل گرفته، درباره اخلاق علم داده هم پژوهش‌های معتبر و چارچوب‌های حرفه‌ای ایجاد شده است.

ترجمه کتاب ارزشمند «چالش‌های اخلاقی علم داده» نوشته دیوید مارتینز و ترجمه‌شده به همت محمدجواد جعفری دقیقاً در راستای همین موضوع و برای مخاطب ایرانی تهیه شده است:

کتابی که نه‌فقط یک نگاه نظری، بلکه راهنمایی عملی برای همه فعالان داده است: از تحلیل‌گر و مهندس داده تا مدیر محصول، پژوهشگر هوش مصنوعی و قانون‌گذار.
در ادامه، بر اساس سرفصل‌های کتاب، نگاهی به محتوای آن و ارزش‌های کلیدی‌اش می‌اندازیم.

آنچه در این کتاب می‌بینیم

🔰فصل اول: مقدمه‌ای بر اخلاق علم داده

این فصل توضیح می‌دهد که چرا اخلاق باید بخشی جدانشدنی از چرخه توسعه سیستم‌های داده باشد. در جهانی که الگوریتم‌ها تصمیم‌های مهم را شکل می‌دهند، رعایت عدالت، پاسخگویی و شفافیت دیگر انتخابی اختیاری نیست.

🔰فصل دوم: اخلاق جمع‌آوری داده‌ها

اینجا نویسنده یادآور می‌شود که جمع‌آوری داده، پیش از آن‌که یک کار فنی باشد، مسئولیتی اخلاقی است. اینکه چه داده‌ای حق داریم جمع کنیم، چگونه باید حریم خصوصی را رعایت کرد و رضایت کاربر چه معنایی دارد، محور این فصل است.

🔰فصل سوم: اخلاق پردازش داده‌ها

این فصل نشان می‌دهد که پردازش نادرست داده، از پاک‌سازی تا ناشناس‌سازی، می‌تواند به نقض حریم خصوصی یا ایجاد سوگیری‌های خطرناک منجر شود. کیفیت اخلاقی مدل‌ها از همین مرحله‌های اولیه شکل می‌گیرد.

🔰فصل چهارم: اخلاق مدل‌سازی

در این فصل به چالش‌های اخلاقی هنگام ساخت مدل‌ها می‌پردازیم: از تبعیض الگوریتمی تا اهمیت مدل‌های توضیح‌پذیر و آگاه از تبعیض. پیام اصلی این است که مدل‌سازی باید با درک پیامدهای اجتماعی آن همراه باشد.

🔰فصل پنجم: ارزیابی اخلاقی

فصل پایانی تأکید می‌کند که اخلاق یک فرآیند مستمر است. سیستم‌های داده باید دائماً از نظر عدالت، شفافیت و ریسک اخلاقی ارزیابی شوند و این ارزیابی باید به‌صورت مسئولانه گزارش شود.

✔️ سخن پایانی

امیدوارم ترجمه و انتشار این کتاب آغازی برای جدی‌تر شدن بحث اخلاق داده در جامعه علمی و مهندسی ایران باشد. امروز بیش از همیشه به متخصصانی نیاز داریم که کنار توان فنی، نگاه انسانی و اخلاقی هم داشته باشند. برای محمدجواد جعفری مترجم پرتلاش این اثر، و همه دغدغه‌مندان این حوزه آرزوی موفقیت دارم. جامعه داده‌محور ایران به چنین گام‌هایی نیازمند است و این مسیر تازه آغاز شده است.

پ.ن: برای خرید و تهیه کتاب به سایت انتشارات جهاد دانشگاهی مراجعه کنید و یا به خود مترجم در لینکدین یا تلگرام @Mjafarisc پیام بدهید.
نگاهی به امکانات جدید Airflow 3 و دنیای Data Assets - آغاز عصر Data-Driven Workflows در ایرفلو

در نسخه‌ جدید Airflow 3 یک تحول اساسی رخ داده است:

ایرفلو از یک ابزار زمان‌محور برای اجرای جریان‌کارها، به یک سیستم داده‌محور (Data-Driven) ارتقا پیدا کرده است.


این یعنی:

✔️ دیگر لازم نیست یک DAG را هر شب رأس یک ساعت مشخص اجرا کنیم؛

✔️ بلکه می‌توانیم آن را براساس آماده شدن یک داده، یک خروجی، یا یک رخداد (Asset Event) اجرا کنیم.

✔️این تغییر، نقطه‌ی اتصال دنیای Orchestration کلاسیک با Data Engineering مدرن است.


🔹و اما Data Assets در Airflow یعنی چه؟


از نسخه ۲ مفهومی به نام Asset اضافه شد، اما در Airflow 3 این قابلیت کاملاً بالغ شد و حتی یک بخش اختصاصی در UI برای مشاهده و مدیریت آن وجود دارد.

با Data Assets می‌توانیم:

🔰مشخص کنیم یک DAG چه داده‌ای تولید می‌کند (Outlets)

🔰تعیین کنیم DAGها چه داده‌ای مصرف می‌کنند (Inlets)

🔰اجرای DAGها را وابسته به آماده شدن داده‌ها کنیم

🔰گردش‌کارها را به‌جای schedule time-based، کاملاً event-based طراحی کنیم

🔰برای Assetها Metadata و Events تولید کنیم و رفتارهای پیشرفته بسازیم

به زبان ساده:

ایرفلو نسخه ۳ جریان‌های کاری را "Data-Aware" و حتی "Data-Driven" می‌کند.

🎯 جلسه پنجم دوره آموزشی ایرفلو - از پارامترها تا Data-Driven Workflows

در جلسه پنجم دوره آموزش Airflow در «مدرسه مهندسی داده سپهرام»، دقیقاً روی همین موضوعات تمرکز کرده‌ایم:

✴️ بخش اول: Parameterized Workflows

⚡️تعریف پارامتر برای DAGها

⚡️اجرای DAG از طریق API رسمی Airflow

⚡️ارسال پارامتر با curl و پایتون

⚡️استفاده از Auth و تولید token

✴️ بخش دوم: Data-Driven Workflows و دارایی‌ها

⚡️آشنایی با Assetها و معماری جدید Airflow 3

⚡️ساخت یک پایپ‌لاین مبتنی بر Asset

⚡️استفاده از outlets و inlets در Taskها

⚡️مشاهده و مدیریت Assetها در UI

⚡️رویدادها (Asset Events)، Metadata، وابستگی‌های ترکیبی و Aliases

این جلسه عملاً پلی است میان قابلیت‌های قدیمی ایرفلو و معماری‌های جدید Data-Driven Pipelines.

🎥 مشاهده رایگان جلسه

فیلم‌ها و محتوای کامل جلسه پنجم برای عموم آزاد است و از این لینک می‌توانید آنها را مشاهده کنید: کلیک کنید.

اگر با Airflow کار می‌کنید، این جلسه می‌تواند نگاه شما را نسبت به طراحی پایپ‌لاین‌ها کاملاً تغییر دهد.


پ.ن : هر چند سامانه‌های مدیریت جریان داده مثل Dagster‌ در این زمینه بسیار جلوتر از ایرفلو هستند اما اگر در کنار کارهای روزانه زمان‌بندی شده، نیاز به دگ‌های داده محور هم دارید، ایرفلو امروزه این امکان را به راحتی در اختیار شما قرار می‌دهد.
👍2
مهاجرت آرام و بی‌سروصدای MinIO به دنیای تجاری

تغییرات همیشه با اعلام رسمی شروع نمی‌شوند. گاهی تنها نشانه، یک کامیت ساده در گیت‌هاب است؛ تغییری کوچک که آینده یک اکوسیستم بزرگ را دگرگون می‌کند.

MinIO دقیقاً به همین شکل مسیرش را تغییر داد.

نه بیانیه‌ای منتشر شد، نه توضیحی ارائه شد، تنها یک اصلاح در README:

❗️ کدبیس در حالت «Maintenance-only»

❗️ عدم پذیرش ویژگی‌ها و Pull Requestهای جدید

❗️ بررسی رفع اشکالات امنیتی «به‌صورت موردی»


و در کنار آن، دعوتی غیرمستقیم برای حرکت به سمت محصول تجاری:

👉 AIStor

این تصمیم، در عمل نشان‌دهنده یک کوچ آرام اما قطعی از مدل اوپن‌سورس به مدل تجاری است. تغییری که شاید بی‌سروصدا رخ داد، اما تأثیر آن بر زیرساخت بسیاری از سازمان‌ها بسیار جدی خواهد بود.


✴️ پیامدهای این تغییر برای تیم‌های فنی

پروژه محبوب MinIO برای سال‌ها یکی از مهم‌ترین انتخاب‌ها برای پیاده‌سازی S3-compatible storage در محیط‌های production بود.

اما اکنون، هر تیمی که بر نسخه رایگان و پشتیبانی جامعه حساب کرده بود، در برابر واقعیتی جدید قرار دارد:

⚠️ توسعه متوقف شده است

⚠️ پایداری بلندمدت نامشخص است

⚠️امنیت تحت شرایط «case-by-case» قرار گرفته


به‌عبارت دیگر، دوران MinIO به‌عنوان یک گزینه پیش‌فرض، رایگان و قابل اتکا، عملاً پایان یافته است.

مسیر بعدی چیست؟

خوشبختانه امروز اکوسیستم ذخیره‌سازی توزیع‌شده گزینه‌های قدرتمند و پخته‌ای در اختیار دارد.

و حتی پروژه‌هایی نوظهور که عملکردشان فراتر از حد انتظار است.

گزینه‌های جدی برای دوران پس از MinIO

🔹 RustFS
جایگزینی بسیار نزدیک، سریع و آینده‌دار

در روزهای اخیر رشدی چشمگیر در فعالیت مخزن این پروژه مشاهده شده است. (برای مشاهده فعالیت‌ها کلیک کنید.)

دلایل توجه بالای جامعه کاملاً روشن است:

🔰 سازگاری کامل با MinIO

🔰 اجرا روی همان پورت‌های 9000

🔰عملکردی تا دو برابر سریع‌تر در بنچمارک‌های اولیه

🔰کدنوشته شده با Rust؛ یعنی امنیت، سرعت و مصرف منابع بهینه

🔰جامعه‌ای فعال که روند توسعه پرشتابی را نشان می‌دهد

این گزینه یعنی RustFS شاید تنها گزینه‌ای باشد که مسیر مهاجرت از MinIO را تقریباً بدون تغییر در معماری امکان‌پذیر می‌کند.


🔹 SeaweedFS

راهکاری پخته و مناسب برای مقیاس‌های بزرگ، با تمرکز بر سرعت، سادگی و توزیع مؤثر داده.

نکته: سال ۹۶ پستی را راجع به انتخاب یک فایل‌استوریج که در آن Seaweedfs معرفی شده بود منتشر کردیم

🔹 Garage

انتخابی سبک و ساده برای محیط‌های self-hosted و تیم‌هایی که به سادگی راه‌اندازی و نگه‌داری اهمیت می‌دهند.

🔹 Ceph

راهکاری جاافتاده برای بارهای کاری سنگین، با قابلیت‌های گسترده اما پیچیدگی عملیاتی بالاتر.

تغییر مسیر MinIO شاید در ظاهر یک کامیت ساده باشد، اما برای بسیاری از تیم‌ها یک نقطه تصمیم‌گیری استراتژیک خواهد بود.

اکنون زمان ارزیابی گزینه‌ها و بازنگری در نقشه راه ذخیره‌سازی است.

نظر شما برای کامیونیتی فارسی چیست ؟ چه جایگزینی را پیشنهاد می‌دهید؟

عکس و ایده مقاله از این پست برداشته شده است :‌

https://www.linkedin.com/posts/purged0_devops-minio-opensource-activity-7402619963125055488-t7VA
3👍3😱1