DevGuide

DevGuide Elevate Your Coding Skills! 🚀

إزاي تعرض شغلك كـ Backend Developer؟ 💡طبيعة شغل ومشاريع الباك إند مختلفة شوية عن مجالات تانية زي الفرونت إند أو الموبايل...
28/05/2026

إزاي تعرض شغلك كـ Backend Developer؟ 💡
طبيعة شغل ومشاريع الباك إند مختلفة شوية عن مجالات تانية زي الفرونت إند أو الموبايل، بتقعد ساعات تكتب في code، تبني APIs، تظبط الـ Auth، تتعامل مع Databases و Logging و Queues، وكمان ممكن تكون بتشتغل على Microservices و Event-driven architecture…إلخ.

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

الـ Backend أصعب شوية في النقطة دي عن الـ Frontend، لأن الناس مش بتشوف شغلك بعنيهم، فأنت اللي لازم "تخليهم يشوفوه".

تعال أقولك إزاي تعرض شغلك كـ Backend Developer بطريقة محترمة...

———

✨ أول حاجة: أنت بتشتغل على إيه؟

اكتب الكلام ده في شكل نقاط واضحة، وبلغة بسيطة. حاول تجاوب على الأسئلة دي:

- إيه نوع الـ systems اللي اشتغلت عليها؟ (E-commerce, CMS, Booking system…)
- كان فيها كام user؟ أو traffic عامل إزاي؟
- هل كانت Monolith ولا Microservices؟
- هل اشتغلت على حاجات زي Authentication, Payments, Notifications؟
- هل فيه Challenges معينة حليتها؟ (scalability, performance, data integrity…)

✅ مثال:

اشتغلت على نظام E-commerce بيخدم 200K user شهريًا، بنيت فيه REST APIs بـ Node.js وExpress، وعملت Integration مع Stripe للـ payments.

ساهمت في refactor من Monolith لـ Microservices، واشتغلت على Service خاصة بالـ Orders باستخدام MongoDB وRabbitMQ.

———

✨ ثاني حاجة: تكلم عن قراراتك التقنية

بلاش تقول "اشتغلت بـ Node.js وخلاص"، ولكن احكي ليه استخدمتها؟
إزاي اختارت Database معينة؟ ليه استخدمت Redis أو Kafka؟

اللي بيفرق أي حد شاطر مش بس إنه بيعرف يستخدم tools…إنما بيعرف إمتى يستخدم إيه، وليه، وإيه البدائل اللي كانت متاحة؟

✅ مثال:

استخدمنا Redis علشان نعمل caching لبيانات المنتجات عشان نحل مشكلة الـ latency العالية في الـ product listing. ده قلل الـ response time بنسبة 60%.

———

✨ ثالث حاجة: تكلم بلغة الـ Impact

بلاش تقول "اشتغلت على كذا…"، الناس بتحب تسمع التأثير - "بسبب شغلي، حصل كذا وكذا…"

تتكلم عن النتائج:
- الـ API response time قل بنسبة كام؟
- كم bug اتصلحت؟
- الـ revenue زاد؟ retention اتحسن؟
- الـ system بقى يستحمل كام request في الثانية؟

✅ مثال:

عملت تحسين للـ queries في MySQL خلّى الـ checkout process أسرع بنسبة 40%، وقلل الـ cart abandonment بنسبة ملحوظة.

———

✨ رابع حاجة: الـ Showcase الحقيقي

- اعمل repos على GitHub فيها مشاريع حقيقية
- اعرض Postman Collection أو OpenAPI Spec
- لو اشتغلت على حاجات Open Source أو عندك Blog بيشرح اللي بتعمله ممكن تضيفه.

———

✨ خامس حاجة: خلي شغلك "مفهوم" للناس اللي مش في نفس التخصص

خلي دايمًا الطريقة اللي بتتكلم بها سهلة، وفيها أرقام.

بدل ما تقول:

“Built scalable APIs using Node.js.”

ممكن تقول:

“Built RESTful APIs using Node.js to handle 20K+ daily requests, with response time under 200ms.”

———

بالتوفيق 🌹

مفهوم الـ Index في قواعد البيانات 🔍تخيل معايا أنك دخلت مكتبة فيها مليون كتاب، والمطلوب تدور على كتاب اسمه "تعلم البرمجة ...
06/05/2026

