- پلتفرم: Udemy
- مدرس: Ali Gelenler, EA Algorithm
- مدت زمان: 17:49:30
- امتیاز: 4.6/5
- تاریخ انتشار: نوامبر 2025
- لینک دوره: Microservices: Clean Architecture, DDD, SAGA, Outbox & Kafka, Kubernetes
این سند، نکات کلیدی دوره را برای مرور سریع و یادگیری خلاصه میکند. اگر فرصت داری، دیدن خود دوره را هم توصیه میکنم.
- من نکات مهم دورههای مفید را خلاصه میکنم تا بتوانی سریع مرور و یادگیری کنی.
- کافی است روی لینکهای
Ask AIکلیک کنی و درباره هر موضوعی که خواستی بیشتر عمیق شوی.
Teach Me: 5 Years Old | Beginner | Intermediate | Advanced | (reset auto redirect)
Learn Differently: Analogy | Storytelling | Cheatsheet | Mindmap | Flashcards | Practical Projects | Code Examples | Common Mistakes
Check Understanding: Generate Quiz | Interview Me | Refactor Challenge | Assessment Rubric | Next Steps
- خلاصه: در شروع دوره، یک نمای کلی از مفاهیمی که قرار است یاد بگیری ارائه میشود؛ مثل ساختن microservices با Spring Boot، استفاده از Clean Architecture و Hexagonal Architecture برای نگهداری و توسعهپذیری بهتر، و بهکارگیری اصول Domain-Driven Design (DDD). همینطور الگوهایی مثل SAGA برای تراکنشهای توزیعشده، Outbox برای ارسال مطمئن eventها، CQRS برای جدا کردن خواندن و نوشتن، و استفاده از Kafka بهعنوان event bus. در نهایت، همه چیز روی Kubernetes و Google Kubernetes Engine (GKE) دیپلوی میشود.
- مثال: فرض کن یک سیستم سفارش غذا داریم که سرویسهای order، payment و restaurant از طریق eventهای Kafka با هم حرف میزنند. دوره قدمبهقدم همین سیستم را میسازد تا نشان بدهد این الگوها چطور چالشهای دنیای واقعی در سیستمهای توزیعشده را حل میکنند.
- لینک برای جزییات بیشتر: Ask AI: Introduction and Course Structure
- خلاصه: در این بخش، پروژهی سیستم سفارش غذا شکسته میشود به microserviceهای مختلف مثل order، payment، restaurant و customer و توضیح داده میشود که چطور از طریق eventهای Kafka با هم در ارتباط هستند. همچنین کل فلو از لحظه ثبت سفارش تا تأیید نهایی، بههمراه مدیریت پرداخت و اعتبارسنجی رستوران توضیح داده میشود؛ و اینکه چطور الگوی SAGA برای حفظ سازگاری بین سرویسها استفاده میشود.
- مثال: وقتی کاربر سفارشی ثبت میکند، سرویس order یک event روی topic مربوط به درخواست پرداخت منتشر میکند؛ سرویس payment آن را مصرف میکند، پرداخت را انجام میدهد و نتیجه را از طریق یک topic دیگر برمیگرداند و وضعیت سفارش آپدیت میشود. این مدل choreography باعث میشود سیستم حتی در صورت بروز خطا، در وضعیت سازگار باقی بماند.
- لینک برای جزییات بیشتر: Ask AI: Project Overview
- خلاصه: این بخش روی آمادهکردن محیط توسعه تمرکز دارد؛ با ابزارهایی مثل Java 17، Maven، IntelliJ، Git، Docker، Postman و ابزارهای مدیریت Kafka. با این setup میتوانی microserviceها را راحتتر بسازی، تست کنی و اجرا کنی.
- مثال: نصب Docker Desktop به تو اجازه میدهد یک cluster محلی Kubernetes راه بیندازی و یک محیط شبیه production روی سیستم خودت داشته باشی تا دیپلویکردن سرویسها را واقعیتر تست کنی.
- لینک برای جزییات بیشتر: Ask AI: Setting Up the Environment
- خلاصه: این بخش توضیح میدهد که چطور این دو معماری، منطق اصلی کسبوکار (domain) را از زیرساخت (مثل دیتابیس، message broker و… ) جدا میکنند تا کد تستپذیر و قابل تغییر بماند. در Hexagonal (الگوی ports and adapters)، ورودیها و خروجیها از طریق interfaceها تعریف میشوند و در Clean Architecture، وابستگیها همیشه از لایههای بیرونی به سمت هستهی domain هستند (dependency inversion).
- مثال: در سرویس order، در لایهی domain فقط portها برای دسترسی به داده و ارسال/دریافت messageها تعریف میشوند؛ پیادهسازی آنها در ماژولهای جدا (adapterها) قرار میگیرد. به این شکل، اگر دیتابیس را عوض کنی، هستهی منطقی سیستم دستنخورده باقی میماند.
- لینک برای جزییات بیشتر: Ask AI: Clean and Hexagonal Architectures
- خلاصه: این قسمت روی طراحی سرویس order با استفاده از Clean Architecture تمرکز میکند؛ ماژولهایی برای domain، application، data access و messaging ساخته میشود. این جداسازی باعث میشود وابستگیها همیشه به سمت هستهی دامنه باشند و منطق کسبوکار مستقل و تمیز باقی بماند.
- مثال: ماژول domain شامل entityها، value objectها و portهاست؛ ماژول data access پیادهسازی persistence با Postgres را دارد؛ در زمان اجرا هم با استفاده از dependency injection این دو بههم وصل میشوند، بدون اینکه coupling سفت و سختی بینشان ایجاد شود.
- لینک برای جزییات بیشتر: Ask AI: Designing and Creating Order Service Modules
- خلاصه: در این بخش الگوهای تاکتیکی DDD مثل aggregate، entity، value object، domain service و domain event بهکار گرفته میشوند تا مدل دامنهی کسبوکار، واضح و قابل مدیریت شود؛ مخصوصاً وقتی چند bounded context مختلف داریم.
- مثال: aggregate مربوط به سفارش، شامل entity سفارش و آیتمهای آن و همچنین اطلاعات پرداخت است؛ value objectها برای دادههای تغییرناپذیر (مثل مقدار پول) استفاده میشوند و domain eventها سرویسهای دیگر را زمانی که سفارشی ایجاد میشود یا وضعیتش عوض میشود، باخبر میکنند.
- لینک برای جزییات بیشتر: Ask AI: Domain-Driven Design (DDD)
- خلاصه: این قسمت وارد جزئیات Kafka میشود؛ اینکه topic، producer، consumer و partition چیست و چطور میتوان با partitioning به scale و تحملپذیری خطا رسید.
- مثال: مثلاً یک topic به نام payment-request داریم که سرویس order روی آن eventهای درخواست پرداخت را publish میکند؛ سرویس payment بهعنوان consumer آن را میخواند، منطق پرداخت را انجام میدهد و نتیجه را از طریق یک topic دیگر برمیگرداند.
- لینک برای جزییات بیشتر: Ask AI: Apache Kafka
- خلاصه: در این بخش سرویسهای payment و restaurant مشابه سرویس order طراحی و پیادهسازی میشوند؛ با تمرکز روی منطق دامنهی مخصوص خودشان، مدیریت eventها و ارتباط با Kafka در مراحل مختلف SAGA.
- مثال: سرویس payment eventهای سفارش را دریافت میکند، پرداخت را در دیتابیس محلی خودش ثبت میکند و سپس یک event جدید برای اعلام موفقیت یا شکست پرداخت منتشر میکند؛ سرویس restaurant بر اساس موجودی و وضعیت رستوران، سفارش را تأیید یا رد میکند.
- لینک برای جزییات بیشتر: Ask AI: Implementing Payment and Restaurant Services
- خلاصه: این بخش نشان میدهد چطور از الگوی SAGA برای مدیریت تراکنشهای توزیعشده بین چند microservice استفاده کنیم؛ با رویکرد choreography مبتنی بر eventها، هم مراحل اصلی فرآیند و هم مراحل rollback در صورت خطا مدیریت میشود.
- مثال: اگر پرداخت ناموفق باشد، یک chain از eventها باعث میشود وضعیت سفارش به cancelled تغییر کند و تمام اقدامات وابسته برگردانده شوند؛ اگر همهی مراحل موفق باشند، سفارش در نهایت به حالت approved میرسد.
- لینک برای جزییات بیشتر: Ask AI: SAGA Architecture Pattern
- خلاصه: در Outbox pattern هدف این است که ذخیرهسازی داده در دیتابیس و ارسال event به Kafka بهصورت اتمیک انجام شود. برای این کار، event ابتدا در یک جدول Outbox همراه با تراکنش اصلی ذخیره میشود و بعد یک process یا scheduler آن را خوانده و روی Kafka publish میکند.
- مثال: بعد از ذخیرهی سفارش در دیتابیس، یک رکورد event در جدول Outbox درج میشود؛ اگر تراکنش دیتابیس commit شود، آن event هم قطعاً ذخیره شده است. سپس یک job دورهای این جدول را میخواند و eventها را به Kafka ارسال میکند تا هیچ eventی از دست نرود.
- لینک برای جزییات بیشتر: Ask AI: Outbox Architecture Pattern
- خلاصه: در CQRS (Command Query Responsibility Segregation)، مدل نوشتن (command/write) و مدل خواندن (query/read) از هم جدا میشوند تا هم scale بهتری بگیری و هم بتوانی مدلهای read را به شکل بهینه برای نیازهای مختلف طراحی کنی. همگامسازی بین این دو معمولاً با eventها انجام میشود.
- مثال: سرویس customer وقتی مشتری جدیدی ساخته میشود، یک event ایجاد میکند؛ سرویس order این event را مصرف میکند و یک read model محلی از مشتریها نگه میدارد تا برای queryهای سریع، لازم نباشد هر بار مستقیماً به سرویس customer مراجعه کند.
- لینک برای جزییات بیشتر: Ask AI: CQRS Architecture Pattern
- خلاصه: این قسمت مفاهیم اصلی Kubernetes مثل pod، deployment و service را معرفی میکند؛ سپس با استفاده از Docker Desktop یک cluster محلی راه میافتد و سرویسها، Kafka و Postgres روی آن دیپلوی میشوند.
- مثال: برای سرویس order یک فایل deployment (YAML) ساخته میشود که image مربوط به Docker و متغیرهای محیطی لازم را مشخص میکند؛ با اجرای دستور
kubectl apply، چند replica از سرویس اجرا شده و در صورت نیاز scale میگیرند. - لینک برای جزییات بیشتر: Ask AI: Kubernetes Basics and Local Deployment
- خلاصه: در این بخش، یک cluster روی GKE ساخته میشود، imageها به Artifact Registry push میشوند، Kafka، Postgres و microserviceها روی cluster دیپلوی میشوند و در نهایت هم scale افقی (horizontal scaling) اضافه میشود.
- مثال: با استفاده از ابزار خط فرمان
gcloudیک cluster ساخته میشود، imageها tag میشوند و به Artifact Registry push میشوند؛ سپس همان manifestهای Kubernetes روی GKE اعمال میشوند و با استفاده از Horizontal Pod Autoscaler، تعداد replicaها بر اساس مصرف CPU بهصورت خودکار بالا و پایین میرود. - لینک برای جزییات بیشتر: Ask AI: Deploying to Google Kubernetes Engine (GKE)
- خلاصه: در پایان، دوره روی موضوعات تکمیلیِ مناسب محیط production مثل امنیت، observability، tracing و استفاده از API Gateway تأکید میکند و پیشنهاد میدهد برای عمیقتر شدن سراغ دورههای پیشرفتهتر (مثلاً روی event-driven microservices و Elasticsearch) بروی.
- مثال: برای آمادهسازی کامل سیستم برای production، میتوانی علاوه بر این معماری، از logging و tracing توزیعشده (مثلاً با ترکیب Kafka و Elasticsearch) استفاده کنی تا هم خطاها را راحتتر ردیابی کنی و هم بتوانی روی eventها و لاگها جستوجوی قدرتمندی داشته باشی.
- لینک برای جزییات بیشتر: Ask AI: Next Steps and Conclusion
درباره خلاصهکننده
من «Ali Sol» هستم، یک Backend Developer. برای آشنایی بیشتر:
- وبسایت: alisol.ir
- لینکدین: linkedin.com/in/alisolphp