دوره پیش نیاز: مبانی طراحی سیستمهای دادهمحور
معرفی دوره وقتی حجم دادهها، نرخ ترافیک نوشتن و خواندن، یا نیازمندیهای دسترسیپذیری جغرافیایی از توان یک ماشین واحد فراتر میرود، چارهای جز ورود به دنیای سیستمهای توزیعشده وجود ندارد. با این حال، توزیع دادهها بهای سنگینی به همراه دارد: شبکههای نامطمئن با قطعیهای غیرمنتظره، ساعتهای سختافزاری با انحراف زمانی، ناهماهنگی در کپی دادهها و پدیده شکستهای جزئی (Partial Failures). در این دوره بر اساس بینشهای عمیق کتاب مرجع Designing Data-Intensive Applications اثر مارتین کلپمن، گامبهگام با اصول معماری دادههای توزیعشده آشنا میشوید. از استراتژیهای رپلیکیشن و تکنیکهای پارتیشنبندی گرفته تا مدیریت ساعتهای نامطمئن، تضمینهای خطیپذیری و پروتکلهای اجماع توزیعشده، تمامی مفاهیم همراه با سناریوهای ملموس مهندسی و چالشهای تعاملی پلتفرم دیپ یار کالبدشکافی میشوند. سرفصلهای دوره: فصل ۱ — چرا توزیع میکنیم و اصل طراحی برای شکست: انگیزههای مقیاسپذیری و پایایی، درک شکستهای جزئی و دگرگونی تفکر در سیستمهای توزیعشده. فصل ۲ — استراتژیهای رپلیکیشن و ناهنجاریهای تأخیر: کالبدشکافی مدلهای تکلیدری، چندلیدری و بدون لیدر، تضمینهای سازگاری و تکنیک کووروم (Quorum). فصل ۳ — پارتیشنبندی و توزیع بار: تقسیم داده بر اساس بازه کلید و هش، هشینگ پایدار (Consistent Hashing) و چالشهای شاخصهای ثانویه. فصل ۴ — شبکههای نامطمئن، ساعتها و توقفهای زمانی: خطرات ساعتهای سختافزاری، پرشهای زمانی، توقفهای GC و تکنیک Fencing Tokens. فصل ۵ — خطیپذیری، اجماع و تعهد توزیعشده: تفاوت خطیپذیری و سریالپذیری، قضیه CAP، پروتکلهای 2PC، Raft و Paxos. فصل ۶ — پروژه نهایی و ارزیابی جامع: طراحی گامبهگام معماری پایگاه داده توزیعشده برای یک سرویس مقیاس بزرگ جهانی و آزمون جامع پایانی. اهداف و دستاوردهای یادگیری: انتخاب استراتژی رپلیکیشن بهینه (تکلیدری، چندلیدری و بدون لیدر Dynamo-style) متناسب با نیازمندیهای بار و تحمل خطا شناسایی و خنثیسازی ناهنجاریهای ناشی از تأخیر رپلیکیشن از طریق تضمینهای سازگاری نظیر Read-Your-Own-Writes و Monotonic Reads طراحی معماری پارتیشنبندی مقیاسپذیر با استفاده از هشینگ پایدار (Consistent Hashing) و مدیریت ایندکسهای ثانویه تحلیل عمیق خطرات ساعتهای نامطمئن، انحرافات زمانی و توقفهای Garbage Collection و پیادهسازی مکانیزمهای Fencing تمایز دقیق خطیپذیری (Linearizability) از سریالپذیری (Serializability) و تحلیل محدودیتهای قضیه CAP ارزیابی پروتکلهای اجماع توزیعشده (Raft, Paxos, Zab) در مقایسه با تعهد دو مرحلهای (2PC) در شرایط شکست شبکه
بر اساس کتاب Designing Data-Intensive
معرفی دوره چرا برخی سیستمهای نرمافزاری سالها با پایداری بالا و بدون افت عملکرد کار میکنند، در حالی که سیستمهای دیگر با رشد کاربران و حجم دادهها فرو میریزند؟ پاسخ در درک عمیق تریدآفهای معماری (Architectural Trade-offs) نهفته است. در دنیای نرمافزارهای مدرن، چالش اصلی دیگر محدودیت پردازشی CPU نیست؛ بلکه حجم، تنوع و سرعت تغییرات دادهها تعیینکننده موفقیت یا شکست یک سیستم است. در این دوره بر اساس بینشهای کتاب مرجع Designing Data-Intensive Applications اثر مارتین کلپمن، از سطح صفر با سه ستون بنیادین سیستمهای داده (پایایی، مقیاسپذیری و نگهپذیری) آغاز میکنید، مدلهای مختلف داده را مقایسه و ارزیابی میکنید، موتورهای ذخیرهسازی را کالبدشکافی میکنید و در نهایت یاد میگیرید چگونه اسکیمای سیستمهای زنده را بدون خرابی تکامل دهید. سرفصلهای دوره: فصل ۱ — مبانی پایایی و ارزیابی کارایی: تعریف فنی پایایی، مقیاسپذیری و نگهپذیری؛ اندازهگیری کارایی واقعی با صدکها و تشخیص تأخیر دُم. فصل ۲ — مدلهای داده و انتخاب مدل مناسب: مقایسه تحلیلی مدلهای رابطهای، سندمحور و گرافمحور و تصمیمگیری مبتنی بر سناریو. فصل ۳ — کالبدشکافی موتورهای ذخیرهسازی: ساختارهای LSM-Tree و B-Tree، تفاوت OLTP و OLAP و نقش ذخیرهسازی ستونی. فصل ۴ — سریالسازی و تکامل سازگار اسکیما: فرمتهای باینری (Protobuf، Thrift، Avro) و استراتژیهای تغییر اسکیما بدون Downtime. فصل ۵ — پروژه نهایی و ارزیابی جامع: طراحی معماری داده برای یک سناریو واقعی و آزمون یکپارچه تمام مفاهیم دوره. اهداف و دستاوردهای یادگیری: ارزیابی تریدآفهای سهگانه پایایی (Reliability)، مقیاسپذیری (Scalability) و نگهپذیری (Maintainability) در تصمیمات معماری سیستمهای داده اندازهگیری و تفسیر کارایی واقعی سیستم با صدکها (Percentiles) و تشخیص علل تأخیر دُم (Tail Latency) انتخاب مدل داده مناسب (رابطهای، سندمحور، گرافمحور) بر اساس الگوی دسترسی و ماهیت روابط دادهها کالبدشکافی و مقایسه موتورهای ذخیرهسازی LSM-Tree و B-Tree و تشخیص کاربرد هریک بر اساس بار کاری تمایز سیستمهای تراکنشی (OLTP) از تحلیلی (OLAP) و درک نقش ذخیرهسازی ستونی در انبارههای داده طراحی استراتژی تکامل سازگار اسکیما (Forward/Backward Compatibility) برای سیستمهای زنده و بدون Downtime