مهندسی داده
800 subscribers
112 photos
7 videos
24 files
316 links
BigData.ir کانال رسمی وب سایت
مطالبی راجع به مهندسی داده و طراحی زیرساخت‌های پردازش دیتا و ابزارهای مدرن دیتا
ارتباط با ادمین: @smbanaei
گروه تخصصی مهندسی داده 👇
https://t.iss.one/bigdata_ir_discussions2
کانال یوتیوب 👇
https://www.youtube.com/@irbigdata
Download Telegram
در چند ماه گذشته از کافکا کلا سوئیچ کرده ام به ردپاندا بابت مسایلی مثل بهینه‌تر بودن مصرف منابع و طراحی مدرن‌تر یک سامانه پیام رسان مبتنی بر پروتکل کافکا با امکانات کامل و یکپارچه.
حتی قصد داشتم خلاصه ای از مشاهدات آقای Wu را در کنفرانس ۲۰۲۴ کافکا و داده های جریانی در اینجا به اشتراک بگذارم با این محوریت که کافکا به نقطه حساسی رسیده است و اگر نتواند تغییرات مورد انتظار بازار را برآورده کند، بازار را به رقبا واگذار خواهد کرد و خریدن شرکت‌هایی مثل WarpStream توسط کانفلوئنت که هزینه نگهداری یک کلاستر کافکا را بسیار کاهش می‌دهد، باز هم به تنهایی به کافکا کمک نخواهد کرد :
https://medium.com/@yingjunwu/kafka-has-reached-a-turning-point-649bd18b967f
اگر در حوزه مهندسی داده فعالیت میکنید توصیه میکنم مقاله فوق را با دقت مطالعه کنید. .
اما مهم‌تر ازین مسائل پایه در انتخاب یک ابزار مانند مصرف منابع و سادگی کار با آن و یکپارچه بودن ابزار و اکوسیستم، دید و ویژن شرکت ردپاندا برایم جذاب بود .
دیدی که باعث شد چند ماه پیش، پروژه Benthos را خریده و به RedPanda Connect اضافه کند. یک پروژه عالی، سبک و حرفه ای برای کارهای ETL .
اخیرا هم دیدم ردپاندا، نوع جدیدی از تاپیک‌ها برای کار مستقیم با Apache Iceberg ایجاد کند، به این ویژن و توجه به نیازهای نوین بازار، باور بیشتری دارم.‌
توصیه میکنم اگر با کافکا کار میکنید، ردپاندا را هم حتما تست کنید (نیاز به تغییر خاصی در کدها ندارید و دقیقا از دید برنامه و ابزار،مثل یک کلاستر کافکا عمل میکند).
مقاله زیر را هم که راجع به افزوده شدن این نوع جدید از تاپیک ها و ذخیره مستقیم پیام‌ها در آپاچی آیس‌برگ است را هم حتما نگاهی بیندازید ....
Read “Apache Iceberg Topics: Stream directly into your data lake“ by Redpanda Data on Medium: https://redpanda-data.medium.com/apache-iceberg-topics-stream-directly-into-your-data-lake-0250a8dfdd76

#مهندسی_داده #redpanda #kafka
👍6👌1
Forwarded from عکس نگار
تحولی بزرگ در Apache Airflow: نسخه ۳ در راه است! 🚀

بعد از سال‌ها تجربه با نسخه‌های ۱ و ۲، حالا نسخه ۳ با بازطراحی گسترده و حل چالش‌های قدیمی در دسترس توسعه‌دهندگان قرار گرفته — فعلاً به‌صورت نسخه‌ کاندید انتشار (Release Candidate).
در ادامه نگاهی داریم به مهم‌ترین تغییرات:


🔁 نسخه‌بندی DAGها و تاریخچه اجراها

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

حالا در نسخه ۳، تاریخچه‌ی کامل DAGها از طریق UI (در Grid و Graph View) در دسترس است — حتی حذف یا اضافه شدن Taskها بین نسخه‌ها قابل ردیابی شده است.


🧠 Backfill هوشمند و یکپارچه

Backfillها قبلاً مشکلاتی در عملکرد و مقیاس‌پذیری داشتند.

اکنون توسط Scheduler مدیریت می‌شوند و از طریق UI هم قابل اجرا هستند. مناسب برای ML و ETL.


🌐 اجرای وظایف در هر زبان و محیطی

تا قبل از این، فقط Python در دسترس بود.

با Task Execution API، Airflow به معماری Client/Server رسیده.

می‌توانید Taskها را از Python، Go (و بزودی زبان‌های دیگر) اجرا کنید — حتی در Edge یا Multi-cloud.


📩 زمان‌بندی بر اساس رویدادها (Event-Driven Scheduling)

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

حالا Airflow 3 با معرفی مفهوم «دارایی‌های داده‌ای» (Data Assets) و «ناظران» (Watchers) امکان اجرای DAG بر اساس رویدادهای خارجی را فراهم کرده است.

