درحال ثبت‌نام

دوره حضوری آموزش معماری نرم افزار مقدماتی گروه سوم

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

اطلاعات دوره

معرفی دوره

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

دسترسی همیشگی به محتوا دوره

همه کلاس‌ها ضبط می‌شوند و در هر زمان برای تمامی دانشجویان، چه آنلاین و چه حضوری، در دسترس خواهند بود!

پشتیبانی مستمر

در گروه اختصاصی دوره، پاسخ سؤالاتتان را بگیرید، پشتیبانی دریافت کنید و با دیگر شرکت‌کنندگان در ارتباط باشید!

مدرک معتبر پایان دوره

با تکمیل دوره، مدرک پایان دوره دریافت کنید و مهارت‌های خود را رسمی کنید!

گروه پرسش و پاسخ

سوال بپرسید، تجربه به اشتراک بگذارید و از دیگران یاد بگیرید، همه در یک فضای آموزشی فعال!

محتوای کاربردی، یادگیری موثر

هر آنچه می‌آموزید، مستقیماً در پروژه‌ها و کار واقعی قابل استفاده است!

جلسه اول رایگان

اولین جلسه را به‌صورت آنلاین و رایگان تجربه کنید، سپس با خیال راحت برای ادامه مسیر تصمیم بگیرید!

این دوره برای چه افرادی مناسب است؟

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

✅  برنامه‌نویسانی که قصد دارند مهارت‌های خود را در طراحی ساختار نرم‌افزار بهبود دهند.

✅  توسعه‌دهندگان نرم‌افزار که می‌خواهند درک بهتری از معماری نرم‌افزار پیدا کنند.

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

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

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

مفاهیمی که یاد خواهید گرفت

در این دوره، شما با مفاهیم کلیدی معماری نرم‌افزار آشنا خواهید شد و مهارت‌های لازم برای طراحی و بهینه‌سازی سیستم‌های نرم‌افزاری را به دست خواهید آورد. برخی از مهم‌ترین مباحثی که در این دوره پوشش داده می‌شوند شامل موارد زیر هستند:

۱. اصول معماری نرم‌افزار: آشنایی با مفاهیم پایه‌ای، لایه‌بندی سیستم‌ها و اهمیت معماری در توسعه نرم‌افزار.

۲. الگوهای طراحی نرم‌افزار: بررسی الگوهای رایج مانند MVC، Microservices و Layered Architecture.

۳. مدل‌های معماری: مقایسه مدل‌های مختلف مانند Monolithic ،Client-Server و Event-Driven.

۴. بهینه‌سازی و مقیاس‌پذیری: تکنیک‌های افزایش کارایی سیستم و مدیریت بار کاری بالا.

۵. مدیریت وابستگی‌ها و انعطاف‌پذیری در طراحی: اصول SOLID و طراحی ماژولار.

۶. مقدمه‌ای بر Cloud Architecture: نحوه طراحی نرم‌افزارهای ابری و مزایای آن‌ها.

۷. بررسی Case Studyهای واقعی: تحلیل پروژه‌های موفق و یادگیری از چالش‌های آن‌ها.

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

سطح دوره مقدماتی
پیش نیاز دوره حداقل ۴ سال سابقه کار برنامه نویسی حرفه‌ای
چالش ورودی دوره دارد

مدرس دوره

علیرضا ارومند
مدرس، معمار و مشاور ارشد نرم افزار

علیرضا ارومند به عنوان Product Manager شرکت داتین (وابسته به فناپ) در حوزه پروژه‌های بانکی فعال است. او همچنین مدرس و Technical Manager پروژه‌های نیک آموز است؛ از دیگر تخصص های او می‌توان به: تولید فریمورک برنامه نویسی فوق العاده حرفه‌ای با مدیریت بیش از ۱ میلیون تراکنش در ثانیه، همکاری با تیم توسعه شرکت ارتباط فردا (بانک آینده)، مشاور فنی شرکت توسعه رفاه پردیس (بانک رفاه)، مدیر فنی خبرگزاری نسیم، سخنران تنها همایش مورد تایید مایکروسافت در خاورمیانه در حوزه ASP.NET Core، مدیر فنی خبرگزاری بین المللی پیام‌کوتاه نسیم (برنده جشنواره وب ایران)، مدرس دوره های Dot Net ، ASP.NET در نیک آموز.

سرفصل‌های دوره

بخش اول: Clean Architecture

