تفاصيل المشروع

وصف المشروع

1) الهدف والسياق

نبحث عن Senior Backend Lead يستلم قيادة مشروع قائم بالكامل مبني على ASP.NET Core (.NET 9) Web API + SQL Server + Dapper. المطلوب: تحسين أداء قوي، هيكلة نظيفة قابلة للتوسع، موثوقية عالية، وإدارة إصدارات منضبطة—مع تسليم وثائق وتشغيل مستدام.

2) المسؤوليات (Takeover & Ownership)

•استلام المنظومة: تشغيل البيئة محليًا/Stage، جرد التبعيات والأسرار، خريطة الخدمات والـ DB.

•Architecture & Code Health: تنظيم الطبقات (Controllers → Services → Repositories (Dapper))، اعتماد async I/O، توحيد DTOs وProblemDetails وcorrelation IDs.

•Release Management: feature flags, canary/blue-green, خطة rollback، وسياسة إصدار ثابتة.

•حَوكمة الجودة: معايير كود، PR reviews، رفع test coverage.

•تطوير وتحسين مستمر: قيادة backlog (bugs/tech-debt/features) حسب impact × effort مع تقارير أسبوعية بالأرقام.

3) نطاق العمل الفني

•ASP.NET Core (.NET 9): تبسيط middleware pipeline، تقليل overhead، Minimal APIs عند الحاجة، Output caching, Response compression, System.Text.Json source-gen.

•SQL Server: تحليل Actual Execution Plans وQuery Store، علاج parameter sniffing، ضمان SARGability، تصميم indexing (covering/filtered) وقد يلزم partitioning، تفعيل RCSI ومراقبة version store، تحسين الكتابات (SqlBulkCopy/TVPs/batching).

•Dapper: إزالة N+1، multi-mapping مع splitOn الصحيح، Dictionary de-dup لمنع Cartesian explosion، اتصالات قصيرة العمر وtimeouts منضبطة وbounded concurrency.

•Caching & Resiliency: Memory (hot keys) + Redis، cache-aside, versioned keys, ETag/If-None-Match, soft TTL + background refresh (منع thundering herd). Rate limiting, circuit breaker (Polly)، retries, backpressure.

•Security: JWT قصير العمر + JWKS cache، key rotation بـ kid، HSTS/TLS، صلاحيات واضحة بدون ضرب DB في كل طلب.

•Observability: OpenTelemetry (traces/metrics/logs)، لوحات P95/P99, error rate, request rate, DB timings, pool usage, cache hit/miss.

4) المخرجات المتوقعة (Expected Outcomes)

•P95 ≤ 150ms لأهم الـ endpoints (بعد الكاش)، وP99 ≤ 300ms حيث مناسب.

•إزالة N+1 من المسارات الحرجة وتقليل زمن أسوأ الاستعلامات ≥ 40–60%.

•Resiliency فعّالة (rate limiting / timeouts / circuit breaker) بدون pool exhaustion.

•Dashboards وتنبيهات حيّة، وRunbook/Playbooks للأعطال، وDocs معمارية قصيرة.

5) المعالم والدفع (Milestones • Escrow)

1.Kickoff & Access (≤ 48h): تشغيل البيئة وإضافة قياسات أولية.

2.Audit & Takeover Plan (3–5 أيام): تقرير مخاطر/أولويات وخارطة طريق بأرقام.

3.Stabilization & Quick Wins (1–2 أسبوع): N+1، فهارس أساسية، ضبط pooling/timeouts، كاش سريع.

4.Deep Optimization & Resilience (2–4 أسابيع): Partitioning/TVPs/Bulk، refactor لمسارات حرجة، تفعيل الحماية.

5.Handover (3–5 أيام): Load tests نهائية، الوثائق والتسليم.

معايير قبول كل معلم: أرقام Before/After (P95/P99, QPS, CPU/GC, pool usage, Execution Plan diff) + اختبارات تحميل ناجحة.

6) بيئة العمل

Git + PR policy، بيئة Staging/DB، مشاركة أسرار آمنة، NDA، تواصل يومي مختصر + تقرير أسبوعي.

7) المهارات المطلوبة

ASP.NET Core (.NET 9), Web API, Dapper, SQL Server, Query Store, Indexing/Partitioning,

RCSI/Snapshot, Caching (Redis/Memory), Polly, OpenTelemetry, k6/Locust, CI/CD, BenchmarkDotNet.

8) ماذا نطلب مع عرضك

•أمثلة إنتاج بأرقام قبل/بعد + روابط PR/Code إن أمكن.

•خطة Takeover لأوّل أسبوع (Audit, Quick Wins, قياسات).

•توفّر أسبوعي وساعات الاستجابة للأعطال (On-call/SLA).

تقدم للمشروع

العروض المقدمة

أدرك تماما أن تحسين هيكلية المشروع (Architecture) وتنظيم قاعدة البيانات أمر أساسي لتحقيق أعلى مستويات السرعة والكفاءة. بخبرتي في تطوير الأنظمة عالية الأداء باست...

مع حضرتك محمود خبره 6 سنين بال dot net stack كما ان لدي خبره باداره التيم تيكنيكال و تواصل واداره المشروع وتقسيمه الي sprints وتوزيع الtasks و اعطاء estmition ل...

قبولك لهذا العرض يعتبر اتفاقاً بينك وبين المستقل وسيبقى موقع مستقل وسيطاً بينكما حتى تسليم المشروع. لن تتمكن من تغيير العرض أو إلغائه لاحقًا لذلك تأكد من اختيارك للعرض المناسب باتّباع النصائح التالية:

  • راجع صفحة حساب المستقل الذي اخترته واطّلع على أعماله السابقة
  • إن كانت هناك تفاصيل غير مذكورة في المشروع، فتواصل مع المستقل وأخبره بها أولًا
  • بإمكانك أن تتواصل مع المستقل وتسأله عن أية أمور تحتاجها
  • احرص دائمًا على إبقاء التواصل مع المستقل داخل الموقع قدر الإمكان وذلك لضمان حقوقك
  • لا تتردد من التواصل معنا ان احتجت لأي مساعدة، نحن نحب مساعدتك!

المستقل غير متاح لاستلام مشاريع، يمكنك ارسال تنبيه له لقبول العرض وإعادة المحاولة بعد بضعة ساعات، أو اختيار عرضاً من مستقل آخر.