ليه لازم كمطور Backend تتعلم أساسيات الـ DevOps؟
بتخلص الكود بتاعك، ترفعه على جيت هاب (GitHub)، وفجأة بتصدم بواقع إن "الكود شغال عندي على الجهاز" (It works on my machine) لكن مش شغال على السيرفر! ده الوجع الحقيقي اللي بيواجهه أي مطور باك إند (Backend Developer). الوقت اللي بتضيعه في تظبيط البيئة (Environment) أو حل مشاكل النشر (Deployment) مش بس بيعطلك، ده بيقلل من قيمتك في سوق العمل.
الشركات النهاردة مش بتدور على مبرمج بيكتب كود وبس، هي بتدور على "مطور متكامل" يقدر يغطي جزء من عمليات التطوير والتشغيل أو ما يعرف بـ (DevOps). في المقال ده، هنتكلم عن 3 مهارات أساسية لازم تتقنهم عشان تنقل كارييرك في حتة تانية.
Table of contents [Show]
1. الحاويات أو الدوكر (Docker): لغة توحيد البيئة
تخيل إنك بتنقل أثاث بيت في كراتين، لو الكرتونة دي جوه منها كل حاجة السيرفر محتاجها (إصدار لغة البرمجة، المكتبات، وقواعد البيانات)، يبقى هتشتغل في أي مكان. ده بالظبط اللي بيعمله الدوكر (Docker).
بدل ما تقضي ساعات بتثبت إضافات على السيرفر، بتعمل حاجة اسمها Dockerfile. شوف المثال ده:
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "app.js"]
بمجرد ما تبني الصورة (Image) دي، تقدر تشغلها على أي سيرفر عليه دوكر بنفس النتيجة. دي أول خطوة عشان تنسى جملة "كان شغال عندي".
2. خادم الويب (Nginx): بوابة الدخول لموقعك
بعد ما تشغل الكود بتاعك، مين هيستقبل طلبات المستخدمين؟ هنا بيجي دور إن جينيكس (Nginx). هو مش مجرد خادم ويب (Web Server)، ده بيقوم بدور "ضابط المرور".
أهم وظايفه اللي لازم كمبرمج باك إند تكون عارفها:
- الوكيل العكسي (Reverse Proxy): بياخد الطلبات من الإنترنت ويوجهها لتطبيقك اللي شغال جوه حاوية.
- توازن الأحمال (Load Balancing): بيوزع الضغط على أكتر من نسخة من تطبيقك عشان السيرفر ما يقعش.
- الأمان (SSL/TLS): بيخلي موقعك يفتح بـ HTTPS ويوفر طبقة حماية إضافية.
3. خطوط الإنتاج البرمجية (CI/CD): الأتمتة هي الحل
تخيل إن كل ما تغير سطر كود، تضطر ترفع الملفات يدوياً وتعمل ريستارت للسيرفر! ده سيناريو كابوسي. الـ CI/CD (Continuous Integration / Continuous Deployment) هو اللي بيخلي العملية دي أوتوماتيكية بالكامل.
بمجرد ما تعمل git push، خط الإنتاج بيشتغل لوحده:
- يعمل اختبارات (Testing) للكود.
- يبني الحاوية (Build Image).
- ينشرها على السيرفر (Deploy).
أشهر الأدوات اللي لازم تتعلمها في المجال ده هي (GitHub Actions) أو (GitLab CI)، لأنها بتوفر عليك ساعات من الشغل المتكرر.
نصيحة من أخ ليك
ما تحاولش تتعلم كل حاجة في يوم واحد. ابدأ بأنك تحول مشروع صغير ليك لـ Docker Container، وبعدين جرب تنشره على سيرفر بسيط وتستخدم Nginx كـ Reverse Proxy. الـ DevOps مش سحر، هو عقلية "أتمتة" (Automation) بتبنيها مع الوقت.
السوق النهاردة بيحترم جداً المطور اللي فاهم "إزاي كوده بيعيش على السيرفر"، وده هيخليك المرشح الأول دايماً في أي مقابلة عمل.