مفهوم الـ Index في قواعد البيانات 🔍
تخيل معايا أنك دخلت مكتبة فيها مليون كتاب، والمطلوب تدور على كتاب اسمه "تعلم البرمجة بلغة الجافا"، ومفيش أي ترتيب أو فهرس للمكتبة.

هتحتاج تمسك كتاب كتاب وتشوف عنوانه لحد ما تلاقي اللي أنت عايزه. الموضوع هيبقى بطييييء جدًا، صح؟

طيب، لو المكتبة دي فيها "فهرس" مرتب فيه أسماء الكتب وأرقام كل الرفوف بتاعتها... وقتها تفتح الفهرس، تدور على الاسم، تعرف مكانه، وتروح تاخده في ثواني. 🚀

———

نفس الفكرة بالضبط بتحصل داخل قواعد البيانات.

الـ Index عبارة عن حاجة شبه الفهرس كده، بيخلي قاعدة البيانات تلاقي البيانات اللي أنت طالبها بسرعة من غير ما تضطر تمسك كل صف داخل الجدول وتفتش فيه صف صف.

———

🤔 ليه بنستخدم الـ Index؟

لما بتعمل استعلام (Query) علشان تجيب بيانات معينة، خصوصًا من جداول فيها ملايين الصفوف، الـ Index بيقلل وقت البحث بشكل كبير جدًا. بدل ما يقلب الجدول كله، بيروح يدور داخل الـ Index ويوصلك بالبيانات أسرع.

———

🛠 أنواع الـ Index المشهورة:

- الـ Single Column Index: بيكون معمول على عمود واحد بس.
- الـ Composite Index: بيكون معمول على أكتر من عمود مع بعض.
- الـ Unique Index: بيضمن إن القيم اللي في العمود غير مكررة.
- الـ Full-text Index: بيستخدم للبحث داخل نصوص طويلة زي المقالات.

———

⚠️ ملاحظة مهمة:

استخدام Index بيساعد في تسريع الـ SELECT queries...

لكن خلي بالك، كل ما تعمل Insert أو Update أو Delete في الجدول، قاعدة البيانات لازم تحدث الـ Index كمان، وده معناه شوية تكلفة إضافية. يعني، مينفعش تحط Index على كل الأعمدة وخلاص، لازم تختار على حسب أكتر Queries بتستخدمها.

———

الـ Index = فهرس بيسرع البحث داخل قواعد البيانات.

AI Prompting for Everyone 💯 ———Whatever your current skill level, this course will help you become an AI power user• Fin...
05/05/2026

AI Prompting for Everyone 💯

———

Whatever your current skill level, this course will help you become an AI power user

• Find information: Get accurate, well-sourced answers using AI web search and deep research modes.

• Brainstorm & Write: Use AI as a thought partner to get honest feedback and write natural-sounding text.

• Create & Build: Generate images and build simple websites and apps with no coding required.

———

• Beginner
• 3h4m
• Instructor: Andrew Ng

———

https://learn.deeplearning.ai/courses/ai-prompting-for-everyone/information

🎯 الفرق بين الـ Client-side Validation والـ Server-side Validationأول حاجة تعال نتفق إن الـ "Validation" يعني التحقق من ...
27/04/2026

🎯 الفرق بين الـ Client-side Validation والـ Server-side Validation
أول حاجة تعال نتفق إن الـ "Validation" يعني التحقق من صحة البيانات اللي المستخدم بيدخلها، زي مثلًا لما تيجي تسجل في موقع وتدخل الإيميل والباسورد، لازم الموقع يتأكد إن البيانات دي صح ومظبوطة قبل ما يحفظها أو يتعامل معاها.

التحقق ده ممكن يحصل في مكانين:

———

🔹 الـ Client-side Validation (التحقق في المتصفح):

- يعني التحقق بيحصل قبل ما البيانات تروح للسيرفر.
- الكود اللي بيعمل التحقق ده بيكون شغال عند المستخدم نفسه، غالبًا باستخدام JavaScript أو HTML5 Validation.

مثلًا لو أنت بتدخل بياناتك في فورم تسجيل، والمتصفح طلع لك رسالة بتقولك "الإيميل مش مكتوب بطريقة صحيحة" أو "الباسورد قصير"، قبل حتى ما تضغط على Submit... ده كده Client-side Validation.