از دید یک توسعه‌دهنده، انجام کارهای عملی نسبت به یادگیری مباحث تئوری جداب‌تر است؛ به‌همین دلیل، دوره با موضوع Clean Architecture آغاز خواهند شد. در این بخش، بررسی خواهند شد که چگونه طراحی صحیح لایه‌ها، نحوه طراحی کلاس‌ها و تخصیص وظایف به بخش‌های مختلف یک نرم‌افزار، می‌تواند بر قابلیت توسعه و نگهداری آن تأثیرگذار باشد. برای درک بهتر مفاهیم این قسمت، دوره با یک پروژه عملی شروع خواهند شد.

در این دوره، توسعه یک برنامه در زمینه اجاره اقامتگاه بومگردی از ابتدا آغاز خواهد شد و مفاهیمی تدریس می‌شود که بتوان آن را به‌صورت عملی در  پروژه به‌کار برود. قسمت اول دوره کاملاً عملی است و در کنار توضیح مباحث تئوری، به توسعه نرم‌افزاری خواهند پرداخت که در هر جلسه، بخشی از کار توسط مدرس در کلاس انجام خواهد شد و بخش دیگری از آن به‌عنوان تمرین به دانشجویان واگذار خواهد شد.

پس از انجام تمرین‌ها توسط دانشجویان، راهکار پیشنهادی مدرس نیز بررسی خواهد شد و مباحث این قسمت که در ادامه به آن‌ها پرداخته می‌شود، شامل موارد زیر است:

در این فصل، دانشجویان با اصول اولیه طراحی و معماری نرم‌افزار آشنا می‌شوند. اهمیت داشتن یک ساختار مشخص در برنامه‌ها، اولین موضوعی است که بررسی می‌شود؛ سپس با معماری‌های چندلایه و معرفی اولیه از Clean Architecture آشنا می‌شوند. این فصل اهمیت پایه‌ای در درک معماری نرم‌افزار دارد و دانشجویان با یادگیری آن، آماده می‌شوند تا در فصل‌های بعدی بتوانند تصمیمات معمارانه صحیح‌تری اتخاذ کنند:

  • آشنایی با اصول اولیه طراحی و معماری
  • چرا نیاز داریم برنامه ما ساختار داشته باشد؟
  • آشنایی اولیه با معماری چند لایه
  • معرفی اولیه از Clean Architecture و لایه‌های آن

مقدمه‌ای بر Clean Architecture

در این فصل، به نقش و وظایف لایه Domain پرداخته می‌شود. دانشجویان یاد می‌گیرند که چگونه ساختار اصلی و قوانین تجاری نرم‌افزار در این لایه پیاده‌سازی می‌شود. آشنایی با مفاهیمی مانند Entity ،Value Object و Domain Event نیز از موضوعات کلیدی این بخش است. اهمیت این فصل در این است که دانشجویان یاد می‌گیرند که منطق اصلی برنامه باید در لایه Domain مدیریت شود که به حفظ پایداری و انعطاف‌پذیری نرم‌افزار کمک می‌کند.

  • لایه Domain چیست و چه وظایفی به عهده دارد؟
  • Entity چیست؟
  • آشنایی با Values Object
  • Domain Event چیست و چه کاربردی دارد؟
  • بررسی نحوه تعیین محل قرارگیری Contracts
  • ساخت پروژه‌ی بومگردی
  • افزودن لایه Domain
  • ایجاد کلاس‌های لایه Domain
  • آیا به فریم‌ورک نیاز داریم؟
  • چه کلاس‌هایی و با چه شرایطی در فریم ورک قرار می‌گیرند؟
  • ساخت پروژه فریم ورک
  • ایجاد اولین کلاس‌های پایه مربوط به فریم ورک
  • Refactor کردن لایه Domain  و استفاده از Framework

آشنایی با Domain Layer

