درس شماره ک
درس شماره دو
درس شماره سه
درس شماره چهار
دوره عملی 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
این محصول هیچ محتوایی جهت دریافت ندارد
4,000,000 تومان
امکان خرید دوره وجود ندارد
- دسترسی به فایل محصول به صورت مادامالعمر
- تضمین کیفیت آموزش ها
- فعالسازی آنی لینک دانلود، پس از ثبت سفارش
- فروش فقط از طریق دیجی آکادمی
- به صورت رایگان یک یا چند آموزش را دریافت می کنید.
4,000,000 تومان
در انبار موجود نمی باشد
نقد و بررسیها
هیچ دیدگاهی برای این محصول نوشته نشده است.