ولكن النوع ده مش آمن بنسبة ١٠٠٪، ومينفعش نعتمد عليه لوحده.

———

🔹 الـ Server-side Validation (التحقق عند السيرفر):

- هنا التحقق بيحصل بعد ما البيانات تتبعت للسيرفر.
- السيرفر هو اللي بيتأكد بنفسه من كل حاجة: الإيميل صح؟ الباسورد قوي؟ وهكذا.

بغض النظر المستخدم عمل إيه على جهازه، السيرفر بيستلم الداتا ويتأكد منها بنفسه.

النوع ده ممكن يحميك من هجمات زي SQL Injection وغيرها، ولكن ده بيزود الحمل على السيرفر.

———

✅ إيه الصح؟

الصح والمُتبع في أي مشروع محترم إنك تستخدم النوعين مع بعض:

- تعمل Client-side Validation عشان تحسن تجربة المستخدم وتظهر له Feedback سريع.
- وتعمل كمان Server-side Validation عشان تأمن نفسك وتحافظ على السيرفر والداتا بتاعتك.

———

يعني إيه Bearer Token وإزاي بيشتغل؟ 🤔خليني أسألك سؤال... لما تدخل أي موقع ويطلب منك تسجيل الدخول، هل كل مرة بتفتح الموقع...
26/04/2026

يعني إيه Bearer Token وإزاي بيشتغل؟ 🤔
خليني أسألك سؤال... لما تدخل أي موقع ويطلب منك تسجيل الدخول، هل كل مرة بتفتح الموقع بيطلب منك اسم المستخدم والباسورد من الأول؟ "في الغالب" لا، لأنه بعد ما بتسجّل دخول بيتم إصدار Token تستخدمه بدل ما تدخل بياناتك كل مرة.

هنا بقى بييجي دور الـ Bearer Token... ده واحد من أشهر أنواع الـ Access Tokens واللي بيتم استخدامه في الـ authentication (وغالبًا مع معيار OAuth 2.0)، وده معناه إنك لما تبعت request لأي API محمي (Protected)، بدل ما تبعت بيانات تسجيل الدخول كل مرة، بتبعت الـ Token بيأكد إنك شخص موثوق.

بس خليني أقولك إن استخدام Bearer Token محتاج شوية تفاصيل لازم تبقى فاهمها كويس، لأن أي غلطة في التعامل معاه ممكن تخلي بياناتك عرضة للإختراق.

———

📌 إزاي الـ Bearer Token بيشتغل؟

الموضوع بيتم على 3 مراحل:

1- تسجيل الدخول: لما المستخدم بيدخل بياناته الصح، السيرفر بيعمله authenticate، وبعدها بيصدر له Bearer Token (ممكن يكون مشفر زي JWT).

2- استخدام الـ Token: في كل request بعد كده، الـ Token بيتبعت مع الهيدر (Header) في الـ Authorization بالشكل ده:

Authorization: Bearer YOUR_ACCESS_TOKEN

وده معناه إن أي حد معاه الـ Token يقدر يستخدمه للوصول للـ API

3- التحقق من الـ Token: السيرفر بيستلم الـ Token ويشوف إذا كان صالح ولا لا (ممكن بمفتاح تشفير لو مشفر)، ولو كان صحيح، بيكمل تنفيذ الطلب، ولو كان منتهي أو غير صحيح، بيرد بخطأ Unauthorized (401).

———

📌 طب ليه اسمه Bearer Token؟

كلمة Bearer معناها "حامل"، وده لأن أي حد معاه الـ Token ده يقدر يستخدمه من غير ما يثبت هويته بأي حاجة تانية. بمعنى إن الـ Token لو اتسرق، اللي سرقه هيقدر يستخدمه كأنه أنت بالضبط.

———

📌 إيه المشاكل الأمنية اللي ممكن تواجهك مع Bearer Token؟
💀 الـ Token Theft: لو حد قدر يحصل على الـ Token بتاعك، يقدر يستخدمه كأنه أنت، ومفيش extra verification زي الـ refresh tokens أو OAuth flows اللي بتتأكد إن الشخص فعلًا هو المستخدم الحقيقي.