این فصل بر روی نقش و وظایف لایه Application تمرکز دارد. با یادگیری این فصل، دانشجویان با نحوه پیاده‌سازی Services نرم‌افزار آشنا می‌شوند؛ همچنین، الگوی CQRS و چگونگی پیاده‌سازی آن در نرم‌افزار مورد بررسی قرار می‌گیرد. اهمیت این فصل در فراهم‌سازی یک لایه برای مدیریت عملیات برنامه و جریان داده‌ها است. یادگیری این بخش به دانشجویان کمک می‌کند تا بتوانند برنامه‌هایی با ساختاری منظم و قابل گسترش پیاده‌سازی کنند.

  • لایه Application چیست و چه وظایفی دارد؟
  • پیاده سازی Application Service به صورت Façade controller
  • پیاده سازی Application Service به صورت Session Controller
  • معرفی الگوی CQRS
  • افزودن لایه Application Service به پروژه
  • بررسی راهکارهای پیاده سازی CQRS
  • آشنایی با MediatR و استفاده برای پیاده سازی CQRS
  • Validation کجا باید انجام شود؟
  • آشنایی با نحوه پیاده سازی Validation به صورت مرکزی
  • مدیریت خطای مرکزی در Applications Service چگونه انجام می‌شود؟
  • پیاده سازی مدیریت لاگ مرکزی در Application Service
  • طراحی فریم ورک برای لایه Application Service
  • انتقال کلاس‌های پایه به فریم ورک
  • ریفکتور کردن پورژه Application Service و استفاده از فریمورک

آشنایی با Application Layer

در این فصل، با مفهوم Infrastructure و نقش‌های آن آشنا می‌شویم. بررسی Data Access Layer و آشنایی با الگوهای Repository و Unit of Work نیز از موضوعات کلیدی این فصل است. هدف اصلی این بخش، مدیریت ارتباطات با سیستم‌های خارجی مانند دیتابیس‌ها و سرویس‌ها است. اهمیت یادگیری این فصل در این است که دانشجویان می‌آموزند چگونه ارتباطات خارجی نرم‌افزار را مدیریت و آن‌ها را از منطق اصلی برنامه جدا کنند.

  • Infrastructure چیست و چه وظایفی در این لایه انجام می‌شود؟
  • آشنایی با Data Access Layer وظایف و نقش‌ها
  • معرفی الگوی Repository
  • آشنایی با الگوی Unit of work
  • افزودن لایه DAL به پروژه
  • ایجاد Configuration برای Entityها
  • آشنایی با نحوه انجام تنظیمات Entityها به صورت مرکزی
  • بررسی نحوه انتشار مرکزی Domain Eventها
  • آشنایی با موضوع Concurrency
  • بررسی نحوه برخورد با Concurrency 
  • طراحی و پیاده سازی فریم ورک برای DAL
  • ریفکتور کردن پروژه و استفاده از فریم ورک

آشنایی با Infrastructure Layer

این فصل به نحوه تعامل نرم‌افزار با کاربران می‌پردازد. تفاوت بین ارائه UI یا API و چالش‌ها و فرصت‌های هر یک از این روش‌ها بررسی می‌شود؛ همچنین، مفاهیمی مانند API Versioning و پیاده‌سازی Cache در این بخش معرفی می‌شوند. یادگیری این فصل به دانشجویان کمک می‌کند تا بتوانند یک لایه رابط کاربری یا API قابل اطمینان و انعطاف‌پذیر پیاده‌سازی کنند که به بهبود تجربه کاربری کمک می‌کند.

  • Presentation Layer چیست و چه کاربردی دارد؟
  • بررسی تفاوت ارائه UI یا API چالش‌ها و فرصت‌ها
  • ایجاد پروژه API
  • تنظیم Dependencyها 
  • آشنایی با API Versioning در پروژه‌های عملیاتی
  • ایجاد کنترلر‌ها و توسعه Actionهای مورد نیاز برای پروژه
  • چرا به Cache نیاز داریم؟
  • پیاده سازی Distributed Cache به کمک Redis در پروژه
  • پیاده سازی Health check در پروژه ها برای بهبود کیفیت نرم افزار

آشنایی با Presentation Layer

این فصل بر روی مفاهیم امنیتی نرم‌افزار تمرکز دارد. موضوعاتی مانند AAA (Authentication ،Authorization ،Accounting) ،Identity Provider ،JWT و انواع مختلف Authorization بررسی می‌شوند. این بخش اهمیت بالایی در حفاظت از داده‌ها و اطمینان از دسترسی‌های صحیح دارد. یادگیری این فصل به دانشجویان کمک می‌کند تا نرم‌افزارهایی امن و با قابلیت‌های کنترل دسترسی کارآمد ایجاد کنند:

  • آشنایی با AAA در موضوع امنیت نرم افزار
  • Identity Provider  چیست؟
  • راه اندازی Identity Provider
  • دریافت JWT 
  • پیاده سازی فرایند ثبت نام کاربر
  • پیاده سازی فرایند لاگین 
  • Role-base Authorization چیست  و چگونه پیاده سازی می‌شود؟
  • Permission-base Authorization چیست و چگونه پیاده می‌شود؟
  • Resource-base Authorization چیست و چگونه پیاده سازی می‌شود؟
  • برقراری امنیت در نرم افزاری که توسعه داده‌ایم.

