دوره عملی Domain-Driven Design و EventSourcing

Domain-Driven Design, EventSourcing
تصویر شاخص
تقویم آموزشی
درس شماره ک
12/12/1399الی14/12/1399
درس شماره دو
15/12/1399الی16/12/1399
درس شماره سه
16/12/1399الی17/12/1399
درس شماره چهار
18/12/1399الی20/12/1399
سوالات متداول

عنوان سوال یک

پاسخ سوال یک

عنوان سوال دو

پاسخ سوال دو
 

دوره عملی Domain-Driven Design و EventSourcing

محل برگزاری مدرس تاریخ شروع اولین جلسه روز و ساعت مدت زمان کل دوره تعداد جلسات هزینه ثبت‌نام زود هنگام هزینه ثبت‌نام عادی لینک ثبت نام در ایوند
آنلاین مسعود بهرامی ۱ تیر ۱۴۰۲ ۵شنبه‌ها ساعت ۱۴:۰۰ تا ۱۷:۰۰ ۴۵ ساعت ۱۵ جلسه ۳ ساعته ۳۲۰۰۰۰۰ هزار تومان ۴۰۰۰۰۰۰ هزار تومان

ثبت نام

معرفی دوره


در این دوره که بصورت کاملا عملی می‌باشد، به معرفی EventSourcing و CQRS، مزایا، موارد استفاده، تاثیر EventSourcing بر معماری‌ سیستم، اهمیت عنصر زمان و همچنین چالش‌هایی که در پیاده‌سازی این معماری‌ها با آنها مواجه خواهید شد می‌پردازیم. همچنین نشان خواهیم داد که چگونه جنبه‌های تکنیکال مورد استفاده در رویکرد DDD از جمله Aggregate ها می‌توانند در پیاده‌سازی موثر این تکنیک‌ها به ما کمک کند. همچنین در این دوره به مهمترین الگوها و پرکتیس‌های تکنیکال DDD خواهیم پرداخت و آنها را پیاده‌سازی خواهیم کرد.

 

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

 

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

 

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


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

توسعه‌دهندگان، طراحان و معماران نرم‌افزار و همچنین CTOها و Team Leader هایی که دغدغه توسعه یک نرم‌افزار با کیفیت بالا و تست‌پذیر که در مقابل تغییرات در نیازمندیها منعطف می‌باشد را دارند.

 


مزایای شرکت در دوره

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

همچنین گروه پشتیبانی جهت پاسخ به سوالات و راهنمایی دانشجویان، در طول دوره برای تمامی شرکت کنندگان وجود دارد.

 


ابزارها، تکنولوژی‌های و زبان برنامه‌نویسی مورد استفاده در دوره

 

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

در این دوره برای پیاده‌سازی پروژه‌ها و کد‌ها از زبان برنامه‌نویسی #C و پلت فرم dot net core استفاده می‌کنیم.

