فكر برمجي
480 subscribers
459 photos
4 videos
70 files
196 links
#فكر_برمجي
Think_Programmatically
قناة تقنية متخصصة في البرمجة وتطوير المهارات. نوفر شروحات مبسطة، موارد مفيدة، وأفكار ملهمة لتحويل شغفك بالتقنية إلى إبداع.
Download Telegram
#020 — Architectural Patterns | الأنماط المعمارية

عندما يبدأ المشروع يكبر، تظهر أسئلة مهمة:

كيف نقسم النظام؟
كيف نفصل المسؤوليات؟
كيف نجعل التغيير أسهل؟
وكيف نقلل الترابط بين الأجزاء؟

هنا تأتي Architectural Patterns — الأنماط المعمارية.

الـPattern ليس كودًا جاهزًا، بل هو طريقة مجربة لتنظيم النظام وحل مشاكل معمارية متكررة.

ومن أشهر الأنماط:

Layered Architecture
تقسم النظام إلى طبقات واضحة مثل:

Presentation → Application → Business → Data Access → Database

مناسبة للتطبيقات التقليدية عندما نريد بنية واضحة وسهلة الفهم.

MVC — Model View Controller
يفصل بين:

Model
View
Controller

والهدف هو عدم خلط واجهة المستخدم مع منطق النظام.

Clean Architecture
تضع Business Logic في المركز، وتجعل الاعتمادات تتجه للداخل.

الفكرة المهمة:

> منطق الأعمال يجب ألا يعتمد على Framework أو Database معينة.



Hexagonal Architecture — Ports & Adapters
تعزل النظام عن التقنيات الخارجية من خلال Interfaces واضحة.

مثلًا:

PaymentPort

يمكن تنفيذه لاحقًا بواسطة:

Stripe
PayPal
بوابة دفع محلية

دون تغيير Business Logic.

Event-Driven Architecture
بدل أن تستدعي الخدمات بعضها مباشرة، تتفاعل عبر Events.

مثال:

Order Created

ثم تستجيب:

Payment Service
Notification Service
Inventory Service
Analytics Service

وهذا يقلل الترابط ويساعد على التوسع، لكنه يزيد تحديات مثل Debugging وMonitoring وConsistency.

والسؤال الذي يتكرر دائمًا:

ما أفضل Architectural Pattern؟

الإجابة الصحيحة ليست اسم Pattern معين.

لأن:

لا يوجد Pattern مناسب لكل مشروع.

قد يكون Layered هو الأنسب لمشروع بسيط، بينما مشروع آخر يحتاج Clean Architecture، وآخر يعتمد على Event-Driven، وأحيانًا نستخدم أكثر من Pattern داخل نفس النظام.

لذلك لا تختَر بناءً على الشهرة.

اختَر بناءً على:

Problem + Constraints + Context

ثم:

Right Pattern

القاعدة الأهم:

> Choose based on context, not popularity.



المعمارية الجيدة لا تجعل النظام يعمل اليوم فقط، بل تساعده أن يكون أسهل في الصيانة، الاختبار، التوسع، والتغيير مستقبلًا.

Understand → Compare → Choose → Adapt → Build

سؤال للنقاش:

لديك نظام حجز يعتمد على Payment Gateway وSMS Provider وخدمة خرائط خارجية.
أي Architectural Pattern ستستخدم حتى تستطيع تغيير هذه الخدمات مستقبلًا بأقل تأثير على Business Logic؟

المنشور القادم:

#021 — Clean Architecture
كيف نحمي Business Logic من تغيّر Frameworks وقواعد البيانات والخدمات الخارجية؟

م. طارق العمري
Software Engineer | Backend Developer

#SoftwareEngineering #ArchitecturalPatterns #SoftwareArchitecture #SystemDesign #LayeredArchitecture #MVC #CleanArchitecture #HexagonalArchitecture #EventDrivenArchitecture #BackendDevelopment #SoftwareDesign #Scalability #Maintainability #SoftwareEngineer #هندسة_البرمجيات #الأنماط_المعمارية #معمارية_البرمجيات #تصميم_الأنظمة #تطوير_البرمجيات