طراحی سیستم: موضوعات – انجمن DEV

Summarize this content to 400 words in Persian Lang
تسلط بر طراحی سیستم: از اصول اولیه تا معماری پیشرفته
بخش اول: مقدمه ای بر طراحی سیستم
فصل 1: طراحی سیستم چیست؟
اهمیت طراحی سیستم
طراحی سیستم در مصاحبه ها و سناریوهای دنیای واقعی
طراحی سطح بالا (HLD) در مقابل طراحی سطح پایین (LLD)
فصل 2: مفاهیم کلیدی طراحی سیستم
مقیاس پذیری
در دسترس بودن
قابلیت اطمینان
قابلیت نگهداری
قوام و قضیه CAP
تأخیر و توان عملیاتی
بخش دوم: بلوک های ساختمان اصلی طراحی سیستم
فصل سوم: مبانی شبکه
مبانی شبکه های کامپیوتری
HTTP/HTTPS، TCP/IP، DNS و Load Balancers
شبکه های تحویل محتوا (CDN)
SSL، TLS و امنیت در شبکه
فصل 4: ذخیره سازی داده ها و پایگاه های داده
پایگاه های داده رابطه ای در مقابل غیر رابطه ای
پارتیشن بندی پایگاه داده، اشتراک گذاری، تکرار
پایگاه های داده SQL، NoSQL
خواص اسید در مقابل باز
ذخیره سازی و پایگاه های داده در حافظه (Redis، Memcached)
سازگاری داده ها و تراکنش ها
فصل 5: استراتژی های ذخیره سازی
مقدمه ای بر ذخیره سازی و باطل کردن حافظه پنهان
کش سمت کلاینت در مقابل کش سمت سرور
سیاست های جایگزینی حافظه پنهان (LRU، LFU، و غیره)
حافظه پنهان توزیع شده (Redis، Memcached)
فصل 6: تعادل بار
مقیاس بندی افقی در مقابل عمودی
انواع متعادل کننده بار (سخت افزار، نرم افزار، مبتنی بر DNS)
الگوریتم های متعادل کننده بار (Round Robin، حداقل اتصالات و غیره)
توزیع ترافیک و خرابی
فصل 7: صف های پیام و معماری رویداد محور
ارتباط همزمان در مقابل ارتباط ناهمزمان
صف های پیام (RabbitMQ، Kafka)
معماری رویداد محور و منبع رویداد
کارگزاران پیام و ناشران/مشترکین
فصل 8: مبانی سیستم های توزیع شده
مبانی محاسبات توزیع شده
هماهنگی در سیستم های توزیع شده
الگوریتم های اجماع (Paxos، Raft و غیره)
ذخیره سازی و تکثیر داده های توزیع شده
فصل نهم: معماری میکروسرویس ها
مقدمه ای بر میکروسرویس ها
میکروسرویس ها در مقابل معماری یکپارچه
کشف سرویس، دروازه های API و ارتباط بین سرویس ها
مدیریت داده در میکروسرویس ها
بخش سوم: طراحی سیستم سطح بالا (HLD)
فصل 10: طراحی سیستم های مقیاس پذیر
تکنیک های مقیاس بندی سیستم (عمودی در مقابل افقی)
خدمات بدون تابعیت در مقابل خدمات دولتی
پایگاه داده های توزیع شده و پارتیشن بندی داده ها
مقیاس خودکار، نظارت و برنامه ریزی ظرفیت
فصل 11: طراحی برای دسترسی بالا
استراتژی های افزونگی و شکست
معماری های فعال-فعال در مقابل معماری های فعال-منفعل
طراحی برای تحمل خطا
برنامه ریزی بازیابی بلایا
فصل 12: الگوهای طراحی در معماری سیستم
معماری سرویس گیرنده-سرور
سیستم های همتا به همتا (P2P).
معماری رویداد محور
معماری میکروکرنل
فصل 13: سازگاری و یکپارچگی داده ها
قوام قوی در مقابل نهایی
قضیه CAP در عمل
تراکنش های توزیع شده و 2PC
استراتژی های حل تعارض
بخش چهارم: طراحی سطح پایین (LLD)
فصل چهاردهم: مبانی طراحی شی گرا
اصول جامد
الگوهای طراحی (Factory، Singleton، Observer و غیره)
طراحی رابط و انتزاعات
ماژولار بودن کد و قابلیت استفاده مجدد
فصل 15: طراحی پایگاه های داده
مدل سازی داده ها و طراحی طرحواره
عادی سازی و غیر عادی سازی
استراتژی های نمایه سازی
تکنیک های بهینه سازی پرس و جو
فصل 16: طراحی API
طراحی RESTful API
روش های HTTP (GET، POST، PUT، DELETE)
نسخه API و امنیت
محدود کردن نرخ و صفحه بندی
فصل 17: احراز هویت و مجوز
مکانیسم های احراز هویت (OAuth، JWT، و غیره)
کنترل دسترسی مبتنی بر نقش (RBAC)
مدیریت جلسه
بهترین شیوه های امنیت داده ها
فصل 18: طراحی مقاوم در برابر خطا
الگوهای مدار شکن
استراتژی ها را دوباره امتحان کنید
مکانیسم های شکست
انحطاط برازنده
فصل 19: نظارت و قابل مشاهده
معیارها، ورود به سیستم و ردیابی
سیستم های ثبت مرکزی (ELK Stack)
ردیابی توزیع شده (Zipkin، Jaeger)
سیستم های هشدار دهنده
بخش پنجم: مطالعات موردی و سیستم های عملی
فصل 20: طراحی کوتاه کننده URL
جمع آوری نیازمندی ها
معماری و اجزای سطح بالا
طراحی پایگاه داده و نقشه برداری URL
ملاحظات ذخیره سازی و مقیاس بندی
فصل 21: طراحی پلتفرم تجارت الکترونیک
مدیریت کاربر، کاتالوگ و سبد خرید
پردازش سفارش و مدیریت موجودی
درگاه های پرداخت و سیستم بازپرداخت
مقیاس پذیری و تحمل خطا
فصل 22: طراحی سیستم اشتراک گذاری سواری
ردیابی موقعیت مکانی در زمان واقعی و تطبیق رانندگان با سواران
مدیریت سفر و محاسبه کرایه
بهینه سازی مسیر و مدیریت ترافیک
در دسترس بودن بالا و تحمل خطا
فصل 23: طراحی بستر پخش ویدئو
توزیع محتوا و CDN ها
رمزگذاری ویدیو و جریان بیت تطبیقی
موتور توصیه و شخصی سازی
مدیریت ترافیک بالا و کاهش تاخیر
فصل 24: طراحی یک برنامه چت بلادرنگ
ارسال و ماندگاری پیام
مدیریت حضور کاربر
WebSockets در مقابل Long-Polling
مقیاس پذیری، تعادل بار، و یکپارچه سازی صف پیام
فصل 25: طراحی پلتفرم رسانه های اجتماعی
نمایههای کاربر، پستها و تولید فید اخبار
سیستم های اعلان و به روز رسانی در زمان واقعی
ذخیره و بازیابی داده ها در مقیاس
مدیریت همزمان میلیون ها کاربر
فصل 26: طراحی موتور جستجو
خزیدن وب و نمایه سازی
الگوریتم های پردازش و رتبه بندی پرس و جو
پارتیشن بندی و به اشتراک گذاری داده ها
بهینه سازی تاخیر
بخش ششم: مباحث پیشرفته در طراحی سیستم
فصل 27: سیستم های فایل توزیع شده
سیستم فایل توزیع شده Hadoop (HDFS)
سیستم فایل گوگل (GFS)
تکرار داده ها و تحمل خطا
فصل 28: پردازش بلادرنگ داده
پردازش دسته ای در مقابل جریان
آپاچی کافکا، آپاچی فلینک و طوفان آپاچی
از موارد برای تجزیه و تحلیل بلادرنگ استفاده کنید
فصل 29: یادگیری ماشین در طراحی سیستم
ترکیب مدل های ML در معماری سیستم
آموزش در مقابل مدل های سرویس دهی
توصیه ها و شخصی سازی در زمان واقعی
فصل 30: امنیت در سیستم های توزیع شده
رمزگذاری داده ها و ارتباط امن
حریم خصوصی داده های کاربر و انطباق (GDPR)
ایمن سازی API ها و خدمات احراز هویت
قسمت هفتم: آماده سازی مصاحبه برای طراحی سیستم
فصل 31: الگوهای مصاحبه طراحی سیستم
شکستن الزامات
مبادلات و توجیه تصمیمات طراحی
تفکر بر حسب مقیاس پذیری، قابلیت اطمینان و در دسترس بودن
فصل 32: سوالات مصاحبه طراحی سیستم رایج
نمونه سوالات و راهکارهای پاسخگویی
طراحی راه حل ها تحت محدودیت ها (هزینه، زمان و …)
رسیدگی به ابهام و الزامات در حال تحول
فصل 33: موارد مصاحبه طراحی سیستم ساختگی
مورد 1: یک ویرایشگر اسناد مشارکتی بلادرنگ طراحی کنید
مورد 2: طراحی سرویس تحویل غذا به صورت آنلاین
مورد 3: طراحی یک سیستم ذخیره سازی فایل توزیع شده
مورد چهارم: طراحی یک سیستم تبلیغات جهانی
تسلط بر طراحی سیستم: از اصول اولیه تا معماری پیشرفته
بخش اول: مقدمه ای بر طراحی سیستم
-
فصل 1: طراحی سیستم چیست؟
- اهمیت طراحی سیستم
- طراحی سیستم در مصاحبه ها و سناریوهای دنیای واقعی
- طراحی سطح بالا (HLD) در مقابل طراحی سطح پایین (LLD)
-
فصل 2: مفاهیم کلیدی طراحی سیستم
- مقیاس پذیری
- در دسترس بودن
- قابلیت اطمینان
- قابلیت نگهداری
- قوام و قضیه CAP
- تأخیر و توان عملیاتی
بخش دوم: بلوک های ساختمان اصلی طراحی سیستم
-
فصل سوم: مبانی شبکه
- مبانی شبکه های کامپیوتری
- HTTP/HTTPS، TCP/IP، DNS و Load Balancers
- شبکه های تحویل محتوا (CDN)
- SSL، TLS و امنیت در شبکه
-
فصل 4: ذخیره سازی داده ها و پایگاه های داده
- پایگاه های داده رابطه ای در مقابل غیر رابطه ای
- پارتیشن بندی پایگاه داده، اشتراک گذاری، تکرار
- پایگاه های داده SQL، NoSQL
- خواص اسید در مقابل باز
- ذخیره سازی و پایگاه های داده در حافظه (Redis، Memcached)
- سازگاری داده ها و تراکنش ها
-
فصل 5: استراتژی های ذخیره سازی
- مقدمه ای بر ذخیره سازی و باطل کردن حافظه پنهان
- کش سمت کلاینت در مقابل کش سمت سرور
- سیاست های جایگزینی حافظه پنهان (LRU، LFU، و غیره)
- حافظه پنهان توزیع شده (Redis، Memcached)
-
فصل 6: تعادل بار
- مقیاس بندی افقی در مقابل عمودی
- انواع متعادل کننده بار (سخت افزار، نرم افزار، مبتنی بر DNS)
- الگوریتم های متعادل کننده بار (Round Robin، حداقل اتصالات و غیره)
- توزیع ترافیک و خرابی
-
فصل 7: صف های پیام و معماری رویداد محور
- ارتباط همزمان در مقابل ارتباط ناهمزمان
- صف های پیام (RabbitMQ، Kafka)
- معماری رویداد محور و منبع رویداد
- کارگزاران پیام و ناشران/مشترکین
-
فصل 8: مبانی سیستم های توزیع شده
- مبانی محاسبات توزیع شده
- هماهنگی در سیستم های توزیع شده
- الگوریتم های اجماع (Paxos، Raft و غیره)
- ذخیره سازی و تکثیر داده های توزیع شده
-
فصل نهم: معماری میکروسرویس ها
- مقدمه ای بر میکروسرویس ها
- میکروسرویس ها در مقابل معماری یکپارچه
- کشف سرویس، دروازه های API و ارتباط بین سرویس ها
- مدیریت داده در میکروسرویس ها
بخش سوم: طراحی سیستم سطح بالا (HLD)
-
فصل 10: طراحی سیستم های مقیاس پذیر
- تکنیک های مقیاس بندی سیستم (عمودی در مقابل افقی)
- خدمات بدون تابعیت در مقابل خدمات دولتی
- پایگاه داده های توزیع شده و پارتیشن بندی داده ها
- مقیاس خودکار، نظارت و برنامه ریزی ظرفیت
-
فصل 11: طراحی برای دسترسی بالا
- استراتژی های افزونگی و شکست
- معماری های فعال-فعال در مقابل معماری های فعال-منفعل
- طراحی برای تحمل خطا
- برنامه ریزی بازیابی بلایا
-
فصل 12: الگوهای طراحی در معماری سیستم
- معماری سرویس گیرنده-سرور
- سیستم های همتا به همتا (P2P).
- معماری رویداد محور
- معماری میکروکرنل
-
فصل 13: سازگاری و یکپارچگی داده ها
- قوام قوی در مقابل نهایی
- قضیه CAP در عمل
- تراکنش های توزیع شده و 2PC
- استراتژی های حل تعارض
بخش چهارم: طراحی سطح پایین (LLD)
-
فصل چهاردهم: مبانی طراحی شی گرا
- اصول جامد
- الگوهای طراحی (Factory، Singleton، Observer و غیره)
- طراحی رابط و انتزاعات
- ماژولار بودن کد و قابلیت استفاده مجدد
-
فصل 15: طراحی پایگاه های داده
- مدل سازی داده ها و طراحی طرحواره
- عادی سازی و غیر عادی سازی
- استراتژی های نمایه سازی
- تکنیک های بهینه سازی پرس و جو
-
فصل 16: طراحی API
- طراحی RESTful API
- روش های HTTP (GET، POST، PUT، DELETE)
- نسخه API و امنیت
- محدود کردن نرخ و صفحه بندی
-
فصل 17: احراز هویت و مجوز
- مکانیسم های احراز هویت (OAuth، JWT، و غیره)
- کنترل دسترسی مبتنی بر نقش (RBAC)
- مدیریت جلسه
- بهترین شیوه های امنیت داده ها
-
فصل 18: طراحی مقاوم در برابر خطا
- الگوهای مدار شکن
- استراتژی ها را دوباره امتحان کنید
- مکانیسم های شکست
- انحطاط برازنده
-
فصل 19: نظارت و قابل مشاهده
- معیارها، ورود به سیستم و ردیابی
- سیستم های ثبت مرکزی (ELK Stack)
- ردیابی توزیع شده (Zipkin، Jaeger)
- سیستم های هشدار دهنده
بخش پنجم: مطالعات موردی و سیستم های عملی
-
فصل 20: طراحی کوتاه کننده URL
- جمع آوری نیازمندی ها
- معماری و اجزای سطح بالا
- طراحی پایگاه داده و نقشه برداری URL
- ملاحظات ذخیره سازی و مقیاس بندی
-
فصل 21: طراحی پلتفرم تجارت الکترونیک
- مدیریت کاربر، کاتالوگ و سبد خرید
- پردازش سفارش و مدیریت موجودی
- درگاه های پرداخت و سیستم بازپرداخت
- مقیاس پذیری و تحمل خطا
-
فصل 22: طراحی سیستم اشتراک گذاری سواری
- ردیابی موقعیت مکانی در زمان واقعی و تطبیق رانندگان با سواران
- مدیریت سفر و محاسبه کرایه
- بهینه سازی مسیر و مدیریت ترافیک
- در دسترس بودن بالا و تحمل خطا
-
فصل 23: طراحی بستر پخش ویدئو
- توزیع محتوا و CDN ها
- رمزگذاری ویدیو و جریان بیت تطبیقی
- موتور توصیه و شخصی سازی
- مدیریت ترافیک بالا و کاهش تاخیر
-
فصل 24: طراحی یک برنامه چت بلادرنگ
- ارسال و ماندگاری پیام
- مدیریت حضور کاربر
- WebSockets در مقابل Long-Polling
- مقیاس پذیری، تعادل بار، و یکپارچه سازی صف پیام
-
فصل 25: طراحی پلتفرم رسانه های اجتماعی
- نمایههای کاربر، پستها و تولید فید اخبار
- سیستم های اعلان و به روز رسانی در زمان واقعی
- ذخیره و بازیابی داده ها در مقیاس
- مدیریت همزمان میلیون ها کاربر
-
فصل 26: طراحی موتور جستجو
- خزیدن وب و نمایه سازی
- الگوریتم های پردازش و رتبه بندی پرس و جو
- پارتیشن بندی و به اشتراک گذاری داده ها
- بهینه سازی تاخیر
بخش ششم: مباحث پیشرفته در طراحی سیستم
-
فصل 27: سیستم های فایل توزیع شده
- سیستم فایل توزیع شده Hadoop (HDFS)
- سیستم فایل گوگل (GFS)
- تکرار داده ها و تحمل خطا
-
فصل 28: پردازش بلادرنگ داده
- پردازش دسته ای در مقابل جریان
- آپاچی کافکا، آپاچی فلینک و طوفان آپاچی
- از موارد برای تجزیه و تحلیل بلادرنگ استفاده کنید
-
فصل 29: یادگیری ماشین در طراحی سیستم
- ترکیب مدل های ML در معماری سیستم
- آموزش در مقابل مدل های سرویس دهی
- توصیه ها و شخصی سازی در زمان واقعی
-
فصل 30: امنیت در سیستم های توزیع شده
- رمزگذاری داده ها و ارتباط امن
- حریم خصوصی داده های کاربر و انطباق (GDPR)
- ایمن سازی API ها و خدمات احراز هویت
قسمت هفتم: آماده سازی مصاحبه برای طراحی سیستم
-
فصل 31: الگوهای مصاحبه طراحی سیستم
- شکستن الزامات
- مبادلات و توجیه تصمیمات طراحی
- تفکر بر حسب مقیاس پذیری، قابلیت اطمینان و در دسترس بودن
-
فصل 32: سوالات مصاحبه طراحی سیستم رایج
- نمونه سوالات و راهکارهای پاسخگویی
- طراحی راه حل ها تحت محدودیت ها (هزینه، زمان و …)
- رسیدگی به ابهام و الزامات در حال تحول
-
فصل 33: موارد مصاحبه طراحی سیستم ساختگی
- مورد 1: یک ویرایشگر اسناد مشارکتی بلادرنگ طراحی کنید
- مورد 2: طراحی سرویس تحویل غذا به صورت آنلاین
- مورد 3: طراحی یک سیستم ذخیره سازی فایل توزیع شده
- مورد چهارم: طراحی یک سیستم تبلیغات جهانی