لو فاكر إن DevOps يعني تتعلم أدوات وخلاص، فانت شايف نص الصورة.
الـ DevOps معناه إن الكود يوصل من جهاز المبرمج للناس بسرعة، ومن غير ما حاجة تقع. والأدوات دي وسيلة للهدف ده، مش الهدف نفسه. والترتيب: Linux ومعاه أساسيات الشبكات، وبعدها لغة زي Python، وبعدها Docker، وبعدين CI/CD، وبعدها الـ Cloud زي AWS، وفي الآخر Terraform. وقبلهم كلهم شرط واحد، مكتوب تحت.
علّم على كل حاجة تخلصها وانت ماشي، علشان تعرف انت فين، وترجع تكمّل من نفس المكان.
الشرط قبل الخطة
- متدخلش DevOps قبل ما تكون بنيت مشروع ورفعته بنفسك مرة على الأقل. ده رأيي، علشان تفهم انت بتوصّل إيه.
- يعني: تطبيق صغير كتبته بإيدك (موقع أو API)، وعليه Git و GitHub، ومرفوع على الإنترنت وليه لينك شغال.
- لو لسه: ابدأ بـ خطة Frontend أو أي مسار برمجة، وارجع هنا بالمشروع ده. هتستخدمه في الخطة كلها.
قبل ما تبدأ
- ذاكر كل يوم، حتى لو شوية. المدد هنا محسوبة على ساعتين في اليوم. لو وقتك أقل هتاخد وقت أطول، وده عادي.
- المدد تقريبية. في ناس هتخلص أسرع وناس أبطأ. عدّي المرحلة لما تبقى جاهز فعلًا، مش لما الوقت يخلص.
- كل مرحلة فيها مشروع. متعديش للمرحلة اللي بعدها قبل ما تعمله بإيدك.
المرحلة 1 من 7
Linuxلازم تبقى مرتاح فيه
المدة: 3 لـ 4 أسابيع
ابدأ بـ Linux، وده نظام تشغيل زي Windows، ولازم تبقى مرتاح فيه. سيرفرات كتير جدًا شغالة عليه، وهتتعامل معاه من الـ terminal في الغالب، من غير شاشة ولا ماوس.
متحفظش أوامر. اعمل حاجة حقيقية على سيرفر، وكل ما تقف، دوّر وافهم.
هتتعلم إيه
0 من 12اعمل بإيدك
سيرفر عليه موقع. على VM فيها Ubuntu Server: ادخل بـ SSH بالـ key، وسطّب Nginx، وحط عليه صفحة بسيطة، واكتب Bash script بيعمل backup لملفات الموقع كل يوم بـ cron.
تعدّي للمرحلة اللي بعدها لما
- بتشتغل على سيرفر من الـ terminal بس، من غير ما تتوه
- لما service تقع، بتعرف تشوف الـ logs وتلاقي السبب
- كتبت script بيعمل حاجة كنت بتعملها بإيدك
المرحلة 2 من 7
أساسيات الشبكاتالطلب بيوصل للسيرفر إزاي
المدة: أسبوعين لـ 3 أسابيع
ومع Linux أساسيات الشبكات، يعني الطلب بيوصل للسيرفر إزاي.
كتير من المشاكل اللي هتقابلها في الشغل هتبدأ بجملة: «الموقع مش بيفتح». والشبكات هي اللي بتعرّفك المشكلة فين: في الـ DNS؟ ولا الـ firewall؟ ولا التطبيق نفسه؟
هتتعلم إيه
0 من 10اعمل بإيدك
Reverse proxy على السيرفر بتاعك. على نفس الـ VM: شغّل تطبيق صغير على port 3000، وحط Nginx قدامه كـ reverse proxy على port 80، وافتحه من جهازك بالـ IP بتاع الـ VM. وتتبّع الطلب بـ curl -v، واكتب كل خطوة بيعدي بيها.
تعدّي للمرحلة اللي بعدها لما
- تقدر تشرح الطلب بيعدي بإيه من المتصفح لحد التطبيق
- بتقرا ناتج
curl -vوتفهم كل سطر فيه - بتفرّق بين مشكلة DNS ومشكلة firewall ومشكلة في التطبيق نفسه
المرحلة 3 من 7
Pythonاللي بيتكرر يتعمل لوحده
المدة: 4 لـ 6 أسابيع
بعدها لغة زي Python، علشان تخلي الحاجات اللي بتتكرر تتعمل لوحدها. لو بتعمل نفس الخطوات كل يوم بإيدك، يبقى مكانها script.
مش محتاج هنا تبقى مبرمج Python محترف. محتاج تكتب scripts نضيفة، تقرا ملفات، وتكلم APIs، وتشغّل أوامر.
هتتعلم إيه
0 من 9اعمل بإيدك
Script بيراقب السيرفر. script بـ Python بيشيك كل كام دقيقة إن الموقع بيرد بـ 200، وإن مساحة الهارد مش قربت تخلص. ولو فيه مشكلة، يكتبها في log ويبعتلك رسالة على Telegram أو Discord مثلًا. وشغّله بـ cron.
تعدّي للمرحلة اللي بعدها لما
- بتكتب script يحل مشكلة حقيقية من غير ما تنسخ من حد
- بتقرا ملف JSON أو YAML وتعدّل فيه من Python
- الـ script بتاعك بيقول بوضوح إيه اللي فشل، بدل ما يقع وخلاص
المرحلة 4 من 7
Dockerالتطبيق في علبة
المدة: 3 لـ 4 أسابيع
Docker بيحط التطبيق في علبة، فيها كل اللي محتاجه علشان يشتغل: نسخة اللغة، والمكتبات، والإعدادات. فالعلبة دي بتشتغل نفس الشغل على جهازك، وعلى جهاز زميلك، وعلى السيرفر.
وهنا هتحس بقيمة الشرط اللي فوق: انت بتحط مشروعك انت في علبة، فعارف هو محتاج إيه علشان يشتغل.
هتتعلم إيه
0 من 11اعمل بإيدك
مشروعك في علب. خد المشروع اللي بنيته ورفعته قبل الخطة، واكتبله Dockerfile، واعمل docker-compose.yml يشغّله هو والـ database بتاعته بأمر واحد. والمقياس: حد تاني يعمل clone ويكتب docker compose up، والمشروع يشتغل عنده من غير ما يسطّب حاجة غير Docker.
تعدّي للمرحلة اللي بعدها لما
- بتكتب
Dockerfileمن الصفر لأي تطبيق بسيط - مشروعك بيشتغل على أي جهاز عليه Docker بأمر واحد
- لما container يقع، بتجيب الـ logs وتعرف السبب
المرحلة 5 من 7
CI/CDالكود ينزل للسيرفر لوحده
المدة: أسبوعين لـ 3 أسابيع
الـ CI/CD يعني كل مرة حد يرفع كود، يتعمله اختبار، وينزل للسيرفر لوحده. من غير ما حد يدخل السيرفر وينسخ ملفات بإيده.
ودي اللحظة اللي DevOps بيبان فيها على حقيقته: Linux و Docker والـ scripts اللي اتعلمتهم بيشتغلوا مع بعض علشان الكود يوصل للناس بسرعة ومن غير ما حاجة تقع.
هتتعلم إيه
0 من 9اعمل بإيدك
Pipeline لمشروعك. على GitHub Actions: كل push بيشغّل الـ tests، ولو عدّت يبني الـ Docker image ويرفعها، ولو الـ push على main ينزل على السيرفر لوحده. وابعت كود فيه test بايظ عن قصد، واتأكد إن الـ pipeline وقف ومنزلش حاجة.
تعدّي للمرحلة اللي بعدها لما
- مشروعك بيتعمله test وينزل لوحده مع كل push
- مفيش ولا باسورد أو key مكتوب في الكود أو في الـ repository
- لو الـ pipeline فشل، بتقرا الـ log وتعرف السبب
المرحلة 6 من 7
Cloud (AWS)سيرفرات بتأجرها
المدة: 4 لـ 6 أسابيع
الـ Cloud زي AWS يعني سيرفرات بتأجرها بدل ما تشتريها. بتطلب سيرفر، أو database، أو مساحة تخزين، وتبقى جاهزة في دقايق، وتدفع على قد ما بتستخدم.
ابدأ بـ provider واحد بس. AWS مثال، ونفس الأفكار (سيرفرات، وشبكات، وصلاحيات) موجودة في Azure و Google Cloud بأسامي تانية. وحساب AWS محتاج كارت، فاعمل Budget alert قبل أي حاجة، علشان متتفاجئش بفاتورة.
هتتعلم إيه
0 من 11اعمل بإيدك
مشروعك على AWS. انشر مشروعك على EC2 جوه VPC انت عاملها، والـ database على RDS، والملفات على S3، وخلّي الـ pipeline من المرحلة اللي فاتت ينزل عليه. وبعد ما تخلص وتصوّر كل حاجة، امسح كل الـ resources.
تعدّي للمرحلة اللي بعدها لما
- بتعمل سيرفر وتأمّنه وتنشر عليه من غير ما تبص على شرح
- عارف كل resource عملتها بتتكلف إيه، وبتمسحها لما تخلص
- مفيش حاجة عندك شغالة بالـ root account
المرحلة 7 من 7
Terraformالسيرفرات في ملف
المدة: أسبوعين لـ 3 أسابيع
وفي الآخر Terraform، ودي بتكتب فيها السيرفرات اللي عايزها في ملف، وهي تتجهز لوحدها.
يعني بدل ما تفتكر دوست على إيه في الـ console من 3 شهور، كل حاجة مكتوبة، ومتسجلة على Git، وتقدر تعملها تاني في دقايق. وده نفس اللي عملته مع الكود في CI/CD، بس للسيرفرات.
هتتعلم إيه
0 من 8اعمل بإيدك
كل اللي عملته في AWS، في ملفات. اكتب بـ Terraform الـ VPC والـ EC2 والـ Security Groups والـ S3 اللي عملتهم بإيدك في المرحلة اللي فاتت. والمقياس: terraform destroy يمسح كل حاجة، و terraform apply يرجّعها زي ما كانت في دقايق.
تعدّي للمرحلة اللي بعدها لما
- عملت infrastructure كاملة من ملفات بس، من غير ما تدوس في الـ console
- بتقرا
terraform planوتعرف هيتغيّر إيه قبل ما توافق - مفيش أي secret في ملفات Terraform أو في الـ repository
سلم المشاريع
المشاريع هي اللي بتعلمك بجد، وهي اللي هتوريها لأي حد عايز يشغّلك. دول 5 مشاريع، كل واحد أصعب شوية من اللي قبله، وأغلبهم على نفس المشروع اللي بنيته قبل الخطة. والخامس هو اللي بيقفل الخطة.
سيرفر عليه موقع
Linux و Nginx و Bash
سيرفر بتدخله بالـ SSH، عليه موقع، و backup بيتعمل لوحده كل يوم.
Script بيراقب السيرفر
Python و cron
أول أتمتة بجد: السيرفر بيبلّغك لو فيه مشكلة قبل ما حد يشتكي.
مشروعك في علب
Docker و Docker Compose
مشروعك بيشتغل على أي جهاز بأمر واحد.
Pipeline لمشروعك
GitHub Actions و Docker
كل push بيتختبر وينزل لوحده، والكود البايظ بيقف قبل ما يوصل للناس.
مشروع الـ portfolio: من الـ push للناس
Terraform و AWS و GitHub Actions
نفس المشروع، بس كل حاجة بقت أوتوماتيك: Terraform بيجهز الـ infrastructure، و GitHub Actions بيختبر ويبني وينزّل، و CloudWatch alarm بيبلّغك لو الموقع وقع. ارسم الـ pipeline في الـ README. خد فيه من 3 لـ 5 أسابيع، وصوّر فيديو قصير وهو شغال، وامسح الـ resources علشان متدفعش على الفاضي، وحط لينك الكود والفيديو في الـ CV بتاعك.
مصادر مجانية
كل دول مجانيين أو فيهم جزء مجاني كبير. متجمعش مصادر كتير: اختار مصدر أساسي واحد لكل مرحلة وكمّل بيه، والباقي ارجعله لما تقف في حتة.
Linux
- Ubuntu: The Linux command line for beginners (بيفتح في تاب جديدة)شرح رسمي قصير لأول خطواتك في الـ terminal.
- The Linux Command Line (بيفتح في تاب جديدة)كتاب مجاني عن الـ terminal والـ Bash scripting من الصفر.
- OverTheWire: Bandit (بيفتح في تاب جديدة)لعبة بتتمرن فيها على الـ terminal مستوى ورا مستوى.
- WSL (بيفتح في تاب جديدة)الشرح الرسمي لتسطيب Linux جوه Windows.
الشبكات
- Cloudflare Learning Center (بيفتح في تاب جديدة)مقالات قصيرة وواضحة عن الـ DNS والـ HTTP والـ TLS والـ CDN.
- Professor Messer: Network+ (بيفتح في تاب جديدة)فيديوهات مجانية بتغطي أساسيات الشبكات بالترتيب. خد منها اللي محتاجه بس.
- Nginx: Beginner's Guide (بيفتح في تاب جديدة)الشرح الرسمي لأول إعدادات Nginx، ومنها الـ proxy.
Python
- Automate the Boring Stuff with Python (بيفتح في تاب جديدة)كتاب Python مجاني أونلاين، كله عن أتمتة الحاجات اللي بتتكرر.
- The Python Tutorial (بيفتح في تاب جديدة)الشرح الرسمي للغة، ارجعله كل ما تقف.
- Elzero Web School (بيفتح في تاب جديدة)قناة يوتيوب بالعربي، وفيها كورس Python من الصفر.
Docker و CI/CD
- Docker: Get started (بيفتح في تاب جديدة)الشرح الرسمي لـ Docker من الصفر، لحد Docker Compose.
- GitHub Actions (بيفتح في تاب جديدة)الشرح الرسمي لـ GitHub Actions، بأمثلة لكل حاجة.
- Pro Git (بيفتح في تاب جديدة)الكتاب الرسمي لـ Git، ببلاش.
Cloud و Terraform
- AWS Skill Builder (بيفتح في تاب جديدة)كورسات AWS الرسمية، وفيها كورسات أساسيات مجانية.
- AWS Budgets (بيفتح في تاب جديدة)إزاي تعمل Budget alert، اعمله قبل أي حاجة.
- Terraform: Get Started with AWS (بيفتح في تاب جديدة)الشرح الرسمي لـ Terraform خطوة بخطوة على AWS.
تمارين
- DevOps Exercises (بيفتح في تاب جديدة)أسئلة وتمارين كتير في Linux والشبكات و Docker و Terraform وغيرهم، تختبر بيها نفسك.
أكتر الأخطاء اللي بشوفها
- إنك تفتكر إن DevOps يعني تتعلم أدوات وخلاص. كده انت شايف نص الصورة. الأدوات بتتغير، والهدف ثابت: الكود يوصل من جهاز المبرمج للناس بسرعة ومن غير ما حاجة تقع. قبل أي أداة، اسأل: دي بتقرّبني من الهدف ده إزاي؟
- إنك تدخل DevOps قبل ما تبني مشروع وترفعه بنفسك. هتبقى بتوصّل حاجة متعرفهاش. ابني مشروع صغير، وارفعه بإيدك مرة، وساعتها كل مرحلة هنا هتبان منطقية.
- إنك تجري على Kubernetes قبل ما تفهم Docker و Linux كويس. Kubernetes بيدير containers كتير على سيرفرات كتير. لو الـ container الواحد والسيرفر الواحد مش واضحين عندك، هتتوه.
- إنك تنسى الـ resources شغالة على الـ Cloud. فاتورة كبيرة على حاجة نسيتها مفتوحة. اعمل Budget alert من أول يوم، وامسح كل حاجة بعد ما تخلص.
- إنك تحط باسورد أو key في الكود. حتى لو الـ repository private. حط الـ secrets في مكانها من أول يوم، علشان العادة دي بتفضل معاك.
بعد كده
لما تخلص الخطة دي وتعمل مشروع الـ portfolio، دي الخطوات اللي بعدها:
- Kubernetes: بيدير containers كتير على أكتر من سيرفر، ويعيد تشغيل اللي يقع لوحده. ابدأ بالـ Kubernetes Basics الرسمي.
- الـ Monitoring والـ Observability: أدوات زي Prometheus و Grafana، علشان تعرف السيستم عامل إيه قبل ما يقع، مش بعد.
- Configuration management: أدوات زي Ansible، علشان تظبط سيرفرات كتير بنفس الإعدادات من ملف واحد.
ورأيي تاني، علشان مهم: متدخلش DevOps قبل ما تكون بنيت مشروع ورفعته بنفسك مرة على الأقل، علشان تفهم انت بتوصّل إيه.
احفظ الصفحة دي، وارجعلها كل ما تخلص حاجة وعلّم عليها. ولو وقفت في مرحلة ومش فاهم، ارجع للي قبلها، غالبًا المشكلة هناك.