ازاى ممكن تتعلم DevOps من البدايه وتلاقى شغل ؟ ( ثريد طويل )
و فى اخر الثريد كلمتين لخريجين ال ITI 4 شهور
و فى اخر الثريد كلمتين لخريجين ال ITI 4 شهور
اولا اغلب الناس بتبدأ انها تتعلم الtools المشهورة زى docker و Kubernetes و terraform ،من غير ما يكون فاهم ال software life cycle ،فى الثريد دا هنعمل العكس
هنحاول نكون Software engineers ومنها نتحرك لل DevOps
هنحاول نكون Software engineers ومنها نتحرك لل DevOps
اول خطوه في انك تكون DevOps انك تفهم ال Software Development بيشتغل ازاى
-اول خطوة تعملها انك تبنى three tiers application تمشي فيه لحد اخر ال software cycle
- اللوجيك بتاع الابلكيشن دا مش مهم ، ومش مهم باى لغة برمجه ، و لو متعرفش يعنى ايه three tiers application ابحث عنه
-اول خطوة تعملها انك تبنى three tiers application تمشي فيه لحد اخر ال software cycle
- اللوجيك بتاع الابلكيشن دا مش مهم ، ومش مهم باى لغة برمجه ، و لو متعرفش يعنى ايه three tiers application ابحث عنه
- ممكن نجيب اى ابلكيشن جاهز من على github ونشتغل عليه
-الغرض من اننا نعمل الابلكيشن دا هو انك تفهم واحد من ال stacks المشهوره زى Java او nodejs او dotNet او غيرهم حسب اللى تعرفه
-اختار اى stack و افهم ازاى الstack بيشتغل من برا كدا بشكل عام، لكن مش لازم تتعلم الstack دا بالتفصيل
-الغرض من اننا نعمل الابلكيشن دا هو انك تفهم واحد من ال stacks المشهوره زى Java او nodejs او dotNet او غيرهم حسب اللى تعرفه
-اختار اى stack و افهم ازاى الstack بيشتغل من برا كدا بشكل عام، لكن مش لازم تتعلم الstack دا بالتفصيل
، كمثال على ابلكيشن Java Spring ، تفهم هو بيتعمله build ازاى ؟ ايه ناتج ال build ،فى الحاله دى هيكون jar file ،هل فيه dependency package الابلكيشن دا محتاجها ،تبدأ تتعرف على باكدج مانجر زى MVN ،طيب ازاى ممكن اخلى الbuild يكون معاه كل الpackages اللى محتاجها ؟
وانت بتعمل الابلكيشن دا المفروض تكون فهمت يعنى ايه 3 tier application و يعنى ايه فرونت ايند ،و باك ايند ؟ و ازاى الباك و الفرونت بيتكلمو مع بعض و مع الداتابيز.
بعد ما بنطلع الpackage، هنشوف ازاى هنخليها ت run و نشغلها ، هل محتاجين نفتح بورت معين على ال localhost ؟
بعد ما بنطلع الpackage، هنشوف ازاى هنخليها ت run و نشغلها ، هل محتاجين نفتح بورت معين على ال localhost ؟
طيب شغلناه علي ال localhostالحمدلله ، ازاى بقى نشغلها على سيرفر على الكلاود ؟
هنبدأ نبص الاول على اى cloud provider و اشهرهم aws و azure فى المرحلة دى مش محتاجين نتعلم cloud ، احنا عايزين نفتح سيرفر بس
هتفتح سيرفر و هترفع الابلكيشن عليه و تشغله ، دا اللى بنقول عليه عملنا deploy
هنبدأ نبص الاول على اى cloud provider و اشهرهم aws و azure فى المرحلة دى مش محتاجين نتعلم cloud ، احنا عايزين نفتح سيرفر بس
هتفتح سيرفر و هترفع الابلكيشن عليه و تشغله ، دا اللى بنقول عليه عملنا deploy
عملنا deploy علي سيرفر على الكلاود، هنشوف ازاى ندي السيرفر public ip ؟ ، بعد كدا هنعرف ازاى ندى السيرفر دا domain name ؟ هنبدأ نتعرف على ال DNS و يعنى ايه DNS بابلك او برايفت ؟ طيب يعنى ايه HTTP بروتوكول ؟ طيب إزاى اعمل HTTPS و SSL ؟
طيب كده الابلكيشن دا كل العالم شايفه ، ازاى ممكن نخليه يظهر ل IPs معينه ؟ نبدأ نتعرف على ال security groups
بعدها هنجرب الابلكيشن دا نتأكد بس انه شغال و running، هنا هنتعرف على مفهوم اسمه smoke test
بعدها هنجرب الابلكيشن دا نتأكد بس انه شغال و running، هنا هنتعرف على مفهوم اسمه smoke test
طيب اتأكدنا انه شغال من برا كدا، نبدأ نجرب ال APIs اللى فيه نتأكد انها شغاله ، نتعرف على مفهوم ال manual test ، طيب ممكن نكتب سكريبت صغير خفيف بيعمل curl على الAPIs دى كلها مره واحده بدل ما بتجربها واحده واحده ، دا هيدينا فكره ايه هو ال automation testing
طيب عملنا التيست و كل حاجه شغاله ، الحمدلله كده انت خلصت تقريبا software cycle كامله بشكل يدوى ، نجرب نعمل automation ؟ لا لسه ، نتعرف الاول علي ال high availability
لو عايزين نعمل نسختين لنفس الابلكيشن على سيرفرين مختلفين ، ازاى هنخلى الناس ( اليوزرز ) يستخدموا url واحد ، طيب لما يكون فيه ريكوست جاى على ال URL هيروح على انهى نسخه ؟ طيب لو جالنا 100 ريكوست ، ينفع نخلى نصهم يروحوا لأول سيرفر و النص يروح للسرفر التانى ؟
هنا هنتعرف على مفهوم ال Loadbalancer ، ونتعرف على انواعه وازاى ممكن نعمل واحد بسيط باستخدام nginx او HAProxy مثلا ، فى المرحلة دى ممكن تستخدم قناة hussain naseer على اليوتيوب
اخدت بالك انك لما حطيت الابلكيشن على سيرفر تانى ، اضطريت تعمل install لكل ال tools اللى انت محتاجها زى java و mvn و غيرهم ، طيب ماذا لو هتحتاج تعمل 100 سيرفر ، هتضيع نص ساعه من عمرك ترفع الابلكيشن على السيرفر بايدك وتعمل install للتولز دى واحده واحده ؟
اكيد لأ ، لو هتحتاج نص ساعه لكل سرفر فانت هتحتاج 50 ساعه علشان تخلص كل ال100 سيرفر ، هنا هنبدأ اول خطوه من خطوات الاوتوميشن وتظهر اهميه Configuration management tools و اشهرهم Ansible
باختصار Ansible هو الانسان الآلى اللى هيخش على ال100 سيرفر ينفذ التعليمات الجاهزه اللى هتقوله عليها ، اللى بنسميها Configuration، هتقوله يا عم Ansible خد ال100 سيرفر دول ، وتديله ال IP بتاع كل سيرفر ، وتكتبله سكريبت فيه التعليمات بتاعتك بنسميه playbook
، خش يا عم Ansible على السرفرات دى نزلنا java ونزلنا mvn و بقيت الحاجات بتاعتنا و Ansible هيخش يخلص الليلة دى في كام دقيقة
في المرحلة دى مش محتاجين نتعلم كل حاجه ، هنستخدم Ansible في اننا نعمل سكريبت بسيط جدا
في المرحلة دى مش محتاجين نتعلم كل حاجه ، هنستخدم Ansible في اننا نعمل سكريبت بسيط جدا
هنعمل playbook يدوب بيرفع الابلكيشن بتاعنا ( في حالتنا الjar ) على سرفر واحد او اتنين ( للتدريب فقط اكيد مش هنفتح 100 سيرفر علشان نتعلم) و يسطب java و mvn و اى حاجه محتاجنها و نخليه يشغل الابلكيشن على كل سيرفر
نقف هنا لحظة و نسأل كام سؤال :
لو عندنا اكتر من ابلكيشن ، كلهم java و لكن كل واحد فيهم بيستخدم نسخه java مختلفة ، واحد بيستخدم جافا 11 و التانى جافا 8 و التالت جافا 19 وهكذا ، هنحطهم كلهم ازاى على نفس السيرفر ؟ هنا بيظهر اول دور لل containers
لو عندنا اكتر من ابلكيشن ، كلهم java و لكن كل واحد فيهم بيستخدم نسخه java مختلفة ، واحد بيستخدم جافا 11 و التانى جافا 8 و التالت جافا 19 وهكذا ، هنحطهم كلهم ازاى على نفس السيرفر ؟ هنا بيظهر اول دور لل containers
السؤال التانى لو الابلكيشن اللى شغال ده اتقفل لاى سبب ( بسبب ميمورى او cpu مثلا) ازاى نخلى الابلكيشن دا يرجع يفتح تانى لوحده من غير ما ندخل على السيرفر نفتحه بنفسنا ، ممكن نعمله باستخدام linux commands دور عليها ، بس ممكن نعمله باستخدام ال containers ودا تانى دور لل containers
السؤال التالت ، هل انا كنت محتاج اعمل سيرفر جديد علشان اشغل نسخه جديده من الابلكيشن ؟ مش ممكن احط كذا نسخه ( او بنقول عليها replica ) من نفس الابلكيشن على سيرفر واحد و اعمل عليهم loadbalancing؟
الاجابه طبعا اه ، وهنا بيظهر الدور التالت لل containers
الاجابه طبعا اه ، وهنا بيظهر الدور التالت لل containers
- نفهم من دا ان ال containers حاجه مفيده جدا لكن السوفتوير ممكن يتعمل ويعيش من غيرها عادى ، ومينفعش نبدأ بيها ونتعلمها من غير ما نفهم هيا التكنولوجي دى بتحل ايه أصلا
- نرجع بقى نتعلم اشهر container tool و هي docker، هنتعلمها على خفيف كدا و نفهم الفرق بينها وبين ال VM و الاساسيات
- نرجع بقى نتعلم اشهر container tool و هي docker، هنتعلمها على خفيف كدا و نفهم الفرق بينها وبين ال VM و الاساسيات
بعدها هنغير الابلكيشن اللى معانا بدل ما هو jar بس هنخليه جوا container
- طيب الcontainer ده نخزنه فين ؟ نبدأ نتعرف يعنى ايه registry و ازاى ممكن نرفع عليه images او نسحب منه و نحاول نرجع نعمل deploy تانى للابلكيشن بس المرادى باستخدام دوكر
- طيب الcontainer ده نخزنه فين ؟ نبدأ نتعرف يعنى ايه registry و ازاى ممكن نرفع عليه images او نسحب منه و نحاول نرجع نعمل deploy تانى للابلكيشن بس المرادى باستخدام دوكر
سؤال ، عندنا سيرفر كبييير ، عايزين نحط عليه 100 ابلكيشن ( هنقول على كل ابلكيشن service ) ، كلهم containers و كلهم بيتواصلوا مع بعض ، ال100 سيرفس دول فيه منهم اللى بياخد ram كتير اوى و فيه منهم اللى محتاج cpu عالى و فيه منهم اللى عايز storage و فيه اللى بيجيله عدد requests كتير
عايزين حاجه ت manage العدد الكبير من الكونتينرز دول لان الموضوع كبر اوى كده ، هنا بتظهر اهميه ال container orchestration tools
زى ايه ، ابسطهم docker compose و بعدها بيظهر حاجه اقوي شويه زى docker swarm و بعدها بيظهر الوحش الكبير Kubernetes ،فيه tools تانيه كتير بس دول الأشهر
زى ايه ، ابسطهم docker compose و بعدها بيظهر حاجه اقوي شويه زى docker swarm و بعدها بيظهر الوحش الكبير Kubernetes ،فيه tools تانيه كتير بس دول الأشهر
فى الحاله بتاعتنا هنبدأ بال docker compose و نعمل بيه ابلكيشن فيه سيرفس فرونت ايند و سيرفس باك ايند و سيرفيس داتا بيز ونخليهم يتكلموا مع بعض ، ممكن نلعب في عدد الcontainers لكل سيرفس ، طيب دلوقتى compose بيساعدنى اعمل تشكيلة من الكونتينرز اللى بيكلمو بعض بس بإمكانيات بسيطة
ماذا لو كان حجم البيزنس كبير ومحتاج يتوزع على كذا سيرفر ، هنا ممكن نستخدم swarm
طيب لو حجم البيزنس كبير و كمان عدد الديفيلوبرز اللى بيشتغلو عليه كتير وفيه تعقيدات كتير swarm مش قادر يحلها ، هنا هنبدأ نستخدم kubernetes
طيب لو حجم البيزنس كبير و كمان عدد الديفيلوبرز اللى بيشتغلو عليه كتير وفيه تعقيدات كتير swarm مش قادر يحلها ، هنا هنبدأ نستخدم kubernetes
، ولكن لازم نكون متأكدين ان البيزنس فعلا محتاج kubernetes لانه بيحتوى على تعقيدات ممكن تصعب الدنيا اكتر ما بتسهلها
أخيرا ، ليه أصلا نستخدم اكتر من سيرفر ونقسم الكونتينرز عليهم ؟ ليه منعملش سيرفر كبييييير جدا ونحط عليه الاف الكونتينرز وخلاص ؟ لاسباب كتير جدا هنفصصها دلوقتى بس نفهم الأول الشركات بتشتغل ازاى ؟
فيه داتاسنتر داب يحتوى على physical servers ، يعنى كمبيوترات من أبو بجد و حجمها ضخم جدا و مواصفات الcpu و الرام كبيره جدا ، نفترض عندنا فيزيكال سرفر فيه رامات 4 تيرا ، تيرا مش جيجا ، و 256 كور ، السيرفر دا ممكن نقسمه ل64 virtual server ، كل فيرشوال سيرفر ليه 4 كور و 64 جيجا رام
الداتاسنتر بيبع 20 فيرشوال سرفر لشركه ما ، و 30 سيرفر لشركه تانيه و 10 لشركه اخري وهكذا ، و المفتاح هنا في التكلفة ، تكلفة انك تعمل فيزيكال سيرفر واحد ضخم ارخص بكتير من انك تعمل فيزيكال سيرفرز كتير صغيرين
طيب الشركات بتاخد الفيرشوال سيرفرز دى و تقسمها ، لنفترض الشركه عندها 3 ابلكيشنز ، كل واحد فيهم فيه 100 سيرفس ، ساعتها الشركات بتفصل logically بين الابلكيشنز دى بانها بتخلى كل ابلكيشن في مجموعه من ال VMs لواحده
طيب نفترض انا عندى ابلكيشن معين الشركه خصصت ليه 10 VMs هل بنستخدمهم كلهم اننا نشغل عليهم الكونتينرز بتاعه الابلكيشن ؟ الاجابه لأ
ممكن من ال10 دول نستخدم 5 في الworkload يعنى للابلكيشن نفسه ، و نستخدم 2 للسوفتوير اللى ب manage الكونتينرز زى k8s و دول بنسميهم master nodes
ممكن من ال10 دول نستخدم 5 في الworkload يعنى للابلكيشن نفسه ، و نستخدم 2 للسوفتوير اللى ب manage الكونتينرز زى k8s و دول بنسميهم master nodes
و نستخدم 2 كمان للحاجات الجانبيه زى ال logging و monitoring ، ودول بنسميهم infra nodes وممكن نستخدم 2 كمان نحط عليهم الtools الخاصه بالسيكيورتى زى الproxies و firewalls و نخلى الnodes دى هيا اللى تبقى public access و الباقى private و هكذا
طيب الكلام دا في عصر الداتا سنتر اللى عفا عليه الزمن ، احنا دلوقتى عندنا cloud نقدر نشتري vm و نقومها ونضيفها للcluster في ثوانى ، بس دا لزمته ايه ، هقولك
نفترض اننا شغالين on-prem يعنى عندنا داتاسنتر في الشركه او اشترينا كام vm من داتاسنتر منفصل
نفترض اننا شغالين on-prem يعنى عندنا داتاسنتر في الشركه او اشترينا كام vm من داتاسنتر منفصل
عندنا 50 VMs مشغلين عليهم الابلكيشن بتاعنا و الدنيا حلاوه ، الابلكيشن مستهلك 90% من الresources بتاعه الVMs بتاعتنا ، ولكن فجأه الابلكيشن بتاعنا دخل عليه ترافيك كبير جدا ، كمثال مثلا وقت الأعياد او البلاك فرايداى ، عدد يوزرز ضخم بيدخل ، هنعمل ايه ؟
محتاجين نخلى الابلكيشن بدل ما يشتغل على 50 سرفر هنحتاج 50 سيرفر زياده ، هنروح نشتري 50 سيرفر زياده وده هياخد كام يوم و أحيانا أسابيع او شهور ، هيكون أصلا البلاك فرايداى خلص و الموسم خلص وخسرنا الترافيك الزياده
طيب نفترض احنا اذكيا و عملنا حسابنا وكنا اشترينا السرفرات دى من زمان بقى عندنا 15 سيرفر جاهزين يستحملوا ال traffic spike اللى هتحصل يوم البلاك فرايداي ، بس بعد البلاك فرايدي هنركنهم بقي للسنه الجايه ، يبقى احنا اشترينا 10 سيرفرات علشان نستخدمهم أسبوع في السنة ، طبعا خساره كبيره
هنا بيظهر حلول الكلاود ، انت ممكن تأجر ( مش تشتري ) اى سيرفر بالساعه ، و كمان ممكن بالثانية لو عايز ، اول ما يجيلك traffic spike تروح تقوم 50 سيرفر في دقيقة و تضمهم لل cluster ، بس هتعمل كدا ازاى ؟
يا اما تستخدم الconsole بتاع الcloud provider وتقعد تفتح سيرفر سيرفر ، فرهضة طبعا
يا اما تستخدم الconsole بتاع الcloud provider وتقعد تفتح سيرفر سيرفر ، فرهضة طبعا
الاحسن طبعا انك تعمل automation لده ، وهنا بيظهر دور ال infrastructure as a code tools و اشهرهم terraform
كدا انت ما شاء الله DevOps Engineer قد الدنيا ، فاضل كام حاجه تتعلمها في الطريق ، حاجات زى ال monitoring tools و ال GitOps tools وغيرها ، و دايما بتحسن نفسك في الtools اللى انت عارفها ، وتحسن نفسك كمان في البيزنس باستمرار
كلمتين لخريجين الITI ال4 شهور و الaws restart
أولا لا تعتمد على ال ITI فقط ، الITI في تراك ال4 شهور بتدى قشور في الاغلب ، نقدر نقول انهم بيفتحو عينك على مواضيع معينه و بيدوك 30% ، الباقى محتاج تكمله بنفسك اعتبر انك في 9 شهور و حط كمان 5 شهور مذاكره بنفسك
أولا لا تعتمد على ال ITI فقط ، الITI في تراك ال4 شهور بتدى قشور في الاغلب ، نقدر نقول انهم بيفتحو عينك على مواضيع معينه و بيدوك 30% ، الباقى محتاج تكمله بنفسك اعتبر انك في 9 شهور و حط كمان 5 شهور مذاكره بنفسك
ثانيا لا تعتمد على مشاريعITI خصوصا اللى بتتكون من تيم ، لو المشروع عباره عن جروب حاول ترجع تعمله لوحدك بعد ما تخلص المنحه ، مش مبرر اطلاقا انك تتسأل فى الانترفيو عن مشروع انت كاتب في الCV انت اللى عامله وترد تقول لا الحته معرفهاش علشان اللى عملها حد من التيم ، كدا انت بتقلل فرصك
ثالثا : كتير من خريجين ال ITI عارفين ازاى يستخدموا tool معينه زى docker ؟ بس ليه بنستخدمها ، الاجابه منعرفش ، بالتالى حاول تركز على سؤال احنا ليه بنعمل كده ؟ ليه بنعمل VM ؟ ليه ممكن نستخدم k8s ، ليه ممكن استخدم Ansible ؟ و امتى استخدم terraform ؟ ودا اللى انا جاوبت عليه فى الثريد
اخيرا ، هل فيه وظايف لل DevOps فى مصر ؟ اه طبعا
ولكن الماركت فيه fresh كتير جدا ( خصوصا اخر سنتين ) ،الشاطر فيهم قليل اوى
بالتالى لو انت متأسس صح ، فاهم الsoftware صح ، وفاهم كل tool بنستخدمها ليه قبل ازاى ، و مطبق بنفسك كام بروجيكت ، هتظهر و فرصتك احسن إن شاء الله
ولكن الماركت فيه fresh كتير جدا ( خصوصا اخر سنتين ) ،الشاطر فيهم قليل اوى
بالتالى لو انت متأسس صح ، فاهم الsoftware صح ، وفاهم كل tool بنستخدمها ليه قبل ازاى ، و مطبق بنفسك كام بروجيكت ، هتظهر و فرصتك احسن إن شاء الله
اتمنى الثريد دا ساعدك ترتب افكارك
ان شاء الله هعمل ثريد قريب عن حاجات هتساعدك تلاقى شغل لو انت فريش عموما
اخيرا الشغل نفسه دا رزق و مكتوبلك ،المذاكره و السعي و الأخذ بالاسباب مهمين ،لكن التوكل و الايمان ان الرزق بإيد ربنا سبحانه وتعالى هو الأساس
اخيرا ادعي لي ولوالدى بالمغفرة 🤲
ان شاء الله هعمل ثريد قريب عن حاجات هتساعدك تلاقى شغل لو انت فريش عموما
اخيرا الشغل نفسه دا رزق و مكتوبلك ،المذاكره و السعي و الأخذ بالاسباب مهمين ،لكن التوكل و الايمان ان الرزق بإيد ربنا سبحانه وتعالى هو الأساس
اخيرا ادعي لي ولوالدى بالمغفرة 🤲
جاري تحميل الاقتراحات...