پیاده سازی نکات امنیتی در پروژه

در این فصل، با روش‌های Unit Testing برای لایه‌های مختلف نرم‌افزار آشنا می‌شویم؛ همچنین، مفهوم Architecture Test و اهمیت آن در تضمین کیفیت معماری نرم‌افزار بررسی می‌شود. یادگیری این فصل به دانشجویان امکان می‌دهد تا نرم‌افزارهای خود را به صورت خودکار تست کرده و از صحت عملکرد آن‌ها در شرایط مختلف اطمینان حاصل کنند:

  • آشنایی با Unit test  نویسی برای لایه Domain
  • آشنایی با Unit test نویسی برای لایه Application Service
  • Architecture Test چیست؟

روش های موثر تست در لایه های مختلف نرم افزار

بخش دوم: معماری نرم افزار کاربردی

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

در این فصل، دانشجویان با تاریخچه معماری نرم‌افزار آشنا می‌شوند و اهمیت وجود آن در دنیای توسعه نرم‌افزار را درک می‌کنند. این فصل به بیان تعاریف معماری نرم‌افزار، عوامل مؤثر در آن و چرخه کاری معماری می‌پردازد. اهمیت این فصل در آن است که دانشجویان درک پایه‌ای از معماری نرم‌افزار به دست می‌آورند و یاد می‌گیرند که یک معماری خوب چگونه می‌تواند بر کیفیت و عملکرد نرم‌افزار تأثیر بگذارد:

  • تاریخچه معماری نرم افزار
  • اگر معماری نرم افزار وجود نداشته باشد، چه اتفاقی می‌افتد؟
  • تعریف معماری نرم افزار
  • چه عواملی در معماری نرم افزار اثرگذار هستند؟
  • چرخه کاری معماری نرم افزار چیست؟
  • یک معماری خوب چه ویژگی‌هایی دارد؟

مقدمه‌ای بر معماری نرم افزار کاربردی

این فصل با ارائه تعاریف و تحلیل آن‌ها به شناخت کامل‌تری از معماری نرم‌افزار کمک می‌کند؛ همچنین به تفاوت‌های میان معماری سیستم و معماری نرم‌افزار و ارتباط آن با ساختار نرم‌افزار پرداخته می‌شود. اهمیت این فصل در شناخت اصول و الگوهای معماری نرم‌افزار نهفته است که به دانشجویان کمک می‌کند تا اهمیت و نقش معماری در موفقیت پروژه‌های نرم‌افزاری را درک کنند:

  • آشنایی با تعاریف ارائه شده برای معماری نرم افزار و تحلیل آن‌ها
  • الگوهای معماری نرم افزار چیست؟
  • مدل مرجع و معماری مرجع چیست؟
  • چرا معماری نرم افزار اهمیت دارد؟
  • معماری سیستم چیست و چه تفاوتی با معماری نرم افزار دارد؟
  • ساختار نرم افزار چیست و چه ارتباطی با معماری آن دارد؟

معماری نرم‌افزار چیست؟

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

  • تعریف کلی از کیفیت
  • آشنایی با ویژگی‌های کیفی
  • دسترس پذیری چیست؟
  • کارایی چه معنایی دارد؟
  • قابلیت نگهداری و توسعه
  • امنیت نرم افزار چیست؟
  • آشنایی با قابلیت تست پذیری 
  • خصوصیات کیفی چه ارتباطی با معماری دارد؟
  • دسترسی به خصوصیات کیفی نرم افزار چگونه ممکن است؟
  • آشنایی با تشخیص خطا و ترمیم نقص برای بهبود دسترس پذیری
  • آشنایی با محلی سازی تغییرات جهت جلوگری از خرابی‌های سلسله مراتبی

معرفی ویژگی‌های کیفی نرم افزار

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

  • کاربرد‌های مستند سازی معماری
  • انتخاب دیدهای مرتبط
  • مستند سازی رفتار چگونه انجام می‌شود؟
  • از چه ابزارهایی برای مستند سازی استفاده کنیم.

