نمودار کانتینر C4 چیست؟
نمودار کانتینر است سطح 2 در مدل C4 سیمون براون است. این نمودار به سیستم نرمافزاری منفردی (که در سطح 1 – زمینه سیستم تعریف شده است) نزدیک میشود تا نشان دهد:

-
این شکل کلی معماری درون مرز سیستم شما را نشان میدهد.
-
واحدهای اصلی واحدات قابل نصب/اجرا که به آنها کانتینرها.
-
انتخابهای فناوری برای هر کانتینر.
-
چگونه کانتینرها تعامل دارند با یکدیگر و با عوامل یا سیستمهای خارجی.
توضیح مهم: یک «کانتینر» در C4 حتماً کانتینر داکر نیست. هر واحدی که به صورت جداگانه قابل نصب یا اجرا باشد و کد اجرا کند یا داده ذخیره کند، یک کانتینر است. مثالها:
-
اپلیکیشن وب / برنامه تکصفحهای (SPA)
-
اپلیکیشن موبایل
-
API سمت سرور / میکروسرویس
-
پایگاه داده (ساختار)
-
ذخیرهسازی فایل (کیف سه، پوشه سیستم فایل)
-
کنتیور پیام / صف (هنگامی که به صورت صریح مدلسازی شود)
-
اپلیکیشن دسکتاپ / خط فرمان (CLI)
-
فرآیند دستهای / کار موقتشده
این نمودار همچنان سطح بالا — بدون جزئیات کلاس یا کد داخلی (این مربوط به سطح 3 مؤلفهها یا سطح 4 کد است).
زمان مناسب برای ایجاد نمودار کانتینر
نمودار کانتینر را ایجاد (و نگهداری) کنید هنگامی که:
-
شما تکمیل کردهاید (یا حداقل طرح اولیه را رسم کردهاید) نمودارزمینه سیستم نمودار و نیاز به پاسخ به این سؤال دارید: «بلوکهای اصلی داخل سیستم ما چیستند؟»
-
ورود کاربران جدید، مهندسان نرمافزار، معماران یا کارکنان عملیات — آنها نیاز دارند به سرعت بسته فناوری و مسئولیتهای سطح بالا را درک کنند.
-
اتخاذ تصمیمات مهم فنی یا معماری (یکپارچه به سرویسهای کوچک، افزودن برنامه موبایل، انتخاب پایگاه داده، معرفی صفهای پیام و انتقال به ابر).
-
مستندسازی برای بازبینیها، رعایت مقررات، بررسیهای امنیتی یا پاسخ به حوادث (به نمایش دادن سطح حمله و جریان دادهها کمک میکند).
-
شما میخواهید «معماری به عنوان کد» که در مخزن ذخیره میشود و با سیستم پیشرفت میکند.
-
اکثر تیمهااینجا متوقف میشوند — سیمون براون خودش تأکید میکند کهزمینه سیستم + کانتینر نمودارها برای اکثر تیمهای نرمافزار کافی هستند. فقط در صورتی که پیچیدگی داخل یک کانتینر آن را توجیه کند، به سطح عمیقتر (مؤلفهها/کد) بروید.
در صورتی که:
-
سیستم بسیار ساده است (یک فرآیند + پایگاه داده).
-
شما در مرحله اولیه طرحریزی هستید و تنها به زمینه کلی نیاز دارید.
چرا از نمودارهای کانتینر استفاده کنیم؟ (مزایای کلیدی)
-
شفافیت برای مخاطبان مختلف
توسعهدهندگان فناوریها و نقاط اتصال را میبینند.
تیمهای عملیات/زیرساخت، واحدهای قابل نصب و مسیرهای ارتباطی را میبینند.
معماران مرزهای مسئولیت و ریسکهای بدهی فنی را میبینند.
مدیران دیدی کافی غیروابسته به فناوری اما قابل اجرا میبینند. -
از مشکل «یک نمودار بزرگ» جلوگیری میکند
از اینکه همه چیز (کاربران + زیرساخت + کلاسها + آیکونهای ابری) در یک تصویر بارگذاری شده و بیش از حد پر شده، جلوگیری میکند. -
تصمیمات کلیدی را برجسته میکند
به طور واضح انتخابهایی مانند SPA + API + پایگاه داده رابطهای در مقابل رندرینگ سمت سرور + NoSQL، یا همزمانی در مقابل رویدادمحور را نشان میدهد. -
ارتباط و همکاری
در جلسات طراحی، بررسی حوادث، مدلسازی تهدیدها و برنامهریزی استراتژیک به عنوان یک نقشه مشترک عمل میکند. -
مستندات زنده
وقتی به زبان PlantUML / Structurizr DSL یا مشابه آن نوشته شود → در Git نسخهدار میشود، به طور خودکار در CI بازتولید میشود و همیشه بهروز است.
چگونه یک نمودار کانتینر عالی بسازیم (مراحل به صورت گام به گام + بهترین روشها)
-
از سطح 1 شروع کنید
افراد و سیستمهای نرمافزاری خارجی را از نمودار متناظر کپی کنید — اینها به عنوان عواملی که با کانتینرها تعامل دارند، تبدیل میشوند. -
مرز سیستم را رسم کنید
ازمرز_سیستمدر PlantUML برای مشخص کردن واضح «داخل سیستم ما» استفاده کنید. -
کانتینرها را شناسایی کنید
پرسش کنید: چه چیزهایی به صورت جداگانه قابل اجرا/نصب هستند که عملکرد سیستم را تأمین میکنند؟
الگوهای رایج:-
SPA وب ↔ پشتیبان API ↔ پایگاه داده
-
اپلیکیشن موبایل ↔ پشتیبان برای رابط کاربری (BFF) ↔ خدمات مشترک
-
سرویسهای مایکروسرویسی با کنتیور پیام
-
یکپارچه قدیمی + لایه جدید API
-
-
فناوری و توضیح مختصر اضافه کنید
هر کانتینر باید نشان دهد: نام، فناوری، هدف کوتاه.
توضیحات را کمتر از 15 کلمه نگه دارید. -
تعاملات (رابطهها) را تعریف کنید
جهت + پروتکل + قصد را نشان دهید (مثلاً: «JSON/HTTPS»، «از و به دادهها خواندن و نوشتن»، «منتشر میکند به»، «مصرف میکند از»).
در روابط از افعال استفاده کنید. -
بهترین روشها
-
خوانایی آن را حفظ کنید — به کمتر از 10 تا 12 کانتینر بپردازید. اگر بیشتر است → دیدگاههای متمرکز ایجاد کنید (مثلاً: «کانتینرها در زیرسیستم API»).
-
همگون باشید — جهت چیدمان یکسان (از بالا به پایین/از چپ به راست)، سطح جزئیات یکسان.
-
از آیکونها/اسپریتها استفاده کنید — جذابیت بصری افزوده شود (PlantUML از devicons، font-awesome و غیره پشتیبانی میکند).
-
légende و کلید — اجازه دهید اتوماتیک لégende در PlantUML فعال شود.
-
از بینظمی جلوگیری کنید — اگر صفها/موضوعات ارزشی ایجاد نمیکنند، آنها را حذف کنید؛ به جای آن، پروتکلها را روی فلشها قرار دهید.
-
نسخهبندی و ذخیره به عنوان کد — فایلهای .puml را به مخزن ارسال کنید.
-
انطباق با مخاطب — یک نسخه برای توسعهدهندگان (فناوریهای دقیق)، نسخه سبکتری برای ذینفعان.
-
مثال PlantUML – سیستم بانکداری اینترنتی کلاسیک (سبک Big Bank plc)
اینجا یک مثال تمیز و تولیدی با استفاده از کتابخانه رسمی C4-PlantUML آورده شده است.
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
' اختیاری: آیکونهای زیبا اضافه کنید (از اسپریتهای tupadr3)
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/angular.puml
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/java.puml
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/postgresql.puml
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/android.puml
title دیاگرام کانتینر: سیستم بانکداری اینترنتی
Person(customer, "مشتری بانکداری شخصی", "یک مشتری از Big Bank plc")
System_Boundary(c1, "سیستم بانکداری اینترنتی") {
Container(spa, "اپلیکیشن صفحه تکی", "JavaScript و Angular", "تمامی قابلیتهای بانکداری اینترنتی را از طریق مرورگر وب به مشتریان ارائه میکند", $sprite="angular")
Container(mobile, "اپلیکیشن موبایل", "Android/iOS (React Native)", "قابلیتهای محدودی در بانکداری اینترنتی", $sprite="android")
Container(api, "اپلیکیشن API", "Java و Spring Boot", "قابلیتهای بانکداری اینترنتی را از طریق API ارائه میکند", $sprite="java")
ContainerDb_Ext(db, "پایگاه داده بانکداری", "PostgreSQL", "ترکیبی از ترجیحات کاربر، دادههای کش شده و جلسات (حسابها و تراکنشهای اصلی در سیستم اصلی باقی میمانند)", $sprite="postgresql")
}
System_Ext(core, "سیستم بانکداری اصلی", "سیستم اصلی – موجود")
System_Ext(email, "سیستم ایمیل", "ایمیلها را ارسال میکند (مثلاً AWS SES)")
Rel(customer, spa, "استفاده میکند از", "HTTPS")
Rel(customer, mobile, "استفاده میکند از", "HTTPS")
Rel(spa, api, "تماس میگیرد با", "JSON/HTTPS")
Rel(mobile, api, "تماس میگیرد با", "JSON/HTTPS")
Rel(api, db, "خواندن و نوشتن به", "JDBC/SQL")
Rel(api, core, "استفاده میکند از", "JSON/HTTPS")
Rel(api, email, "ایمیل را ارسال میکند با استفاده از", "HTTPS")
LAYOUT_WITH_LEGEND()
LAYOUT_TOP_DOWN()
@enduml
این یک دیاگرام تمیز با این ویژگیها را نمایش میدهد:
-
مرز سیستم
-
برچسبهای فناوری
-
اسپریتها/آیکونها
-
ارتباطات واضح
-
légende
شما میتوانید آن را مستقیماً در سرور آنلاین PlantUML یا هر ویرایشگر/IDE سازگاری که دارید، قرار دهید.
این ساختار را به عنوان الگو استفاده کنید — عناصر را با نامها، فناوریها و جریانهای سیستم خود جایگزین کنید. برای استایلهای پیشرفتهتر (تمها، رنگهای سفارشی)، نمونههای GitHub C4-PlantUML را بررسی کنید.
طراحی دیاگرام خوشحال باشید — و به یاد داشته باشید: هدف این است ارتباط موثر، نه کمال UML!
منبع دیاگرام کانتینر C4
- راهنمای نهایی برای نمایش مدل C4 با استفاده از ابزارهای هوش مصنوعی Visual Paradigm: این راهنما توضیح میدهد که چگونه میتوان از ابزارهای پشتیبانی شده از هوش مصنوعی برای خودکارسازی و بهبود نمایش مدل C4 برای طراحی سریعتر معماری نرمافزار استفاده کرد.
- استفاده از Studio C4 هوش مصنوعی Visual Paradigm برای مستندسازی معماری بهبود یافته: این مقاله به بررسی استفاده از یک استودیو پیشرفته هوش مصنوعی برای ایجاد مستندات معماری نرمافزار تمیز، مقیاسپذیر و قابل نگهداری میپردازد.
- راهنمای نهایی برای Studio C4-PlantUML: تحول در طراحی معماری نرمافزار: این منبع به بررسی ترکیب خودکارسازی مبتنی بر هوش مصنوعی، شفافیت مدل C4 و انعطافپذیری PlantUML در یک ابزار قدرتمند واحد میپردازد.
- راهنمای جامع برای Studio C4 PlantUML پشتیبانی شده از هوش مصنوعی Visual Paradigm: این راهنما ابزاری اختصاصی را توصیف میکند که در اوایل سال ۲۰۲۵ عرضه شده و دستورالعملهای زبان طبیعی را به دیاگرامهای لایهای C4 تبدیل میکند.
- استودیو C4-PlantUML | تولیدکننده دیاگرام C4 پایهای هوش مصنوعی: این مرور ویژگیها ابزاری مبتنی بر هوش مصنوعی را برجسته میکند که برای تولید دیاگرامهای معماری نرمافزار C4 از توصیفهای متنی ساده طراحی شده است.
- تولید و ویرایش دیاگرامهای مؤلفه C4 با چتبات هوش مصنوعی Visual Paradigm: این آموزش نشان میدهد که چگونه از یک چتبات پایهای هوش مصنوعی برای ایجاد و بهبود تدریجی معماری سطح مؤلفه در سیستمهای پیچیده استفاده شود.
- تولیدکننده دیاگرام C4 پایهای هوش مصنوعی: سطوح اصلی و دیدگاههای پشتیبان: این صفحه توضیح میدهد که چگونه تولیدکننده هوش مصنوعی از چهار سطح اصلی مدل C4 — متن، کانتینر، مؤلفه و نصب — پشتیبانی میکند تا مستندسازی جامعی ارائه دهد.
- تولیدکننده دیاگرام هوش مصنوعی: انتشار پشتیبانی کامل از مدل C4: این بهروزرسانی جزئیات ادغام ویژگیهای پایهای هوش مصنوعی برای ایجاد خودکار دیاگرامهای سلسله مراتبی مدل C4 را ارائه میدهد.
- تولیدکننده هوش مصنوعی مدل C4: خودکارسازی کل چرخه مدلسازی: این منبع تأکید میکند که چگونه یک چتبات هوش مصنوعی تخصصی از دستورالعملهای مکالمهای برای تضمین یکدستی در مستندسازی معماری برای تیمهای DevOps استفاده میکند.
- بررسی جامع: چتباتهای هوش مصنوعی عمومی در برابر ابزارهای C4 Visual Paradigm: این مقایسه توضیح میدهد که چرا ابزارهای تخصصی مانند استودیو C4 PlantUML نتایج ساختاریتر و با کیفیت حرفهایتری نسبت به مدلهای زبانی عمومی ارائه میدهند.
This post is also available in Deutsch, English, Español, Français, English, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文.