⌛️ الـ Expiration Issues: لو الـ Token مش بيخلص بسرعة، يبقى عندك مشكلة، لأن أي حد يسرقه يقدر يستخدمه لمدة طويلة، عشان كده الـ Tokens بتبقى لها expiry time، وبعدها لازم تعمل refresh.

📡 الـ Man-in-the-Middle Attacks: لو الـ Token بيتبعت من غير encryption، ممكن حد يعترضه ويستخدمه، عشان كده لازم تتأكد إن كل حاجة بتتم تحت HTTPS مش HTTP

🔄 الـ Replay Attacks: لو مكنش فيه حماية زي timestamps، ممكن حد يستخدم الـ Token المسروق أكتر من مرة.

———

📌 إزاي تأمن الـ Bearer Token؟

✅ استخدم HTTPS: عشان تمنع أي حد من التجسس على الـ Token أثناء نقله.

✅ حدد مدة صلاحية قصيرة للـ Token: خلي الـ Token يخلص بعد فترة قصيرة عشان لو اتسرق، يبقى ملوش لازمة.

✅ استخدم Refresh Tokens: عشان المستخدم يقدر يحصل على Token جديد لما الـ Token القديم يخلص.

✅ خزن الـ Token في مكان آمن: في المتصفح، بلاش تخزنه في localStorage لأنه ممكن يتسرق بسهولة، استخدم HttpOnly Cookies لو أمكن.

✅ استخدم Scopes: لو بتستخدم API، متديش الـ Token صلاحيات أكتر من المطلوب، مثلًا متديلوش صلاحية إنه يمسح داتا لو هو بس هيقرأ بيانات.

✅ ظبط CORS كويس: عشان تمنع أي مصدر مش موثوق من استخدام الـ Token.

———

الفرق بين الـ Primary Key والـ Foreign Key 💯خلينا نتخيل قواعد البيانات كأنها شيت إكسيل كبير فيه جداول (Tables)، وكل جدول...
25/04/2026

الفرق بين الـ Primary Key والـ Foreign Key 💯
خلينا نتخيل قواعد البيانات كأنها شيت إكسيل كبير فيه جداول (Tables)، وكل جدول فيه صفوف (Rows) وأعمدة (Columns)، إزاي نقدر نميّز كل صف لوحده؟ أو نربط بين جدول وجدول؟ هنا بقى بييجي دور الـ Primary Key والـ Foreign Key.

———

🔸 أولًا: الـ Primary Key – المفتاح الأساسي

ده زي رقم البطاقة أو رقم الجلوس كده، كل صف في الجدول لازم يكون عنده قيمة مميزة في العمود ده، علشان نعرف نوصله بسهولة من وسط 1000 صف تاني.

- لازم يكون Unique: يعني كل صف له رقم مختلف عن التاني.
- لا يسمح بـ null: يعني لازم تكون القيمة موجودة ومش فاضية.

🎯 مثال بسيط: لو عندك جدول اسمه Students، ممكن تضيف عمود اسمه student_id كـ Primary Key. يعني كل طالب له ID مختلف، ده بيساعدنا نميّزه ونتعامل مع بياناته بسهولة.

———

🔸 ثانيًا: الـ Foreign Key – المفتاح الأجنبي أو المفتاح الرابط

هنا بقى الموضوع له علاقة بالعلاقات (Relationships) بين الجداول.

الـ Foreign Key هو عمود موجود في جدول، بس بيرجع يشاور على الـ Primary Key بتاع جدول تاني.
يعني بيقولك: "القيمة اللي هنا، لازم تكون موجودة هناك"

✅ استخدامه الأساسي:

- بيربط الجداول ببعض.
- بيساعدنا نحافظ على "سلامة البيانات" (Data Integrity)، يعني ميبقاش فيه بيانات ملهاش معنى أو ملهاش علاقة.

🎯 مثال: لو عندنا جدول اسمه Orders، وعايزين نعرف كل أوردر اتعمل من مين، هنضيف عمود اسمه user_id كـ Foreign Key، اللي بيربط الأوردر ده بالمستخدم اللي موجود في جدول Users.

———

📌 الخلاصة في كلمتين:

- الـ Primary Key: بيميز كل صف في جدول لوحده.
- الـ Foreign Key: بيربط الصف ده بصف تاني في جدول تاني.

الاتنين مع بعض زي المفتاح والباب... واحد يفتحلك الصف، والتاني يخليك توصل لجدول تاني وتربط البيانات ببعضها. 💡