مستند سازی معماری

در این فصل، دانشجویان با انواع الگوهای معماری نرم‌افزار مانند Layard Architecture ،Microkernel ،Microservice ،Event-Driven ،Service-Based و Space-Based Architecture آشنا می‌شوند. این فصل برای درک نحوه پیاده‌سازی ساختارهای مختلف نرم‌افزار و انتخاب مناسب‌ترین الگو برای هر پروژه ضروری است. یادگیری این الگوها به دانشجویان کمک می‌کند تا نرم‌افزارهایی با کارایی و انعطاف‌پذیری بالا طراحی کنند.

  • Layard Architecture
  • Microkernel Architecture
  • Microservice
  • Event Driven Architecture
  • Service Base Architecture
  • Space base Architecture

آشنایی اولیه و معرفی الگوهای معماری نرم افزار

بخش سوم: Modular Monolith Architecture

مدتی کلاس با مباحث تئوری معماری نرم افزار پیش رفت و در بخش سوم یک الگوی معماری نرم افزار به استم Modular monolith را با هم یاد خواهیم گرفت. این قسمت هم مانند بخش اول ترکیب تئوری‌های مورد نیاز و کار عملی است که در حین اجرای یک پروژه مفاهیم مورد نیاز جهت پیاده سازی با این الگو را یاد خواهیم گرفت؛ اما این بار بنیه علمی معماری نرم افزار را نیز داریم و توقع داریم هنگامی که تصمیمی میگیریم آگاهانه بوده و بدانیم بر چه قسمت‌هایی از ویژگی‌های کارکردی و غیر کارکردی اثر می‌گذارد. در ادامه سرفصل‌ها و موضوعات بخش سوم دوره بررسی خواهد شد:

در این فصل، دانشجویان با مفهوم “Modular Monolith” آشنا می‌شوند و آن را با معماری “Microservice” مقایسه می‌کنند؛ همچنین، با مثال عملی دوره و کارکردهایی که قرار است پیاده‌سازی شود، آشنا می‌شوند. اهمیت این فصل در این است که دانشجویان پایه‌ای قوی از اصول معماری Modular Monolith کسب می‌کنند و می‌توانند درک کنند که چرا انتخاب این معماری در برخی موارد بر Microservices اولویت دارد:

  • معرفی اولیه Modular monolith
  • مقایسه Modular Monolith با Microservice
  • معرفی مثال دوره و کارکردهایی که پیاده سازی می‌شود.

مقدمه‌ای بر Modular Monolith Architecture

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

  • آشنایی با Boundeds Context و ارتباط آنها با ماژول‌ها
  • بررسی محدوده ماژول‌ها در مثال دوره
  • شروع پیاده سازی اولین ماژول

چگونه محدوده ماژول‌ها تعیین می‌شود؟

در این فصل، دانشجویان با مفاهیم تزریق وابستگی، مدیریت لاگ‌ها، ثبت و ردیابی خطاها و دیگر موضوعات “Cross-Cutting Concerns” در معماری Modular Monolith آشنا می‌شوند. این موضوعات نقش مهمی در ارتقای کیفیت و عملکرد نرم‌افزار ایفا می‌کنند و اهمیت یادگیری آن‌ها در این است که به برنامه‌نویسان کمک می‌کند تا ماژول‌هایی با قابلیت انعطاف‌پذیری و پشتیبانی مناسب ایجاد کنند:

  • تزریق وابستگی چگونه در Modular Monolith انجام می‌شود؟
  • Structured Logging چیست؟
  • پیاده سازی Structured Logging  به کمک Serilog و ELK
  • آشنایی با Automatic Endpoint Registration
  • پیاده سازی Health check چگونه انجام می‌شود؟
  • مدیریت خطا و ثبت و رهگیری آن در Modular Monolith
  • تنظیمات ماژول‌ها چگونه انجام می‌شود؟
  • پیاده سازی Cross-Cotting Concerns روی ماژول اول

آشنایی با روند Cross-Cutting Concerns