از EventStoreDB و Marten به عنوان EventStore استفاده خواهیم کرد. همچنین از دیتابیس Postgress SQL به عنوان دیتابیس‌های WriteModel جهت ذخیره‌ی Eventها، و SQL Server و MongoDB به عنوان دیتابیس‌های ReadModel استفاده خواهیم کرد.

 

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

 


  • بررسی آناتومی Domain-Driven Design

  • چرا DDD مهم می باشد؟

  • استراتژی‌های DDD جهت مقابله و غلبه بر پیچیدگی موجود در دامین

  • چگونه می‌توان با شکستن دامنه مسئله با بخش‌های کوچکتر بر پیچیدگی موجود در دامنه مسئله غلبه کرد؟

  • چگونه می‌توان طراحی را بر اساس دامنه پیش برد، و چرا این موضوع برای موفقیت پروژه مهم می‌باشد؟

  • تعریف زبان مشترک و نحوه‌ی رسیدن به آن

  • الگوهای پیاده سازی دامین مدل

  • بررسی دقیقتر مفهوم Context

  • Bounding the Contexts

  • Strategic DDD
    • اشنایی با هیوریستیک‎‌های مختلف جهت شناسایی Bounded Contextها
    • اشنایی با هیوریستیک‎‌های مختلف جهت تقسیم Domain به Sub-Domainها
    • آشنایی با مهمترین مکانیزم‌های شناخت و استخراج دانش از دامین
    • معرفی تکنیک Event Storming به عنوان یک مکانیزم مهم طراحی
    • طراحی در سطح انتزاع به کمک Context Map
    • مکانیزم‌های یکپارچگی بین Bounded Contextها
      • Shared Kernel
      • Customer-Supplier
      • Conformist
      • Anticorruption layer
      • Separate Ways
      • Open-Host Service
  • Tactical DDD

    • آشنایی با مفهوم Model-Driven Development
    • Aggregate
    • Aggregate به عنوان یک ماشین حالت(State Machine)
    • آشنایی با مفهوم Aggregate Root و وظیفه آن
    • مدیریت بازه زمانی حیات آبجکت‌ها به کمک Entityها
    • همه چیز در مورد Value Objectها
    • Aggregate
    • Entities for Managing Lifecycle of things
    • ValueObjects
    • مکانیزم‌های مختلف ذخیره ValueObjectها در دیتابیس‌های رابطه‌ای
    • Entity vs ValueObject
    • Domain Services
    • Repository
    • Specification
    • Domain Events
    • Chantting and Communicating Between Aggregates
    • Bounded Context
    • مکانیزم‌های یکپارچگی بین Bounded Contextها
      • Shared Kernel
      • Customer-Supplier
      • Conformist
      • Anticorruption layer
      • Separate Ways
      • Open-Host Service
      • Published Language
    • بررسی مکانیزم‌های گرفتن کوئری در سیستم‌های با دامین پیچیده
      • بدون استفاده از CQRS
      • معماری CQRS بدون EventSourcng
  • آشنایی با Test-Driven Development

      • TDD به عنوان یک فلسفه طراحی
      • آشنایی با دو رویکرد مهم TDD
        • Classist TDD
        • Mockist TDD
  • آشنایی با سطوح مختلف REST

  • پیاده سازی مکانیزمها مختلف ارتباط با Application در معماری Ports and Adapters

  • پیاده سازی الگوی Façade جهت ارتباط لایه‌های بیرونی با Application به روش TDD

  • پیاده سازی الگوی Command Dispatcher به روش TDD

  • پیاده سازی لایه Application service به روش TDD

  • پیاده سازی لایه Domain به روش TDD

    • آشنایی به انواع روش‌های پیاده سازی Entityها و Aggregateها
    • آشنایی با استراتژیهای مختلف تولید Id برای Entityها
    • آشنایی به انواع روش‌های پیاده سازی Value Object
    • پیاده سازی استراتژیهای مختلف مقایسه برابری Value Objectها
    • پیاده سازی Domain Serviceها به کمک TDD
  • ذخیره سازی

    • پیاده سازی الگوهای Repository و Unit Of Work
    • پیاده سازی مکانیزم Unit Of Work و مدیریت تراکنش‌های در لایه Application Service
    • پیاده سازی الگوی Memento
  • یکپارچه سازی میان Bounded Contextها

    • رویکردهای مختلف برقراری یکپارچگی بین Bounded Contextها
    • پیاده سازی رویکرد مبتنی بر Push
    • پیاده سازی رویکرد مبتنی بر Pull
    • پیاده سازی رویکرد مبتنی بر Messaging
    • پیاده سازی رویکرد مبتنی بر Rest API
  • بررسی مکانیزم‌های گرفتن کوئری در سیستم‌های با دامین پیچیده

    • بدون استفاده از CQRS
    • معماری CQRS بدون EventSourcng
  • آشنایی با CQRS

    • مقایسه CQRS و CQS
    • CQRS به عنوان معماری
    • تکنیک‌ها و سطوح مختلف پیاده سازی CQRS
      • در سطح API
      • در سطح Application Service
      • در سطح دیتابیس
      • Polyglot Database
  • بررسی مزایا و چالش‌های پیاده‌سازی CQRS

  • مقایسه Write Model و Read Model

    • در سطح Application Service
    • در سطح دیتابیس
    • Projection
    • بررسی مفهوم Materialized View
      • موارد کاربرد
      • مزیت‌ها و چالش‌ها
      • بررسی تکنیک‌ها و ابزارهای مختلف پیاده‌سازی
  • EventSourcing

    • نگاهی دقیق‌تر به مفهوم رویدادنگاری
      • رویداد نگاری به عنوان یک ابزار طراحی
    • بررسی معماری EventSourcing
    • برای چه دامین‌هایی سبک معماری EventSourcing می‌تواند مفید باشد
    • اهمیت زمان و ترتیب و توالی رویدادها
      • سفر در زمان، سفر به گذشته
      • خطی سازی مفهوم زمان
      • Aggregate as a State Machine (EventSourced Aggregate)
      • Replying Events by Aggregate
    • Generic EventSourced Repository
      • ‌ ذخیره کردن ایونت‌ها در دیتابیس‌های رابطه‌ای
      • ذخیره سازی ایونت‌ها در دیتابیس های غیر رابطه‌ای
      • بررسی دیتابیس Event Store
    • Eventual Consistency در Write Model و تاثیر آن بر تصمیمات بیزنسی
      • معرفی و بررسی مفهوم Sandboxing به عنوان یک ابزار پشتیبانی مهم جهت پرداختن به Eventual Consistency در Write Model
    • بررسی دقیقتر به همراه پیاده‌سازی مفهوم Command Store
      • مزایا و معایب Command Store
    • بررسی مکانیزم‌ها مختلف ایجاد Read Modelها توسط Projection
      • پروجکت کردن ایونت‌استریم‌ها درون poly-structured data
    • تکنیک‌ها و معیارهای مختلف تعریف Check Point ها جهت گرفتن Snapshot
    • Eventual Consistency در Read Model
    • بررسی تکنیک‌های مختلف نگاشت کامند به ایونت‌ها
    • استراتژی‌های مختلف مواجه با کارایی
    • استراتژی‌های مختلف مواجه با بهینه سازی سیستم‎‌های ایونت سورس
    • توسعه سیستم‌های توزیع شده با الگوی Pub/Sub
    • The dark side of EventSourcing
      • مدیریت کردن داده‌ها
      • مدیریت Versioning ایونت‌ها
        • راه‌های اجتناب از versioning
        • بررسی مفهوم versioning و تاثیر آن بر جنبه‌های مختلف سیستم
        • بررسی دقیق سطح ریز دانگی Eventها
        • اصول و تکنیک‌های پرداختن به نسخه‌های مختلف ایونت‌ها توسط Aggregateها
        • اصول و تکنیک‌های پرداختن به نسخه‌های مختلف ایونت‌ها توسط Projectorها
          • نحوه‌ی بروز رسانی Read-Modelها
        • تاثیر الگوریتم‌ها و روش‌های Serialization بر versioning
  • اتوماتیک کردن فرآیندهای کسب‌و‌کار به کمک الگوی Saga

    • مدیریت تراکنش‌های طولانی مدت توزیع شده که بین چندین سرویس پخش شده اند
    • Orchestrate کردن تراکنش‌ها و فرآیندها توسط یک Coordinator
    • Choreography کردن تراکنش‌ها و فرآیندها بین سرویسها
    • بررسی معایب و مزایا و موارد استفاده از دو روش Orchestration و Choreography
    • فرآیند Compensating
  • استراتژی‌های مختلف نوشتن تست برای سیستم‌های ایونت سورسینگ

    • نوشتن تست برای نگاشت صحیح کامند به ایونت‌ها توسط Aggregate
    • نوشتن تست برای تائید ترتیب صحیح وقوع ایونت‌ها از نظر زمانی
    • نوشتن تست برای Projectorهای ایونت‌ها
    • نوشتن تست برای Up-cast و Down-cast شدن صحیح یک ایونت به نسخه‌های بالاتر یا پایین تر
    • نوشتن تست برای عملکرد صحیح Check-pointها
    • نوشتن تست برای عملیات گرفتن و استفاده کردن از Snapshotها
  • مدیریتVersioning  در EventSouring

    • بررسی چالش های Versioning ایونتها و تاثیر آن بر Snapshot ها و Aggregate ها
    • بررسی روش Type Based Versioning
    • تکنیک Double Writing جهت غلبه بر سناریوهای ساده‌تر Versioning
    • بررسی تکنیک Up-Casting و Down-Casting در Eventها
    • بررسی مفهوم Weak Schema و روش های آن
    • Mapping
    • Wrapper
    • بررسی روش Schema Negotiation
    • بررسی مفهوم Compensation
    • بررسی تکنیک Copy-Replace
    • چالش‌های تغییر طراحی Aggregateها در EventSourcing و راه‌های مواجه به آنها
    • بررسی تکنیک Copy-Transform
    • بررسی ورژنینگ پیاده‌سازی‌های بیزنس لاجیک در لایه دامین
    • بررسی ورژنینگ ایونت‌ها و تاثیر آن بر کانسومرهای داخلی و خارجی
    • بررسی سناریوی One Aggregate و Multiple event streams
    • بررسی سناریوی Two Aggregatesو One event stream
  • جلسه رترو پایانی

    • بررسی استراتژی‌های مختلف جهت تغییر و مقیاس پذیر کردن سیستم‌های EventSourced
    • بحث و بررسی دقیتر تاثیرات و ریسک‌های social-technical استفاده و پیاده سازی کردن CQRS و Event Sourcing