———

دردشة سريعة عن مفهوم الـ ACID في الـ Database ⚡️تخيل إنك شغال على system ضخم زي تطبيق بنكي أو موقع بيع أونلاين…في اللحظة...
17/04/2026

دردشة سريعة عن مفهوم الـ ACID في الـ Database ⚡️
تخيل إنك شغال على system ضخم زي تطبيق بنكي أو موقع بيع أونلاين…
في اللحظة اللي المستخدم بيحوّل فيها فلوس أو بيأكد عملية شراء، لازم تكون متأكد إن البيانات دي محفوظة صح، ومفيش أي احتمال يحصل فيها خلل أو تضارب، حتى لو السيرفر وقع أو الكهرباء قطعت. ⚠️

وهنا ييجي دور الـ ACID وهو ده العمود الفقري اللي بيخلي الـ Database تكون ثابتة، موثوقة، ومتوقعة السلوك في كل الحالات، سواء كان عندك عملية واحدة بسيطة أو آلاف الـ transactions في نفس الثانية.

الـ ACID بيحط أربع قواعد أساسية بتخلي أي Database system يعرف يتصرف وقت المشاكل ويحافظ على البيانات من غير ما يحصل chaos أو data corruption.

———

📌 أولًا: Atomicity

يعني لو عندك transaction بتنقل فلوس من حساب لحساب:
- تسحب 1000 جنيه من حساب A
- وتضيف 1000 لحساب B

لو أول خطوة نجحت والتانية فشلت لأي سبب (مثلًا السيرفر وقع)، المفروض الـ Database ترجع كل حاجة زي الأول، كأن العملية محصلتش.

———

📌 ثانيًا: Consistency

الـ Consistency معناها إن الـ Database تفضل دايمًا في state صحيحة ومظبوطة.
يعني كل القواعد (constraints, rules, triggers) اللي أنت محددها لازم تفضل متطبقة بعد أي عملية.

مثلًا: لو عندك rule بيقول إن الرصيد مينفعش يكون بالسالب، فـ بعد أي transaction لازم الـ DB تفضل محافظة على القاعدة دي.
لو حصل violation للقواعد دي، العملية كلها تتلغي.

———

ثالثًا: Isolation

تخيل معايا كذا transaction شغالين في نفس الوقت...
واحد بيضيف بيانات، والتاني بيعدّل، والتالت بيقرأ.
لو مفيش Isolation، الدنيا هتبقى فوضى، وكل transaction هيشوف الـ data وهي لسه بتتغير!

لكن مع وجود الـ Isolation، كل transaction بتتعامل كأنها العملية الوحيدة اللي بتتنفذ.
يعني حتى لو كذا transaction شغالين في نفس اللحظة، النتائج اللي بيشوفوها مضمونة ومفيهاش تداخل أو corruption.

وطبعًا فيه مستويات مختلفة للـ Isolation (زي Read Uncommitted, Read Committed, Repeatable Read, Serializable)، وكل واحدة لها trade-offs بين الأداء والدقة.

———

رابعًا: Durability

الـ Durability معناها إن بمجرد ما الـ Database تقولك "تمت العملية بنجاح"، يبقى خلاص الـ data دي محفوظة ومش هتضيع حتى لو السيرفر وقع أو الكهرباء قطعت.

إزاي؟
لأن الـ DB بتكتب التغييرات على الـ disk (أو الـ log files) قبل ما تقولك العملية نجحت، علشان تقدر تسترجعها لو حصل أي failure.

———

الفرق بين Low-level و High-level Languages 🧠تعال نتكلم عن حاجة أساسية في عالم البرمجة، وهي نوعين من اللغات اللي بنكتب بي...
13/04/2026

الفرق بين Low-level و High-level Languages 🧠
تعال نتكلم عن حاجة أساسية في عالم البرمجة، وهي نوعين من اللغات اللي بنكتب بيهم الكود:

Low-level Languages & High-level Languages

———

🔧 أولًا: الـ Low-level Languages

دي اللغات اللي بتتكلم تقريبًا بلغة الكمبيوتر نفسه، قريبة جدًا من الـ Hardware.
يعني لما تكتب كود بلغة Low-level، أنت بتتعامل مع الحاجات اللي داخل الجهاز نفسه زي الرامات، المعالج، وهكذا.