این فصل به بررسی الگوهای ارتباطی میان ماژول‌ها می‌پردازد، از جمله ارتباطات Sync و Async، مدیریت داده‌های مشترک و مفاهیمی مانند Eventual Consistency و Messaging Patterns. اهمیت این فصل در یادگیری نحوه برقراری ارتباطات مختلف میان ماژول‌ها است که برای حفظ انسجام و عملکرد نرم‌افزار در سیستم‌های بزرگ ضروری است:

  • آشنایی با الگوهای ارتباطی 
  • ارتباط Sync چگونه انجام می‌شود؟
  • ارتباط Async چگونه است؟
  • بررسی ارتباط ماژول‌ها به کمک Domain Event
  • داده مشترک بین ماژول‌ها را چگونه باید مدیریت کنیم؟
  • Eventual Consistency چیست؟
  • آشنایی با الگوهای Messaging
  • Event outbox چیست؟
  • Inbox Pattern چیست و چگونه پیاده سازی می‌شود؟
  • چرا به فریم ورک برای پیاده سازی الگوها نیاز داریم؟
  • پیاده سازی فریم ورک جهت پیاده سازی الگوهای پیام رسانی
  • توسعه دومین ماژول
  • برقراری ارتباطات از انواع مختلف و بررسی تاثیر بر ویژگی‌های کمی نرم افزار.

ارتباط بین ماژول‌‌ها

در این فصل، دانشجویان با پیاده‌سازی هویت و احراز هویت در معماری Modular Monolith آشنا می‌شوند. از نصب Identity Provider گرفته تا پیاده‌سازی Token-Based Authentication. یادگیری این مباحث برای حفظ امنیت در نرم‌افزار و مدیریت کاربران اهمیت دارد و به معماران نرم‌افزار کمک می‌کند تا راهکارهای امن و پایداری برای مدیریت دسترسی‌ها پیاده‌سازی کنند.

  • نصب و راه اندازی Identity Provider
  • پیاده سازی Token base Authentication در Modular Monolith
  • بررسی نحوه مدیریت کاربران در Modular Monolith

Authentication و Authorization در Modular Monolith

این فصل به موضوع تست در معماری Modular Monolith می‌پردازد و مباحثی مانند Unit Testing و Integration Testing را بررسی می‌کند. اهمیت این فصل در این است که دانشجویان می‌آموزند چگونه برنامه‌های خود را تست کنند تا از عملکرد صحیح و بدون خطا در تمامی بخش‌های مختلف نرم‌افزار اطمینان حاصل کنند:

  • مقدمه ای بر تست نویسی در Modular Monolith
  • Unit test در برنامه‌های Modular Monolith چگونه انجام می‌شود؟
  • بررسی نحوه انجام Integration test در Modular Monolith

آشنایی با فرایند تست در Modular Monolith

در این فصل، دانشجویان با مفاهیم Docker ،Dockerize کردن برنامه، انتشار در Docker Hub و پیاده‌سازی CI/CD آشنا می‌شوند. یادگیری این مباحث برای مدیریت و انتشار نرم‌افزار در محیط‌های عملیاتی اهمیت دارد و به معماران و توسعه‌دهندگان کمک می‌کند تا فرآیندهای یکپارچه‌سازی، استقرار و تست را به‌صورت خودکار انجام دهند:

  • آشنایی با Docker
  • بررسی نحوه Dockerize کردن برنامه
  • انتشار برنامه در Docker hub
  • پیاده سازی CI/CD
  • پیاده سازی Test در مراحل CI/CD چگونه است؟

روند انتشار برنامه

چارچوب برگزاری دوره

فرایند برگزاری و زمانبندی

ارزیابی و ثبت نام دوره دوره ثبت نام
تاریخ برگزاری (شروع ) از 17 بهمن 1403
روزهای جلسات چهارشنبه‌ها- ساعت ۱۷:۳۰ الی ۲۰:۳۰
طول دوره ۳۳ ساعت (۱۰ جلسه ۳ ساعته)
روز
ساعت
دقیقه
ثانیه
تا پایان ثبت نام

30% تخفیف پیش ثبت‌نام دوره

حضوری

ظرفیت باقی‌مانده: 30 نفر

محل‌برگزاری: تهران، یوسف‌آباد، نیک‌آموز (مسیریابی)

امکان پرداخت 4 قسطه با

۱۱,۰۰۰,۰۰۰ تومان
۷,۷۰۰,۰۰۰ تومان

رزرو ظرفیت رایگان، تصمیم‌گیری با خیال راحت!

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

"*" فیلدهای الزامی را نشان می دهد

از تجربه تا نتیجه!

شرکت‌کنندگان این دوره از مسیر یادگیری‌شان می‌گویند. تجربه‌های واقعی را بشنوید و با اطمینان تصمیم بگیرید.

