طراحی سیستم جامع برای مبتدیان: ساخت سیستمهای مقیاسپذیر
معماری نرمافزار، مقیاسپذیری، سیستمهای توزیعشده، APIها، دیتابیسها، کشینگ، امنیت، میکروسرویسها را بیاموزید و در مصاحبههای طراحی سیستم پیروز شوید.
آیا تا به حال فکر کردهاید...
نتفلیکس چگونه به میلیونها کاربر بهطور همزمان خدمات میدهد؟
واتساپ چگونه روزانه میلیاردها پیام را تحویل میدهد؟
چرا آمازون از کشینگ استفاده میکند؟
یوتیوب چگونه ویدیوها را با چنان روانی استریم میکند؟
چرا شرکتها از Load Balancers، CDNها، دیتابیسها، صفهای پیام، Redis، Kafka و میکروسرویسها استفاده میکنند؟
معماران نرمافزار چگونه سیستمهایی طراحی میکنند که بتوانند از صدها کاربر به میلیونها کاربر مقیاس یابند؟
اگر این سوالات شما را به وجد میآورد، این دوره برای شماست.
دیگر دیاگرامهای معماری را حفظ نکنید؛ آنها را درک کنید.
یکی از بزرگترین مشکلات یادگیری طراحی سیستم در حال حاضر این است که اکثر منابع مستقیماً به سراغ تکنولوژیها میروند.
یک ویدیو Redis را توضیح میدهد.
یکی دیگر Kafka را.
دیگری Load Balancers را.
و یکی دیگر دیتابیسها یا قضیه CAP را.
اما تعداد کمی توضیح میدهند که چگونه تمام این قطعات در کنار هم قرار میگیرند تا یک سیستم نرمافزاری کامل ساخته شود.
در نتیجه، بسیاری از توسعهدهندگان به جای درک دلیل وجود این تکنولوژیها، آنها را حفظ میکنند.
این دوره متفاوت است.
به جای حفظ کردن اجزا، شما فرآیند تفکرپشت طراحی سیستم را خواهید آموخت.
شما درک خواهید کرد:
چرا هر جزء معماری وجود دارد
چه مشکلی را حل میکند
چه زمانی باید از آن استفاده کرد
چه زمانی نباید از آن استفاده کرد
چه Trade-offهایی (بهای جایگزینی) ایجاد میکند
این دقیقاً همان روش تفکر معماران نرمافزار با تجربه است.
این فقط یک دوره برای آمادگی در مصاحبه نیست.
این یک دوره جامع مبانی طراحی سیستماست.
فرقی نمیکند شما:
یک مهندس نرمافزار مبتدی باشید
دانشجوی علوم کامپیوتر باشید
توسعهدهنده بکاند (Backend) باشید
توسعهدهنده فول استک (Full Stack) باشید
برای مصاحبههای طراحی سیستم آماده شوید
یا صرفاً درباره نحوه کار سیستمهای نرمافزاری مدرن کنجکاو باشید
این دوره دانش طراحی سیستم شما را از پایه میسازد.
هیچ تجربه قبلی در طراحی سیستم مورد نیاز نیست.
ما فرض میکنیم شما هیچ چیز نمیدانید.
همه چیز از صفر با استفاده از موارد زیر توضیح داده میشود:
类ستهای دنیای واقعی
زبان ساده
تصویرسازیهای تخته سفید
دیاگرامهای معماری
مثالهای کاربردی
مطالعات موردی صنعتی
چه چیزی این دوره را متمایز میکند؟
برخلاف اکثر دورههای طراحی سیستم، ما با سوالات پیچیده مصاحبه شروع نمیکنیم.
در عوض، سیستمها را دقیقاً به همان روشی میسازیم که در دنیای واقعی رشد میکنند.
با یک سرور واحد شروع میکنیم.
سپس ترافیک شروع به افزایش میکند.
سرور کند میشود.
حالا کشینگ (Caching) را معرفی میکنیم.
ترافیک دوباره افزایش مییابد.
اکنون به یک Load Balancer نیاز داریم.
دیتابیس به گلوگاه تبدیل میشود.
حالا Read Replicas را معرفی میکنیم.
حجم دادهها عظیم میشود.
حالا Sharding را معرفی میکنیم.
هر مفهوم تنها زمانی معرفی میشود که معماری قبلی دیگر پاسخگو نباشد.
این باعث میشود طراحی سیستم به جای اینکه گیجکننده باشد، منطقی به نظر برسد.
آنچه خواهید آموخت
این دوره شامل بیش از ۶۰ درس با ساختار دقیقاست که هر آنچه یک مبتدی برای اعتمادبهنفس در طراحی سیستم نیاز دارد را پوشش میدهد.
شما خواهید آموخت:
مبانی طراحی سیستم
طراحی سیستم چیست
طراحی سطح بالا (HLD)
طراحی سطح پایین (LLD)
نیازمندیهای کاربردی در مقابل غیرکاربردی
مقیاسپذیری (Scalability)
قابلیت اطمینان (Reliability)
در دسترس بودن (Availability)
قابلیت نگهداری (Maintainability)
تأخیر در مقابل نرخ تراکنش (Latency vs Throughput)
تخمینهای سریع (Back-of-the-envelope estimation)
شبکهسازی و بلوکهای سازنده
معماری کلاینت-سرور
سرورها
DNS
آدرسهای IP
پورتها
HTTP
HTTPS
REST APIs
قراردادهای API
GraphQL
gRPC
WebSockets
رویدادهای ارسالی سرور (SSE)
سیستمهای ذخیرهسازی
پایگاههای داده
SQL
NoSQL
ACID
تراکنشها (Transactions)
اندکسگذاری (Indexing)
ذخیرهسازی شیء-محور (Object Storage)
ذخیرهسازی فایل (File Storage)
ذخیرهسازی بلوکی (Block Storage)
طراحی پایگاه داده
مقایسه SQL و NoSQL
مقیاسبندی سیستمها
مقیاسبندی عمودی (Vertical Scaling)
مقیاسبندی افقی (Horizontal Scaling)
سرویسهای بدون وضعیت (Stateless)
سرویسهای وضعیتدار (Stateful)
Load Balancers
Read Replicas و ساختارهای Primary/Replica
تکثیر دیتابیس (Database Replication)
مبانی Sharding
بخشبندی عمودی (Vertical Partitioning)
کشینگ (Caching)
کش مرورگر (Browser Cache)
CDN
Reverse Proxy
کش اپلیکیشن
کش دیتابیس
الگوی Cache Aside
الگوی Read Through
الگوی Write Through
الگوی Write Back
ابطال کش (Cache Invalidation)
حذف داده از کش (Cache Eviction)
Redis
Memcached
ارتباطات توزیعشده
ارتباطات همزمان (Synchronous)
ارتباطات غیرهمزمان (Asynchronous)
صفهای پیام (Message Queues)
RabbitMQ
Amazon SQS
الگوی Pub/Sub
مفاهیم Kafka
Polling
Long Polling
Webhooks
WebSockets
قابلیت اطمینان و سیستمهای توزیعشده
در دسترس بودن بالا (High Availability)
افزونگی (Redundancy)
تکثیر (Replication)
بازیابی پس از فاجعه (Disaster Recovery)
قضیه CAP - نسخه مبتدی
سازگاری قوی (Strong Consistency)
سازگاری نهایی (Eventual Consistency)
بررسی سلامت (Health Checks)، تلاش مجدد و Timeouts
محدود کردن نرخ (Rate Limiting) و Throttling
امنیت
احراز هویت (Authentication)
سطح دسترسی (Authorization)
HTTPS
TLS
OAuth
JWT
رمزنگاری (Encryption)
مدیریت اسرار (Secrets Management)
حملات SQL Injection
حملات Cross Site Scripting (XSS)
حملات CSRF
حملات DDoS
حملات MITM
قابلیت مشاهده (Observability)
لاگگیری (Logging)
متریکها (Metrics)
ردیابی (Tracing)
مانیتورینگ
سیستمهای هشدار (Alerting)
استقرار Blue-Green
استقرار Canary
استقرار Rolling
مفاهیم Docker
مفاهیم Kubernetes
مقایسه Monolith در مقابل Microservices
مصاحبه طراحی سیستم
شما همچنین یک چارچوب ۶ مرحلهای طراحی سیستمرا خواهید آموخت که برای حل سوالات مصاحبه سطح مبتدی و متوسط کاربرد دارد.
ما این موارد را پوشش میدهیم:
جمعآوری نیازمندیها
تخمین مقیاس
طراحی API
معماری سطح بالا
شناسایی گلوگاهها
تحلیل Trade-offها
پروژههای نهایی دنیای واقعی
شما سیستمهای کاملی را از صفر طراحی خواهید کرد، از جمله:
کوتاه کننده لینک (URL Shortener)
اپلیکیشن چت
با استفاده از تمام آموختههای این دوره.
در پایان این دوره شما قادر خواهید بود:
طراحی سیستم را از اصول اولیه درک کنید
دیاگرامهای معماری را با اعتمادبهنفس بخوانید و رسم کنید
سیستمهای نرمافزاری مقیاسپذیر طراحی کنید
Trade-offهای پشت هر تصمیم معماری را درک کنید
با اعتمادبهنفس در مصاحبههای مبتدی طراحی سیستم شرکت کنید
پایهای قوی برای سیستمهای توزیعشده پیشرفته بسازید
درک کنید شرکتهایی مانند آمازون، نتفلیکس، اوبر و واتساپ چگونه نرمافزارهای مقیاسپذیر میسازند
ویژگیهای دوره
بیش از ۶۰ درس ساختاریافته
توضیحات مناسب برای مبتدیان
تدریس به سبک تخته سفید
دیاگرامهای معماری دنیای واقعی
مثالهای کاربردی
منابع قابل دانلود
کوییزها و تمرینات
دسترسی مادامالعمر
بهروزرسانیهای آینده دوره
بهروزرسانیهای مادامالعمر
تکنولوژی به طور مداوم تکامل مییابد و این دوره نیز همینطور خواهد بود.
با تکامل طراحی سیستم همراه با تکنولوژیهای جدید، الگوهای معماری، سرویسهای ابری، سیستمهای مبتنی بر AI و بهترین تجربیات صنعت، من به بهروزرسانی این دوره با درسهای جدید و بهبودها ادامه خواهم داد تا ارزشمند و کاربردی باقی بماند.
وقتی امروز ثبتنام میکنید، شما فقط دورهای را که امروز وجود دارد نمیخرید، بلکه روی دورهای سرمایهگذاری میکنید که در طول زمان رشد خواهد کرد.
پیشنیازها
این دوره هیچ پیشنیاز خاصی ندارد.
دانش پایه برنامهنویسی مفید است، اما هیچ دانش قبلی از طراحی سیستم مورد نیاز نیست.
ما همه چیز را از صفر یاد میگیریم.
ضمانت بازگشت وجه ۳۰ روزه
این دوره دارای ضمانت بازگشت وجه ۳۰ روزهاست.
اگر به هر دلیلی راضی نبودید، میتوانید در ۳۰ روز اول درخواست بازگشت کامل وجه کنید.
درباره مدرس
سلام، من Yogesh Dahakeهستم.
من یک مهندس نرمافزاربا بیش از ۱۳ سال تجربهدر طراحی، معماری، ساخت و تحویل سیستمهای نرمافزاری سازمانی در شرکتهای بینالمللی محصولمحور هستم.
در طول مسیر شغلیام، روی اپلیکیشنهای سازمانی در مقیاس بزرگکار کردهام، در بحثهای طراحی سیستمشرکت داشتهام، چالشهای مقیاس تولید (Production)را حل کردهام و به مهندسان نرمافزار منتورینگ دادهام.
فلسفه تدریس من ساده است:
تکنولوژی را حفظ نکنید. درک کنید چرا وجود دارد.
این دقیقاً همان روشی است که این دوره بر اساس آن طراحی شده است.
این دوره برای چه کسانی است
مهندسان نرمافزار
توسعهدهندگان بکاند
توسعهدهندگان فول استک
توسعهدهندگان فرانتاند که میخواهند معماری بکاند را درک کنند
دانشجویان علوم کامپیوتر
فارغالتحصیلان جدیدی که برای استخدام آماده میشوند
مهندسانی که برای مصاحبههای طراحی سیستم آماده میشوند
توسعهدهندگانی که قصد انتقال از کدنویسی به معماری نرمافزار را دارند
هر کسی که کنجکاو است بداند سیستمهای نرمافزاری مقیاسپذیر مدرن چگونه ساخته میشوند
آماده تسلط بر طراحی سیستم هستید؟
دیگر بین آموزشهای پراکنده و تصادفی نچرخید.
یک پایه قوی در طراحی سیستمبسازید، درک کنید سیستمهای مقیاسپذیر چگونه کار میکنندو اعتمادبهنفس لازم برای طراحی معماریهای نرمافزاری مدرن را به دست آورید.
همین امروز ثبتنام کنید و مسیر یادگیری طراحی سیستم خود را آغاز کنید!
Yogesh Dahake
نرم افزار رهبری توسعه دهنده! نام من yogesh dahake است! من یک مهندس نرم افزار سرب پرشور با یک دهه تجربه هستم و من بیش از هزار نفر از مردم خود را در بهره وری خود و اداری تدریس کرده ام و به وضوح از طریق کانال های یوتیوب من مانند ارتعاش و CodeKranti هدف من این است که افراد را قادر سازم نه فقط یاد بگیرند، بلکه به روش موثر کارآمد و موثر و ایجاد آن جرقه یادگیری. این به همین دلیل است که دوره های من ساده، عملی و بدون درهم و برهم است
نمایش نظرات