danny
danny
خواندن ۴ دقیقه·۴ ماه پیش

معرفی کتاب طراحی سیستم‌های نرم‌افزاری ۱

معرفی

لینک دانلود نسخه الکترونیکی.

لینک خرید نسخه فیزیکی.

به‌عنوان یک مهندسی نرم‌افزار تا حالا شده که یک مسئول طراحی یک سامانه نرم‌افزاری خاص مثلاً طراحی یک برنامه چت گروهی یا یک برنامه با میلیون‌ها کاربر شده باشید؟

تا حالا شده از شما سؤال شده باشه که در پشت‌صحنه پلتفرم‌های معروف مثل اینستاگرام و تلگرام و یوتیوب چه می‌گذرد و به چه صورت کار می‌کنند؟

آیا شده که توی مصاحبه‌های استخدامی سؤالاتی مربوط به طراحی یک سامانه نرم‌افزاری خاص مثل طراحی گوگل درایو از شما بپرسند؟

قطعاً در بیشتر موارد پاسخ به سؤال مثبت هست.

حالا کتابی می‌خواهم معرفی کنم مربوط به این موضوع هست و اولین‌بار هست که به فارسی ترجمه میشه:

در هر فصل این کتاب به طراحی سیستم‌هایی زیر پرداخته شده هست.


فصل ۱: Scale From Zero To Millions Of Users

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


فصل ۲: Back-Of-The-Envelope Estimation

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

فصل ۳: A Framework For System Design Interviews

در فصل سوم به نکات مهم و مهارت‌های نَرم در مصاحبه طراحی سامانه‌های نرم‌افزاری پرداخته شده است.


فصل ۴: Design A Rate Limiter

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


فصل ۵: Design Consistent Hashing

در این فصل به الگوریتم Consistent Hash پرداخته شده است که این الگوریتم در سیستم‌های توزیع شده بسیار پرکاربرد می‌باشد.


فصل ۶: Design A Key-Value Store

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


فصل ۷: Design A Unique Id Generator In Distributed Systems

در این فصل یک تولید کننده شناسه در سیستم‌های توزیع پرداخته شده است.


فصل ۸: Design A Url Shortener

در اين فصل، به يک سؤال مصاحبه طراحی سیستمی جالب و کلاسیک پرداخته شده و آن هم طراحی يک سرويس کوتاه کننده URL مانند tinyurl است.



فصل ۹: Design A Web Crawler

در اين فصل، بر طراحی خزنده وب Web Crawler تمرکز شده است. خزنده وب يا web crawler که بهعنوان يک ربات يا spiderشناخته میشود که طرز گستردهای توسط موتورهای جستجو برای کشف محتوای جديد يا بهروز شده در وب استفاده می‌شود. محتوا میتواند يک صفحه وب، يک تصوير، يک ويدئو، يک فايل PDF و غیره باشد.


فصل ۱۰: Design A Notification System

يک سیستم اعلان يا notificationدر سالهای اخیر به يک ويژگی بسیار محبوب برای بسیاری از برنامه‌ها تبديل شده است. يک اعلان یا نوتیفیکیشن اطلاعات مهمی مانند اخبار فوری، به‌روزرسانی‌های محصول، رويدادها، پیشنهادها و غیره را به کاربر هشدار میدهد. اين مورد به بخشی ضروری از زندگی روزمره ما تبديل شده است. در اين فصل از شما خواسته میشود که يک سیستم اطلاع‌رسانی طراحی کنید.


فصل ۱۱: Design A News Feed System

در اين فصل از شما خواسته شده است که يک سیستم خوراک خبری يا فید خبررسانی که اساس يک اپلیکیشن شبکه اجتماعی است را طراحی کنید.



فصل ۱۲: Design A Chat System

در اين فصل به بررسی طراحی يک سیستم چت پرداخته شده است. امروزه تقريباً همه از يک برنامه چت به‌خصوص استفاده می‌کنند و روش‌های پیاده‌سازی آن در سمت سرور در این فصل توضیح داده شده است.


فصل ۱۳: Design A Search Autocomplete System

در این فصل به یک فاکتور بسیار مهم در پیاده سازی موتور‌های جستجو پرداخته شده است.


فصل ۱۴: Design youtube

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



فصل ۱۵: Design Google Drive

در سالهای اخیر، سرويسهای ذخیره‌سازی ابری مانند Google Drive بسیار محبوب شدهاند. در اين فصل از شما خواسته‌ می‌شود تا گوگل درايو را طراحی کنید.



فصل ۱۶: The Learning Continues

در این فصل وبلاگ‌ها و منابع مهم در طراحی سامانه‌های نرم‌افزاری و سیستم‌های توزیع شده معرفی شده است.

به عنوان مثال

برای یک معماری مناسب در اپلیکیشن Rate Limiter الگوی زیر معرفی شده و هر جزیی از آن به طور مفصل توضح داده می‌شود.

یا برای معماری تبدیل فرمت ویدیو در یوتیوب، دیاگرام پیشنهادی زیر رو داریم.

یا بررسی فید در یک اپلیکشین مانند اینستاگرام معماری زیر در این کتاب پیشنهاد شده است.

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

نکته جالب این هست که این کتاب ترجمه شده به صورت مجانی در این لینک قابل دانلود هست.



طراحیپیشنهاد کتابسیستم دیزاینطراحی سیستمنرم افزار
شاید از این پست‌ها خوشتان بیاید