نمونه مدرک نیک آموز

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

نمونه آموزش‌ها

شرکت در جلسه اول آنلاین این دوره رایگان می‌باشد، جهت ثبت‌نام کلیک کنید.

سوالات متداول دوره حضوری آموزش معماری نرم افزار مقدماتی گروه سوم

1. این دوره برای چه افرادی مناسب است؟

 این دوره برای برنامه‌نویسان، معماران نرم‌افزار، مدیران پروژه‌های نرم‌افزاری و مهندسان DevOps مناسب است. همچنین، اگر قصد دارید دانش خود را در زمینه طراحی سیستم‌های مقیاس‌پذیر و معماری نرم‌افزار مدرن ارتقا دهید، این دوره به شما کمک خواهد کرد.

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

 در این دوره به بررسی معماری‌های مدرن نرم‌افزار از جمله مونولیت، میکروسرویس‌ها، معماری رویدادمحور (Event-Driven Architecture) و CQRS (Command Query Responsibility Segregation) پرداخته خواهد شد.

بله، در این دوره روش‌های طراحی بهینه دیتابیس در سیستم‌های بزرگ، مفاهیمی مانند Sharding، Partitioning، Replication و بهترین شیوه‌های ذخیره‌سازی داده‌ها برای عملکرد بالا بررسی خواهند شد. همچنین، به مقایسه SQL و NoSQL در معماری‌های مختلف پرداخته می‌شود.

بله، یکی از بخش‌های کلیدی دوره، بهینه‌سازی عملکرد (Performance Tuning) و مقیاس‌پذیری (Scalability) در سیستم‌های نرم‌افزاری است. تکنیک‌هایی مانند Load Balancing، Caching، Asynchronous Processing و Scaling Strategies مورد بررسی قرار خواهند گرفت.

پس از اتمام این دوره، شما قادر خواهید بود: یک سیستم نرم‌افزاری با معماری اصولی و مقیاس‌پذیر طراحی کنید، از الگوهای معماری مدرن در پروژه‌های خود استفاده کنید، عملکرد سیستم‌های خود را بهینه‌سازی کرده و مشکلات Bottleneck را شناسایی و رفع کنید، استراتژی‌های امنیتی را در طراحی نرم‌افزارهای خود به کار ببرید و پروژه‌های خود را با استفاده از DevOps و CI/CD به‌صورت خودکار مستقر کنید.

سوالات متداول عمومی

1. نحوه پشتیبانی دوره به چه صورت است؟

رضایت شما از دوره آموزشی و کمک به رفع مشکلات احتمالی برای ما اهمیت زیادی دارد. به همین دلیل، یک گروه پشتیبانی در تلگرام ایجاد شده است تا شما بتوانید در صورت نیاز، مسائل خود را در این بستر مطرح کنید. تا حداکثر ۴۸ ساعت کاری پس از ثبت نام در دوره، با شما تماس گرفته می‌شود و فرآیند عضویت شما در گروه تلگرام نهایی خواهد شد. البته توجه شود که در آینده سیستم تیکتینگ راه‌اندازی می‌شود و فرآیند پشتیبانی از گروه تلگرامی به آنجا منتقل خواهد شد.

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

شما بصورت چت آنلاین می توانید سوالات خود را بپرسید و مدرس هم سوالات شما را پاسخ خواهد داد. البته توجه داشته باشید که این پروسه پاسخگویی هر ۴۰ دقیقه یکبار خواهد بود تا مدرس رشته کلام از دستش خارج نشود. البته که گروه تلگرامی دوره در اختیار شما است و می توانید سوالات خود را آنجا هم مطرح کنید.

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

بله، دسکتاپ و صدای مدرس رکورد خواهد شد و در پلیر اختصاصی اسپات پلیر به همراه کلید لایسنس ارائه خواهد شد. شما در سیستم عامل‌های ویندوز، اندروید، آیفون (سیب، اناردون)، مک بوک می‌توانید فیلم را مشاهده کنید.

بله، پس از اتمام دوره و گذراندن آزمون پایانی، گواهی معتبری به شما ارائه می‌شود که می‌توانید آن را در رزومه خود ثبت کنید.

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

درخواست مشاوره

"*" فیلدهای الزامی را نشان می دهد

ثبت‌نام جلسه اول رایگان

"*" فیلدهای الزامی را نشان می دهد