📌 أمثلة عليها؟

- Assembly Language
- Machine Code

✅ الميزة؟

- سريعة جدًا لأنها بتشتغل على مستوى قريب من الجهاز.
- بتوفر لك تحكم عالي جدًا في الموارد (زي الرامات والمعالج).

❌ العيب؟

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

———

🎩 ثانيًا: الـ High-level Languages

دي بقى اللغات اللي احنا بنتعامل بها في الغالب.
اللغات دي أقرب للبني آدم من الآلة، يعني تقدر تكتب الكود بلغة مفهومة شبه الإنجليزي، وتسيب للمترجم (compiler أو interpreter) مهمة تحويل الكلام ده للغة الكمبيوتر.

📌 أمثلة عليها؟

- Python
- JavaScript
- Java
- Ruby
- Go

✅ الميزة؟

- سهلة في التعلم والقراءة والكتابة.
- أسرع في تطوير البرامج.
- بتوفر أدوات ومكتبات بتسهل عليك الشغل جدًا.

❌ العيب؟

- أبطأ شوية من Low-level لأن في طبقة وسيطة (المترجم أو الـ runtime).
- مش دايمًا بتديك تحكم كامل في الـ Hardware.

———

مفهوم الـ CDN 🌍كلمة CDN هي اختصار لـ Content Delivery Network، يعني "شبكة توصيل المحتوى"، ودي واحدة من الحاجات اللي بتسر...
11/04/2026

مفهوم الـ CDN 🌍
كلمة CDN هي اختصار لـ Content Delivery Network، يعني "شبكة توصيل المحتوى"، ودي واحدة من الحاجات اللي بتسرّع مواقع الويب بشكل خرافي وبتخلي تجربة المستخدم أحسن بكتير، وخليني أشرحلك إزاي وليه 👇

———

🎯 المشكلة الأساسية:

تخيل إنك عامل موقع ومتخزن على سيرفر موجود في أمريكا، وجالك زائر من مصر... كل ما يفتح الموقع، جهازه بيبعَت طلب (request) للسيرفر اللي في أمريكا، والسيرفر بيرد عليه بالملفات (صور، CSS، JavaScript...)

المشكلة إن المسافة بعيدة، وده بيخلّي وقت تحميل الصفحة أطول 😩

———

💡 الحل؟ هنا ييجي دور الـ CDN

الـ CDN عبارة عن شبكة كبيرة جدًا من السيرفرات (بنسمّيهم Edge Servers) منتشرين في كل مكان في العالم — في مصر، السعودية، أوروبا، أمريكا، آسيا... إلخ.

لما تستخدم CDN، هو بيخزن نسخة من الملفات الثابتة بتاعة موقعك (زي الصور، ملفات CSS و JS، الخطوط، الفيديوهات...) على كل السيرفرات دي.

يعني لما حد من مصر يفتح موقعك، بدل ما يتواصل مع السيرفر الأساسي في أمريكا، هيتواصل مع أقرب سيرفر ليه جغرافيًا (مثلاً في القاهرة أو دبي)، وده بيخلي الموقع يفتح بسرعة🚀

———

📦 الـ CDN بيخزن إيه بالظبط؟

الـ CDN بيخزن أي حاجة Static، يعني ملفات مش بتتغير كتير زي:

- صور (JPEG، PNG، WebP...)
- ملفات CSS و JavaScript
- خطوط - Fonts
- فيديوهات
- وحتّى ملفات HTML لو الموقع Static

———

🔐 طب هل الـ CDN بيأثر على الأمان؟

نعم، بيساعد في الأمان عن طريق:

- بيقدر يمنع الهجمات زي DDoS لأن الطلبات بتتوزع على سيرفرات كتير
- بيخفي الـ IP الحقيقي للسيرفر الأساسي
- بيقلل التحميل على الباك إند بتاعك

———

📌 طب إيه الفائدة ليا كمبرمج؟

لو شغال على موقع أو Web App:

- استخدام CDN هيحسّن سرعة الموقع

- يقلل الـ (Bandwidth) المستهلك من السيرفر الرئيسي

- بيحسّن ترتيب الموقع في جوجل (SEO)

- ويخلّي الزوار مبسوطين ومش هيمشوا من أول ثانية 😅

———