به‌صورت پیش‌فرض، اتصال به AWS SQS فراهم شده است — مثلاً با رسیدن یک پیام به SQS، یک DAG می‌تواند اجرا شود.

اما نکته مهم‌تر:

🔄 این ساختار ماژولار است و می‌توانید Apache Kafka یا سایر سیستم‌های پیام‌رسان را نیز جایگزین کنید. کافی است یک Watcher مخصوص Kafka بنویسید که روی Topic مشخصی گوش دهد و پیام‌های جدید را به Airflow منتقل کند.
این امکان، Airflow را برای سناریوهای real-time در مقیاس بالا، بسیار انعطاف‌پذیر می‌کند.



🤖 اجرای بلادرنگ برای هوش مصنوعی

تاکنون وابستگی به execution_date مانع اجرای DAGهای Realtime بود.

اکنون می‌توانید DAGهایی بدون وابستگی زمانی اجرا کنید — عالی برای Inference و API-based Workflows.


🖥 رابط کاربری کاملاً جدید

UI قدیمی سنگین و محدود بود.

Airflow 3 با React و FastAPI بازنویسی شده. سریع، سبک و قابل توسعه.

همچنین Flask AppBuilder از Core جدا شده و به یک پکیج مستقل تبدیل شده.


🔐 ایزولاسیون وظایف و امنیت بالا

اجرای Taskها در یک محیط مشترک مشکل‌ساز بود.

حالا هر Task می‌تواند به‌صورت ایزوله اجرا شود. CLI هم با airflowctl برای دسترسی از راه دور مجهز شده.

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

#مهندسی_داده #ApacheAirflow3 #DataEngineering #MLOps #Kafka #EventDriven #DataOps #Automation 🚀

منبع : https://www.linkedin.com/pulse/apache-airflow-3-release-candidate-apr-4-2025-vikram-koka-3lhmc/
👍3
خرید پروژه‌ی متن‌باز Arroyo توسط Cloudflare 🔥

شرکت Cloudflare به‌تازگی اعلام کرده که پروژه‌ی Arroyo، یکی از نوآورانه‌ترین موتورهای پردازش جریان داده، را به مجموعه‌ی خود افزوده است. این پروژه که در سال ۲۰۲۲ با زبان #Rust 🦀 و توسط دو بنیان‌گذار راه‌اندازی شد، بر تجربه‌ای بی‌نیاز از مدیریت زیرساخت، عملکرد بالا و سادگی در توسعه متمرکز بوده است.

منبع خبر : https://www.arroyo.dev/blog/arroyo-is-joining-cloudflare


این خرید از دو جهت برای من مهم است:

🧠 کلودفلیر با افزودن قابلیت پردازش جریان با SQL 📊 به سرویس‌هایی مثل R2 ، Workers ⚙️ و Queues ، یک گام مهم به‌سوی ساخت پلتفرم ابری کامل، مقیاس‌پذیر و بی‌نیاز از مدیریت زیرساخت برداشته است—رقابتی جدی برای
#AWS و #GoogleCloud.

🧠 پروژه‌ی متن‌باز Arroyo تنها با تلاش دو نفر در ۲۰۲۲ آغاز شد و امروز توسط یکی از بزرگ‌ترین شرکت‌های اینترنتی خریداری شده است؛ نمونه‌ای الهام‌بخش از اینکه تیم‌های کوچک هم می‌توانند به موفقیت‌های بزرگ برسند. 🚀

جزییات این خبر و این پروژه را با هم کمی مرور می‌کنیم.


🔍 کتابخانه Arroyo : ساده‌سازی پردازش جریان بلادرنگ برای همه ⚙️

