frontend وbackend
تفتح إنستغرام. ترى خلاصة. تمرّر، وتنقر نقرتين على صورة، وتترك تعليقًا. يبدو الأمر وكأنه شيء واحد — تطبيق واحد يؤدي مهمة واحدة.
لكنه ليس كذلك. إنه شيئان.
الـ frontend هو الجزء من البرمجيات الذي تراه وتتفاعل معه. أما الـ backend فهو الجزء الذي يعيش في مكان آخر، ويحتفظ بالبيانات، ويقوم بالعمل الثقيل.
التطبيق الذي على هاتفك هو الـ frontend. وحين تنقر نقرتين على تلك الصورة، تنطلق رسالة صغيرة إلى حواسيب Meta — تلك هي الـ backend — تقول «أعجب هذا المستخدم بهذا المنشور.» فيدوّنها الـ backend. وفي المرة التالية التي يحمّل فيها أيّ شخص ذلك المنشور، يخبره الـ backend: «٣١٨,٤٢ إعجابًا.»
لماذا هو منقسم
ثلاثة أسباب تجعل هذا الانقسام يظهر في كل مكان تقريبًا:
- الـ frontend يجب أن يبدو جميلًا. الأزرار، والتخطيطات، والرسوم المتحركة، والوضع الداكن. وهو يعمل على أيّ جهاز يملكه المستخدم.
- الـ backend يجب أن يكون مصدر الحقيقة. الإعجابات، والرسائل، ورصيد حسابك — هذه لا يمكن أن تعيش على هاتفك وحده، لأنه عندها لن يراها هاتف آخر.
- مهارات مختلفة. تصميم شاشة جميلة مهمة تختلف عن تصميم نظام يتعامل مع عشرة ملايين إعجاب في الثانية. وغالبًا ما يؤدّيهما أشخاص مختلفون.
لذا فإن معظم الفِرَق تبني برنامجين وتدعهما يتحدثان أحدهما إلى الآخر.
النقطة التي تربك الناس عادةً
الـ frontend والـ backend ليسا مكانين ماديين. إنهما دوران.
قد يعيش كود الـ frontend في الـ repo نفسه مع كود الـ backend. وغالبًا ما يكتبهما أشخاص يجلسون في الغرفة ذاتها. الخط الفاصل بينهما ليس «منتجين مختلفين» — بل «مهمتين مختلفتين تؤديهما البرمجيات».
أوضح إشارة: الـ frontend يعمل على جهاز المستخدم. الـ backend يعمل في مكان آخر. حين تغلق إنستغرام، يختفي الـ frontend. أما الـ backend فيظل يعمل، محتفظًا بمنشورات الجميع، منتظرًا الهاتف التالي ليسأل.
«full-stack» — الكلمة التي ستسمعها
ستسمع المطوّرين يصفون أنفسهم بأنهم مطوّرو frontend، أو backend، أو full-stack.
- مطوّر frontend — يعمل على ما يراه المستخدم.
- مطوّر backend — يعمل على الجزء الذي لا يراه المستخدم.
- مطوّر full-stack — يعمل على كليهما. ليس بطلًا خارقًا، بل مجرد شخص يرتاح في أيٍّ من النصفين.
حين يخبرك Claude بأن «هذا تطبيق full-stack»، فهذا يعني أن الـ codebase التي تنظر إليها تحتوي على النصفين معًا.
ما التالي
الآن نسمّي المحادثة بين هذين النصفين. هناك كلمة للبرنامج الذي يسأل (الـ frontend عادةً) وكلمة للبرنامج الذي يجيب (الـ backend عادةً). يُسمّيان client وserver.