Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/systemDesignFarsi/modern_software_fa
https://github.com/systemDesignFarsi/modern_software_fa
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/systemDesignFarsi/modern_software_fa
- Owner: systemDesignFarsi
- Created: 2024-06-28T14:28:52.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-08-02T08:29:36.000Z (3 months ago)
- Last Synced: 2024-08-02T09:37:56.817Z (3 months ago)
- Size: 448 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- free-resources - الگوهای مُدرن در نرمافزار
README
## معرفی
با پیشرفت فنّاوری و توسعه روزافزون استفاده از نرمافزارها و هوش مصنوعی استفاده از ابزارها و مکانیزمهای مختلفی برای توسعهٔ سریع و باکیفیت نرمافزارها ضروری است. در این کتاب مجموعه مواردی بیان شده است که به معرفی و پیادهسازی این روشها میپردازند. چه برای افزایش دانش در حوزه نرمافزار و چه برای آشنایی با ابزارها و روشهای پیادهسازی نرمافزارهای مدرن و چه برای آمادگی برای مصاحبههای شغلی برای مهندسی نرمافزار، این کتاب برای شما بسیار مناسب است.
![cover](./src/cover2.png)
## دانلود
برای دانلود میتوانید از این [لینک](https://github.com/systemDesignFarsi/modern_software_fa/releases/download/publishV1.1.2/modern_software_V1_1_2.pdf) استفاده کنید.
## فهرست مطالب
طراحی سیستم چیست؟معنای اعداد نسخههای نرمافزاری چیست؟
مدلهای توسعه نرمافزار: آبشاری، چابک، تکراری، مارپیچ و RAD
پروتکلهای ارتباطی
شبکه تحویل محتوا CDN
جستجوی سیستم نام دامنه (DNS)
انواع کوئری در سیستم DNS
انواع رکوردها
زیر دامنه (Subdomain)
DNS Zones
DNS Caching
Reverse DNS
REST API در مقابل GraphQL
نحوه عملکرد gRPC
Webhook چیست؟
HTTP 1.0 -> HTTP 1.1 -> HTTP 2.0 -> HTTP 3.0 (QUIC)
مقایسه SOAP و REST و GraphQL و RPC.
توسعه مبتنی بر کد در مقابل توسعه مبتنی بر API
کدهای وضعیت HTTP
تفاوت URL، URI، URN
وقتی یک URL را در مرورگر خود تایپ میکنید چه اتفاقی میافتد؟
تفاوت بین کوکی (Cookie) و سشن (Session)
تفاوت بین تأیید اعتبار مبتنی بر Session و JWT چیست؟
مرورگرهای مدرن چگونه کار میکنند؟
بررسی روشهای API
چگونه دسترسی امن به API وب برای وبسایت خود طراحی کنیم؟
چگونه APIهای مؤثر و امن طراحی کنیم؟
بهبود عملکرد API
GET، POST، PUT... مفاهیم رایج HTTP
تقلبنامهي REST API
۱۲ نکته برتر برای امنیت API
۹ نوع تست API
چگونه از Pagination در طراحی API استفاده کنیم؟
الگوهای معماری نرمافزار
بررسی معماریهای N-Tier
چگونه الگوهای طراحی را یاد بگیریم؟
الگوهای طراحی کلیدی (Design Patterns)
تسلط بر اصول طراحی - SOLID
۱۲ فاکتور مهم در طراحی اپلیکیشن
تفاوت بین Process و Thread چیست؟
مقایسه همزمان (Concurrency) با موازیسازی (Parallelism)
چگونه برنامههای کامپیوتری اجرا میشوند؟
چگونه C++، جاوا و پایتون کار میکنند؟
۸ اصطلاح برتر برنامهنویسی
۱۰ اصول مهم برنامهنویسی برای بهبود کیفیت کد
چگونه یک فرایند خاصی که بیش از حد منابع مصرف میکند را تشخیص دهیم؟
۹ مورد رایج که مصرف CPU را به اوج میرساند.
بهترین روشهای تست عملکرد سیستم
۶ مورد برتر برای اعمال Idempotency
سیستم نظارت و هشدار برای متریکها
قابلیت مشاهده: لاگگیری، ردیابی و معیارها
کدام پایگاهداده برای سیستم جمعآوری متریکها مناسب است؟
مدلهای Pull در مقابل Push
ذخیرهسازی
چرا یک درایو حالت جامد (SSD) سریع است؟
بررسی ذخیرهسازهای مختلف
ذخیرهساز بلوکی (Block Storage)
ذخیرهسازی شیء (Object storage)
ذخیرهسازی فایل (File storage)
حجم (Volumes)
ذخیرهساز متصل به شبکه (NAS)
سیستم فایل توزیعشده Hadoop (HDFS)
آرایه افزونگی دیسکهای مستقل (RAID)
اعداد تأخیر که باید بدانید.
انواع حافظه و ذخیرهسازی
طراحی S3
بارگذاری فایلهای بزرگ
کد تصحیح خطا (Erasure coding)
بررسی پایگاهداده
چه پایگاهدادهای را باید استفاده کنم؟
پایگاهدادههای مختلف در سرویسهای ابری
راهنمای انتخاب پایگاهداده مناسب
پایگاهدادههای SQL
پایگاهدادههای NoSQL
سندگرا (Document)
کلید - مقدار (Key-Value)
پایگاهداده گرافی (Graph)
سری زمانی (Time Series)
ستون گسترده (Wide-column)
چندمدلی (Multi-model)
row-based یا Column-based؟
پایگاهدادههای SQL در مقابل NoSQL
تکثیر پایگاهداده (Database Replication)
ایندکسها (indexes)
تراکنش (Transaction)
۸ ساختار دادهای که پایگاهدادهها را قدرتمند میکنند.
چگونه یک عبارت SQL در پایگاهداده اجرا میشود؟
چگونه SQL Joins کار میکنند؟
نرمالسازی و غیر نرمالسازی
تئوری CAP
تئوری PACELC
سطوح ایزولاسیون پایگاهداده
نمایش یک کوئری در SQL
زبان SQL
ACID به چه معناست؟
BASE به چه معناست؟
۶ مدل برتر پایگاهداده
چگونه دادههای حساس را در یک سیستم مدیریت کنیم؟
پایگاهدادههای بُرداری
۶ مورد برتر از کاربردهای Elasticsearch
تراکنش توزیعشده (Distributed Transactions)
فدراسیون پایگاهداده (Database Federation)
چگونه دادهها را در سیستمهای توزیعشده مدیریت کنیم؟
پارتیشنبندی افقی و پارتیشنبندی عمودی
۴ الگوریتم برتر Sharding
الگوهای خواندن دادههای replicaشده ۱
الگوهای خواندن دادههای replica ۲ شده
تعادل بین تأخیر زمانی و یکپارچگی
۷ استراتژی ضروری برای مقیاسپذیری پایگاهداده
مقیاسدهی ۱۰۰ برابری در Postgres
بنبست (Deadlock) چیست؟
تفاوتهای بین قفلهای پایگاهداده
قفلگذاری خوشبینانه
بررسی کَش (Cache)
کَش و memory پردازنده
کاربردهای کش
چه زمانی از کش نباید استفاده کرد؟
بررسی برخی مفاهیم در کَش:
بهترین استراتژیهای کَش کردن چیست؟
چرا Redis اینقدر سریع است؟
Memcached در مقابل Redis
Redis چه کاربردهایی دارد؟
حمله گمشدن داده در Cache
۸ استراتژی برتر برای خروج از کش
تکامل معماری Redis
وقتی سیستم کَش دچار مشکل میشود؟
مقالات Big data
تکامل Big data
بررسی Data Pipelines
سرعت رشد بالا دادهها
معماریهای میکروسرویس
monolith (تکهستهای)
Monolith ماژولار
میکروسرویسها (Microservices)
میکروسرویس در مقابل معماری سرویسگرا (SOA)
چرا به میکروسرویس نیاز ندارید؟
بررسی یک نمونه از معماری میکروسرویس
بهترین روشهای میکروسرویس
چگونه میکروسرویسها با یکدیگر همکاری و تعامل دارند؟
فناوری رایج برای میکروسرویسها چیست؟
API gateway چه کاری انجام میدهد؟
۹ اصل اساسی قبل از ساختن میکروسرویسها
۹ جزء ضروری یک برنامه میکروسرویس
بررسی Load Balancing
چرا Nginx یک پروکسی «معکوس» نامیده میشود؟
الگوریتمهای رایج توزیع بار (Load Balancing)
کلید استفاده از توزیعکننده بار (Load Balancer)
برآورد تقریبی در طراحی سیستم
بررسی صف پیام
صف پیام (Message Queue)
۴ مورد از متداولترین انواع صف
Message Brokers
Enterprise Service Bus (ESB)
تحول معماری صف پیام: از IBM MQ به RabbitMQ تا Pulsar
حداکثر یکبار، حداقل یکبار و دقیقاً یکبار
۶ الگوی برتر پیامرسانی ابری
چرا Kafka سریع است
۵ مورد از کاربردهای برتر Kafka
آیا Kafka میتواند پیامها را گم کند؟
مقایسه Rabitmq و Kafka
سرویسها و معماریهای ابری
cloud native چیست؟ IaaS/PaaS/SaaS چیست؟
خوشهبندی (Clustering)
مفاهیم و تعاریف الگوهای طراحی cloud native
الگوهای طراحی cloud native
الگوی سفیر - پروکسی (Ambassador - Proxy)
الگویBulkhead
کش جانبی (Cache-aside):
قطعکننده مدار (Circuit Breaker):
تراکنش جبرانی (Compensating Transaction):
مصرفکنندگان رقیب (Competing Consumers):
تجمیع منابع محاسباتی (Compute Resource Consolidation):
معماری رویدادمحور (Event-Driven Architecture - EDA)
منبع رویداد (Event Sourcing):
تفکیک مسئولیت فرمان و کوئری (CQRS):
مخزن پیکربندی خارجی (External Configuration Store):
هویت فدراتیو (Federated Identity):
الگوی بکاند برای فرانتاند (Backend For Frontend - BFF)
دروازهبان (Gatekeeper):
Health Endpoint Monitoring:
جدول ایندکس (Index Table):
انتخاب رهبر (Leader Election):
دید تحقق یافته (Materialized View):
لولهها و فیلترها (Pipes and Filters):
صف اولویتدار (Priority Queue):
ترازوی بارگذاری مبتنی بر صف (Queue-based Load Leveling):
تکرار مجدد (Retry):
ازپیکربندی زمان اجرا (Runtime Reconfiguration):
سرپرست عامل زمانبندی (Scheduler Agent Supervisor):
قطعهبندی (Sharding):
میزبانی محتوای استاتیک (Static Content Hosting):
محدودسازی (Throttling):
Valet Key
بازیابی فاجعه (Disaster Recovery)
کشف سرویس (Service Discovery)
کاهش هزینههای ابری
۹ الگوی برتر معماری برای جریان داده و ارتباط
چگونه Event Sourcing را در سیستمها ادغام کنیم؟
SSO (ورود یکباره به چند سیستم) چیست؟
کدام ارائهدهنده ابری باید هنگام ساخت یک راهکار دادههای بزرگ استفاده شود؟
AWS Lambda پشتصحنه
CI/CD
بخش اول - SDLC با CI/CD
بخش دوم - تفاوت بین CI و CD
بخش سوم - pipeline CI/CD
Netflix Tech Stack (CI/CD Pipeline)
چرخه توسعه نرمافزار چابک
چگونه پیکربندیها را در یک سیستم مدیریت کنیم؟
مسیر کاری GitOps
استراتژیهای استقرار
بررسی DevOps
کتابهای DevOps
DevOps در مقابل SRE در مقابل مهندسی پلتفرم
Docker چگونه کار میکند؟
k8s یا Kubernetes چیست؟
چهار نوع برتر سرویسهای Kubernetes در یک نمودار
Docker در مقابل Kubernetes
تفاوتها بین مجازیسازی (VMware) و کانتینرسازی (Docker) چیست؟
DevSecOps چیست؟
بررسی GIT
چطور دستورات گیت کار میکنند؟
گیت چگونه کار میکند؟
تفاوت Git merge و Git rebase
بررسی دستورات ویژه در git
یک خط تغییر، زمان clone را تا ۹۹ درصد کاهش داد!
بررسی Linux
سیستم فایل لینوکس به زبان ساده
۱۸ دستور پرکاربرد لینوکس که باید بدانید
فرایند بوت لینوکس به زبان ساده
مجوزهای فایلهای لینوکس
ارتباط بین فرایندها IPC
برگه تقلب تجزيه لاگ
بررسی مباحث شبکه
آشنایی با TCP/IP و مدل OSI
تفاوت TCP و UDP
IPv4 در مقابل IPv6، تفاوتها چیست؟
۸ پروتکل محبوب در شبکه
مسیریابی ترافیک اینترنت
بررسی امنیت در وب
چگونه HTTPS کار میکند؟
احراز هویت و دسترسی امن با OAuth 2.0
۴ روش برتر برای مکانیزمهای احراز هویت
کلیدهای SSH: از کلیدهای رمزنگاری برای دسترسی امن به سیستمهای remote و سرورها استفاده میشود.
رمزگذاری در مقابل رمزنگاری در مقابل توکنسازی
Session، کوکی، JWT، توکن، SSO و OAuth 2.0 – اینها چه هستند؟
ذخیرهسازی رمزها
توکن امن وب جیسون (JWT) به زبان ساده
تأیید دومرحلهای Google Authenticator چطور کار میکند؟
۶ مورد از مهمترین کاربردهای فایروال
هر آنچه در مورد Cross-Site Scripting (XSS) نیاز دارید بدانید
الگوریتمهای کاربردی در سیستمهای توزیعشده
الگوریتمهایی مهم در طراحی سیستم
Quadtree
چگونه رستورانهای نزدیک را به کمک Geohash پیدا میکنیم؟
۱۰ الگوریتم گراف که باید بدانید
بررسی طراحی سیستمها در دنیای واقعی
چهار شگفتانگیز طراحی سیستم چه چیزهایی هستند؟
چگونه یک وبسایت را برای پشتیبانی از میلیونها کاربر مقیاسپذیر کنیم؟
راز موفقیت آمازون، نتفلیکس و اوبر چیست؟
طراحی Google Docs
تکنولوژی مورداستفادهی نتفلیکس
معماری توییتر ۲۰۲۲
معماری توییتر در ۲۰۱۳
تکامل غیرمعمول معماری API نتفلیکس
نکته مصاحبه طراحی سیستم
تحول معماری میکروسرویس Airbnb طی ۱۵ سال گذشته
Monorepo در مقابل Microrepo
چگونه وبسایت Stack Overflow را طراحی میکنید؟
چرا مانیتورینگ ویدئوی آمازون از Serverless به Monolithic تغییر یافت؟
چگونه Disney Hotstar ۵ میلیارد ایموجی را در طول یک تورنمنت ثبت میکند؟
چگونه Discord تریلیونها پیام را ذخیره میکند.
چگونه پخش زنده ویدئویی در یوتیوب، TikTok live یا Twitch کار میکند؟
چگونه یک سیستم به طور خودکار باگها را برای ما شناسایی و رفع کند؟
چگونه با اسکنکردن کد QR از کیف پول دیجیتال پرداخت کنیم؟
سؤال مصاحبه: طراحی Gmail
مسیر دریافت ایمیل
مسیر ارسال ایمیل
سؤال مصاحبه: طراحی Google Maps
رِندر کردن نقشه Google Maps
موتور کدنویسی هوش مصنوعی
چگونه سیستمهایی شبیه به ChatGPT کار میکنند؟
مدیریت یک خرابی گسترده
چگونه شناسههای منحصربهفرد تولید کنید؟
چگونه از crawl آدرسهای تکراری در ابعاد گوگل جلوگیری کنیم؟
نحوه ارسال نوتیفیکیشن در slack
چگونه آمازون نرمافزارهای خود را میسازد و اداره میکند؟
بررسی طراحی سیستمهای مالی و بانکی
مبادله خارجی در پرداخت
مطابقت سفارشهای خریدوفروش
طراحی بورس اوراق بهادار
طراحی یک سیستم پرداخت
طراحی یک سیستم فروش/حراج
چگونه یک بورس اوراق بهادار مدرن به تأخیرهای میکروثانیه دست مییابد؟
شبکه پرداخت SWIFT
فرایند جابهجایی پول در نرمافزارهای بانکی
تطبیق و سازگاری در پرداخت بانکی ۱
بررسی پایگاهداده مناسب برای سرور جمعآوری متریکها
تطبیق و سازگاری در پرداخت بانکی ۲
جلوگیری از شارژ شدن دوباره
امنیت در پرداخت بانکی
سایر کتابها
[![HitCount](https://hits.dwyl.com/systemDesignFarsi/modern_software_fa.svg?style=flat-square)](http://hits.dwyl.com/systemDesignFarsi/modern_software_fa)