برمجيات مصممة لطريقة عملك.مصر · السعودية · الإمارات

خطة تعلم DevOps من الصفر: من Linux لحد Terraform

الخطة كاملة لو بتبدأ من الصفر: شرط واحد قبل ما تبدأ، و 7 مراحل بالترتيب، في كل واحدة إيه تتعلمه بالظبط، ومشروع تعمله بإيدك، ومدة تقريبية، وإزاي تعرف إنك جاهز للي بعدها.

لو فاكر إن 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 مشاريع، كل واحد أصعب شوية من اللي قبله، وأغلبهم على نفس المشروع اللي بنيته قبل الخطة. والخامس هو اللي بيقفل الخطة.

  1. سيرفر عليه موقع

    Linux و Nginx و Bash

    سيرفر بتدخله بالـ SSH، عليه موقع، و backup بيتعمل لوحده كل يوم.

  2. Script بيراقب السيرفر

    Python و cron

    أول أتمتة بجد: السيرفر بيبلّغك لو فيه مشكلة قبل ما حد يشتكي.

  3. مشروعك في علب

    Docker و Docker Compose

    مشروعك بيشتغل على أي جهاز بأمر واحد.

  4. Pipeline لمشروعك

    GitHub Actions و Docker

    كل push بيتختبر وينزل لوحده، والكود البايظ بيقف قبل ما يوصل للناس.

  5. مشروع الـ portfolio: من الـ push للناس

    Terraform و AWS و GitHub Actions

    نفس المشروع، بس كل حاجة بقت أوتوماتيك: Terraform بيجهز الـ infrastructure، و GitHub Actions بيختبر ويبني وينزّل، و CloudWatch alarm بيبلّغك لو الموقع وقع. ارسم الـ pipeline في الـ README. خد فيه من 3 لـ 5 أسابيع، وصوّر فيديو قصير وهو شغال، وامسح الـ resources علشان متدفعش على الفاضي، وحط لينك الكود والفيديو في الـ CV بتاعك.

مصادر مجانية

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

Linux

الشبكات

Python

Docker و CI/CD

Cloud و 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 قبل ما تكون بنيت مشروع ورفعته بنفسك مرة على الأقل، علشان تفهم انت بتوصّل إيه.

احفظ الصفحة دي، وارجعلها كل ما تخلص حاجة وعلّم عليها. ولو وقفت في مرحلة ومش فاهم، ارجع للي قبلها، غالبًا المشكلة هناك.

لديك مشروع يحتاج من يبنيه؟

تبني JoSamCode مواقع وأنظمة وأتمتة لأنشطة في مصر والخليج. إذا كانت لديك فكرة تحتاج من يبنيها، أخبرنا بها.

ابدأ مشروعكاختر الخدمة المناسبة