پروژه Arroyo یک موتور پردازش جریان (#StreamProcessing) مدرن و متن‌باز است که با هدفی روشن توسعه یافته:

💡 «تبدیل پردازش جریان از یک فناوری پیچیده و لوکس به ابزاری ساده و در دسترس، شبیه نوشتن یک کوئری SQL معمولی برای یک جدول پایگاه‌داده.»


این پروژه با هدف ساده‌سازی توسعه‌ی سیستم‌های پردازش آنی و حذف پیچیدگی‌های زیرساختی ایجاد شده ⚡️ و از فناوری‌های مدرنی مانند Apache Arrow 🏹 و DataFusion 🔗 بهره می‌برد تا عملکرد بالا و کارایی حافظه را تضمین کند.



مهم‌ترین قابلیت‌های Arroyo:

پشتیبانی کامل از SQL با بیش از ۳۰۰ تابع توکار برای تحلیل‌های زمانی، پنجره‌ای و آماری

دقت بالا با Exactly-Once Semantics حتی در صورت بروز خطا یا دریافت داده‌های نامرتب

پشتیبانی از انواع پنجره‌ها (گروه‌بندی زمانی رخدادها): sliding، tumbling و session ⏱️

اتصال به منابع متنوع مانند #Kafka 🧩، #Redis 🔴، #RabbitMQ 🐰 و CDC

مقیاس‌پذیری برای پردازش میلیون‌ها رویداد در ثانیه ⚡️

پشتیبانی از UDF با #Python 🐍، پروتکل Protobuf و مدیریت TTL در وضعیت‌ها

امکان ساخت lookup tables برای داده‌های جریانی 🧷


📸 برای اینکه دقیقا متوجه شوید منظور از پردازش جریان با Arroyo آنهم فقط به کمک SQL‌ چیست، می‌توانید به عکس‌های پایین این پست دقت کنید.


اکنون با پیوستن Arroyo به زیرساخت گسترده‌ی Cloudflare، کاربران می‌توانند از مزایای ترکیب پردازش آنی SQL (به کمک Arroyo)، ذخیره‌سازی ابری (R2)، صف‌های توزیع‌شده (Queues) و اجرای بدون سرور (Workers) در قالب یک پلتفرم یکپارچه و مقیاس‌پذیر بهره‌مند شوند.


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

🚀 برای مهندسان داده، استارتاپ‌ها، مدیران محصول، تحلیل‌گران داده و تیم‌هایی که به‌دنبال جایگزینی سریع‌تر و ساده‌تر برای #ApacheFlink یا سایر ابزارهای پردازش جریان هستند، Arroyo اکنون نه‌تنها یک انتخاب هوشمندانه، بلکه یک بستر قدرتمند برای آینده است.

🦀 همچنین Arroyo نمونه‌ای از موج نوین پروژه‌های مبتنی بر زبان برنامه‌نویسی Rust است؛ زبانی که با امنیت بالا و مدیریت حافظه‌ی بسیار دقیق، در حال گشودن مرزهای تازه‌ای در دنیای زیرساخت‌های داده و پردازش بلادرنگ است.
شرکت OpenAI چگونه کلاستر های کافکای خود را پایدار کرد و توان عملیاتی خود را ۲۰ برابر کرد؟ 🚀

در یک سال گذشته، OpenAI توان عملیاتی Kafka را در بیش از ۳۰ خوشه، بیست برابر افزایش داد و به پایداری خیره‌کننده ۹۹.۹۹۹٪ (پنج ۹) دست یافت.  در ادامه، به سه بخش کلیدی این تحول می‌پردازیم:

🟩 ۱. گروه‌بندی خوشه‌ها (Cluster Groups)

چالش: با بیش از ۳۰ خوشه Kafka در محیط‌های متفاوت (هر کدام با تنظیمات مخصوص، احراز هویت‌های پراکنده و قوانین فایروال خاص خود)، استفاده از سیستم بسیار پیچیده شده بود. کاربران نمی‌دانستند برای ذخیره یا خواندن داده باید به کدام خوشه متصل شوند و سؤالات مکرری مثل «تاپیک X کجاست؟» زمان توسعه را تلف می‌کرد. اگر یکی از خوشه‌ها از کار می‌افتاد، کاربران باید به‌صورت دستی به خوشه دیگری مهاجرت می‌کردند، که هم وقت‌گیر بود و هم مستعد خطا.

راه‌حل: OpenAI خوشه‌ها را به شکل گروه‌های خوشه‌ای درآورد؛ یعنی مجموعه‌ای از خوشه‌ها که در یک منطقه جغرافیایی قرار دارند (مثلاً آمریکا یا اروپا) و با هم یک گروه منطقی را تشکیل می‌دهند. کاربران حالا با «تاپیک‌های منطقی» کار می‌کنند که به‌صورت خودکار به تاپیک‌های فیزیکی در خوشه‌های مختلف همان گروه متصل می‌شوند. این ساختار، زیرساخت پیچیده را از دید کاربران پنهان می‌کند و در صورت خرابی یک خوشه، خوشه‌های دیگر گروه جایگزین می‌شوند.

🟨 ۲. پراکسی تولیدکننده : Prism

چالش: پیش از این، هر اپلیکیشنی که داده تولید می‌کرد، مستقیماً به Kafka متصل می‌شد. این مدل باعث ایجاد تا ۵۰ هزار اتصال همزمان به هر بروکر می‌شد که منجر به مصرف شدید حافظه و کاهش پایداری می‌گردید. همچنین، توسعه‌دهندگان باید تنظیمات پیچیده‌ای مانند لیست بروکرها، پورت‌ها، و احراز هویت را به‌صورت دستی انجام می‌دادند. اگر یک خوشه از دسترس خارج می‌شد، برنامه‌ها باید دستی به خوشه دیگری متصل می‌شدند، که منجر به خطا و قطعی می‌شد.

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

🟧 ۳. پراکسی مصرف‌کننده : uForwarder

چالش: مصرف‌کنندگان Kafka هم با مشکلاتی مشابه روبه‌رو بودند. برنامه‌ها باید به‌صورت دستی تنظیمات Kafka، انتخاب خوشه، مدیریت offset و احراز هویت را انجام می‌دادند. این فرآیند زمان‌بر و مستعد خطا بود. از طرف دیگر، مدل pull سنتی Kafka برای خواندن داده‌ها، موجب تأخیر و محدودیت در مصرف همزمان می‌شد. در صورت خرابی خوشه‌ها، اتصال مجدد مصرف‌کنندگان به صورت دستی نیاز بود، که کارآمد نبود.

راه‌حل: OpenAI از uForwarder (یک پروژه متن‌باز از Uber) بهره گرفت که مدل مصرف را از pull به push تغییر می‌دهد. در این مدل، uForwarder خودش داده‌ها را از Kafka دریافت کرده و به اپلیکیشن‌ها تحویل می‌دهد. این پراکسی ویژگی‌های پیشرفته‌ای دارد مثل: بازارسال خودکار، صف پیام‌های ناموفق (DLQ)، مصرف همزمان از چند خوشه، و موازی‌سازی پیشرفته. همچنین از مشکلاتی مثل Head-of-Line Blocking جلوگیری می‌کند.

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

منبع:
https://lnkd.in/dVpS5ZaD
👏2👍1
راهنمای حرفه‌ای ساخت پایپ‌لاین‌های ETL/ELT با Apache Airflow

📘 نگاهی خلاصه به ایبوک ۴۴ صفحه‌ای Astronomer

در سال‌های اخیر، Apache Airflow به استانداردی در حوزه‌ی مدیریت وظایف زمان‌بندی‌شده و ارکستراسیون داده‌ها تبدیل شده است. نسخه‌ی ۳ این ابزار، با ویژگی‌های حرفه‌ای‌تری همچون:

پشتیبانی از Multi-DAG Deployment

اجرای مبتنی بر event از طریق Triggerer

قابلیت DAG Versioning

مصرف مستقیم از
Kafka

امکان XCom backendهای سفارشی

Dynamic Task Mapping و Data-driven Scheduling


آن را به انتخابی قدرتمند برای محیط‌های پیچیده داده‌ای و تولیدی تبدیل کرده است.

یکی از رایج‌ترین کاربردهای Airflow، ساخت پایپ‌لاین‌های ETL/ELT است. اما در دنیای امروز با حجم بالای داده، معماری‌های پیچیده و نیاز به مقیاس‌پذیری بالا، پیاده‌سازی این پایپ‌لاین‌ها به‌گونه‌ای که قابل‌اعتماد، مانیتورپذیر و توسعه‌پذیر باشند، چالش‌برانگیز شده است.


🔍 اخیراً شرکت Astronomer که خدمات Airflow در فضای ابری را ارائه می‌دهد، یک راهنمای جامع ۴۴ صفحه‌ای با عنوان Best Practices for ETL and ELT Pipelines with Apache Airflow منتشر کرده است که شامل نکات کاربردی و به‌روز برای ساخت پایپ‌لاین‌های حرفه‌ای است.

🗂 خلاصه فهرست مطالب ایبوک:

📌 مفاهیم پایه‌ای

تعریف ETL و ELT، بررسی تفاوت‌ها و سناریوهای ترکیبی (ETLT)

📌 تصمیمات مهم معماری

انتخاب بین XCom یا storage خارجی، اجرای محاسبات درون Airflow یا بیرون، انتخاب اپراتورها، بررسی کیفیت داده

📌 بهترین شیوه‌های نوشتن DAG

ساختار اتمی، idempotent و ماژولار — جلوگیری از top-level code — تنظیم Retry — پیاده‌سازی CI/CD و تست

📌 مقیاس‌پذیری و محیط اجرا

تنظیمات مقیاس در سطح DAG، تسک و محیط — توصیه‌های زیرساختی برای استقرار تولیدی

📌 ویژگی‌های حرفه‌ای Airflow

• امکان Dynamic Task Mapping

• تولید DAGها به‌صورت برنامه‌نویسی‌شده

• امکان Task Group ماژولار

• زمان‌بندی مبتنی بر Dataset

• مدیریت فضای ذخیره سازی - Airflow Object Storage

• استفاده از Kafka و قابلیت DAG Versioning

📌 اتصالات و Providerهای مهم

مروری بر AWS, GCP, Azure, Snowflake, dbt, Spark, Ray, PostgreSQL و Cosmos برای dbt

📌 چک‌لیست نهایی + معرفی Astronomer

چک‌لیستی کامل برای ارزیابی پایپ‌لاین‌ها و مرور امکانات پلتفرم Astronomer

📥 دانلود فایل PDF در پست بعدی 👇

#ApacheAirflow #Kafka #ETL #ELT #DataEngineering #OpenSource #Python #مهندسی_داده #پایپ‌لاین_داده #Airflow3
1
راهنمای حرفه‌ای ساخت پایپ‌لاین‌های ETL/ELT با Apache Airflow

📘 نگاهی خلاصه به ایبوک ۴۴ صفحه‌ای Astronomer

در سال‌های اخیر، Apache Airflow به استانداردی در حوزه‌ی مدیریت وظایف زمان‌بندی‌شده و ارکستراسیون داده‌ها تبدیل شده است. نسخه‌ی ۳ این ابزار، با ویژگی‌های حرفه‌ای‌تری همچون:

پشتیبانی از Multi-DAG Deployment

اجرای مبتنی بر event از طریق Triggerer

قابلیت DAG Versioning

مصرف مستقیم از
Kafka

امکان XCom backendهای سفارشی

امکان Dynamic Task Mapping و Data-driven Scheduling


آن را به انتخابی قدرتمند برای محیط‌های پیچیده داده‌ای و تولیدی تبدیل کرده است.

یکی از رایج‌ترین کاربردهای Airflow، ساخت پایپ‌لاین‌های ETL/ELT است. اما در دنیای امروز با حجم بالای داده، معماری‌های پیچیده و نیاز به مقیاس‌پذیری بالا، پیاده‌سازی این پایپ‌لاین‌ها به‌گونه‌ای که قابل‌اعتماد، مانیتورپذیر و توسعه‌پذیر باشند، چالش‌برانگیز شده است.


🔍 اخیراً شرکت Astronomer که خدمات Airflow در فضای ابری را ارائه می‌دهد، یک راهنمای جامع ۴۴ صفحه‌ای با عنوان Best Practices for ETL and ELT Pipelines with Apache Airflow منتشر کرده است که شامل نکات کاربردی و به‌روز برای ساخت پایپ‌لاین‌های حرفه‌ای است.

🗂 خلاصه فهرست مطالب ایبوک:

📌 مفاهیم پایه‌ای

تعریف ETL و ELT، بررسی تفاوت‌ها و سناریوهای ترکیبی (ETLT)

📌 تصمیمات مهم معماری

انتخاب بین XCom یا storage خارجی، اجرای محاسبات درون Airflow یا بیرون، انتخاب اپراتورها، بررسی کیفیت داده

📌 بهترین شیوه‌های نوشتن DAG

ساختار اتمی، idempotent و ماژولار — جلوگیری از top-level code — تنظیم Retry — پیاده‌سازی CI/CD و تست

📌 مقیاس‌پذیری و محیط اجرا

تنظیمات مقیاس در سطح DAG، تسک و محیط — توصیه‌های زیرساختی برای استقرار تولیدی

📌 ویژگی‌های حرفه‌ای Airflow

• امکان Dynamic Task Mapping

• تولید DAGها به‌صورت برنامه‌نویسی‌شده

• امکان Task Group ماژولار

• زمان‌بندی مبتنی بر Dataset

• مدیریت فضای ذخیره سازی - Airflow Object Storage

• استفاده از Kafka و قابلیت DAG Versioning

📌 اتصالات و Providerهای مهم

مروری بر AWS, GCP, Azure, Snowflake, dbt, Spark, Ray, PostgreSQL و Cosmos برای dbt

📌 چک‌لیست نهایی + معرفی Astronomer

چک‌لیستی کامل برای ارزیابی پایپ‌لاین‌ها و مرور امکانات پلتفرم Astronomer

📥 دانلود فایل PDF در پست بعدی 👇

#ApacheAirflow #Kafka #ETL #ELT #DataEngineering #OpenSource #Python #مهندسی_داده #پایپ‌لاین_داده #Airflow3
👍21
شروعی حرفه‌ای برای ورود به دنیای مهندسی داده – رایگان و بین‌المللی🎓

در دنیای امروز، یادگیری مهارت‌های عملی و نزدیک به پروژه‌های واقعی، مهم‌ترین مزیت رقابتی برای ورود به بازار کار حوزه داده است.

اگر شما هم به دنبال فرصتی برای یادگیری ساخت‌یافته، کاربردی، و تحت نظر یک تیم متخصص بین‌المللی هستید، این بوت‌کمپ رایگان مهندسی داده یک فرصت بی‌نظیر است.

👨‍🏫 برگزارکننده: Zach Wilson

مؤسس DataExpert.io و از شناخته‌شده‌ترین چهره‌های حوزه داده با بیش از ۱ میلیون دنبال‌کننده در شبکه‌های اجتماعی.

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


🏫 درباره بوت‌کمپ:

بوت‌کمپ ۶ هفته‌ای "Community Edition" با هدف توانمندسازی علاقه‌مندان به مهندسی داده، به صورت رایگان و با تمرکز بر مهارت‌های کاربردی برگزار می‌شود.

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


🧠 سرفصل‌های آموزشی:

📚 مدل‌سازی داده‌های بعدی و واقعی – طراحی ساختارهای تحلیلی پیشرفته

📚 پردازش داده‌های کلان با سرعت بالا - Apache Spark و PySpark

📚 ساخت پایپ‌لاین‌های بلادرنگ و مدیریت جریان داده - Apache Flink و Kafka

📚 الگوهای تحلیلی و طراحی شاخص‌های کلیدی عملکرد (KPI)

📚 کیفیت داده و مستندسازی حرفه‌ای مانند Airbnb

📚 مصورسازی داده با Tableau و ارائه اثرگذار یافته‌ها

📚نگهداری و بهبود پایپ‌لاین‌های داده‌ای در محیط واقعی


🎯 چرا این بوت‌کمپ ارزشمند است؟

🔹 نگاه عملیاتی و واقعی به مسائل مهندسی داده

🔹 طراحی شده توسط تیمی با تجربه بین‌المللی و پروژه‌های کلان

🔹 یادگیری مبتنی بر سناریوهای واقعی شغلی

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

🔹 امکان تعامل با جامعه جهانی مهندسان داده در Discord

🔹 دریافت مدرک پایان دوره به‌صورت رسمی


📥 مراحل ثبت‌نام:


ثبت‌نام رایگان در سایت: learn.dataexpert.io

دریافت هندبوک و تمرین‌ها: https://github.com/DataExpert-io/data-engineer-handbook

عضویت در کامیونیتی و گروه پشتیبانی در دیسکورد: لینک عضویت

ارسال تمرین‌های هفتگی – برای حفظ نظم و یادگیری تدریجی

📌 تا امروز بیش از ۵۰ هزار نفر از سراسر دنیا ثبت‌نام کرده‌اند

🎯 زک ویلسون پیش‌بینی کرده تنها حدود ۵۰۰ نفر به پایان مسیر و دریافت گواهی می‌رسند

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

جزو ۱٪ افراد مصمم باش!

#بوتکمپ_داده #مهندسی_داده #DataEngineering #ApacheSpark #Flink #Kafka #SQL #Python #DataQuality #Tableau #آموزش_کاربردی #مدرک_بین‌المللی #ZackWilson #DataExpert #دوره_رایگان #DataCareer
1
چطور تسلا با ClickHouse یک پلتفرم مشاهده‌پذیری در مقیاس نجومی ساخت؟

مشاهده‌پذیری در مقیاس کوادریلیون (هزار بیلیارد) با ClickHouse و پروژه‌ای به نام Comet

داستان تغییر زیرساخت observability تسلا از کجا شروع شد ؟

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


👨‍💻 مهندس ارشد تسلا Alon Tal، می‌گوید:

«ما به سیستمی نیاز داشتیم که بتونه ده‌ها میلیون ردیف در ثانیه را ingest کنه، سال‌ها داده رو نگه داره، و همچنان real-time پاسخ بده.»

چرا Prometheus کافی نبود؟

🔸 مقیاس‌پذیری افقی محدود

🔸 وابستگی به یک سرور واحد (ریسک از دست دادن کل متریک‌ها)

🔸 مشکلات نگهداری بلندمدت و زبان کوئری محدود

راه‌حل: ساخت یک سیستم جدید به نام Comet

💡 با استفاده از ClickHouse به عنوان هسته‌ی اصلی، تسلا یک پلتفرم metrics محور ساخت که:

📥 داده‌ها را از طریق OTLP و Kafka ingest می‌کند

⚙️ با ETLهای سفارشی داده‌ها را به شکل ساخت‌یافته وارد ClickHouse می‌کند

🔄 و مهم‌تر از همه:

کوئری‌های PromQL را به SQL معادل در ClickHouse ترجمه می‌کند بدون اینکه مهندسان متوجه تفاوت شوند!

🧠 یعنی داشبوردهای موجود (Grafana، Alertmanager، و...) بدون تغییر کار می‌کنند!

💥 مقیاس واقعی؟

یک میلیارد ردیف در ثانیه! به مدت ۱۱ روز پیاپی!

نتیجه؟

🔹 بدون یک خطا

🔹 مصرف ثابت RAM و CPU

🔹 بیش از ۱ کوادریلیون رکورد با موفقیت ingest شده!

📊 سیستم هنوز هم در حال scale شدن برای تیم‌های داخلی تسلاست!

چرا ClickHouse؟

🔹 سرعت بی‌رقیب در پاسخ به کوئری‌های پیچیده

🔹 UDFهای اجرایی برای کوئری‌های غیر trivial

🔹 پشتیبانی از PromQL و TraceQL

🔹 نگهداری بلندمدت داده‌ها با حجم بالا

🔹 و مهم‌تر از همه: قابلیت اطمینان بالا در مقیاس تسلا!

🔭 آینده‌ی Comet؟

🔧 پشتیبانی از distributed tracing

🌍 احتمال open-source شدن

🎯 گسترش به دیگر واحدهای عملیاتی در تسلا

📎 جمع‌بندی

تسلا با پروژه‌ی Comet ثابت کرد که observability در مقیاس سیاره‌ای ممکن است—اگر ابزار مناسب انتخاب شود!


حالا واقعا پرومتئوس حذف شد؟

تسلا Prometheus رو به‌طور مستقیم حذف نکرد، ولی:

🌟دیگه از خود Prometheus برای ذخیره‌سازی و کوئری استفاده نمی‌کنه.

🌟 به‌جاش، پلتفرمی به نام Comet ساخت که خودش می‌تونه PromQL (زبان کوئری Prometheus) رو اجرا کنه و پشت صحنه با کلیک‌هوس ارتباط بگیره و خروجی بده بدون اینکه واقعاً Prometheus وجود داشته باشه!


🔗 منبع اصلی:

https://clickhouse.com/blog/how-tesla-built-quadrillion-scale-observability-platform-on-clickhouse

#ClickHouse #Observability #Tesla #PromQL #DataEngineering #Scalability #TimeSeries #Kafka #DevOps #OpenTelemetry #Infrastructure
👍41
آپاچی کافکا، ستون فقرات معماری‌های داده‌محور... اما نه همیشه!

برای بسیاری از ما، آپاچی کافکا #Kafka نماد مقیاس‌پذیری، پایداری و قدرت در طراحی معماری‌های real-time و event-driven است.

اما اگر نیاز ما صرفاً یک ورود ساده‌ی داده (ingestion) بدون نیاز به بازپخش (replay) یا چند مصرف‌کننده مستقل (consumer) باشد، آیا باز هم کافکا انتخاب درستی است؟

🧵 در یک مقاله دقیق از تیم ThreadSafe Diaries، همین سؤال مطرح شده و آن‌ها تلاش کردند برای بخشی از سیستم خود، راه‌حلی ساده‌تر و کارآمدتر پیدا کنند. این پست، چکیده‌ای از تجربه‌ی آن‌هاست:

🔗 لینک مقاله کامل


📉 چالش‌ها و مشکلات معماری مبتنی بر آپاچی کافکا:

🔸 استفاده از کافکا + ZooKeeper با خوشه‌ای ۳ نودی برای ingest داده‌های تحلیلی

🔸 تنها با ۱۸هزار رویداد در ثانیه، سیستم دچار مشکلات زیر شد:

⚠️ تأخیرهای مداوم در مصرف‌کننده‌ها (Consumer Lag)

⚠️ اختلالات در offset و هماهنگی (Coordination)

⚠️ فشار زیاد روی دیسک و هزینه بالای زیرساخت (EC2 + EBS)

⚠️ نیاز مداوم به پشتیبانی عملیاتی و تیم DevOps

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

راه‌حل ساده‌تر و مؤثرتر چه بود؟

🔹 استفاده از ترکیب Redis Streams و یک مجموعه Go workerهای بدون‌حالت (stateless)

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

📨 ارسال دسته‌ای رویدادها از سمت فرانت‌اند (هر ۳ تا ۵ ثانیه)

🧩 یک API سبک برای دریافت و ذخیره در Redis Streams

⚙️ مجموعه‌ای از Go workerها که داده‌ها را از stream خوانده و به Postgres، S3 یا سرویس‌های ML می‌فرستند



📊 دستاوردهای معماری جدید با Redis Streams:

- افزایش نرخ پردازش: از ۱۸هزار به ۴۲هزار رویداد در ثانیه (۲.۳×)

- کاهش تأخیر: از ۲۵ms به ۳.۲ms (۷.۸× سریع‌تر)

- صرفه‌جویی در هزینه: از ۳,۲۰۰ دلار به ۱,۰۵۰ دلار در ماه (۶۷٪ کاهش)

- کاهش هشدارهای عملیاتی: از ۴–۵ بار در ماه به صفر تماس اضطراری



💡 آیا این یعنی آپاچی کافکا دیگر مفید نیست؟ قطعاً نه!

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

اما وقتی نیازها ساده‌ترند، این ابزار سنگین تبدیل به سربار می‌شود:

🔸 پیچیدگی عملیاتی، هزینه و زمان توسعه و نگهداری بیشتر



📚 درس‌هایی که تیم آموخت:

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

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

🔹 بنچمارک واقعی همیشه بهتر از فرضیات است؛ Redis در تست‌های عملی، عملکرد بهتری از کافکا داشت — نه صرفاً روی کاغذ یا در مستندات.

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

🔹 پیچیدگی مهاجرت و نگهداری مهم است؛ گاهی فقط نیاز به ارتقاء (مثل مهاجرت از ZooKeeper به KRaft) می‌تواند دلیلی کافی برای بازطراحی معماری باشد.

نتیجه‌گیری:

انتخاب ابزار مناسب، بیش از آنکه به «قدرت» آن مربوط باشد، به تناسبش با نیاز واقعی سیستم شما بستگی دارد. سادگی، وقتی به‌درستی انتخاب شود، می‌تواند بهترین ابزار مهندسی باشد.
👍72
پردازش ۱.۲ میلیون پیام در ثانیه با Kafka و Go — معماری سبک اما حرفه‌ای 🎯
وقتی نرخ ورود داده به میلیون‌ها پیام در ثانیه می‌رسد، عامل تعیین‌کننده در یک معماری بهینه و سریع و موثر، نه ارتقای پرهزینه‌ی سخت‌افزار است و نه تکیه بر زیرساخت‌های سنگین ابری، بلکه یک طراحی دقیق، ساده و هوشمندانه است که می‌تواند تفاوت واقعی را رقم بزند.
📖 اخیراً با مقاله‌ای مواجه شدم که دقیقاً همین رویکرد را نشان می‌داد: تیمی که با استفاده از مفاهیم سبک‌وزن مانند goroutine در Go و چند تصمیم مهندسی‌شده، توانسته بودند تنها با یک سخت‌افزار معمولی، بیش از ۱ میلیون پیام در ثانیه را به‌صورت پایدار پردازش کنند.
در این پست، به مرور نکات کلیدی این معماری ساده اما تأثیرگذار می‌پردازیم — روایتی کاربردی از دنیای مهندسی داده و سیستم‌های توزیع‌شده.
📄 مقاله اصلی:
Kafka at 1M Messages/Second with Go – Our Exact Pipeline Setup 👉 https://freedium.cfd/https://medium.com/@harishsingh8529/kafka-at-1m-messages-second-with-go-our-exact-pipeline-setup-aa2c5473b139

📦 چالش‌ها:
⚠️هجوم سنگین داده‌ها از دستگاه‌های IoT و کاربران
⚠️نیاز به پردازش بلادرنگ و ارسال همزمان به چند سرویس
⚠️تضمین پایداری، مانیتورینگ دقیق و ریکاوری خودکار در خطا

🛠 مکانیزم‌هایی که این معماری را ممکن کردند:
کامیت دستی offsetها:
تأیید دریافت فقط زمانی انجام می‌شود که پیام کاملاً و با موفقیت پردازش شده باشد — جلوگیری از گم‌شدن یا پردازش تکراری داده‌ها.
مکانیزم Worker Pool کنترل‌شده با goroutine:
به‌جای ایجاد goroutine برای هر پیام، یک استخر ثابت از goroutineها (به ازای هر پارتیشن کافکا) با طول کانال مشخص و محدود، تعریف شده است که پیام‌ها را موازی اما کنترل‌شده پردازش می‌کنند.
یک Worker Pool به ازای هر پارتیشن Kafka:
مثلاً با ۱۰ پارتیشن و ۵ goroutine برای هر پارتیشن، در مجموع ۵۰ goroutine داریم — بدون هم‌پوشانی، بدون رقابت اضافه.
الگوی Dispatcher برای جداسازی دریافت از پردازش:
- بخش اول: فقط دریافت پیام و ارسال به کانال داخلی (یک کانسیومر به ازای هر پارتیشن)
- بخش دوم: پردازش پیام از صف به کمک Worker Pool
دسته بندی پیام ها یا Batching در ارسال خروجی:
پیام‌های پردازش‌شده به‌صورت گروهی ارسال می‌شوند، مثلاً به دیتابیس یا تاپیک‌های دیگر Kafka. این کار فشار ارتباطی را کاهش داده و throughput را بالا برده است.
مکانیزم Backpressure هوشمند:
با محدود کردن ظرفیت صف‌ها، اگر سیستم تحت فشار شدید قرار گیرد، مصرف از Kafka موقتاً کند یا متوقف می‌شود تا منابع آزاد شوند. این مکانیزم، از overload جلوگیری کرده و سیستم را در حالت پایدار نگه می‌دارد.
مانیتورینگ دقیق با Prometheus و Grafana:
شاخص‌هایی مثل تأخیر پردازش، consumer lag و مصرف CPU به‌صورت لحظه‌ای مانیتور می‌شوند — برای تنظیم سریع و واکنش فوری.

📊 نتایج:
- نرخ پردازش: ۱.۲M msg/sec
- تأخیر کل مسیر: <۳ms
- مصرف CPU: ۹۰٪ (پایدار و قابل پیش‌بینی)

💡 نکات مهم برای مهندسان داده و سیستم‌های توزیع‌شده:
🔹طراحی درست مهم‌تر از افزایش منابع
🔹 طراحی commit دقیق، batching و backpressure = ستون‌های یک سیستم مقاوم
🔹تفکیک دریافت/پردازش + تقسیم کار بین پارتیشن‌ها = مقیاس‌پذیری مؤثر
🔹مانیتورینگ لحظه‌ای = پاسخ سریع به فشارها و خطاها

#Kafka #GoLang #DataEngineering #HighThroughput #Concurrency #RealTime #ScalableArchitecture #مهندسی_داده #سیستم_توزیع_یافته #معماری_مقیاس‌پذیر