این محصول هیچ محتوایی جهت دریافت ندارد

نقد و بررسی‌ها

هیچ دیدگاهی برای این محصول نوشته نشده است.

اولین کسی باشید که دیدگاهی می نویسد “دوره عملی Domain-Driven Design و EventSourcing”

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قیمت :

4,000,000 تومان

امکان خرید دوره وجود ندارد

امتیازی ثبت نشده است
سطح آموزش پیشرفته
خریدار : 60
مدت دوره: 45:00ساعتتاریخ انتشار: 21 مهر 1398آخرین بروزرسانی: 8 بهمن 1402تعداد بازدید: 4230
قوانین و مزایای استفاده

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

مسعود بهرامی

مسعود بهرامی هستم. توسعه دهنده و معمار نرم‌افزار. بیش از 10 سال سابقه توسعه نرم‌افزار در زمینه‌ها و مقیاس های مختلف را دارم. به عنوان مشاور با تیم‌ها و سازمان‌های مختلفی کار کرده‌ام.
علاقمند و فعال در حوزه ی سیستم‌های توزیع شده و معماری مایکروسرویس ها هستم.
ابزارهای من در طراحی و پیاده سازی نرم افزار، اینها هستند
DDD, EventStorming, BDD, TDD, CQRS, Event Sourcing.
قیمت :

4,000,000 تومان

در انبار موجود نمی باشد