طراحی سیستم System Design

در دنیای امروز، توسعه نرمافزار دیگر محدود به نوشتن چند خط کد نیست. اگر میخواهید سیستمهایی بسازید که مقیاسپذیر، در دسترس، مقاوم و کارآمد باشند، باید با اصول طراحی سیستم آشنا شوید. در ابتدا به تحلیل نیازمندیهای یک سیستم می پردازیم و متناسب با نیازمندی معماری مورد نظر را طراحی میکنیم.
در طی این دوره با ابزارها و الگوهای معماری آشنا میشویم و سناریوهای دنیای واقعی را میشونیم.
همچنین یادمیگیریم که چطور باید تصمیمات طراحی را مستند کرده و همچنین بررسی بر روی این مستندات را انجام دهیم.
ثبت نام و برنامه کلاسی
پرهام درویشی
- زمان برگزاری: 9:00-12:00 دوشنبه و چهارشنبه ها
- تاریخ شروع: 1404/04/18
- کلاس حضوری - آنلاین
از 1,300,000 تومان
تومان
سرفصلهای دوره طراحی سیستم design system
سرفصل ها
- مبانی و مقدمه و آشنایی با مفاهیم معماری و اصول توسعه نرم افزار
- اصول مقیاس پذیری و تعادل بار
- انواع معماری ها
- مدیریت داده
- ارتباط بین سرویس ها
- پایداری سرویس ها/سیستم
- بهینه سازی عملکرد
- مانیتورینگ
پیرامون چالش های دنیای واقعی شبیه به افزایش درخواست ها و نحوه پاسخگوئی ما با نگاه System Design:
- مقیاسپذیری (Scalability): چگونه میتوان سیستمی طراحی کرد که با افزایش کاربران یا دادهها بدون افت عملکرد رشد کند؟ (افقی در برابر عمودی)
- دسترسپذیری بالا (High Availability): چگونه سیستم را طوری طراحی کنیم که حتی در صورت بروز خطا، سرویسدهی قطع نشود؟
- توزیعشدگی سیستمها (Distributed Systems): چگونه بین چندین سرور یا دیتاسنتر سیستم را تقسیم کنیم، بدون از دست رفتن هماهنگی یا سازگاری دادهها؟
- طراحی دیتابیس برای مقیاسپذیری: چه زمانی باید از SQL استفاده کنیم و چه زمانی از NoSQL؟ Sharding و Replication را چطور پیاده کنیم؟
- مدیریت بار ترافیکی بالا (Load Balancing): چگونه ترافیک کاربران را بین چند سرور بهدرستی توزیع کنیم تا هیچ سروری بیش از حد بار نگیرد؟
- طراحی برای Fault Tolerance: چگونه سیستم را طوری طراحی کنیم که در صورت خرابی بخشی از سیستم، بقیه بخشها به کار ادامه دهند؟
- سازگاری دادهها (Data Consistency): در یک سیستم توزیعشده، چگونه تضمین کنیم که دادهها بین نودها سازگار بمانند؟ (CAP Theorem)
- طراحی API های قابل نگهداری و توسعه: چگونه API هایی طراحی کنیم که با رشد سیستم، همچنان ساده، امن و قابل توسعه باقی بمانند؟
- تأخیر و کارایی (Latency vs Throughput): چگونه تصمیماتی بگیریم که بین پاسخگویی سریع و پردازش حجم زیاد، تعادل ایجاد کنیم؟
- سیستمهای صف و پردازش آسنکرون (Asynchronous Processing): چه زمانی استفاده از Message Queue مثل Kafka یا RabbitMQ ضروری است؟ چگونه سیستم را Event-Driven طراحی کنیم؟
- نحوه عیب یابی: بررسی راهکارها مناسب لاگ زدن.
مخاطب این دوره:
- توسعهدهندگان نرمافزار (Frontend / Backend / Full-stack).
- مهندسان DevOps یا Cloud.
- دانشجویان علاقهمند به ورود به دنیای مهندسی نرمافزار سطح بالا.
- افرادی که میخواهند برای مصاحبههای فنی شرکتهای بزرگ آماده شوند.
- مدیران محصول که می خواهند دید فنی به دست آورند.
- مالکان محصول که می خواهند دید فنی به دست آورند.
محل برگزاری
دورههای مرتبط

در دنیای امروز، توسعه نرمافزار دیگر محدود به نوشتن چند خط کد نیست. اگر میخواهید سیستمهایی بسازید که مقیاسپذیر، در دسترس، مقاوم و کارآمد باشند، باید با اصول طراحی سیستم آشنا شوید. در ابتدا به تحلیل نیازمندیهای یک سیستم می پردازیم و متناسب با نیازمندی معماری مورد نظر را طراحی میکنیم.
در طی این دوره با ابزارها و الگوهای معماری آشنا میشویم و سناریوهای دنیای واقعی را میشونیم.
همچنین یادمیگیریم که چطور باید تصمیمات طراحی را مستند کرده و همچنین بررسی بر روی این مستندات را انجام دهیم.
- به دوستان نیز معرفی کنید