local مقابل deployed
أنت على وشك أن تبدأ تشغيل كود حقيقي على جهازك. قبل أن تفعل، كلمة أخيرة: أين يعمل الكود لا يقلّ أهمية عن ما الذي تشغّله.
الكود local حين يعمل على حاسوبك أنت — أنت وحدك تستطيع رؤيته، وكسره لا يؤثّر في أحد سواك. والكود deployed حين يعمل على server في مكان ما، يصل إليه أشخاص آخرون، بمستخدمين حقيقيين و(عادةً) بيانات حقيقية.
الكود نفسه يمكن أن يكون الاثنين في لحظات مختلفة. الفرق هو في المكان الذي يعيش فيه ومن يستطيع الوصول إليه.
local — يعمل على حاسوبك المحمول
حين تستنسخ repo، وتثبّت الـ packages الخاصة به، وتشغّل الـ dev command، يبدأ المشروع في العمل على جهازك.
- يُقدَّم الـ frontend على عنوان مثل
http://localhost:3000(من الدرس 3.4 — تذكّرlocalhost). - يعمل الـ backend (إن وُجد) في process منفصل، غالبًا على
localhost:8000أو ما يشبهه. - الـ database عادةً نسخة local، ربما ببيانات وهمية.
- متصفّحك وحده، على هذا الجهاز، يستطيع رؤية أيٍّ من ذلك.
هذه هي الـ sandbox الآمنة. يمكنك كسرها، وإعادة تشغيلها، وحذفها، وتجربة أشياء سخيفة. لا أحد سواك يتأثّر. الـ local هو حيث يحدث معظم العمل — ستقضي المستويات العديدة التالية تعيش هنا.
deployed — يعمل في مكان حقيقي
حين يصبح الكود جاهزًا لاستخدام أشخاص فعليين، يجري deploy له — نسخه إلى server على الإنترنت، وتشغيله هناك، وجعله قابلًا للوصول عبر domain حقيقي مثل acme.com.
- الـ frontend يمكن الوصول إليه على الـ URL الحقيقي.
- يعمل الـ backend على servers مخصّصة، مُوسَّعة للتعامل مع كثير من المستخدمين في آن واحد.
- الـ database هي القاعدة الحقيقية، ببيانات مستخدمين حقيقية. حسابات عملاء. معلومات دفع. المخاطر مختلفة.
- أيّ شخص في العالم يستطيع الوصول إليها.
أنت لا تعمل deploy للأشياء باستخفاف. للأخطاء هنا عواقب.
النقطة التي تربك الناس عادةً
حين تكون جديدًا، ستخلط أحيانًا بين الاثنين وتظنّ أنك تعبث بنسختك الـ local بينما أنت في الحقيقة موجَّه نحو الشيء الحقيقي الـ deployed. أو العكس.
أهمّ عادة على الإطلاق في البرمجيات هي معرفة أيّ environment أنت فيه قبل أن تفعل أيّ شيء لا رجعة فيه.
انظر إلى الـ URL. اقرأ ما يقوله الـ terminal حين يبدأ الـ dev server. تحقّق من الـ database التي هُيِّئ كودك للتحدث معها. يستطيع Claude مساعدتك في التحقق من هذا — وينبغي لك أن تطلب منه ذلك، خصوصًا في العشرات الأولى من المرات.
الـ environments — الكلمة التي تستخدمها الفِرَق
تشغّل الفِرَق برمجياتها دائمًا تقريبًا في عدة environments بين الـ local والـ deployed:
- local (أو dev) — حاسوبك المحمول. لك وحدك. قابل للاستهلاك.
- staging (ويُسمّى أحيانًا preview أو QA) — نسخة deployed تبدو كالـ production لكنها تستخدم بيانات وهمية. لاختبار التغييرات قبل وصولها إلى المستخدمين الحقيقيين.
- production (يُختصر غالبًا إلى prod) — النسخة الحقيقية. مستخدمون حقيقيون، بيانات حقيقية. النسخة التي تؤلم فيها الأخطاء.
ينتقل التغيير عادةً: local ← staging ← production. وكل خطوة عملية deploy.
حين يقول Claude (أو زميل في الفريق) «تلك مشكلة staging، لا prod» أو «لا تشغّل ذلك على الـ prod»، صرت الآن تملك الكلمات لما يعنونه.
لماذا هذا هو الخِتام
تقريبًا كل عادة سيبنيها بقية هذا الكورس تعود إلى هذا: اعرف أين يعمل كودك. الـ permission prompts (المستوى السادس)، والـ plan mode (المستوى السابع)، والـ commits والـ PRs (المستوى الثامن) — كلها موجودة لتبطّئك قبل أن يتحوّل شيء local عَرَضًا إلى شيء deployed.
الـ local هو الورشة. والـ deployed هو صالة العرض. أنت لا تصقل طاولة والزبائن واقفون عليها.
ما التالي
تلك هي الجولة. صرت تملك المصطلحات الآن — frontend، وbackend، وclient، وserver، وURL، وAPI، وdatabase، وrepo، وlanguage، وframework، وpackage، وlocal، وdeployed. كل درس لاحق في هذا الكورس يفترض معرفتك بتلك الكلمات.
في المستوى الرابع تُرفَع العجلات المساعدة. توجّه Claude نحو codebase حقيقية وتبدأ في طرح أسئلة حقيقية عنها. وستسعد بأنك أنجزت هذا المستوى أولًا.