🔥 أمثلة على CDN مشهورة:

- Cloudflare
- Akamai
- Amazon CloudFront
- Fastly
- Google CDN

ولو شغال في React أو Next.js، هتلاقي أدوات زي Vercel و Netlify بيستخدموا CDN بشكل تلقائي في الخلفية.

———

مفهوم الـ API Gateway ⚡️لو بتشتغل على مشروع كبير أو على بيئة Microservices معقدة، أكيد هتحتاج تتعامل مع الـ API Gateway،...
01/12/2025

مفهوم الـ API Gateway ⚡️
لو بتشتغل على مشروع كبير أو على بيئة Microservices معقدة، أكيد هتحتاج تتعامل مع الـ API Gateway، لأنه ببساطة بيعمل كـ "بوابة" أو وسيط بين المستخدمين (أو الـ Clients) وبين مجموعة الخدمات اللي بيقدمها التطبيق.

———

📌 يعني إيه API Gateway؟

خلينا نقول إنك بتشتغل على مشروع كبير زي موقع بيع منتجات، وفيه خدمات كتير مستقلة، زي خدمة للمشتريات، خدمة للدفع، خدمة للمخزون، وخدمة للملف الشخصي.

الـ API Gateway هو الجزء اللي بيستلم الطلبات من الـ Clients (زي تطبيق الموبايل أو الويب) ويوجهها للـ Microservice الصحيحة.

يعني بدل ما التطبيق يبعت طلب مباشر لكل خدمة ويضيع وقت في فهم مسارات كتير، الـ API Gateway بيستقبل الطلب وينفذه ويبعت البيانات للي عاوزها.

———

📌 وظائف الـ API Gateway؟

✅ توجيه الطلبات: لما ييجي طلب من العميل، الـ API Gateway بيختار الخدمة المناسبة اللي هتقدر تستجيب للطلب ده ويبعته لها.

✅ توحيد البيانات: لو عندك خدمات مختلفة والعميل محتاج بيانات من أكتر من خدمة، الـ API Gateway بيجمع البيانات دي كلها ويرجعها للعميل في رد واحد.

✅ التحكم في الأمان: بيسمح لك تعمل قواعد الأمان زي التحقق من الهويات (Authentication) والترخيص (Authorization)، عشان تضمن إن الطلبات اللي جايه كلها من مصادر موثوق فيها.

✅ التحكم في المعدل (Rate Limiting): تقدر من خلاله تحدد عدد الطلبات اللي ممكن يجريها العميل في وقت معين، بحيث تحمي خدماتك من أي ضغط غير طبيعي أو هجمات زي DDoS.

✅ التوجيه الديناميكي (Dynamic Routing): لو عندك إصدارات مختلفة من نفس الخدمة، تقدر تحدد أي إصدار يستخدمه الـ Client أو تغير التوجيه حسب الوقت أو حسب الـ Load.

✅ التحسين والأداء (Caching): ممكن كمان يقوم بعمل Cache للطلبات اللي بيتكرر استخدامها، وده بيساعد في تخفيف الحمل على الخدمات.

———

📌 ليه مهم نستخدم الـ API Gateway؟

لما بيكون عندك تطبيق بيدير أكتر من خدمة، التعامل المباشر بين العميل وكل خدمة على حدة ممكن يبقى معقد ويتطلب وقت طويل، وده بيأثر على أداء التطبيق.

هنا بقى بييجي دور الـ API Gateway اللي بيسهل التعامل ويوفر طريقة منظمة وبسيطة للتفاعل مع الخدمات.

كمان، لو محتاج تطبق سياسات الأمان بشكل موحد، أو محتاج تعمل Analytics للطلبات اللي بتيجي، يبقى الـ API Gateway هو المكان الصح اللي تعمل فيه كل ده، لأنه نقطة التحكم الرئيسية اللي بتشوف وتتحكم في كل الطلبات اللي جاية ورايحة بين العميل والخدمات.

———

فيه أدوات كتير تقدر تستخدمها كـ API Gateway، زي:

⚙️ Kong
⚙️ NGINX
⚙️ AWS API Gateway
⚙️ Zuul

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

———

وفقكم الله لكل خير 🌿

Address

Cairo

Website

https://t.me/the_developer_guide

Alerts

Be the first to know and let us send you an email when DevGuide posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Share