<?xml version="1.0"?>
<rss version="2.0"><channel><title>DevOps: &#x645;&#x642;&#x627;&#x644;&#x627;&#x62A; &#x639;&#x627;&#x645;&#x629;</title><link>https://academy.hsoub.com/devops/general/?d=4</link><description>DevOps: &#x645;&#x642;&#x627;&#x644;&#x627;&#x62A; &#x639;&#x627;&#x645;&#x629;</description><language>ar</language><item><title>&#x627;&#x644;&#x623;&#x648;&#x627;&#x645;&#x631; &#x627;&#x644;&#x623;&#x633;&#x627;&#x633;&#x64A;&#x629; &#x644;&#x645;&#x62D;&#x631;&#x631; &#x627;&#x644;&#x646;&#x635;&#x648;&#x635; &#x646;&#x627;&#x646;&#x648; Nano</title><link>https://academy.hsoub.com/devops/general/%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D9%85%D8%AD%D8%B1%D8%B1-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%86%D8%A7%D9%86%D9%88-nano-r851/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2025_05/Nano.png.292ff91fb17b73b1f9a2b80cec487b79.png" /></p>
<p>
	جنو نانو GNU Nano هو محرر نصوص لأنظمة التشغيل التي تشبه نظام التشغيل يونكس أو بيئات التشغيل التي تستخدم سطر الأوامر كواجهة للإدخال، طُرح لأول مرة عام 1999 بواسطة Chris Allegretta وهو يحاكي محرر النصوص بيكو Pico.
</p>

<p>
	يُعَد محرر النصوص نانو nano المحرر المفضل لدى كثير من المستخدمين لأنه يحتوي على كل ما يحتاجه المستخدم سواءً المبتدئ أو المتوسط أو المتقدم؛ إذ يُعَد محرر سهلًا جدًا في عملية التنقل، ويمتلك بعض المميزات الرائعة التي ربما لا تكون على دراية كافية بها، لذلك سنحاول في هذا المقال تقديم كل الأساسيات التي قد تحتاجها للبدء باستخدام محرر النصوص نانو Nano.
</p>

<h2 id="nano">
	اختصارات لوحة المفاتيح الشائعة لمحرر النصوص نانو Nano
</h2>

<p>
	عند العمل مع أي أداة من أدوات سطر الأوامر، فلا بد من معرفة معظم اختصارات الأوامر، لأن ذلك يسرع من تنفيذ تلك الأوامر، وبالتالي سنبدأ بمعرفة أهم الاختصارات لمحرر النصوص نانو Nano من خلال القائمة التالية:
</p>

<table>
	<thead>
		<tr>
			<th>
				الاختصار
			</th>
			<th>
				الوصف أو الوظيفة
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<code>Ctrl+G</code>
			</td>
			<td>
				عرض قائمة المساعدة وقائمة الاختصارات
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+X</code>
			</td>
			<td>
				الخروج من محرر النصوص نانو Nano
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+O</code>
			</td>
			<td>
				حفظ الملف الحالي
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+R</code>
			</td>
			<td>
				فتح الملف للقراءة ضمن ذاكرة التخزين المؤقت buffer
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+C</code>
			</td>
			<td>
				إظهار موقع المؤشر (سطر، عمود، حرف)
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+V</code>
			</td>
			<td>
				نقل المؤشر إلى الشاشة التالية
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+Y</code>
			</td>
			<td>
				نقل المؤشر إلى الشاشة السابقة
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+K</code>
			</td>
			<td>
				قص السطر الحالي وتخزينه في ذاكرة التخزين المؤقت cutbuffer
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+U</code>
			</td>
			<td>
				لصق محتويات ذاكرة التخزين المؤقت cutbuffer في المكان الحالي للمؤشر
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+A</code>
			</td>
			<td>
				نقل المؤشر إلى بداية السطر الحالي
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+E</code>
			</td>
			<td>
				نقل المؤشر إلى نهاية السطر الحالي
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+W</code>
			</td>
			<td>
				البحث عن سلسلة نصية أو تعبير نمطي
			</td>
		</tr>
		<tr>
			<td>
				<code>\+ctrl</code>
			</td>
			<td>
				استبدال السلسلة النصية أو التعبير النظامي
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+T</code>
			</td>
			<td>
				النقل إلى الكلمة السابقة في السطر الحالي
			</td>
		</tr>
		<tr>
			<td>
				<code>Ctrl+F</code>
			</td>
			<td>
				النقل إلى الكلمة التالية في السطر الحالي
			</td>
		</tr>
		<tr>
			<td>
				<code>Alt+A</code>
			</td>
			<td>
				اختيار بداية النص من المكان الحالي للمؤشر
			</td>
		</tr>
		<tr>
			<td>
				<code>Alt+6</code>
			</td>
			<td>
				نسخ النص المحدد إلى ذاكرة التخزين المؤقت cutbuffer
			</td>
		</tr>
		<tr>
			<td>
				<code>Alt+U</code>
			</td>
			<td>
				التراجع عن آخر عملية
			</td>
		</tr>
		<tr>
			<td>
				<code>Alt+E</code>
			</td>
			<td>
				إعادة آخر عملية تم التراجع عنها
			</td>
		</tr>
	</tbody>
</table>

<h2 id="nano-1">
	البداية مع محرر النصوص نانو Nano
</h2>

<p>
	سنطلعك في هذه الفقرة على جميع الأمور الأساسية التي قد تحتاجها عند استخدام محرر النصوص نانو Nano.
</p>

<h3 id="1">
	1. التعرف على الواجهة
</h3>

<p>
	سيظهر لنا الخرج التالي عند فتح محرر النصوص نانو Nano عن طريق فتح نافذة الطرفية وكتابة الأمر <code>nano</code> فيها كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="172911" href="https://academy.hsoub.com/uploads/monthly_2025_05/1.png.b86602c8eaf0a1efe7f357bcbf087ab0.png" rel=""><img alt="1" class="ipsImage ipsImage_thumbnailed" data-fileid="172911" data-unique="875ooe1wp" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2025_05/1.thumb.png.9164242d2bee52d68992e510d38d44bb.png"> </a>
</p>

<p>
	تظهر الاختصارات المهمة لمحرر النصوص نانو Nano في أسفل الشاشة عند تشغيل محرر النصوص نانو nano، سواءً كان ذلك مع تحميل ملف أو بدون تحميل للرجوع اليها بسرعة ولسهولة استخدامها.
</p>

<p>
	يستخدم محرر النصوص نانو nano رمزين مرتبطين لكل اختصار، وذلك بخلاف محررات واجهة المستخدم الرسومية GUI والتي تعرض الرمز مباشرةً كما يلي:
</p>

<ul>
	<li>
		الرمز <code>^</code> وهو الرمز الأساسي الذي يشير إلى المفتاح <code>CTRL</code>
	</li>
	<li>
		الرمز <code>M</code> والمعروف باسم مفتاح الوصف meta key ويشير إلى المفتاح <code>ALT</code>
	</li>
</ul>

<p>
	وبالتالي إذا أردنا استخدام الاختصار <code>G^</code> فلا بد من الضغط على <code>CTRL+G</code>؛ أما عندما نريد استخدام الاختصار <code>M-A</code>، فسيتوجب علينا الضغط على <code>ALT+A</code>.
</p>

<h3 id="2nano">
	2. فتح أو إنشاء الملفات باستخدام محرر النصوص نانو Nano
</h3>

<p>
	لفتح ملف باستخدام محرر النصوص نانو nano، كل ما علينا فعله هو كتابة الأمر <code>nano</code> ثم إتباعه باسم الملف `nano <filename>.</filename>
</p>

<p>
	على سبيل المثال إذا أردنا فتح الملف mylogs.log بمحرر النصوص نانو nano، فيكفي كتابة الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_3418_6" style=""><span class="pln">nano mylogs</span><span class="pun">.</span><span class="pln">log</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="gif" data-fileid="172908" href="https://academy.hsoub.com/uploads/monthly_2025_05/1.gif.99a19e5258a0ae6d3483b6caa8d5f44a.gif" rel=""><img alt="1" class="ipsImage ipsImage_thumbnailed" data-fileid="172908" data-unique="gkwawqpej" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2025_05/1.thumb.gif.22f50aae3e11514ae0d89b7f3200ab2a.gif"> </a>
</p>

<p>
	أما إذا كان الملف غير موجود وأردنا إنشاء ملف جديد باستخدام محرر النصوص نانو nano والكتابة فيه، فيجب علينا كتابة اسم الملف غير الموجود بعد الأمر <code>nano</code>، وسيفتح لنا ملف فارغ يمكننا إجراء التغييرات التي نريدها فيه <code>&lt;nano  &lt;NewFile</code>. على سبيل المثال، يمكننا إنشاء ملف جديد باسم <code>unknown.txt</code> وكتابة بعض الأسطر فيه ثم نحفظ التغييرات كما يلي:
</p>

<pre class="ipsCode prettyprint lang-sql prettyprinted" id="ips_uid_3418_8" style=""><span class="pln">nano </span><span class="pun">&lt;</span><span class="typ">NewFile</span><span class="pun">&gt;</span></pre>

<p>
	من ناحية أخرى، إذا لم نرد إضافة اسم للملف في البداية، معناها يمكننا إنشاء ملف فارغ بدون اسم عن طريق تنفيذ الأمر <code>nano</code> في محرر النصوص nano، ومن ثم كتابة الأسطر التي نريد فيه؛ وعندما نرغب في إغلاق الملف، سيطلب منا المحرر إدخال اسم للملف.
</p>

<p>
	على سبيل المثال، سنكتب رسالة تهنئة في محرر النصوص نانو nano ثم نحفظ الملف باسم Hello.txt كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="gif" data-fileid="172907" href="https://academy.hsoub.com/uploads/monthly_2025_05/3.gif.51a6327c565803463b6d52cfc4528323.gif" rel=""><img alt="3" class="ipsImage ipsImage_thumbnailed" data-fileid="172907" data-unique="fmzl0lvct" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2025_05/3.thumb.gif.39c266b42c670b024229c0ae2bdefbc1.gif"> </a>
</p>

<h3 id="3">
	3. التنقل ضمن الملف
</h3>

<p>
	يمكن التنقل ضمن محرر النصوص نانو Nano عن طريق مفاتيح الأسهم على عكس محررات النصوص المتقدمة مثل محرر النصوص فيم <a href="https://academy.hsoub.com/programming/workflow/%d8%aa%d8%b9%d8%b1%d9%81-%d8%b9%d9%84%d9%89-%d9%85%d8%ad%d8%b1%d8%b1-%d8%a7%d9%84%d9%86%d8%b5%d9%88%d8%b5-%d9%81%d9%8a%d9%85-vim-r1769/" rel="">Vim</a>، وفيما يلي بعض النصائح والملاحظات من أجل التنقل ضمن الملف بسرعة أكبر:
</p>

<ul>
	<li>
		الضغط <code>\ + ALT</code> للذهاب إلى بداية الملف
	</li>
	<li>
		الضغط <code>/ + ALT</code> للذهاب إلى نهاية الملف
	</li>
</ul>

<p>
	يمكن أيضًا القفز إلى سطر محدد من خلال الضغط على <code>_ + CTRL</code> وإدخال رقم السطر الذي نريد كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="gif" data-fileid="172905" href="https://academy.hsoub.com/uploads/monthly_2025_05/4.gif.dba9be53f2afba507c6ef0cb73426ad4.gif" rel=""><img alt="4" class="ipsImage ipsImage_thumbnailed" data-fileid="172905" data-unique="0ywfuge4p" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2025_05/4.thumb.gif.ab29bca6739eba77a8f180f017880619.gif"> </a>
</p>

<h3 id="4nano">
	4. عمليات القص والنسخ واللصق في محرر النصوص نانو Nano
</h3>

<p>
	يمكن في حال استخدامنا لبيئة سطح المكتب اختيار النص باستخدام الفأرة والضغط على <code>Ctrl + Shift + C</code> لنسخ النص المحدد ومن ثم لصقه باستخدام <code>Ctrl + Shift + V</code>.
</p>

<p>
	ولكن ما الحل إذا كنا لا نملك واجهة مستخدم رسومية GUI أو كنا نريد قص النص؟ بإمكاننا هنا ببساطة قص أو نسخ النص ولصقه في محرر النصوص نانو nano واستخدام الاختصارات، ولكن ذلك بعد تحديد النص المطلوب.
</p>

<p>
	من أجل تحديد النص، سنستخدم مفاتيح التنقل للوصول إلى نقطة البداية التي نريد تحديد النص منها، ثم نضغط على الاختصار <code>Alt + A</code> لوضع علامة التحديد، ومن ثمة نستخدم مفاتيح التنقل لتحديد النص الذي نريد قصه أو نسخه كما هو موضح بالشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="gif" data-fileid="172906" href="https://academy.hsoub.com/uploads/monthly_2025_05/5.gif.6e66191eb78aafb4fe9fbb5e389af2cc.gif" rel=""><img alt="5" class="ipsImage ipsImage_thumbnailed" data-fileid="172906" data-unique="dpixpv0gj" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2025_05/5.thumb.gif.3e6faffa9d6cc98f025fd6bd956cfff4.gif"> </a>
</p>

<p>
	نستطيع بعد تحديد النص القيام بأحد الأمرين:
</p>

<ul>
	<li>
		الضغط <code>Alt + 6</code> لنسخ النص المحدد
	</li>
	<li>
		الضغط <code>Ctrl + K</code> لقص النص المحدد
	</li>
	<li>
		وبعد قص أو نسخ النص، نضغط <code>Ctrl + U</code> للصق النص.
	</li>
</ul>

<p>
	يمكننا على سبيل المثال لصق النص المنسوخ في نهاية الملف كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="gif" data-fileid="172912" href="https://academy.hsoub.com/uploads/monthly_2025_05/copy-and-paste-text-in-nano-editor-1.gif.dc6c8e5e2d3660a087479027e8c21e26.gif" rel=""><img alt="copy-and-paste-text-in-nano-editor-1.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="172912" data-ratio="40.11" data-unique="mjcdgqutb" style="width: 700px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2025_05/copy-and-paste-text-in-nano-editor-1.thumb.gif.4f36c74265d18dd553f02004c7729a27.gif"></a>
</p>

<h3 id="5nano">
	5. حذف أسطر في محرر النصوص نانو Nano
</h3>

<p>
	لا يوجد خيار محدد لحذف النصوص أو الأسطر في محرر النصوص نانو Nano للأسف، ولكن يمكننا استخدام الطرق التالية للحصول على نفس النتيجة في المحرر:
</p>

<ol>
	<li>
		استخدام زر التراجع backspace عدة مرات لحذف النصوص أو الأسطر
	</li>
	<li>
		استخدام قص الأسطر بالضغط على الاختصار <code>Ctrl + K</code>
	</li>
</ol>

<p>
	تُعَد عملية قص الأسطر هي الخيار الأفضل لحذف النص أو الأسطر، وذلك لأن عملية اللصق لا تحدث كثيرًا، وهي الطريقة الأكثر فعالية لحذف النصوص.
</p>

<p>
	يمكننا تحديد عدة أسطر أو كلمات لقصها من أجل التخلص منها (حذفها) من خلال استخدام مفاتيح الأسهم كما يلي:
</p>

<ol>
	<li>
		الانتقال باستخدام مفاتيح الأسهم إلى النقطة التي تريد حذف الأسطر ابتداءً منها
	</li>
	<li>
		الضغط على الاختصار <code>Alt + A</code> لوضع العلامة
	</li>
	<li>
		الضغط على الاختصار <code>/ + ALT</code> للإنتقال إلى نهاية الملف
	</li>
	<li>
		الضغط على الاختصار <code>Ctrl + K</code> لقص النص المحدد
	</li>
</ol>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="gif" data-fileid="172913" href="https://academy.hsoub.com/uploads/monthly_2025_05/Delete-multiple-lines-in-the-nano-editor.gif.204f843c58017bc5119a97c19e3eb331.gif" rel=""><img alt="Delete-multiple-lines-in-the-nano-editor.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="172913" data-ratio="40.11" data-unique="jpi0fuowv" style="width: 700px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2025_05/Delete-multiple-lines-in-the-nano-editor.thumb.gif.aa4937d67a55a2de182537199d6f7c27.gif"></a>
</p>

<h3 id="6">
	6. التراجع والإعادة
</h3>

<p>
	تشير عملية التراجع Undo إلى العدول عن آخر عملية قام بها المستخدم، بينما تشير عملية الإعادة Redo إلى تكرار آخر عملية تم التراجع عنها.
</p>

<p>
	يمكننا استخدام الاختصارات التالية للقيام بعملية التراجع أو الإعادة في محرر النصوص نانو Nano:
</p>

<ul>
	<li>
		للتراجع عن آخر عملية، نستخدم الاختصار <code>Alt + U</code>
	</li>
	<li>
		لتكرار أو إعادة آخر عملية تم التراجع عنها، نستخدم الاختصار <code>Alt + E</code>
	</li>
</ul>

<p>
	سنحذف في المثال التالي سطرًا معينًا من الملف ثم نتراجع عن عملية الحذف، ثم نعيد عملية الحذف مرةً أخرى كما يلي:
</p>

<p style="text-align: center;">
	<img alt="undo-and-redo-in-nano-editor.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="172914" data-ratio="30.13" data-unique="04y5dxgbl" style="width: 700px; height: auto;" width="823" src="https://academy.hsoub.com/uploads/monthly_2025_05/undo-and-redo-in-nano-editor.gif.afb3790a07aa54f33f72c1497a6cb348.gif">
</p>

<h3 id="7">
	7. البحث والاستبدال
</h3>

<p>
	تتم عملية البحث والاستبدال في محرر النصوص نانو Nano باستخدام ثلاث خطوات بسيطة جدًا وهي:
</p>

<ol>
	<li>
		الضغط <code>Ctrl + R</code> ثم كتابة الكلمة أو المصطلح الذي نريد البحث عنه ثم نضغط Enter
	</li>
	<li>
		ندخل الكلمة الجديدة المراد الاستبدال بها
	</li>
	<li>
		ستظهر الكلمات المطابقة واحدةً تلو الأخرى وسيسألنا إذا كنا نريد استبدالها أم لا، وللقيام بعمليات الاستبدال دفعةً واحدة، سنضغط على الرمز <code>A</code>.
	</li>
</ol>

<p>
	سنستبدل في المثال التالي الكلمة quick بالكلمة lazy كما في الشكل:
</p>

<p style="text-align: center;">
	<img alt="search-and-replace-in-the-nano-editor.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="172915" data-ratio="30.13" data-unique="g7bxx21j3" style="width: 700px; height: auto;" width="823" src="https://academy.hsoub.com/uploads/monthly_2025_05/search-and-replace-in-the-nano-editor.gif.f28f9b424c571b1d1b60dec48c042025.gif">
</p>

<h3 id="8nano">
	8. الحفظ والخروج من محرر النصوص نانو Nano
</h3>

<p>
	تتم عملية الحفظ والخروج من محرر النصوص نانو Nano بطريقة سهلة للغاية وعن طريق خطوتين فقط هما:
</p>

<ol>
	<li>
		الضغط على الاختصار <code>Ctrl + O</code> لحفظ التغييرات
	</li>
	<li>
		الضغط على الاختصار <code>Ctrl + X</code> للخروج من محرر النصوص
	</li>
</ol>

<p>
	ملاحظة: يمكن الخروج من محرر النصوص نانو Nano بدون حفظ التغييرات، وذلك بالضغط مباشرةً على الاختصار <code>Ctrl + X</code>، ومن ثم الضغط على المفتاح <code>N</code>.
</p>

<p>
	عند الضغط على الاختصار <code>Ctrl + O</code> لحفظ التغييرات، سيسألنا المحرر عما إذا كنا نريد حفظ تلك التغييرات باسم الملف نفسه أو باسم ملف مختلف، لذا يمكن انتقاء أحد الخيارين ثم الضغط المفتاح Enter لحفظ التغييرات.
</p>

<p>
	هناك ميزة أخرى رائعة في محرر النصوص نانو Nano، وهي الطريقة التي يخبرنا بها بالتغييرات التي لم تُحفظ بعد، حيث ستظهر علامة النجمة <code>*</code> بجانب اسم الملف كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="172909" href="https://academy.hsoub.com/uploads/monthly_2025_05/2.png.9000d1705fecb22465df01713e9ea65d.png" rel=""><img alt="2" class="ipsImage ipsImage_thumbnailed" data-fileid="172909" data-unique="fn8b8x62t" style="width: 700px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2025_05/2.png.9000d1705fecb22465df01713e9ea65d.png"> </a>
</p>

<p>
	بعد الانتهاء من ذلك، سنضغط على الاختصار <code>Ctrl + X</code> للخروج من محرر النصوص نانو Nano.
</p>

<p>
	إذا رغبنا في الخروج من محرر النصوص نانو nano بدون حفظ التغييرات، سنتبع الخطوات البسيطة التالية:
</p>

<ol>
	<li>
		الضغط على الاختصار <code>Ctrl + X</code>
	</li>
	<li>
		الضغط على الاختصار <code>N</code> للخروج من محرر النصوص نانو Nano بدون حفظ التغييرات
	</li>
</ol>

<h3 id="9nano">
	9. طريقة الحصول على المساعدة من محرر النصوص نانو Nano
</h3>

<p>
	تُعَد عملية المساعدة في محرر النصوص نانو nano مفيدةً جدًا في الأوقات الصعبة التي لا تعرف فيها ماذا تفعل، وكل ما علينا القيام به هو الضغط على الاختصار <code>Ctrl + G</code> وسيحضر لنا قائمةً بجميع الاختصارات المتوفرة في محرر النصوص نانو nano مع وصف بسيط لها كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="172910" href="https://academy.hsoub.com/uploads/monthly_2025_05/3.png.0fe24861ec1a4d559827e0fe2e79f9d9.png" rel=""><img alt="3" class="ipsImage ipsImage_thumbnailed" data-fileid="172910" data-unique="teublda9p" style="width: 600px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2025_05/3.png.0fe24861ec1a4d559827e0fe2e79f9d9.png"> </a>
</p>

<h2 id="">
	الخلاصة
</h2>

<p>
	بهذا نكون قد تعرفنا على الأوامر الأساسية لمحرر النصوص نانو Nano. نتمنى لكم الاستفادة الجيدة من هذا المقال، وفي حال كان لديكم أي تساؤل يمكن تركه في قسم التعليقات أسفل المقال أو كتابته في <a href="https://academy.hsoub.com/questions/" rel="">قسم الأسئلة والأجوبة</a> في الأكاديمية.
</p>

<p>
	ترجمة وبتصرف للمقال <a href="https://linuxhandbook.com/nano-editor-basics/" rel="external nofollow">Nano Editor Basic Commands</a> لكاتبه Sagar Sharma.
</p>

<h2 id="-1">
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/workflow/%D9%85%D9%82%D8%A7%D8%B1%D9%86%D8%A9-%D8%A8%D9%8A%D9%86-%D9%85%D8%AD%D8%B1%D8%B1-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%81%D9%8A%D9%85-vim-%D9%88%D9%86%D8%A7%D9%86%D9%88-nano-r1590/" rel="">مقارنة بين محرر النصوص فيم Vim ونانو Nano</a>
	</li>
	<li>
		<a href="http://%20%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9%20%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5%20%D8%B9%D9%84%D9%89%20RedHat%20Enterprise%20Linux:%20%D8%AA%D8%AD%D8%B1%D9%8A%D8%B1%D9%87%D8%A7%20%D8%A8%D9%80%20Nano%20%D9%88%20Vim%20%D9%88%D8%A7%D9%84%D8%A8%D8%AD%D8%AB%20%D9%81%D9%8A%D9%87%D8%A7%20%D8%A8%D9%80%20grep%20" rel="external nofollow">معالجة النصوص على RedHat Enterprise Linux: تحريرها بـ Nano و Vim والبحث فيها بـ grep</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/workflow/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D8%AD%D8%B1%D8%B1-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%81%D9%8A%D9%85-vim-r1769/" rel="">تعرف على محرر النصوص فيم Vim</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">851</guid><pubDate>Thu, 28 Aug 2025 16:09:02 +0000</pubDate></item><item><title>&#x628;&#x646;&#x627;&#x621; &#x645;&#x646;&#x647;&#x62C;&#x64A;&#x629; &#x639;&#x645;&#x644; DevOps &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x627;&#x644;&#x623;&#x62F;&#x648;&#x627;&#x62A; &#x645;&#x641;&#x62A;&#x648;&#x62D;&#x629; &#x627;&#x644;&#x645;&#x635;&#x62F;&#x631;</title><link>https://academy.hsoub.com/devops/general/%D8%A8%D9%86%D8%A7%D8%A1-%D9%85%D9%86%D9%87%D8%AC%D9%8A%D8%A9-%D8%B9%D9%85%D9%84-devops-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r846/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2025_05/DevOps.png.4077a9445a365bc8591048b83ca550cd.png" /></p>
<p>
	أصبح اعتماد منهجية DevOps هو الحل البديهي لتحسين البرامج البطيئة وغير الناجحة وأتمتة المهام اليدوية. ولذلك، سنشرح في هذا المقال ما هي منهجية عمل إنتاج البرمجيات في DevOps أو ما يُعرف بمصطلح DevOps pipeline وما هي خطوات إنشائها.
</p>

<h2 id="devopscicd">
	مقدمة عن منهجية DevOps وخطوط التكامل والتسليم المستمر CI/CD
</h2>

<p>
	تطورت منهجية DevOps لتشتمل على عديد من التخصصات المختلفة، ولكن معظم الناس يتفقون على أن DevOps هي منهجية لتطوير البرمجيات أو دورة حياة تطوير البرمجيات SDLC، ومبدؤها الأساسي هو تغيير ثقافة العمل واعتماد أتمتة المهام اليدوية لزيادة الإنتاجية وتحسين مرونة تنفيذ المهام.
</p>

<p>
	هناك بعض الأدوات الضرورية لتحقيق بيئة DevOps، لكن المفتاح الرئيسي هو إنشاء منهجية عمل Pipeline يُطبّق فيها <a href="https://academy.hsoub.com/devops/deployment/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AA%D9%83%D8%A7%D9%85%D9%84-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-%D9%88%D8%A7%D9%84%D9%86%D8%B4%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-cicd-r644/" rel="">التكامل المستمر والنشر المستمر CI/CD</a>، بحيث تحتوي على مراحل مختلفة مثل مرحلة التطوير DEV، والتكامل INT، والاختبار TST، والتحقق من الجودة QA، واختبار قبول المستخدم UAT، والتحضير STG، والانتاج PROD؛ وتؤتمت فيها المهام اليدوية، لكي يستطيع المطورون العمل بمرونة وكتابة شيفرة عالية الجودة، والنشر مرات عديدة.
</p>

<p>
	يقدّم هذا المقال طريقةً مكونةً من خمس خطوات لإنشاء منهجية عمل لإنتاج البرمجيات بأسلوب <a href="https://academy.hsoub.com/devops/general/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%81%D9%8A-%D9%85%D8%AC%D8%A7%D9%84-devops-%D9%88%D8%A3%D9%87%D9%85-%D9%85%D9%85%D8%A7%D8%B1%D8%B3%D8%A7%D8%AA%D9%87-%D9%88%D8%A3%D8%AF%D9%88%D8%A7%D8%AA%D9%87-r844/" rel="">DevOps</a> باستخدام أدوات <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">مفتوحة المصدر</a>، مثل ماهو موضح في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="172403" href="https://academy.hsoub.com/uploads/monthly_2025_05/1_finaldevopspipeline.png.3d972ba702e1f0cda0f20024a3367eba.png" rel=""><img alt="1 finaldevopspipeline" class="ipsImage ipsImage_thumbnailed" data-fileid="172403" data-unique="vm91q4lgg" src="https://academy.hsoub.com/uploads/monthly_2025_05/1_finaldevopspipeline.png.3d972ba702e1f0cda0f20024a3367eba.png"> </a>
</p>

<h2 id="1cicd">
	1. استخدام اُطر عمل التكامل والنشر المستمر CI/CD
</h2>

<p>
	أول ما نحتاج إليه هو إحدى أدوات <a href="https://academy.hsoub.com/devops/deployment/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AA%D9%83%D8%A7%D9%85%D9%84-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-%D9%88%D8%A7%D9%84%D9%86%D8%B4%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-cicd-r644/" rel="">التكامل والنشر المستمر CI/CD</a>، ويُنصح لهذا الغرض باستخدام أداة <a href="https://academy.hsoub.com/devops/linux/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-jenkins-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-1804-r462/" rel="">جنكينز Jenkins</a>، وهي أداة مفتوحة المصدر ومبنية على <a href="https://academy.hsoub.com/programming/java/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7-java-r2275/" rel="">لغة جافا Java</a> وترخيص MIT، وهي ما ساهم في نشر منهجية DevOps لتصبح المعيار الأساسي.
</p>

<p>
	ولتبسيط الأمر، يمكننا تخيل أن أداة Jenkins هي جهاز تحكم عن بعد يمكنه التخاطب مع خدمات وأدوات عدة المختلفة وإدارتها، وهي عديمة النفع بمفردها، ولكنها تصير أكثر قوةً عند استخدامها مع أدوات وخدمات مختلفة. وهي واحدة من العديد من أدوات CI/CD مفتوحة المصدر التي يمكن الاستفادة منها لإنشاء منهجية عمل DevOps.
</p>

<p>
	فيما يلي بعض الأدوات الأخرى:
</p>

<table>
	<thead>
		<tr>
			<th>
				الأداة
			</th>
			<th>
				الرخصة
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="https://github.com/jenkinsci/jenkins" rel="external nofollow">Jenkins</a>
			</td>
			<td>
				المشاع الإبداعي و MIT
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/travis-ci/travis-ci" rel="external nofollow">Travis CI</a>
			</td>
			<td>
				MIT
			</td>
		</tr>
		<tr>
			<td>
				<a href="http://cruisecontrol.sourceforge.net/" rel="external nofollow">CruiseControl</a>
			</td>
			<td>
				BSD
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/buildbot/buildbot" rel="external nofollow">Buildbot</a>
			</td>
			<td>
				GPL
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://gump.apache.org/" rel="external nofollow">Apache Gump</a>
			</td>
			<td>
				Apache 2.0
			</td>
		</tr>
		<tr>
			<td>
				<a href="http://cabie.tigris.org/" rel="external nofollow">Cabie</a>
			</td>
			<td>
				GNU
			</td>
		</tr>
	</tbody>
</table>

<p>
	توضح الصورة التالية سير عمليات DevOps باستخدام أدوات التكامل والنشر المستمر CI/CD:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="172400" href="https://academy.hsoub.com/uploads/monthly_2025_05/2_runningjenkins.png.770ea43e3dbeea2577f3919e691d55b0.png" rel=""><img alt="2 runningjenkins" class="ipsImage ipsImage_thumbnailed" data-fileid="172400" data-unique="zznfl9rp8" src="https://academy.hsoub.com/uploads/monthly_2025_05/2_runningjenkins.png.770ea43e3dbeea2577f3919e691d55b0.png"> </a>
</p>

<p>
	وبهذا تكون قد أصبحت لدينا أداة CI/CD قيد التشغيل في مضيفنا المحلي، ولكن لا يمكن الاستفادة منها في شيء الآن. سنتابع شرح باقي الخطوات كي نتعلم كيفية استخدام الأدوات لبناء منهجية عمل DevOps.
</p>

<h2 id="2sourcecodemanagement">
	2. إدارة الشيفرة المصدرية Source Code Management
</h2>

<p>
	إن أفضل وأسهل طريقة للتأكد من أن أدوات CI/CD تعمل جيدًا هي استخدامها مع إحدى أدوات إدارة الشفرة المصدرية Source Code Management أو اختصارًا: SCM، وذلك لأن الشيفرة التي نكتبها عند تطوير تطبيق ما باستخدام إحدى لغات البرمجة مثل لغة جافا Java أو <a href="https://academy.hsoub.com/python/" rel="">بايثون Python</a> أو <a href="https://academy.hsoub.com/programming/cpp/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-c-r802/" rel="">C++</a>‎ أو <a href="https://academy.hsoub.com/programming/go/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-go-r222/" rel="">لغة جو Go</a>، أو <a href="https://academy.hsoub.com/javascript/" rel="">جافاسكربت Javascript</a>، أو غيرها، يطلق عليها اسم الشيفرة المصدرية Source Code.
</p>

<p>
	عند العمل بمفردنا، سيكون من الأسهل هو حفظ كل ما يلزمنا في مجلد واحد على جهازنا؛ ولكن عند العمل على مشروع كبير يتم فيه التعاون مع الآخرين، فسوف نحتاج إلى طريقة لمشاركة التعديلات على الشيفرة بفعالية وتجنب التعارض عند التعديل؛ كما سنحتاج أيضًا إلى طريقة لاستعادة النسخ السابقة من الشيفرة، وأحدث من طريقة النسخ الاحتياطي أو طريقة النسخ واللصق التقليدية.
</p>

<p>
	هنا علينا استخدام أدوات إدارة الشيفرة المصدرية SCM التي تساعد في تخزين الشيفرة في مستودعات، والتحكم في إصدار الشيفرة، والتنسيق بين أعضاء المشروع.
</p>

<p>
	ثمة أدوات عدة لإدارة الشيفرة المصدرية، لكن <a href="https://academy.hsoub.com/programming/workflow/git/" rel="">غيت Git</a> أفضلها، وفيما يلي ذكر لأدوات أخرى مفتوحة المصدر:
</p>

<table>
	<thead>
		<tr>
			<th>
				الأداة
			</th>
			<th>
				الرخصة
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="https://git-scm.com/" rel="external nofollow">غيت</a>
			</td>
			<td>
				GPLv2 &amp; LGPL v2.1
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://subversion.apache.org/" rel="external nofollow">Subversion</a>
			</td>
			<td>
				Apache 2.0
			</td>
		</tr>
		<tr>
			<td>
				<a href="http://savannah.nongnu.org/projects/cvs" rel="external nofollow">Concurrent Versions System (CVS) </a>
			</td>
			<td>
				GNU
			</td>
		</tr>
		<tr>
			<td>
				<a href="http://www.vestasys.org/" rel="external nofollow">Vesta</a>
			</td>
			<td>
				LGPL
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.mercurial-scm.org/" rel="external nofollow">Mercurial</a>
			</td>
			<td>
				GNU GPL v2+
			</td>
		</tr>
	</tbody>
</table>

<p>
	توضح الصورة الآتية كيف تبدو منهجية عمل DevOps عند استخدام إحدى أدوات إدارة الشيفرة المصدرية SCM:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="172402" href="https://academy.hsoub.com/uploads/monthly_2025_05/3_sourcecontrolmanagement.png.7635b36441c2fa6b326fdf3afa354fbd.png" rel=""><img alt="3 sourcecontrolmanagement" class="ipsImage ipsImage_thumbnailed" data-fileid="172402" data-unique="uy5bb0d2w" src="https://academy.hsoub.com/uploads/monthly_2025_05/3_sourcecontrolmanagement.png.7635b36441c2fa6b326fdf3afa354fbd.png"> </a>
</p>

<p>
	وكما هو واضح، يمكن لأداة التكامل والنشر المستمر CI/CD أتمتة التعديلات على الشيفرة المصدرية وتسهيل التعاون بين أعضاء الفريق. وسنتعرف في باقي الخطوات على كيفية الاستفادة من ذلك في تطبيق عملي حتى يتمكن العديد من الناس من استخدامه.
</p>

<h2 id="3">
	3. إنشاء أداة لأتمتة عمليات بناء الشيفرة
</h2>

<p>
	يمكن الآن الإطلاع على تعديلات الشيفرة وإضافة تعديلاتنا، كما يمكن التعاون مع مطورين آخرين في كتابة الشيفرة. للتأكيد، يجب علينا تجميع التطبيق قبل ذلك ووضعه في تنسيق حزمة قابلة للنشر أو تشغيله كملف قابل للتنفيذ Executable لجعله تطبيق ويب. يمكننا ملاحظة أن لغات البرمجة المُفسَّرة مثل جافاسكربت JavaScript أو <a href="https://academy.hsoub.com/programming/php/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-php-r2040/" rel="">PHP</a> لا تحتاج إلى <a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%A3%D9%88%D9%84-%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%AA%D8%B5%D8%B1%D9%8A%D9%81-compilation-%D9%81%D9%8A-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r976/" rel="">تجميع Compilation</a>، وهنا علينا استخدام إحدى أدوات أتمتة عمليات بناء البرامج Build Automation Tool، والتي تهدف إلى إنشاء شيفرة مصدرية بتنسيق معين، وأتمتة عمليات تنظيف الشيفرة وتجميعها واختبارها ونشرها في موقع معين.
</p>

<p>
	تختلف أدوات البناء وفقًا للغة البرمجة، وفيما يلي بعض الأدوات الشائعة مفتوحة المصدر:
</p>

<table>
	<thead>
		<tr>
			<th>
				الأداة
			</th>
			<th>
				الرخصة
			</th>
			<th>
				لغة البرمجة
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="https://maven.apache.org/" rel="external nofollow">Maven</a>
			</td>
			<td>
				أباتشي Apache 2.0
			</td>
			<td>
				جافا Java
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://ant.apache.org/" rel="external nofollow">Ant</a>
			</td>
			<td>
				أباتشي Apache 2.0
			</td>
			<td>
				جافا Java
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://gradle.org/" rel="external nofollow">Gradle</a>
			</td>
			<td>
				أباتشي Apache 2.0
			</td>
			<td>
				جافا Java
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://bazel.build/" rel="external nofollow">Bazel</a>
			</td>
			<td>
				أباتشي Apache 2.0
			</td>
			<td>
				جافا Java
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.gnu.org/software/make" rel="external nofollow">Make</a>
			</td>
			<td>
				GNU
			</td>
			<td>
				---
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://gruntjs.com/" rel="external nofollow">Grunt</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				جافا سكربت JavaScript
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://gulpjs.com/" rel="external nofollow">Gulp</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				جافا سكربت JavaScript
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/ruby/rake" rel="external nofollow">Rake</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				Ruby
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://buildr.apache.org/" rel="external nofollow">Buildr</a>
			</td>
			<td>
				Apache
			</td>
			<td>
				Ruby
			</td>
		</tr>
		<tr>
			<td>
				<a href="http://www.a-a-p.org/" rel="external nofollow">A-A-P</a>
			</td>
			<td>
				GNU
			</td>
			<td>
				بايثون Python
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.scons.org/" rel="external nofollow">SCons</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				بايثون Python
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.yoctoproject.org/software-item/bitbake" rel="external nofollow">BitBake</a>
			</td>
			<td>
				GPLv2
			</td>
			<td>
				بايثون Python
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/cake-build/cake" rel="external nofollow">Cake</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				C#‎
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://common-lisp.net/project/asdf" rel="external nofollow">ASDF</a>
			</td>
			<td>
				Expat (MIT)
			</td>
			<td>
				LISP
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.haskell.org/cabal" rel="external nofollow">Cabal</a>
			</td>
			<td>
				BSD
			</td>
			<td>
				Haskell
			</td>
		</tr>
	</tbody>
</table>

<p>
	يمكننا الآن إضافة ملفات إعدادات أداة أتمتة بناء الشيفرة إلى أداة إدارة الشيفرة المصدرية SCM وستتولى أداة التكامل والنشر المستمر CI/CD أمر بنائها.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="172401" href="https://academy.hsoub.com/uploads/monthly_2025_05/4_buildtools.png.19fe6b657aca376d7320fa1fe91bfd26.png" rel=""><img alt="4 buildtools" class="ipsImage ipsImage_thumbnailed" data-fileid="172401" data-unique="dbdv7jeui" src="https://academy.hsoub.com/uploads/monthly_2025_05/4_buildtools.png.19fe6b657aca376d7320fa1fe91bfd26.png"> </a>
</p>

<h2 id="4">
	4. اختيار خادم تطبيقات الويب
</h2>

<p>
	للحصول على فائدة من التطبيق، يجب أن يكون التطبيق قادرًا على توفير خدمة أو واجهة ما، كما يجب استضافته على خادم تطبيقات ويب؛ إذ يوفر الخادم بيئةً قادرةً على قراءة المنطق البرمجي داخل الحزمة القابلة للنشر، وعرض واجهة التطبيق، وتقديم خدمات الويب عن طريق إتاحة مآخذ هذه الخدمات، ولذلك ستحتاج إلى <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-http-%D8%B4%D8%B1%D8%AD-%D8%A7%D9%84%D8%AA%D8%AE%D8%A7%D8%B7%D8%A8-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%B9%D9%85%D9%8A%D9%84-%D9%88%D8%A7%D9%84%D8%AE%D8%A7%D8%AF%D9%85-r74/" rel="">خادم HTTP</a> وآلة افتراضية Virtual machine لتثبيت خادم التطبيقات.
</p>

<p>
	فيما يلي عدد من خوادم تطبيقات الويب مفتوحة المصدر التي يمكن المفاضلة بينها واختيار الأنسب بينها:
</p>

<table>
	<thead>
		<tr>
			<th>
				الأداة
			</th>
			<th>
				الرخصة
			</th>
			<th>
				لغة البرمجة
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="https://tomcat.apache.org/" rel="external nofollow">Tomcat</a>
			</td>
			<td>
				Apache 2.0
			</td>
			<td>
				جافا
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.eclipse.org/jetty/" rel="external nofollow">Jetty</a>
			</td>
			<td>
				Apache 2.0
			</td>
			<td>
				جافا
			</td>
		</tr>
		<tr>
			<td>
				<a href="http://wildfly.org/" rel="external nofollow">WildFly</a>
			</td>
			<td>
				GNU Lesser Public
			</td>
			<td>
				جافا
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://javaee.github.io/glassfish" rel="external nofollow">GlassFish</a>
			</td>
			<td>
				CDDL &amp; GNU Less Public
			</td>
			<td>
				جافا
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.djangoproject.com/" rel="external nofollow">Django</a>
			</td>
			<td>
				3-Clause BSD
			</td>
			<td>
				بايثون
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/cdent/paste" rel="external nofollow">Python Paste</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				بايثون
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://rubyonrails.org/" rel="external nofollow">Rails</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				Ruby
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://nodejs.org/en" rel="external nofollow">Node.js</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				جافا سكربت
			</td>
		</tr>
	</tbody>
</table>

<p>
	بعد تحديد <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%85-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r574/" rel="">خادم الويب</a> المناسب، نستطيع القول أنه قد أصبحت لدينا منهجية عمل DevOps شبه مُعَدّة للاستخدام.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="172404" href="https://academy.hsoub.com/uploads/monthly_2025_05/5_applicationserver.png.9f82b944fea2f0f3bf037521753d0254.png" rel=""><img alt="5 applicationserver" class="ipsImage ipsImage_thumbnailed" data-fileid="172404" data-unique="54agzjuod" src="https://academy.hsoub.com/uploads/monthly_2025_05/5_applicationserver.png.9f82b944fea2f0f3bf037521753d0254.png"> </a>
</p>

<p>
	يمكن التوقف هنا عند هذه الخطوة والمتابعة بمفردنا، لكن سنخصص الخطوة التالية للتحدث عن جودة الشيفرة لأهميتها.
</p>

<h2 id="5codetestingcoverage">
	5. اختبار تغطية الشيفرة Code Testing Coverage
</h2>

<p>
	قد يكون اختبار الشيفرة أمرًا مرهقًا ولكنه ضروري ويجب إجراؤه باكرًا لاكتشاف الأخطاء ورفع جودة الشيفرة وضمان رضا العملاء؛ ولكن توجد أدوات عدة مفتوحة المصدر لاختبار الشيفرة وتحسين جودتها, ويمكن توصيل معظم أدوات التكامل والنشر المستمر CI/CD مع أدوات الاختبار وأتمتة العملية.
</p>

<h3 id="codetestframeworks">
	أُطُر اختبار الشيفرة البرمجية Code Test Frameworks
</h3>

<p>
	هناك نوعان من أدوات اختبار الشيفرة، هما:
</p>

<ol>
	<li>
		أُطُر اختبار الشيفرة البرمجية Code test framework: وتساعد في كتابة الاختبارات وتشغيلها
	</li>
	<li>
		أدوات تحسين الجودة Code Quality Suggestion Tools: وتقدم اقتراحات تساعد على تحسين جودة الشيفرة البرمجية
	</li>
</ol>

<p>
	في الآتي جدول مكون من أهم أُطُر الاختبار:
</p>

<table>
	<thead>
		<tr>
			<th>
				إطار العمل
			</th>
			<th>
				الرخصة
			</th>
			<th>
				لغة البرمجة
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="https://junit.org/junit5" rel="external nofollow">JUnit</a>
			</td>
			<td>
				Eclipse Public License
			</td>
			<td>
				جافا
			</td>
		</tr>
		<tr>
			<td>
				<a href="http://easymock.org/" rel="external nofollow">EasyMock</a>
			</td>
			<td>
				أباتشي Apache
			</td>
			<td>
				جافا
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://docs.pytest.org/" rel="external nofollow">Pytest</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				Python
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/tox-dev/tox" rel="external nofollow">Tox</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				Python
			</td>
		</tr>
	</tbody>
</table>

<p>
	أما عن أدوات تحسين الجودة Code Quality Suggestion Tools، فيمكن ذكر الأدوات الآتية:
</p>

<table>
	<thead>
		<tr>
			<th>
				الأداة
			</th>
			<th>
				الرخصة
			</th>
			<th>
				لغة البرمجة
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="http://cobertura.github.io/cobertura" rel="external nofollow">Cobertura</a>
			</td>
			<td>
				GNU
			</td>
			<td>
				جافا
			</td>
		</tr>
		<tr>
			<td>
				<a href="http://emma.sourceforge.net/" rel="external nofollow">Emma</a>
			</td>
			<td>
				common Public License
			</td>
			<td>
				جافا
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/nedbat/coveragepy" rel="external nofollow">Coverage.py</a>
			</td>
			<td>
				Apache 2.0
			</td>
			<td>
				بايثون
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://github.com/tox-dev/tox" rel="external nofollow">Tox</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				Python
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://jasmine.github.io/" rel="external nofollow">Jasmine</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				جافا سكربت
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://jestjs.io/" rel="external nofollow">Jest</a>
			</td>
			<td>
				MIT
			</td>
			<td>
				جافا سكربت
			</td>
		</tr>
	</tbody>
</table>

<p>
	وكما نلاحظ، معظم الأدوات والأطر التي ذكرناها مكتوبة بلغة جافا، أو بايثون، أو جافا سكربت؛ أما لغتا C++‎ وC#‎ فهما من لغات البرمجة الخاصة Proprietary لكن المُترجِم المستخدم لترجمتهما <strong>GCC</strong> مفتوح المصدر.
</p>

<p>
	والآن بعد تطبيق أدوات اختبار التغطية، يجب أن يكون لدينا منهجية عمل DevOps تشبه المنهجية الموضحة في بداية مقالنا.
</p>

<h2 id="">
	خطوات إضافية لتحسين المنهجية
</h2>

<p>
	سنوضح فيما يلي بعض الخطوات الإضافية التي يمكن القيام بها لتحسين منهجية عمل DevOps الخاصة بنا.
</p>

<h3 id="containers">
	استخدام الحاويات Containers
</h3>

<p>
	ذكرنا سابقًا أن بإمكاننا استضافة خادم التطبيقات على آلة افتراضية أو خادم، كما يمكن استخدام <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-r641/" rel="">الحاويات containers</a> أيضًا.
</p>

<p>
	يقوم مفهوم الحاويات باختصار على أن الآلة الافتراضية تحتاج إلى مساحة كبيرة لنظام التشغيل تفوق حجم التطبيق، بينما تحتاج الحاوية فقط إلى عدد قليل من المكتبات والإعدادات لتشغيل التطبيق. لا تزال هناك استخدامات مهمة للآلات الافتراضية، ولكن الحاويات توّفر حلًا خفيف الوزن لاستضافة التطبيقات، بما في ذلك خادم التطبيقات.
</p>

<p>
	توجد خيارات مختلفة للحاويات، لكن <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AF%D9%88%D9%83%D8%B1-docker-r607/" rel="">دوكر Docker</a> وكوبرنيتس Kubernetes هما الأكثر شيوعًا.
</p>

<table>
	<thead>
		<tr>
			<th>
				الأداة
			</th>
			<th>
				الرخصة
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="https://www.docker.com/" rel="external nofollow">Docker</a>
			</td>
			<td>
				Apache 2.0
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://kubernetes.io/" rel="external nofollow">Kubernetes</a>
			</td>
			<td>
				Apache 2.0
			</td>
		</tr>
	</tbody>
</table>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="487" id="ips_uid_9479_5" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="ما هو كوبرنيتس Kubernetes" width="866" data-embed-src="https://www.youtube.com/embed/OQVZ_jyZwh4"></iframe>
</p>

<h3 id="middlewareautomationtools">
	أدوات الأتمتة الوسيطة Middleware automation tools
</h3>

<p>
	تركز منهجية عمل DevOps التي نفّذناه على إنشاء تطبيق ونشره بصورة تعاونية، ولكن هناك أمور أخرى عدّة يمكننا تنفيذها باستخدام أدوات DevOps، وأحدها هو الاستفادة من أدوات إدارة البنية التحتية باستخدام الشيفرة Infrastructure as Code واختصارًا IaC، والتي تُعرف أيضًا باسم أدوات الأتمتة الوسيطة.
</p>

<p>
	تساعد هذه الأدوات في أتمتة عمليات التثبيت والإدارة ومهام البرامج الوسيطة، حيث يمكن لأداة الأتمتة مثلًا أن تسحب الاعدادات المناسبة للتطبيقات، مثل خادم تطبيقات الويب وقواعد البيانات وأدوات المراقبة، ونشرها على خادم التطبيقات.
</p>

<p>
	وفيما يلي بعض أدوات الأتمتة الوسيطة مفتوحة المصدر:
</p>

<table>
	<thead>
		<tr>
			<th>
				الأداة
			</th>
			<th>
				الرخصة
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				<a href="https://www.saltstack.com/" rel="external nofollow">SaltStack</a>
			</td>
			<td>
				Apache 2.0
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.chef.io/" rel="external nofollow">Chef</a>
			</td>
			<td>
				Apache 2.0
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://www.ansible.com/" rel="external nofollow">Ansible</a>
			</td>
			<td>
				GNU Public
			</td>
		</tr>
		<tr>
			<td>
				<a href="https://puppet.com/" rel="external nofollow">Puppet</a>
			</td>
			<td>
				Apache أو GPL
			</td>
		</tr>
	</tbody>
</table>

<h2 id="-1">
	الخلاصة
</h2>

<p>
	تعلّمنا في هذا المقال كيفية إنشاء منهجية عمل لإنتاج البرمجيات بأسلوب DevOps باستخدام أدوات مفتوحة المصدر، وتعرفنا على أشهر أدوات التكامل والنشر المستمر CI/CD مفتوحة المصدر وأدوات إدارة الشيفرة المصدرية واختبارها، ويمكنك من الآن بدء تجربة إنشاء منهجية DevOps لمشروعك البرمجي الحقيقي.
</p>

<p>
	ترجمة، وبتصرّف، للمقال <a href="https://opensource.com/article/19/4/devops-pipeline" rel="external nofollow">A beginner's guide to building DevOps pipelines with open source tools</a> لكاتبه Bryant Son.
</p>

<h2 id="-2">
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%81%D9%8A-%D9%85%D8%AC%D8%A7%D9%84-devops-%D9%88%D8%A3%D9%87%D9%85-%D9%85%D9%85%D8%A7%D8%B1%D8%B3%D8%A7%D8%AA%D9%87-%D9%88%D8%A3%D8%AF%D9%88%D8%A7%D8%AA%D9%87-r844/" rel="">دليل المبتدئين في مجال DevOps وأهم ممارساته وأدواته</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%AA%D8%B9%D9%84%D9%85-devops/" rel="">المدخل الشامل لتعلم DevOps</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%A7%D9%84%D8%BA%D8%A7%D9%8A%D8%A9-%D9%85%D9%86-devops%D8%9F-r414/" rel="">ما هي الغاية من DevOps؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%A3%D9%81%D8%B6%D9%84-5-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%84%D9%80-devops-r416/" rel="">أفضل 5 لغات برمجة لـ DevOps</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">846</guid><pubDate>Fri, 27 Jun 2025 16:04:02 +0000</pubDate></item><item><title>&#x62F;&#x644;&#x64A;&#x644; &#x627;&#x644;&#x645;&#x628;&#x62A;&#x62F;&#x626;&#x64A;&#x646; &#x641;&#x64A; &#x645;&#x62C;&#x627;&#x644; DevOps &#x648;&#x623;&#x647;&#x645; &#x645;&#x645;&#x627;&#x631;&#x633;&#x627;&#x62A;&#x647; &#x648;&#x623;&#x62F;&#x648;&#x627;&#x62A;&#x647;</title><link>https://academy.hsoub.com/devops/general/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%81%D9%8A-%D9%85%D8%AC%D8%A7%D9%84-devops-%D9%88%D8%A3%D9%87%D9%85-%D9%85%D9%85%D8%A7%D8%B1%D8%B3%D8%A7%D8%AA%D9%87-%D9%88%D8%A3%D8%AF%D9%88%D8%A7%D8%AA%D9%87-r844/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2025_05/DevOps.png.7fcac3f8eb69af06e18df3b5dfc40eaa.png" /></p>
<p>
	طرأت تطورات كثيرة منذ أن أصبح مصطلح DevOps شائعًا في عالم تقنية المعلومات. ونظرًا لكثرة المصادر المفتوحة في هذا المجال، فمن المفيد الاطلاع على نشأة هذا المصطلح وأهميته في المهن التقنية.
</p>

<p>
	سنلقي الضوء في مقالنا هذا على مفهوم تخصص DevOps وأهميته، ونستعرض أساليبه، وأطر عمله، وأدواته.
</p>

<h2 id="-devops">
	ما هو تخصص DevOps
</h2>

<p>
	لا يوجد تعريف واحد لمصطلح <a href="https://academy.hsoub.com/devops/general/%D8%AA%D8%B9%D9%84%D9%85-devops/" rel="">DevOps</a>، لكن يمكن أن نعُدّه إطار عمل يضمن التعاون بين فرق التطوير Development المسؤولة عن كتابة الشيفرة البرمجية للتطبيق، وفرق العمليات Operations المسؤولة عن نشر الشيفرات والبرامج في بيئات الإنتاج بسرعة وبطريقة مؤتمتة Automated وقابلة للتكرار أي يمكن تشغيلها عدة مرات دون مشكلات.
</p>

<p>
	ومصطلح DevOps هو دمج لكلمتي تطوير Development وعمليات Operations. وهو <a href="https://academy.hsoub.com/devops/general/%D9%84%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D8%B9%D8%AF-devops-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%D9%8A%D8%AC%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D9%82%D9%86%D9%8A%D8%A9-%D8%A7%D9%84%D8%A3%D9%83%D8%AB%D8%B1-%D8%A3%D9%87%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D9%8A%D9%88%D9%85-r421/" rel="">تقنية مهمة</a> جدًا تساعد على زيادة سرعة تسليم التطبيقات والخدمات، وتتيح للمؤسسات خدمة عملائها بكفاءة أعلى، وتزيد قدرتها على المنافسة في السوق.
</p>

<p>
	يركّز منهج DevOps على نشر ثقافة التوافق بين فرق التطوير وفرق تقنية المعلومات وتحسين التواصل والتعاون بينهما، ويولد تطبيق ممارسات DevOps في المؤسسة قيمة مستمرة للعملاء، ويعتمد على ثلاث ركائز أساسية هي الأشخاص People، والعمليات Processes، والأدوات Tools. فالأشخاص هم الذين يقومون بالعمل، والعمليات هي الطريقة التي ينجز بها العمل، أما الأدوات فهي البرامج التي تساعد على تنفيذ العمل بشكل أسرع وأسهل من خلال الأتمتة والتي سنوضحها بمزيد من التفصيل لاحقًا.
</p>

<p>
	يزيد تطبيق ممارسات DevOps من قدرة المؤسسات على تقديم حلول برمجية عالية الجودة بوتيرة سريعة، وذلك من خلال أتمتة جميع العمليات الخاصة بتطبيق أو منتج ما، بدءًا من إنشائه، وحتى نشره إلى المستخدمين.
</p>

<h2 id="-">
	التحديات التي يواجهها فريق التطوير
</h2>

<p>
	يكون المطورون متحمسين عادةً ومستعدين لتبني أساليب وتقنيات جديدة لحل المشكلات، لكنهم قد يواجهون التحديات التالية:
</p>

<ul>
	<li>
		يخلق السوق التنافسي ضغطًا كبيرًا على المطورين لتسليم المشروع في الوقت المحدد
	</li>
	<li>
		يجب على المطورين الالتزام بجعل الشيفرة البرمجية جاهزة ومناسبة لبيئات الإنتاج وتطبيق المميزات الجديدة
	</li>
	<li>
		يتعين على فريق التطوير وضع عدة توقعات قبل نشر التطبيق بسبب طول دورة إصدار التطبيقات، لذا يستغرق حل المشكلات التي تحدث أثناء النشر مزيدًا من الوقت في بيئات الإنتاج أو في مرحلة التهيئة الأخيرة قبل النشر Staging Environment.
	</li>
</ul>

<h2 id="-">
	التحديات التي يواجهها فريق العمليات
</h2>

<p>
	فريق العمليات هو المسؤول عن تشغيل التطبيقات بشكل مستقر وآمن على الخوادم أو الخدمات السحابية، وضمان أن تعمل التطبيقات كما ينبغي بعد نشرها للمستخدمين النهائيين، ويركّز هذا الفريق على استقرار وموثوقية الخدمات التقنية. ولذلك نجدهم يهتمون بإجراء تغييرات على الموارد أو التقنيات أو الأساليب المتبعة لتحقيق استقرار التطبيقات، وقد يواجهون التحديات التالية:
</p>

<ul>
	<li>
		إدارة التنافس على الموارد، وتوفير موارد كافية عند زيادة الطلب عليها
	</li>
	<li>
		التعامل مع عمليات إعادة تصميم البنية التحتية للتطبيق وإجراء التعديلات المطلوبة لتنفيذ التطبيق في بيئة الإنتاج
	</li>
	<li>
		تشخيص المشكلات التي قد تظهر في بيئة الإنتاج، وحلّها بصورة منفصلة بعد نشر التطبيق
	</li>
</ul>

<h2 id="-devops-">
	كيف تعالج منهجية DevOps تحديات فريقي التطوير والعمليات
</h2>

<p>
	بدلًا من إطلاق ميزات كثيرة للتطبيق في وقت واحد، تحاول الشركات طرح عدد صغير من الميزات لعملائها من خلال سلسلة من تكرارات الإصدار Release Iterations، ولهذا الأمر عدة مزايا، مثل تحقيق جودة أعلى للبرامج، والحصول على تقييمات العملاء بصورة أسرع وهذا يضمن رضاهم.
</p>

<p>
	ولتحقيق هذه الأهداف يجب على الشركات تحقيق التالي:
</p>

<ul>
	<li>
		تقليل احتمالية فشل الإصدارات الجديدة بجعل كل تحديث أصغر وأسهل في الاختبار
	</li>
	<li>
		زيادة وتيرة النشر عن طريق إطلاق نسخ محدثة بوتيرة أسرع وبشكل منتظم
	</li>
	<li>
		تقصير وقت التعافي MTTR في حال حدوث خلل بعد نشر إصدار جديد، لتعود الخدمة لطبيعتها بسرعة
	</li>
	<li>
		تسريع وقت التسليم Lead Time، أي تقليل المدة بين اكتشاف المشكلة وإطلاق الإصلاح الخاص بها
	</li>
</ul>

<p>
	تحقق منهجية DevOps كل هذه الأهداف، وتساعدنا على تحقيق التسليم السلس للمشاريع والتطبيقات. لذا تتبنى المؤسسات منهجية DevOps لتحقق مستويات من الأداء لم تكن ممكنة قبل بضع سنوات إذ يمكنها من خلالها نشر عشرات أو مئات أو حتى آلاف من التحديثات يوميًا، إلى جانب توفير موثوقية واستقرار وأمان على مستوى عالٍ.
</p>

<p>
	يهتم نهج DevOps بمعالجة مجموعة متنوعة من المشكلات التي تنتج عن المنهجيات السابقة، بما في ذلك:
</p>

<ul>
	<li>
		مشكلة عمل فرق التطوير والتشغيل بصورة منفصلة عن بعضهم
	</li>
	<li>
		مشكلة إنجاز مرحلتي الاختبار والنشر كلّ على حدة بعد انتهاء مرحلتي التصميم والبناء، وذلك يتطلب وقتًا أطول من دورات البناء
	</li>
	<li>
		مشكلة قضاء أعضاء الفريق وقتًا طويلًا في الاختبار والنشر والتصميم بدلًا من التركيز على إنشاء خدمات للأعمال
	</li>
	<li>
		مشكلة حدوث أخطاء الإنتاج عند النشر اليدوي للكود
	</li>
	<li>
		مشكلة عمل فرق التطوير والعمليات وفق جداول زمنية منفصلة وغير متزامنة، مما يسبب تأخيرات إضافية في العمل
	</li>
</ul>

<h2 id="-agile-devops-it-">
	مقارنة بين منهجية أجايل Agile و DevOps وتقنية Waterfall التقليدية
</h2>

<p>
	تُقارَن DevOps مع المنهجيات الأخرى في مجال تقنية المعلومات، ولا سيّما منهجيّتي أجايل Agile و<a href="https://academy.hsoub.com/entrepreneurship/business/%D9%83%D9%84-%D9%85%D8%A7-%D8%AA%D8%AD%D8%AA%D8%A7%D8%AC-%D9%84%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%B9%D9%86-%D9%85%D9%86%D9%87%D8%AC%D9%8A%D8%A9-%D8%AA%D8%AF%D9%81%D9%82-%D8%A7%D9%84%D9%85%D9%8A%D8%A7%D9%87-waterfall-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-r1107/" rel="">الشلال Waterfall</a>.
</p>

<p>
	تتكون <a href="https://academy.hsoub.com/entrepreneurship/business/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%84%D9%85%D9%86%D9%87%D8%AC%D9%8A%D8%A9-%D8%A3%D8%AC%D8%A7%D9%8A%D9%84-agile-r1047/" rel="">أجايل Agile </a> من مجموعة من المبادئ والقيم والأساليب المُتّبعة لإنتاج البرمجيات. فمثلًا، إن أردنا تحويل فكرة إلى برنامج، فيمكننا الاستفادة من مبادئ وقيم أجايل، لكن هذا البرنامج قد يعمل فقط في بيئة التطوير أو الاختبار، لذا سنحتاج إلى طريقة لنقل البرنامج بسرعة وتكرار إلى بيئة الإنتاج بطريقة بسيطة وآمنة، والطريقة هي استخدام أدوات وتقنيات DevOps؛ إذ تركّز منهجية أجايل لتطوير البرمجيات على عمليات التطوير، عكس منهجية DevOps المسؤولة عن التطوير والنشر بطريقة أكثر أمانًا وموثوقية.
</p>

<p>
	والآن لنقارن بين منهجية الشلال أو تدفق المياه <a href="https://academy.hsoub.com/entrepreneurship/business/%D9%83%D9%84-%D9%85%D8%A7-%D8%AA%D8%AD%D8%AA%D8%A7%D8%AC-%D9%84%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%B9%D9%86-%D9%85%D9%86%D9%87%D8%AC%D9%8A%D8%A9-%D8%AA%D8%AF%D9%81%D9%82-%D8%A7%D9%84%D9%85%D9%8A%D8%A7%D9%87-waterfall-%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D9%85%D8%B4%D8%A7%D8%B1%D9%8A%D8%B9-r1107/" rel="">Waterfall</a> التقليدية ومنهجية DevOps لفهم الفوائد التي تقدمها DevOps. سنفترض أن لدينا السيناريو التالي:
</p>

<p>
	لدينا تطبيق سيُشغَّل بعد أربعة أسابيع، واكتملت عملية كتابة الشيفرة بنسبة 85%، وبدأت عملية شراء الخوادم التي ستُرفع الشيفرة البرمجية عليها.
</p>

<p>
	يوضّح الجدول التالي الفروقات بين تطبيق المنهجيتين في هذه الحالة:
</p>

<table>
	<thead>
		<tr>
			<th>
				النهج التقليدي
			</th>
			<th>
				نهج DevOps
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				يعمل فريق التطوير على الاختبار بعد تقديم طلب لشراء الخوادم الجديدة، ويعمل فريق العمليات على تجهيز الأعمال الورقية اللازم لنشر البنية التحتية
			</td>
			<td>
				بعد تقديم طلب شراء الخوادم، يعمل فريق التطوير والعمليات معًا على العمليات والأوراق اللازمة لإعداد الخوادم الجديدة. ويؤدي هذا إلى فهم أفضل لمتطلبات البنية التحتية
			</td>
		</tr>
		<tr>
			<td>
				لا تكون المعلومات المتعّلقة بتجاوز الفشل والتكرار ومواقع مراكز البيانات، ومتطلبات التخزين دقيقة بسبب عدم توفر مدخلات من فريق التطوير الذي لديه معرفة عميقة بالتطبيق
			</td>
			<td>
				المعلومات المتعّلقة بتجاوز الفشل والتكرار والتعافي من الكوارث ومواقع مراكز البيانات ومتطلبات التخزين معروفة وصحيحة بسبب مدخلات فريق التطوير
			</td>
		</tr>
		<tr>
			<td>
				لا يعلم فريق العمليات بالتقدم الذي أحرزه فريق التطوير، إذ يضع فريق العمليات خطة مراقبة بناءً على فهمهم
			</td>
			<td>
				يطّلع فريق العمليات على تقدم فريق التطوير، ويتعاون الفريقان في وضع خطة مراقبة تلبي احتياجات تقنية المعلومات والأعمال. ويستخدمون أدوات مراقبة أداء التطبيقيات APM Tools
			</td>
		</tr>
		<tr>
			<td>
				يؤدي اختبار التحميل Load Test قبل إتاحة التطبيق للعموم إلى تعطل التطبيق، مما يؤدي إلى تأخير إصداره
			</td>
			<td>
				يؤدي اختبار التحميل قبل إتاحة التطبيق إلى بطء التطبيق. يُصلَح فريق التطوير الاختناقات بسرعة، ويُصدَر التطبيق في الوقت المحدد
			</td>
		</tr>
	</tbody>
</table>

<h2 id="-devops">
	دورة حياة المشاريع في DevOps
</h2>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2025_05/001devopsprocesses.png.273934ba841695f2b01cf3cd62a6aeb4.png" data-fileid="171626" data-fileext="png" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="171626" data-ratio="53.22" data-unique="zp5615z96" width="900" alt="001 devopsprocesses.png" src="https://academy.hsoub.com/uploads/monthly_2025_05/001devopsprocesses.thumb.png.54c0fa158b00f73a70a45d6ceec2c711.png"></a>
</p>

<p>
	سنستعرض فيما يلي بعض الممارسات الشائعة في منهجية DevOps.
</p>

<h3 id="-continuous-planning">
	التخطيط المستمر Continuous Planning
</h3>

<p>
	يعتمد التخطيط المستمر على <a href="https://academy.hsoub.com/entrepreneurship/business/%D9%85%D8%A7-%D9%87%D9%88-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D9%86-lean-software-development%D8%9F-r1094/" rel="">مبادئ تطوير البرمجيات المرن lean</a> للعمل بخطوات صغيرة، وذلك من خلال تحديد الموارد والنتائج اللازمة لاختبار قيم العمل أو رؤيته، والتكيف باستمرار، وقياس التقدم، والتعلم من احتياجات العملاء، وتعديل العمل بسرعة وفقًا للحاجة وتحديث خطة العمل.
</p>

<h3 id="-collaborative-development">
	التطوير التعاوني Collaborative Development
</h3>

<p>
	تتيح عملية التطوير التعاوني Collaborative Development إمكانية التعاون بين الفريق التجاري وفريق التطوير وفريق الاختبار المنتشرين في مناطق مختلفة لتقديم برامج ذات جودة عالية باستمرار، ويتضمن ذلك تطوير منصات متعددة، ودعم البرمجة متعددة اللغات، وإنشاء قصص المستخدمين، ووضع الأفكار، وإدارة دورة حياة المشروع.
</p>

<p>
	يشتمل التطوير التعاوني على عملية التكامل المستمر، مما يعزز دمج الشيفرة البرمجية Code Integration بتكرار، ويؤدي ذلك إلى تحديد مشكلات التكامل في وقت مبكر من دورة الحياة التطبيق حيث يكون إصلاحها أسهل، ويُخفّض جهد التكامل الإجمالي من خلال الآراء والتقييمات المستمرة، لأن المشروع يُظهر تقدمًا مستمرًا ومثبتًا.
</p>

<h3 id="-continuous-testing">
	الاختبار المستمر Continuous Testing
</h3>

<p>
	يؤدي الاختبار المستمر إلى تقليل تكلفة الاختبار ومساعد فرق التطوير على تحقيق التوازن بين سرعة الإنجاز والجودة، كما يزيل اختناقات الاختبار Testing Bottlenecks من خلال الخدمات الافتراضية ويبسط إنشاء بيئات اختبار افتراضية يمكن مشاركتها ونشرها وتحديثها بسهولة عند تغيير الأنظمة.
</p>

<p>
	تخفّض هذه الميزات تكلفة توفير بيئات الاختبار وصيانتها، وتقصّر المدة اللازمة لإتمام دورات الاختبار من خلال إتاحة اختبار التكامل في وقت مبكر من دورة حياة المشروع.
</p>

<h3 id="-continuous-release-continuous-deployment">
	الإصدار المستمر Continuous Release والنشر المستمر Continuous Deployment
</h3>

<p>
	يوفر الإصدار والنشر المستمران خطوط إنتاج مستمرة تعمل على أتمتة العمليات الرئيسية، ويقللان من العمليات اليدوية وأوقات انتظار إتاحة الموارد وكمية العمل، وذلك من خلال تفعيل خاصيّة النشر بضغطة زر، مما يتيح زيادة عدد الإصدارات وتقليل الأخطاء.
</p>

<p>
	تلعب الأتمتة دورًا رئيسيًا في ضمان إصدار البرنامج بتكرار وموثوقية؛ إذ إن أحد الأهداف الرئيسية هو أتمتة العمليات اليدوية مثل عملية بناء التطبيقات والانحدار Regression والنشر وتوفير البنية التحتية.
</p>

<p>
	ويتطلب هذا إدارة إصدارات الشيفرة المصدرية، مثل استخدام البرامج النصية لأتمتة عمليات الاختبار والنشر، وأتمتة إعدادات التطبيقات والبنية التحتية، والمكتبات والحزم التي يعتمد عليها التطبيق؛ إذ تُعدّ القدرة على الاستعلام عن حالة جميع البيئات عاملًا مهمًا.
</p>

<h3 id="-continuous-monitoring">
	المراقبة المستمرة Continuous Monitoring
</h3>

<p>
	توفر المراقبة المستمرة إمكانية إعداد التقارير على مستوى المؤسسة، ويساعد ذلك فرق التطوير على الإطلاع على أداء التطبيقات ومدى توفرها في بيئة الإنتاج، قبل نشرها.
</p>

<p>
	تُعَدّ التقييمات والآراء Feedback التي توفرها المراقبة المستمرة في مراحل مبكّرة ذات أهمية كبيرة في خفض الأخطاء وتوجيه المشاريع في الاتجاه الصحيح. وغالبًا ما تتضمن هذه المرحلة أدوات المراقبة التي تكشف عن المقاييس المتعلقة بأداء التطبيق.
</p>

<h3 id="-continuous-feedback-optimization">
	المراجعة والتقييم والتحسين Optimization
</h3>

<p>
	توفر التقييمات والآراء المستمرة Continuous Feedback من العملاء وسائل مساعدة لتحليل تجربتهم للتطبيق وتحديد النقاط التي يجب تحسينها. ويمكن إتاحتهما قبل الإنتاج وبعده لزيادة الاستفادة إلى أقصى حد وضمان إتمام مزيد من المعاملات بنجاح إذ يُتيح ذلك معرفة السبب الجذري للمشكلات التي يواجهها العملاء، والتي تؤثر على السلوك من جهة، وعلى العمل من جهة أخرى.
</p>

<h2 id="-devops-">
	فوائد تطبيق منهجية DevOps في بيئة العمل
</h2>

<p>
	يؤمّن تطبيق منهجية DevOps بيئة عمل يتعاون فيها فريق التطوير وفريق إدارة البرمجيات ويعملان كفريق واحد لتحقيق أهداف مشتركة. ويتميز ذلك بتنفيذ التكامل المستمر والتسليم المستمر CI/CD، مما يتيح إصدار البرامج بسرعة وأخطاء أقل ويعود علينا بجملة من الفوائد تشمل:
</p>

<ul>
	<li>
		<strong>القدرة على التنبؤ بنتائج الإصدارات الجديدة</strong>: عند تطبيق ممارسات DevOps في بيئة العمل، سينخفض معدل فشل الإصدارات الجديدة للتطبيقات كثيرًا
	</li>
	<li>
		<strong>قابلية الصيانة</strong>: سنتمكن من استرداد التطبيق بسهولة في حالة عدم عمل الإصدار الجديد أو تعطل التطبيق
	</li>
	<li>
		<strong>إمكانية التكرار</strong>: فبفضل أدوات إدارة الإصدارات، سنتمكن من تتبع التغييرات بدقة والرجوع إلى إصدارات سابقة بسهولة عند الحاجة
	</li>
	<li>
		<strong>جودة أعلى للتطبيقات</strong>: تؤدي إدارة مشكلات البنية التحتية لتحسين جودة التطبيقات
	</li>
	<li>
		<strong>تقصير وقت إطلاق التطبيق</strong>: يؤدي تسليم البرامج المبسط إلى تقليل الوقت اللازم لتسليمه وتوفره في السوق بنسبة 50%
	</li>
	<li>
		<strong>تقليل المخاطر</strong>: وذلك عن طريق تعزيز الأمان في دورة حياة البرنامج، مما يؤدي إلى تقليل الأخطاء والعيوب التي قد تظهر
	</li>
	<li>
		<strong>فعالية التكلفة</strong>: تؤدي ممارسات DevOps لتخفيض تكلفة تطوير البرمجيات
	</li>
	<li>
		<strong>المرونة</strong>: يكون نظام البرمجيات أكثر استقرارًا وأمانًا، مع إمكانية تتبع التغييرات وتدقيقها بسهولة
	</li>
	<li>
		<strong>تقسيم قاعدة الشيفرات البرمجية الكبيرة لأجزاء أصغر</strong>: تتكامل ممارسات DevOps مع منهجيات أجايل، مما يساعد على تقسيم الكود لأجزاء صغيرة يسهل إدارتها واختبارها ونشرها
	</li>
</ul>

<h2 id="-devops">
	مبادئ DevOps
</h2>

<p>
	مبادئ DevOps كثيرة، وهي تتطور مع الوقت حسب احتياجات كل شركة. فبعض الشركات تضيف تغييرات خاصة بها، لكن في النهاية، تشكل هذه المبادئ طريقة عمل شاملة تساعد الفرق على التعاون بشكل أفضل، وتسليم البرامج بسرعة وجودة.
</p>

<p>
	ومن أهم هذه المبادئ نذكر:
</p>

<h3 id="1-">
	1. التطوير والاختبار في بيئة شبيهة ببيئة الإنتاج
</h3>

<p>
	الهدف من هذا المبدأ هو السماح لفرق التطوير وفرق ضمان الجودة Quality Assurance -أو اختصارًا QA- بتطوير البرمجيات واختبارها في بيئات قريبة من بيئات الإنتاج Production Systems، كي يعاينوا أداء التطبيقات قبل أن تصبح جاهزة للنشر.
</p>

<p>
	يجب أن يتعرض التطبيق لأنظمة شبيهة بالإنتاج في وقت مبكر قدر الإمكان من دورة حياته لمعالجة الأمور التالية:
</p>

<ul>
	<li>
		اختبار التطبيق في بيئة قريبة من البيئة الفعلية
	</li>
	<li>
		السماح باختبار عمليات تسليم التطبيق والتحقق من صحته مقدمًا
	</li>
	<li>
		تمكين فريق العمليات من اختبار أداء البيئة عند نشر التطبيق في مرحلة مبكرة من دورة حياته وتعديل البيئة بما يناسب التطبيق
	</li>
</ul>

<h3>
	2. النشر باستخدام عمليات موثوقة وقابلة للتكرار
</h3>

<p>
	يسمح هذا المبدأ لفرق التطوير والعمليات بتنفيذ منهجية أجايل المرنة في تطوير البرمجيات طوال دورة حياة المشروع، إذ تُعدّ الأتمتة مهمةً لإنشاء عمليات متكررة وموثوقة  ولذلك يجب على المؤسسات إنشاء خط تسليم Delivery Pipeline يتيح إمكانية النشر والاختبار المستمر والمؤتمت، مما يضمن أن كل تحديث جرى اختباره قبل أن نشره بشكل فعلي، وبالتالي تقليل مخاطر فشل النشر أثناء الإصدار الفعلي للتطبيق.
</p>

<h3 id="3-operational-quality">
	3. مراقبة الجودة التشغيلية Operational Quality
</h3>

<p>
	تُجيد المؤسسات مراقبة أداء التطبيقات في بيئة الإنتاج لأن لديها أدوات لمراقبة المقاييس ومؤشرات الأداء الرئيسية KPIs في الوقت الفعلي. ويُطبَق هذا المبدأ في وقت مبكر من دورة حياة التطبيق، مما يضمن أن الاختبارات الآلية تراقب السمات الوظيفية وغير الوظيفية للتطبيق في وقت مبكر.
</p>

<p>
	يجب جمع مقاييس <a href="https://academy.hsoub.com/entrepreneurship/business/%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84-%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1-%D8%A7%D9%84%D9%82%D8%A8%D9%88%D9%84-%D9%84%D8%B6%D9%85%D8%A7%D9%86-%D8%AC%D9%88%D8%AF%D8%A9-%D8%A7%D9%84%D9%85%D9%86%D8%AA%D8%AC-r1114/" rel="">الجودة</a> وتحليلها عند اختبار تطبيق ما ونشره، إذ يضمن ذلك كشف مشكلات التشغيل التي قد تحدث أثناء الإنتاج. ويجب جمع هذه المقاييس وصياغتها بطريقة يمكن لجميع المشاركين في المشروع ومالكي الأسهم فهمها.
</p>

<h3 id="4-feedback-">
	4. جمع تقييمات وآراء موسعة حول التطبيق
</h3>

<p>
	إن أحد أهداف عمليات DevOps هو تمكين المؤسسات من التفاعل وإجراء التغييرات بسرعة أكبر. يتطلب تحقيق هذا الهدف في مجال تسليم البرمجيات جمع تقييمات وآراء Feedback مبكرة، ومن ثم التعلم بسرعة من كل إجراء.
</p>

<p>
	يدعو هذا المبدأ المؤسسات إلى إنشاء قنوات اتصال تسمح لمالكي الأسهم وأصحاب المشروع بإجراء التقييمات والتصرف بناءً عليها، ومن ثم قد يعدل فريق التطوير خطط المشروع، أو قد يجري تعديلات على بيئات الإنتاج و يحسنها.
</p>

<h2 id="-devops">
	قائمة بأهم أدوات DevOps
</h2>

<p>
	من أهم أدوات DevOps مفتوحة المصدر في مجال تطوير البرمجيات وإدارة العمليات نذكر الآتي:
</p>

<h3 id="-development">
	أهم أدوات عملية التطوير Development
</h3>

<ul>
	<li>
		<strong>مرحلة التخطيط</strong>: أداة Kanboard وWekan و<a href="https://ana.hsoub.com" rel="external">أنا</a> و<a href="https://gitlab.com/gitlab-org/gitlab" rel="external nofollow">GitLab</a> و<a href="https://github.com/Enalean/tuleap" rel="external nofollow">Tuleap</a> و <a href="https://www.redmine.org/" rel="external nofollow">Redmine</a> وبدائل جيرا JIRA مثل Mattermost و Roit.im و IRC.
	</li>
	<li>
		<strong>مرحلة كتابة الشيفرة</strong>: <a href="https://git-scm.com/" rel="external nofollow">غيت Git</a> و <a href="https://gerrit.googlesource.com/gerrit/" rel="external nofollow">Gerrit</a> و <a href="https://github.com/bugzilla/bugzilla" rel="external nofollow">Bugzilla</a> و <a href="https://github.com/jenkinsci/jenkins" rel="external nofollow">جينكينز Jenkins</a>.
	</li>
	<li>
		<strong>مرحلة بناء التطبيق</strong>: <a href="https://maven.apache.org/scm.html" rel="external nofollow">Apache Maven</a> و <a href="https://github.com/gradle/gradle" rel="external nofollow">Gradle</a> و <a href="https://ant.apache.org/" rel="external nofollow">Apache Ant</a> و <a href="https://packer.io/" rel="external nofollow">Packer</a>
	</li>
	<li>
		<strong>مرحلة الاختبار</strong>: <a href="https://github.com/junit-team/junit4" rel="external nofollow">JUnit</a> و <a href="https://cucumber.io/tools/cucumber-open/" rel="external nofollow">Cucumbe</a> و <a href="https://opensource.com/article/19/4/devops-pipeline-acceptance-testing" rel="external nofollow">Selenium</a> و <a href="https://jmeter.apache.org/usermanual/get-started.html" rel="external nofollow">Apache JMeter</a>
	</li>
</ul>

<h3 id="-op-eration-s-">
	أهم أدوات عملية إدارة العمليات Operations
</h3>

<ul>
	<li>
		<strong>مرحلة الإصدار والنشر والتشغيل</strong>: <a href="https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/" rel="external nofollow">Kubernetes</a> و <a href="https://www.hashicorp.com/products/nomad/" rel="external nofollow">Nomad</a> و <a href="https://github.com/jenkinsci/jenkins" rel="external nofollow">جينكينز Jenkins</a> و Zuul و Spinnaker و <a href="https://www.ansible.com/use-cases/application-deployment" rel="external nofollow">Ansible</a> و <a href="https://zookeeper.apache.org/" rel="external nofollow">Apache ZooKeeper</a> و <a href="https://github.com/etcd-io/etcd" rel="external nofollow">etcd</a> و <a href="https://github.com/Netflix/archaius/wiki/Overview" rel="external nofollow">Netflix Archaius</a> و <a href="https://www.terraform.io/" rel="external nofollow">Terrafo</a>
	</li>
	<li>
		<strong>مرحلة المراقبة</strong>: <a href="https://prometheus.io/" rel="external nofollow">Prometheus</a> و <a href="https://github.com/NagiosEnterprises/nagioscore" rel="external nofollow">Nagios</a> و <a href="https://github.com/influxdata/influxdb" rel="external nofollow">InfluxDB</a> و <a href="https://www.fluentd.org/" rel="external nofollow">Fluentd</a> وكما هو موضح، فقد دمجنا مرحلة التشغيل الأخيرة مع مرحلتي الإصدار والنشر بسبب تشابه أدواتها.
	</li>
</ul>

<h2 id="-">
	الخاتمة
</h2>

<p>
	بهذا نصل لختام مقالنا الذي وضحنا فيه منهجية DevOps التي تهدف لربط فريق تطوير التطبيقات وفريق العمليات في وحدة متماسكة، وهي منهجية ذات شعبية متزايدة تختلف عن الطرق القديمة والتقليدية المستخدمة في إدارة الأنظمة وتطوير البرمجيات حيث كانت الفرق تعمل بمعزل عن بعضها، وتشبه كما وضحنا منهجية أجايل في بعض النقاط ولكنها ليست مثلها تمامًا.
</p>

<p>
	ترجمة، وبتصرّف، للمقال <a href="https://opensource.com/article/20/2/devops-beginners" rel="external nofollow">A beginner's guide to everything DevOps</a> لكاتبه Sameer S Paradkar.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%AA%D8%B9%D9%84%D9%85-devops/" rel="">المدخل الشامل لتعلم DevOps</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D9%82%D9%8A%D9%82-%D9%86%D9%87%D8%AC-devsecops-%D8%A8%D9%86%D8%AC%D8%A7%D8%AD-r524/" rel="">كيفية تحقيق نهج DevSecOps بنجاح</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%B9%D9%86-%D8%A7%D9%84%D9%86%D8%B4%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-continuous-delivery-r806/" rel="">دليلك الشامل عن النشر المستمر Continuous Delivery</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/entrepreneurship/business/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%84%D9%85%D9%86%D9%87%D8%AC%D9%8A%D8%A9-%D8%A3%D8%AC%D8%A7%D9%8A%D9%84-agile-r1047/" rel="">دليل المبتدئين لمنهجية أجايل Agile</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/entrepreneurship/business/%D9%85%D8%A7-%D9%87%D9%88-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D9%86-lean-software-development%D8%9F-r1094/" rel="">ما هو إطار عمل تطوير البرمجيات المرن Lean Software Development</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">844</guid><pubDate>Sun, 04 May 2025 09:08:01 +0000</pubDate></item><item><title>&#x627;&#x644;&#x641;&#x648;&#x627;&#x626;&#x62F; &#x627;&#x644;&#x639;&#x634;&#x631; &#x644;&#x646;&#x638;&#x627;&#x645; &#x62A;&#x634;&#x63A;&#x64A;&#x644; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x641;&#x64A; &#x62A;&#x637;&#x648;&#x64A;&#x631; &#x627;&#x644;&#x62A;&#x637;&#x628;&#x64A;&#x642;&#x627;&#x62A;</title><link>https://academy.hsoub.com/devops/general/%D8%A7%D9%84%D9%81%D9%88%D8%A7%D8%A6%D8%AF-%D8%A7%D9%84%D8%B9%D8%B4%D8%B1-%D9%84%D9%86%D8%B8%D8%A7%D9%85-%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%81%D9%8A-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-r835/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2025_02/-------.png.8b6a97bf768ba623b26ae56bb7cc267e.png" /></p>
<p>
	ظهر نظام تشغيل لينكس عام 1991، ومنذ ذلك الحين اكتسب شهرة واسعة وزاد استخدامه بين مطوري البرمجيات، خاصة في مجال تطوير التطبيقات. وسنستعرض في هذا المقال عشرة من أهم مزايا لينكس التي تجعل منه أداة أساسية في بيئة العمل لتطوير التطبيقات الناجحة.
</p>

<h2 id="-1">
	ما هو نظام تشغيل لينكس؟
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2025_02/-------.png.8a936896c6d7cba96f3c06d225746248.png" data-fileid="166512" data-fileext="png" rel=""><img alt="ما هو نظام تشغيل لينكس" class="ipsImage ipsImage_thumbnailed" data-fileid="166512" data-ratio="62.50" data-unique="gcu8dbufn" style="width: 400px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2025_02/-------.thumb.png.4a1486a92992da98e0a67774dc1cd683.png"></a>
</p>

<p>
	يعد <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r799/" rel="">لينكس</a> نظام تشغيل <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">مفتوح المصدر</a> طوره المبرمج الأمريكي لينوس بنديكت تورڤالدس Linus Benedict Torvalds ليكون شبيهًا لنظام يونكس UNIX-Like و<a href="https://academy.hsoub.com/devops/linux/%D8%B9%D8%B1%D8%B6-%D9%85%D9%88%D8%AC%D8%B2-%D9%84%D8%A3%D8%B4%D9%87%D8%B1-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r631/" rel="">متعدد التوزيعات</a>، فمن أشهر توزيعاته دبيان Debian، وأوبونتو Ubuntu، وفيدورا Fedora، كما تتوفر توزيعات لينكس مدفوعة أيضًا وأشهرها ريد هات إنتربرايز لينكس Red Hat Enterprise Linux وسينت أو إس CentOS.
</p>

<p>
	وكذلك يعد لينكس <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%85%D9%83%D9%88%D9%86%D8%A7%D8%AA-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%B9%D9%85%D9%84%D9%87%D8%A7-r2260/" rel="">نظام تشغيل</a> متعدد المنصات، إذ يمكن تشغيل توزيعاته المختلفة على أجهزة متعددة دون حدوث أعطال أو مشكلات، مما يجعله خيارًا مميزًا لمطوري البرمجيات المدمجة Embedded Software، سواءً كانت هذه البرمجيات المدمجة موجهة لأجهزة الحاسوب الشخصية أو حتى موجهة إلى خوادم وأجهزة فائقة القدرات.
</p>

<h2 id="-2">
	لماذا نستخدم لينكس عند تطوير التطبيقات؟
</h2>

<p>
	يعود تفضيل نظام التشغيل لينكس عند تطوير التطبيقات إلى كثير من مميزات نظام التشغيل، لنستكشف أبرزها معًا.
</p>

<h3 id="1">
	1. لينكس مجاني ومفتوح المصدر
</h3>

<p>
	يتميز لينكس Linux بكونه نظام تشغيل مجاني بالكامل فلسنا بحاجة لدفع أية مبالغ مالية لتثبيته واستخدامه، مما يجعله مناسبًا لتنفيذ مشاريع <a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA/" rel="">تطوير التطبيقات</a> ذات الميزانية المحدودة، كما أنه مفتوح المصدر، ما يعني أن شيفرات نظام التشغيل متوفرة للاطلاع عليها وتعديلها، وبالتالي يمكننا تعديل نظام التشغيل وإضافة المميزات إليه وتخصيصه حسب احتياجاتنا المختلفة.
</p>

<h3 id="2">
	2. يدعم لينكس قابلية التوسع
</h3>

<p>
	يدعم نظام تشغيل لينكس تطوير وتشغيل التطبيقات مختلفة الأحجام؛ سواءً كانت تطبيقات ضخمة وكثيرة المستخدمين أو كانت صغيرة وقليلة المستخدمين، ما يجعله مناسبًا لتشغيل البيئات الافتراضية للتطوير والإنتاج، وكذلك لا يحتاج نظام تشغيل لينكس موارد ضخمة، مما يوفر علينا كثيرًا من أموال شراء العتاد والخوادم.
</p>

<h3 id="3">
	3. لينكس نظام تشغيل مستقر
</h3>

<p>
	يتميز نظام تشغيل لينكس بالاستقرار، إذ يمكن أن يعمل لسنوات دون حدوث مشكلات أو ظهور أعطال، وهذا يساعدنا على التركيز على تطوير تطبيقاتنا بدلًا من التشتت في حل مشكلات نظام التشغيل، وفي حال واجهتنا مشكلة ما فلن يحتاج حلها سوى لدقائق معدودة من البحث، لأن لينكس يمتلك مجتمعًا ضخمًا من المطورين والخبراء الذين واجهتهم مشكلاته من قبل، فأوجدوا لها حلولًا ونشروها لمساعدتنا.
</p>

<h3 id="4">
	4. يتميز لينكس بالأمان الشديد
</h3>

<p>
	يجب أن يكون الأمان على رأس أولويات كل فريق تطوير تطبيقات، ويُعرف لينكس بأنه واحد من أكثر أنظمة التشغيل أمانًا، ما يضمن لنا أمان تطبيقاتنا وبياناتنا، علاوةً على ذلك يمكننا تحسين أمانه باستخدام <a href="https://academy.hsoub.com/apps/web/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D8%A3%D9%81%D8%B6%D9%84-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9%D9%83-%D8%A3%D9%88-%D9%85%D8%AA%D8%AC%D8%B1%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r392/" rel="">خادم خاص افتراضي Virtual Private Server (VPS)</a>، ما يعزل التطبيق والبيانات الخاصة بنا عن تطبيقات وبيانات سائر المستخدمين، فإن كان لدينا مشكلة أمنية في تطبيقنا فلن تؤثر على الآخرين، وكذلك إن كان لدى الآخرين مشكلات أمنية في تطبيقاتهم فلن تؤثر على أمان تطبيقنا وبياناتنا.
</p>

<h3 id="5">
	5. تتعدد توزيعات نظام تشغيل لينكس
</h3>

<p>
	تتوفر <a href="https://academy.hsoub.com/devops/linux/%D8%B9%D8%B1%D8%B6-%D9%85%D9%88%D8%AC%D8%B2-%D9%84%D8%A3%D8%B4%D9%87%D8%B1-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r631/" rel="">توزيعات عديدة</a> ومتنوعة من نظام تشغيل لينكس Linux، فسنجد حتمًا التوزيعة المناسبة لاحتياجات مشروعنا، فمثلًا تتناسب توزيعة أوبونتو Ubuntu مع المطورين المبتدئين، وذلك لتوافر واجهة رسومية سهلة الاستخدام فيها، بينما قد تلائم توزيعة دبيان Debian الفئة الخبيرة من المطورين نظرًا لتعدد مميزاتها و<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%A7%D9%84%D8%AD%D8%B2%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%85%D8%AE%D8%A7%D8%B2%D9%86-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AE%D8%A7%D8%B1%D8%AC%D9%8A%D8%A9-%D8%B6%D9%85%D9%86-%D8%A3%D8%A8%D9%88%D9%86%D8%AA%D9%88-r795/" rel="">حزم البرمجيات</a> التي تدعمها التوزيعة.
</p>

<h3 id="6">
	6. يدعم لينكس مختلف أنواع التطبيقات
</h3>

<p>
	مهما كان نوع التطبيق الذي نود تطويره سواء تطبيق ويب، أو تطبيق هاتف محمول، أو تطبيق سطح مكتب، سنجد حتمًا حزمة البرمجيات المستخدمة في تطويره مدعومة من نظام تشغيل لينكس، بل يمكننا حتى تثبيت أدوات التطوير الضرورية عبر<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D9%85%D8%B3%D8%AA%D9%88%D8%AF%D8%B9%D8%A7%D8%AA-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r629/" rel=""> مستودعات لينكس Linux Repositories</a> دون الحاجة للبحث الطويل عبر الإنترنت.
</p>

<h3 id="7">
	7. يدعم لينكس مجموعة واسعة من لغات البرمجة
</h3>

<p>
	يدعم نظام لينكس جميع <a href="https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/" rel="">لغات البرمجة</a> المستخدمة في تطوير البرمجيات تقريبًا، مثل: لغة <a href="https://academy.hsoub.com/python/" rel="">بايثون</a> ولغة <a href="https://academy.hsoub.com/programming/java/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7-java-r2275/" rel="">جافا</a> ولغة <a href="https://academy.hsoub.com/programming/cpp/" rel="">++C</a>، كما يدعم أكثر من <a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%A3%D9%88%D9%84-%D9%85%D9%81%D9%87%D9%88%D9%85-%D8%A7%D9%84%D8%AA%D8%B5%D8%B1%D9%8A%D9%81-compilation-%D9%81%D9%8A-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r976/" rel="">مصرف Compiler</a> لكل لغة، ما يعطينا مرونة في اختيار لغة البرمجة المفضلة لنا لتطوير التطبيقات.
</p>

<h3 id="8">
	8. يحظى لينكس بشهرة كبيرة ومجتمع واسع
</h3>

<p>
	يملك نظام لينكس مجتمعًا ضخمًا من المستخدمين والمطورين. لذا، يمكننا العثور على إجابات لجميع أسئلتنا حوله. بالإضافة إلى ذلك، يمكننا الحصول على المساعدة في حل أي مشكلات قد نواجهها في التعامل معه.
</p>

<h3 id="9">
	9. يدعم لينكس مختلف محررات الأكواد
</h3>

<p>
	أيًا كانت تفضيلاتنا الشخصية فلا بد أن نجد محرر أكواد مناسبًا لنا ومدعومًا من نظام تشغيل لينكس، فمثلًا إن أردنا محرر نصوص بسيطًا وسهل الاستخدام فيمكن استخدام محرر Gedit، وفي حال كنا نفضل استخدام <a href="https://academy.hsoub.com/programming/workflow/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D9%8A%D8%A6%D8%A9-%D8%A7%D9%84%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%AA%D9%83%D8%A7%D9%85%D9%84%D8%A9-ide-r1513/" rel="">بيئة تطوير متكاملة</a> فيمكننا الاختيار بين مجموعة واسعة من بيئات التطوير مثل NetBeans أو Eclipse أو IntelliJ IDEA.
</p>

<h3 id="10">
	10. يتميز لينكس بالمرونة
</h3>

<p>
	يعد لينكس Linux نظام تشغيل مرن، إذ يمكن لفريق العمل تعديله وتخصيصه تبعًا لاحتياجاته الشخصية ومتطلبات التطبيقات دون مواجهة أية عقبات، فمثلًا يسمح لنا نظام تشغيل لينكس بحذف حزم البرمجيات التي لا نحتاجها في عملنا، كما يمكننا تغيير التوزيعة المستخدمة إن احتجنا لذلك.
</p>

<h2 id="-3">
	أمثلة على تطبيقات ناجحة تستخدم لينكس
</h2>

<p>
	قد تراود البعض منا شكوك حول نظام تشغيل لينكس وكفاءته، لكونه لا يحظى بشعارات برَّاقة، ولكنَّ لينكس قد أثبت كفاءته واعتماديته عبر السنين، وهناك تطبيقات شهيرة ومميزة استخدم مطوروها نظام تشغيل لينكس لتطويرها وتشغيلها، نذكر لكم منها:
</p>

<h3>
	سكايب Skype
</h3>

<p>
	قد يستخدم معظمنا اليوم ديسكورد أو زوم في التواصل مع الأصدقاء أو الزملاء، لكن سكايب كان التطبيق الأكثر شيوعًا لهذه المهمة في وقت ما، وقد استُخدِم لينكس في تطوير هذا البرنامج الكلاسيكي.
</p>

<h3>
	ستيم Steam
</h3>

<p>
	يعد ستيم أكبر متجر إلكتروني لبيع الألعاب الرقمية، وما كان هذا المتجر الإلكتروني المميز ليبرز لولا نظام تشغيل لينكس.
</p>

<h3>
	دروب بوكس Dropbox
</h3>

<p>
	لا بد أن أي شخص يستخدم منصات التخزين السحابي لتخزين ملفاته يعرف جيدًا برنامج دروب بوكس ويعرف مكانته وأصالته بين سائر منصات التخزين السحابي؛ وقد استُخدِم نظام تشغيل لينكس عند تطوير دروب بوكس أيضًا.
</p>

<h2 id="-4">
	الخاتمة
</h2>

<p>
	يمكن أن نخلص لأن نظام لينكس نظام تشغيل قوي ومتعدد المميزات، ويحظى بمجتمع واسع يضم كثيرًا من المبرمجين الخبراء الذين سيساعدوننا في تطوير تطبيقاتنا وحل مشكلاتنا في التعامل معه، فضلًا عن كونه مناسبًا للخبراء من المبرمجين والمبتدئين منهم على حد سواء، وهو نظام تشغيل مجاني تمامًا، وسيساعدنا على تطوير تطبيقنا حتى لو كانت ميزانيتنا محدودة، وبالتالي يمكن القول أنه الخيار الأمثل <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-r1827/" rel="">لتطوير التطبيقات</a> على اختلاف أنواعها.
</p>

<p>
	ترجمة -وبتصرف- لمقال <a href="https://www.unixmen.com/top-10-benefits-of-linux-for-app-development/" rel="external nofollow">Top 10 Benefits of Linux for App Development</a> لكاتبه Janus Atienza
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-%D9%88%D8%A3%D8%A8%D8%B1%D8%B2-%D9%85%D9%85%D9%8A%D8%B2%D8%A7%D8%AA%D9%87-%D9%88%D8%B9%D9%8A%D9%88%D8%A8%D9%87-r2252/" rel="">تعرف على نظام لينكس Linux وأبرز مميزاته وعيوبه</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%AE%D8%AA%D8%A7%D8%B1-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A7%D9%84%D9%85%D9%86%D8%A7%D8%B3%D8%A8%D8%A9-%D9%84%D9%83%D8%9F-r811/" rel="">كيف تختار توزيعة لينكس المناسبة لك؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA/" rel="">دليلك الشامل إلى برمجة التطبيقات</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D8%B2%D9%8A%D9%85-%D9%88%D8%AA%D9%88%D8%B2%D9%8A%D8%B9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86-r106/" rel="">كيفية تحزيم وتوزيع تطبيقات بايثون</a>
	</li>
</ul>

<p>
	 
</p>
]]></description><guid isPermaLink="false">835</guid><pubDate>Sat, 01 Feb 2025 15:05:02 +0000</pubDate></item><item><title>&#x62F;&#x644;&#x64A;&#x644;&#x643; &#x627;&#x644;&#x634;&#x627;&#x645;&#x644; &#x639;&#x646; &#x627;&#x644;&#x646;&#x634;&#x631; &#x627;&#x644;&#x645;&#x633;&#x62A;&#x645;&#x631; Continuous Delivery</title><link>https://academy.hsoub.com/devops/general/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%B9%D9%86-%D8%A7%D9%84%D9%86%D8%B4%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-continuous-delivery-r806/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_04/------d2-6.png.ab8ef9af3069465e9be2403ed88aaca9.png" /></p>
<p>
	تتطلع الشركات في وقتنا الحالي إلى العمل بأسلوب ذي وتيرة إنجاز سريع والتركيز على جعل التحديثات "مملة"، لأنها أصبحت بسيطةً ومتوقعة، وهذه هي الخصائص الأساسية لنشر البرامج بصورة مستمرة وبثقة والتعامل مع التحديثات على أنها نشاط اعتيادي.
</p>

<p>
	تحدث كل من (دايفيد فارلي) و(جيز هامبل) في عام 2010 في كتابهما <strong>التسليم المستمر (Continuous Delivery)</strong> عن التصدير المستمر للبرمجيات، إذ ستجد في كتابهما عدة ممارسات لا تزال صالحة في يومنا هذا. إذًا، فالتسليم المستمر Continuous Delivery ليس مفهومًا جديدًا، لكن العديد من المؤسسات لا تزال لا تجيد تطبيقه.
</p>

<p>
	ستجد في هذا المقال مفاهيمًا تساعدك على فهم مبدأ النشر المستمر ونصائح لكيفية تطبيق ممارسات عملية لتحسين تقييمات العملاء التي تحصل عليها بعد كل إصدار.
</p>

<h2 id="">
	ما هو النشر المستمر CD
</h2>

<p>
	الغرض من النشر هو استخدامه كطريقة للحصول على آراء العملاء، إذ ستحصد أكبر قدر ممكن من تعليقات العملاء عند كل نشر. لكن، للحصول على تعليقات قيّمة، يجب أن تأخذها من مستخدمي برامجك. ولذلك، تحتاج إلى إصدار التحديثات في بيئة الإنتاج production environment. وهذا هو جوهر<strong>النشر المستمر</strong> <strong>Continuous Deployment</strong> أي نشر التعليمات البرمجية في بيئة الإنتاج بصورة آمنة ومستمرة وآلية ومؤتمتة دون الحاجة لإجراء أي تحقق يدوي.
</p>

<p>
	ملاحظة: بيئة الانتاج هي مكان نشر التطبيق وجعله متاحًا للمستخدمين، كمثال عليها Play Store أو الموقع الخاص بشركة ما بحيث ترفع تطبيقها عليه على سبيل المثال.
</p>

<p>
	قد يخطر في ذهنك أن هذا المفهوم غير مُستَخدَم على أرض الواقع وأنه مفهوم نظري وحسب، لكن تطبق الشركات الكبرى كشركة <strong>نتفليكس Netflix</strong> و<strong>ايتسي Etsy</strong> و<strong>تسلا Tesla</strong> مفهوم النشر المستمر لنشر التحديثات البرمجية لتطبيقاتها المختلفة، فعند نشر التحديثات البرمجية تحصل الشركات على آراء المستخدمين بعد الاستخدام الفعلي، وتترجمها إلى خدمات أو تستخدمها لتطوير منتجاتها. وهذا هو الفرق الأساسي بين التسليم المستمر Continuous Delivery والنشر المستمر Continuous Deployment.
</p>

<h2 id="-1">
	ما الفرق بين النشر المستمر والتسليم المستمر
</h2>

<p>
	إن النشر المستمر والتسليم المستمر هما أساس <a href="https://academy.hsoub.com/devops/general/%D8%AA%D8%B9%D9%84%D9%85-devops/" rel="">DevOps </a>لكن الاعتقاد أن النشر المستمر هو نفس التسليم المستمر هو خطأ شائع، إذ إنه ثمة فرق بينهما يتعلق بوقت نشر التحديث.
</p>

<p>
	<span ipsnoautolink="true">فالتسليم المستمر</span> هو القدرة على تجهيز التحديثات البرمجية بحيث تكون جاهزة للإصدار. أي أن التحديثات مرت في أنابيب تجزئة تنفيذ التعليمات ونجحت في جميع الاختبارات، وليس هناك حاجة للعمل عليها. إذًا، أصبحت التحديثات البرمجية مؤهلة للإصدار.
</p>

<p>
	أما النشر المستمر فهو استراتيجية إصدار أو نشر تُستخدم في النشر المستمر Continuous Delivery، إن كان التحديث جاهزًا للنشر فيُدفع إلى بيئة الإنتاج تلقائيًا، أي يُصدر. فلا يمكن تطبيق النشر المستمر دون تطبيق التسليم المستمر، وبالتالي فإن التسليم المستمر هو الخطوة الأولى لإصدار التحديثات آليًّا وبسرعة وأمان وبطريقة "مملة" تحتاج إلى تنفيذ بعض الآليات المهمة بدءًا من <span ipsnoautolink="true">التكامل المستمر</span>.
</p>

<p>
	وللتعرف على المزيد من المعلومات حول أبرز الفروقات بين النشر المستمر والتسليم المستمر ننصحك بمشاهدة الفيديو التالي:
</p>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" id="ips_uid_7830_6" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="560" data-embed-src="https://www.youtube.com/embed/hFzSG9qNWWs?si=MiX0mY8PaBhT4t3Z"></iframe>
</p>

<h2 id="-2">
	ما سبب أهمية التكامل المستمر
</h2>

<p>
	يُعد التكامل المستمر إحدى الممارسات المهمة لبناء خط تجزئة يصَدّر البرمجيات آليًّا مع التركيز على الجودة. توجد ثلاث قواعد أساسية للتكامل المستمر:
</p>

<ul>
	<li>
		يبنى البرنامج من فرع واحد من مجلد الشيفرة البرمجية code repository.
	</li>
	<li>
		يستخدم خط التجزئة مجموعة اختبارات مؤتمتة وموثوقة.
	</li>
	<li>
		إذا فشل بناء البرنامج، تتوقف عملية التكامل وتُلغى التعديلات.
	</li>
</ul>

<p>
	وبهذه الطريقة، تحرص على أن جميع التعديلات مؤهلة للإصدار، حتى لو أجلت الإصدار إلى وقت آخر أو منصة آخرى. لكن القاعدة الأهم هي إجراء اختبارات مؤتمتة موثوق بها. كما ستحتاج إلى إجراء اختبارات سريعة وتعمل بالتوازي، واختبارات لجميع السيناريوهات المهمة في تطبيقك، مثل اختبار المسار السعيد happy path test، واختبار للبيانات التي عطلت الإنتاج سابقًا، واختبار إدخال بيانات غير صحيحة. لا تحتاج إلى الحصول على درجة تغطية الشيفرة code coverage بنسبة 100%، ولكن يجب عليك زيادة عدد الاختبارات التي تجريها تدريجيًا قبل الإعلان عن جاهزية التعديلات البرمجية.
</p>

<p>
	لن تجري الأمور بسلاسة دائمًا كما خططت، وهذا أمر متوقع. ولهذا يجب أن تكون لديك القدرة على حل المشكلات فورًا. لا تترك خط التجزئة معطوبًا أبدًا. فالهدف هو ترك مسار متوفر في حال احتجت إلى إجراء تغيير طارئ، والاستمرار في استخدام خط التجزئة المؤتمت الذي أنشأته. وبطبيعة الحال، لن تصل إلى هذه النقطة بين عشية وضحاها، لذلك يجب أن تتبنى عقلية التحسين المستمر كي تنجح. والآن سنتعمق أكثر في كيفية تطبيق النشر المستمر.
</p>

<h2 id="-3">
	كيفية تطبيق النشر المستمر
</h2>

<p>
	الخطوة الأولى، هي التدرب على أجزاء صغيرة من العمل، لا تنتظر حتى تجمّع تعديلات كافيةً أو مهمةً كي تنشر تحديثًا في بيئة الإنتاج. فكلما كانت التعديلات صغيرة، كان اختبارها ونشرها أسهل وأسرع. وتستطيع بهذه الطريقة التدرب مرارًا حتى تصل إلى نقطة يكون فيها وضع التعديلات مستقرًا. كما أن استخدام الأدوات هو أمر مهم، لذلك يجب أن تستخدم أدوات تساعدك في بناء، واختبار، وتحزيم، ونشر، وإصدار البرامج بصورة آليّة.
</p>

<p>
	إن <a href="https://www.cloudbees.com/capabilities/feature-management" rel="external nofollow">إدارة الميزات Feature Management</a> تُعد مفيدة للغاية، إذ يمكنك أن تفعّل التحديثات البرمجية للعملاء بنقرة واحدة. وبهذه الطريقة، تجعل الشيفرة البرمجية جاهزة للإصدار حتى لو لم تكن مكتملة. إذ يمكنك تفعيل ميزة ما لكي تختبرها، أو تفعيلها في جزء معين من الشيفرة لإجراء اختبارات ألف/باء أو <a href="https://academy.hsoub.com/marketing/inbound-marketing/%D9%83%D9%8A%D9%81-%D8%AA%D8%AC%D8%B1%D9%8A-%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1-ab-tests-%D8%A8%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%B5%D8%AD%D9%8A%D8%AD%D8%A9-r253/" rel="">A/B tests</a> وأي اختبار آخر. فكل ذلك متاح بالإضافة إلى الحصول على آراء العملاء القيمة فورًا، وإنتاج برامج أفضل مع كل إصدار.
</p>

<p>
	لكن يجب أن تطبق النشر المستمر لغرض واضح مثل الابتكار، أو تحسين جودة البرامج، أو إصدار الميزات في الوقت المناسب. حتى إن وُجِدت قيود لا تسمح لك بتطبيق النشر المستمر، فإن الاستعداد لذلك سيساعدك على تقليل الوقت والجهد اللازمين لكل إصدار.
</p>

<h2 id="-4">
	الخاتمة
</h2>

<p>
	لنلخص ما ورد في مقالنا، النشر المستمر هو القدرة على إصدار التحديثات البرمجية آليًّا دون أي تدخل بشري. تحتاج لتطبيق ذلك إلى الاعتماد على مجموعة اختبارات مُحكمَة الإعداد لتلافي حدوث الأخطاء، كما أن تقسيم التغييرات الكبيرة إلى تغييرات أصغر يسمح لك بالتدرب أكثر وتقليل احتمالات ظهور الأخطاء (كما يسهل التراجع عن عن هذه التغييرات الصغيرة).
</p>

<p>
	لا يمكنك تطبيق النشر المستمر بين عشية وضحاها، إذ إنه ثمة سلسلة من الخطوات التي عليك اتباعها أولاً. وترتيب هذه الخطوات هو كالتالي: التكامل المستمر، ثم التسليم المستمر، ثم النشر المستمر. كما يمكنك التدرب في بيئة التطوير أو الاختبار، وليس ضروريًا أن تبدأ في بيئة الإنتاج، ولكن عليك أن تحدد ما تريد إنجازه، مثلًا هل تريد تحقيق وقت تسويق قصير Time To Market، أم تريد تحقيق مدة توريد Lead Time قصيرة، أم تريد إجراء المزيد من التجارب.
</p>

<p>
	يمكنك اعتماد فحص يدوي أخير إذا كنت تحتاج إلى ذلك (على سبيل المثال، للتحقق من التوافق، أو التحقق من متاجر تطبيقات الأجهزة المحمولة، أو الأجهزة الطبية)، ولكن هذا يُعد تسليمًا مستمرًا، ولا بأس في ذلك. إذ يمكن تطبيق الممارسات والأدوات المذكورة في مقالنا، بغض النظر عن مجال عملك أو كميته.
</p>

<p>
	وإذا كان لديك من الاستفسارات حول ما ورد في مقالنا، أو أردت الحصول على الدعم والمساعدة أضف سؤالك في قسم التعليقات أسفل المقال، أو اكتبه في قسم الأسئلة والأجوبة في <a href="https://academy.hsoub.com/questions/" rel="">أكاديمية حسوب</a>.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://www.cloudbees.com/blog/what-is-continuous-deployment-a-complete-explanation" rel="external nofollow">What Is Continuous Deployment? A Complete Explanation</a> من موقع <a href="https://www.cloudbees.com/" rel="external nofollow">Cloudbees</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/devops/deployment/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AA%D9%83%D8%A7%D9%85%D9%84-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-%D9%88%D8%A7%D9%84%D9%86%D8%B4%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-cicd-r644/" rel="">مدخل إلى التكامل المستمر والنشر المستمر CI/CD</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/deployment/%D8%A3%D9%81%D8%B6%D9%84-%D9%85%D9%85%D8%A7%D8%B1%D8%B3%D8%A7%D8%AA-%D9%85%D9%86%D9%87%D8%AC-%D8%A7%D9%84%D8%AA%D9%83%D8%A7%D9%85%D9%84-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-%D9%88%D8%A7%D9%84%D8%AA%D8%B3%D9%84%D9%8A%D9%85-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-cicd-r687/" rel="">أفضل ممارسات منهج التكامل المستمر والتسليم المستمر CI/CD</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%A7%D9%84%D8%AA%D9%83%D8%A7%D9%85%D9%84-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-%D9%88%D8%A7%D9%84%D9%86%D8%B4%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%AE%D8%AF%D9%85%D8%AA%D9%8A%D9%86-circleci-%D9%88coveralls-r1276/" rel="">إعداد التكامل المستمر والنشر المستمر باستخدام الخدمتين CircleCI وCoveralls</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/deployment/%D8%A7%D9%84%D8%AA%D9%83%D8%A7%D9%85%D9%84-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-concourse-ci-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r356/" rel="">التكامل المستمر: تثبيت Concourse CI على أوبنتو</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D9%85%D8%AD%D8%A7%D9%83%D8%A7%D8%A9-%D8%B9%D9%82%D9%84%D9%8A%D8%A9-devops-r450/" rel="">محاكاة عقلية DevOps</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">806</guid><pubDate>Tue, 16 Apr 2024 12:03:01 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x625;&#x646;&#x634;&#x627;&#x621; &#x635;&#x648;&#x631; &#x645;&#x62A;&#x62D;&#x631;&#x643;&#x629; GIF &#x641;&#x64A; &#x633;&#x637;&#x631; &#x627;&#x644;&#x623;&#x648;&#x627;&#x645;&#x631; &#x648;&#x62A;&#x62D;&#x633;&#x64A;&#x646;&#x647;&#x627;</title><link>https://academy.hsoub.com/devops/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B5%D9%88%D8%B1-%D9%85%D8%AA%D8%AD%D8%B1%D9%83%D8%A9-gif-%D9%81%D9%8A-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D9%88%D8%AA%D8%AD%D8%B3%D9%8A%D9%86%D9%87%D8%A7-r805/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_03/----GIF-----d2-5.png.d98e3900317619393daea68071997209.png" /></p>
<p>
	تعد الصور ذات الصيغ التالية <strong>JPG</strong> و <strong>PNG</strong> و <strong>GIF</strong> إحدى أكثر صيغ الصور الشائعة منذ التسعينات. لكن، بخلاف صور <strong>JPG</strong> و <strong>PNG</strong>، فإن صور <strong>GIF</strong> تحتوى على إطارات متعددة من الرسوم المتحركة، وهي منتشرة انتشارًا واسعًا في شبكة الإنترنت.
</p>

<p>
	تعد صور <strong>GIF</strong> أو نسق الرسومات المتبادلة تقنيةً قديمةً وقد أصبحت أقل فاعلية من تضمين مقاطع الفيديو الويب، لأن معظم فيديوهات الويب تستخدم تقنيات ضغط حديثة وبرامج ترميز Codecs أحدث من المستخدمة في الصور المتحركة GIF.
</p>

<p>
	تُستخدم برامج الترميز Codecs (أو المرمازات) لترميز مقاطع الفيديو وفك ترميزها، وتحتوي معظم المنصات على عتاديات مخصصة لتشغيل برامج الترميز هذه. أما ملفات GIF، يُفَك ترميزها مباشرةً باستخدام وحدة المعالجة المركزية <strong>CPU</strong>، حيث إن حمل وحدة المعالجة المركزية اللازم لمعالجة ملف GIF منخفض الدقة ذو إطارات متحركة قليلة لا يكاد يذكر، ولكن يمكنك من الناحية الفنية إنشاء ملف GIF بدقة ومعدل إطارات مماثل لمقاطع فيديوهات YouTube، وسوف تتفاجأ بعدد موارد النظام التي يستهلكها ذلك.
</p>

<p>
	وعلى الرغم من ذلك، لا تزال ملفات GIF مفيدة لأنها تُعد صورًا وليست مقاطع فيديو، ونظرًا لطريقة عمل الويب والتطبيقات الأخرى، فهذا يعني أنها ستُعرض وتحرك تلقائيًا في عدة تطبيقات، ولن تحتاج إلى تضمينها أو ربطها على نحو منفصل. ويُعد استخدام صور GIF مفيدًا في <a href="https://giphy.com/" rel="external nofollow">صور التفاعل</a>، أو <a href="https://twinery.org/" rel="external nofollow">لتطوير الخيال التفاعلي</a>، أو في <a href="https://github.com/webpro/reveal-md" rel="external nofollow">تنسيقات العروض الأخرى</a>.
</p>

<p>
	سنتعرف في هذا المقال على عدة أدوات لإنشاء الصور المتحركة GIF من مقاطع الفيديو، وعلى كيفية تحسين حجمها ودقتها، وطريقة استخدامها في عدة مجالات. كما يمكنك دمج هذه الأدوات واستخدامها في حزمة تطبيقات أخرى.
</p>

<h3 id="">
	المتطلبات
</h3>

<p>
	سنزودك في هذا المقال بإرشادات تثبيت خادم أوبنتو 22.4، يمكنك الاستعانة بالمقال التالي لتثبيته. كما ستحتاج إلى تثبيت مدير الحزم <a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-homebrew-on-linux" rel="external nofollow">Homebrew</a> لتثبيت إحدى الأدوات التي سنتحدث عنها في مقالنا.
</p>

<h2 id="ffmpeggifskigifsicle">
	الخطوة الأولى: تثبيت الأدوات ffmpeg وGifski وGifsicle
</h2>

<p>
	ستحتاج إلى ثلاثة أدوات كي تستطيع متابعة خطوات هذا المقال. أول أداة ستحتاجها هي <a href="https://ffmpeg.org/" rel="external nofollow">ffmpeg</a> التي سنستخدمها لقص الفيديو والتعديل عليه، ثم سنستخدم <a href="https://gif.ski/" rel="external nofollow">Gifski</a> لإنشاء صور GIF، و Gifsicle لتحسين الصور والتعديل عليها.
</p>

<p>
	ستجد هذه الأدوات متاحة في أغلب المنصات. كلا الأداتان <code>ffmpeg</code> و <code>gifsicle</code> متاحتان في مستودعات أوبنتو، ويمكنك تنزيلها باستخدام مدير الحزم <code>apt</code>. أولًا، حَدّث الحزم باستخدام الأمر <code>apt update</code>:
</p>

<pre class="ipsCode">sudo apt update
</pre>

<p>
	ثم ثبت حزمتي <code>ffmpeg</code> و <code>gifsicle</code> باستخدام الأمر <code>apt install</code>:
</p>

<pre class="ipsCode">sudo apt install ffmpeg gifsicle
</pre>

<p>
	أما الأداة الثالثة <code>gifski</code> فهي متاحة بواسطة Homebrew ويمكنك تثبيتها بواسطة الأمر <code>brew install</code>:
</p>

<pre class="ipsCode">brew install gifski
</pre>

<p>
	قد يستغرق ذلك بضع دقائق لأن Homebrew سيثبت بعض الاعتماديات dependencies. والآن، بعد أن ثبّت جميع الأدوات اللازمة على جهازك، عليك اختيار فيديو لإنشاء صورة GIF منه.
</p>

<h2 id="-1">
	الخطوة الثانية: تنزيل وفحص ملف الفيديو
</h2>

<p>
	بإمكانك إنشاء صورة GIF من أي مقطع فيديو على جهازك، أو يمكنك استخدام الفيديو التعريفي <a href="https://www.youtube.com/watch?v=iom_nhYQIYk" rel="external nofollow">بمنصة تطبيقات DigitalOcean</a>. لتنزيل نسخة من الفيديو من باستخدم الأمر <code>curl</code>:
</p>

<pre class="ipsCode">curl -O https://deved-images.nyc3.digitaloceanspaces.com/gif-cli/app-platform.webm
</pre>

<p>
	<code>curl</code> هي إحدى أدوات سطر الأوامر تخولك من إنشاء مختلف طلبات الويب web request، مثلًا عند استخدام الراية <code>-o</code> مع عنوان URL فهذا يوّجه <code>curl</code> إلى تنزيل ملف من الإنترنت وتخزينه على جهازك بنفس الاسم. والآن، بعد أن أصبح عندك نسخةً من الفيديو على جهازك، بإمكانك التحقق من بياناته الوصفية metadata لأن ذلك مفيد عند إنشاء صورة GIF ذات جودة عالية.
</p>

<p>
	بعد تثبيت الأداة <code>ffmpeg</code> يمكنك استخدام الأمر <code>ffprobe</code> الذي يسمح لك التحقق من الدقة resolution، ومعدل الإطارات framerate، والمعلومات الأخرى في ملفات الوسائط. استعرض هذه المعلومات باستخدام الأمر <code>ffprobe</code> على الفيديو <code>app-platform.webm</code> الذي نزلته:
</p>

<pre class="ipsCode">ffprobe app-platform.webm
</pre>

<p>
	ستحصل على الخرج التالي:
</p>

<pre class="ipsCode">Output
…
Input #0, matroska,webm, from 'app-platform.webm':
  Metadata:
    ENCODER         : Lavf59.27.100
  Duration: 00:01:59.04, start: -0.007000, bitrate: 1362 kb/s
  Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 1920x1080, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn (default)
    Metadata:
      DURATION        : 00:01:59.000000000
  Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:01:59.041000000
</pre>

<p>
	يعرض الخرج التدفقات Streams الموجودة في الملف (عادةً فيديو واحد ودفق صوتي واحد على الأقل)، بالإضافة إلى معدل العينات sample rate، وبرامج الترميز Codecs، والخصائص الأخرى للتدفقات. لاحظ أن المعلومات المظللة في الخرج تدلنا أن الفيديو مرمز بدقة 1080 بكسل، ويُشَغل بمعدل 25 إطارًا في الثانية، كما أن طوله دقيقتين تقريبًا، وهو طويل جدًا بالنسبة لصورة GIF واحدة!
</p>

<p>
	أصبح عندنا المعلومات الكافية للانتقال إلى الخطوة التالية حيث سنقص مقطعًا من هذا الفيديو لإنشاء صورة GIF منه.
</p>

<h2 id="-2">
	الخطوة الثالثة، قص مقطع من الفيديو
</h2>

<p>
	الآن أصبح لديك مقطع فيديو مدته دقيقتان وأصبحت تعرف خصائصه. قبل تحويله إلى صورة GIF عليك تقصير الفيديو،. ولا يُستحسن تشغيل مقطع الفيديو في الطرفية، لذا شاهد الفيديو على YouTube لتختار المقطع الذي تريده. اخترنا في مقالنا المقطع من الثانية 00:00:09 إلى الثانية 00:00:12، مما ينتج لدينا مقطعًا متحركًا سلسًا على النحو التالي:
</p>

<p style="text-align: center;">
	<img alt="optimized.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="147060" data-ratio="56.00" data-unique="z6g2ppmcn" style="width: 400px; height: auto;" width="540" src="https://academy.hsoub.com/uploads/monthly_2024_03/optimized.gif.f098c00dd6a3ac43177d2dfa7051a45c.gif">
</p>

<p>
	يمكنك قص الفيديو <code>app-platform.webm</code> باستخدام الأداة <code>ffmpeg</code> كالتالي:
</p>

<pre class="ipsCode">ffmpeg -ss 00:00:09 -to 00:00:12 -i app-platform.webm -c copy clip.webm
</pre>

<p>
	إليك الشرح التفصيلي للأمر السابق:
</p>

<ul>
	<li>
		يعبر الجزء الأول <code>-ss 00:00:09 -to 00:00:12</code> عن كيفية فهم <code>ffmpeg</code> للشيفرة الزمنية، من نقطة البدء إلى نقطة النهاية. كما يمكنك القص اعتمادًا على المدة أو أجزاء من الثانية.
	</li>
	<li>
		الجزء <code>-i app-platform.webm</code> هو مسار الفيديو مسبوقًا بـ <code>-i</code>.
	</li>
	<li>
		نحدد بعد الجزء <code>-c copy</code> مرماز فيديو الخرج أو الصوت للأداة <code>ffmpeg</code>، واستخدمنا للأمر <code>copy</code> بدلًا عن برنامج ترميز كي نحصل على الفيديو الجديد بسرعة، وبدون ترميز، ولنتفادى انخفاض دقة الفيديو. وبما أننا سننشأ صورة GIF فلا بأس إن حافظنا على نفس الصيغة في ملف الخرج لتوفير الوقت، لأننا سنحول الفيديو الناتج إلى صورة متحركة.
	</li>
	<li>
		الجزء <code>clip.webm</code> هو مسار الفيديو الناتج. ستحصل بعدها على فيديو مدته ثلاث ثواني باسم <code>clip.webm</code>، ويمكنك التأكد من حجمة باستخدام<br>
		الأمر <code>ls -lh</code>:
	</li>
</ul>

<pre class="ipsCode">ls -lh clip.webm
</pre>

<p>
	ستحصل على النتيجة التالية:
</p>

<pre class="ipsCode">Output
-rw-r--r-- 1 sammy sammy 600K Nov 16 14:27 clip.webm
</pre>

<p>
	لاحظ أن حجم ثلاث ثوانٍ من مقطع الفيديو هو 600K، بامكانك استخدام هذا الحجم كمرجع للمقارنة عندما تنشأ صورة GIF في الخطوة التالية.
</p>

<p>
	<strong>ملاحظة</strong>: إن كنت تستعمل جهازك المحلي، فيمكنك استخدام الأداة <a href="https://github.com/mifi/lossless-cut" rel="external nofollow">Lossless Cut</a> وهي أداة واجهة رسوميات مفتوحة المصدر تستخدم لقص مقاطع الفيديو. تُعد هذه الأداة مفيدةً لأنها تنفذ نفس أوامر <code>ffmpeg</code> لاستخراج وقص مقاطع فيديو بسرعة استنادًا إلى الشيفرة الزمنية، دون إعادة ترميز الفيديو. بخلاف تشغيل <code>ffmpeg</code> في الطرفية، فإن Lossless Cut تحتوي على مشغل فيديو مدمج وواجهة تنقل.
</p>

<h2 id="gif-1">
	الخطوة الرابعة، تحويل الفيديو إلى صورة GIF
</h2>

<p>
	بعد أن أصبح لديك مقطع فيديو مدته ثلاث ثوان وأصبحت تعرف معدل الإطارات والدقة اللازمة، بإمكانك الآن إنشاء صورة GIF منه. كما يمكنك تطوير خط آلي لتحويل مقاطع الفيديو إلى صور GIF، وحينها تستخدم الأداة <code>ffprobe</code> لاستخراج دقة الفيديو ومعدل الإطارات تلقائيًا من الفيديو وتمريرها مباشرةً إلى الأوامر اللاحقة. في مقالنا، سندخل يدويًا قيم الدقة ومعدل الإطارات للخرج المطلوب.
</p>

<p>
	لدينا عدة خيارات لإنشاء صور GIF في سطر الأوامر، يمكننا استخدام <code>ffmpeg</code> لوحدها لكن صيغة أوامرها صعبة الفهم والتغيير:
</p>

<pre class="ipsCode">ffmpeg -filter_complex "[0:v] fps=12,scale=w=540:h=-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" -i clip.webm ffmpeg-sample.gif
</pre>

<p>
	لاحظ أننا في مثالنا قلصنا الدقة ومعدل الإطارات إلى النصف، لنحصل على معدل إطارات 12fps ودقة بمقدار 540p بكسل، وتعد هذه بدايةً جيدة بالنسبة لصور GIF لأنها تعامل معاملة الصور العادية، إذ تُنَزل بالكامل عند تحميل صفحة ويب، بخلاف مقاطع الفيديو التي لا تُحَمّل تدريجيًا بدقة أقل.
</p>

<p>
	يمكنك استخدام شبكات توزيع المحتوى CDN لتحسين تسليم الأصول الثابتة للموقع مثل الصور، ولكن يجب أن تتفادى عرض الصور الضخمة دون هدف محدد. ولذا يجب ألا تنشأ صور GIF ذات حجم أعلى من 3 ميغا بايت، والآن، لنتحقق من حجم الصورة التي أنشأتها بواسطة الأمر <code>ls -lh</code>:
</p>

<pre class="ipsCode">ls -lh ffmpeg-sample.gif
</pre>

<p>
	وستحصل على الخرج التالي:
</p>

<pre class="ipsCode">-rw-r--r-- 1 sammy sammy 2.0M Nov 16 14:28 ffmpeg-sample.gif
</pre>

<p>
	أنشأنا بهذه الطريقة صورة GIF حجمها 2 ميغا بايت. لكن يمكننا الحصول على نتيجة أفضل باستخدام صياغة برمجية أقل تعقيدًا بواسطة <code>gifski</code>:
</p>

<pre class="ipsCode">gifski --fps 12 --width 540 -o gifski-sample.gif clip.webm
</pre>

<p>
	لاحظ أننا ذكرنا التفاصيل المهمة كمعدل الإطارات والدقة، بالإضافة إلى اسمي ملفي الدخل والخرج. تحقق من الملف الناتج باستخدام الأمر التالي:
</p>

<pre class="ipsCode">ls -lh gifski-sample.gif
</pre>

<p>
	لتحصل على الخرج التالي:
</p>

<pre class="ipsCode">-rw-r--r-- 1 sammy sammy 1.3M Nov 16 14:33 gifski-sample.gif
</pre>

<p>
	حصلت على صورة GIF متحركة حجمها 1.3 ميغابايت وذلك يعد تحسنًا ملحوظًا عن النتيجة السابقة خاصةً أننا حافظنا على نفس الجودة. قد ترغب في إنشاء صورة ذات معدل إطارات كامل وبالدقة الكاملة كي تستطيع المقارنة وملاحظة الفرق:
</p>

<pre class="ipsCode">gifski --fps 25 --width 1080 -o gifski-high.gif clip.webm
</pre>

<p>
	تحقق من حجم الملف الناتج:
</p>

<pre class="ipsCode">ls -lh gifski-high.gif
</pre>

<pre class="ipsCode">الخرج
-rw-r--r-- 1 sammy sammy 6.9M Nov 16 14:37 gifski-high.gif
</pre>

<p>
	لاحظ أن حجم 6.9 ميغا بايت هو حجم كبير جدًا خصيصًا أن حجم الفيديو الأصلي هو 0.6 ميغا بايت وحسب! وتذكر أن صور GIF ليست ذات فاعلية مقارنةً ببرامج ترميز الفيديو الحديثة، فعليك التضحية قليلًا عندما تخفّض حجمها إلى حجم مقبول. سنتعلم في الخطوة التالية كيفية تحسين صور GIF. <strong>ملاحظة</strong>: إذا كنت تستخدم خادمًا بعيدًا لتنفيذ خطوات مقالنا، فيمكنك تنزيل الملفات وفحصها محليًا على جهازك، أو يمكنك نقلها إلى مجلد يمكن الوصول إليه من الويب كي تستعرضها في متصفح الويب. بهذه الطريقة سيصبح لديك مرجع مرئي لجودة الرسوميات.
</p>

<h2 id="gif-2">
	الخطوة الخامسة: تحسين صورة GIF والتحقق منها وعرضها
</h2>

<p>
	سنستخدم الأداة <code>gifsicle</code> في الخطوة الأخيرة من مقالنا لتحسين جودة صورة GIF
</p>

<p>
	إذ إن ميزات استخدام <code>gifsicle</code> مع ملفات GIF تشابه ميزات استخدام <code>ffmpeg</code>مع ملفات الصوت والفيديو وتمكننا من فعل أي شيء نرغبه، ولكن استخدامها قد يكون معقدًا جدًا. ولذلك، سنستخدم <code>gifski</code> لإنشاء صور GIF، وسنركز على بعض أوامر <code>gifsicle</code> لتحسين الصور أو معالجتها. أولًا، شَغّل أمر تحسين <code>gifsicle</code> القياسي:
</p>

<pre class="ipsCode">gifsicle -O3 --lossy=80 --colors 256 gifski-sample.gif -o optimized.gif
</pre>

<p>
	لاحظ أننا في الأمر السابق طبقنا الخيار الثالث <code>-O3</code> للحصول على أفضل تحسين، وطبقنا الخيار <code>lossy 80--</code> لتحديد نسبة 20% كالحد الأقصى المسموح به لانخفاض الجودة عن الملف الأصلي، واخترنا <code>--colors 256</code> لتطبيق 256 لون كحد أقصى في الصورة الناتجة.
</p>

<p>
	سيُنتِج ذلك صورةً ذات جودة أعلى من المتوقع بدون خسارة ملحوظة في الجودة لأن صور GIF لا تستخدم <a href="https://blog.video.ibm.com/streaming-video-tips/keyframes-interframe-video-compression/" rel="external nofollow">خوارزميات ضغط الإطارات الداخلية</a> الحديثة، ولا تستخدم تقنيات ضغط صور JPEG. كما يشير 256 لونًا هنا إلى أي لوحة ألوان مكونة من 256 لونًا وفقًا للألوان الموجودة في ملف GIF، ولا يعبر عن لوحة ألوان محددة مكونة من أشيع 256 لون. وبصورة عامة، لا يكون ضغط GIF ملحوظًا.
</p>

<p>
	والآن، تحقق من حجم الصورة المحسنة <code>optimized.gif</code>:
</p>

<pre class="ipsCode">ls -lh optimized.gif
</pre>

<p>
	وستحصل على الخرج التالي:
</p>

<pre class="ipsCode">-rw-r--r-- 1 sammy sammy 935K Nov 16 14:44 optimized.gif
</pre>

<p>
	لاحظ أن الخطوة الأخيرة خفضت حجم الملف بنجاح إلى 935 كيلو بايت أي أكثر من حجم الفيديو الأصلي بقليل، وهو حجم مقبول لصورة متحركة. وهي نفس الصورة التي عرضناها سابقًا في مقالنا. يمكنك الاطلاع على دليل <a href="https://www.lcdf.org/gifsicle/man.html" rel="external nofollow">Gifsicle</a> للتعرف على الطرق الأخرى لمعالجة صور GIF. على سبيل المثال، يمكنك "تقسيم" ملف GIF إلى ملفات صور متعددة، واحد لكل إطار رسوم متحرك باستخدام الأمر التالي:
</p>

<pre class="ipsCode">gifsicle --explode optimized.gif
</pre>

<p>
	الذي ينشأ عدة ملفات اسمائها على نسق <code>optimized.gif.000</code>، <code>optimized.gif.001</code> وهكذا، لكل صورة. استخدم الأمر <code>ls -lh</code> لعرض ملفات الصور:
</p>

<pre class="ipsCode">ls -lh optimized*
</pre>

<p>
	لتحصل على الخرج التالي:
</p>

<pre class="ipsCode">-rw-r--r-- 1 sammy sammy 935K Nov 16 14:46 optimized.gif
-rw-r--r-- 1 sammy sammy  20K Nov 16 14:54 optimized.gif.000
-rw-r--r-- 1 sammy sammy  17K Nov 16 14:54 optimized.gif.001
-rw-r--r-- 1 sammy sammy  22K Nov 16 14:54 optimized.gif.002
-rw-r--r-- 1 sammy sammy  22K Nov 16 14:54 optimized.gif.003
…
</pre>

<p>
	كما يمكنك تدوير الصورة باستخدام خيار التدوير بمقدار 90 درجة <code>--rotate-90</code> أو 180 درجة <code>--rotate-180</code>:
</p>

<pre class="ipsCode">gifsicle --rotate-90 optimized.gif -o rotated.gif
</pre>

<p>
	على الرغم من عدم كفاءتها، لا تزال صور GIF مفيدةً لأنه يمكن استخدامها في عدة مواضع، عند الحاجة إلى مقطع متحرك قصير مثلًا، أو عند الحاجة إلى استخدام صيغة الصورة وليس الفيديو، أحيانًا لن تجد بديلًا عن صورة GIF.
</p>

<h2 id="-3">
	الخاتمة
</h2>

<p>
	استخدمنا في مقالنا عدة أدوات لإنشاء صورة GIF من مقطع فيديو وتحسينها. كما تعرفنا على أدوات معالجة الفيديو مفتوحة المصدر وأدوات معالجة ملفات GIF، بالإضافة إلى بعض الخيارات لتعديل ملفات GIF. تعد صور GIF تقنيةً قديمةً ومثيرةً للاهتمام، لكن على الرغم من أنها ليست حديثة، إلا أنه لا يوجد لها بديل في بعض السياقات، كما أن أدوات التعامل مع صور GIF ذات أداء ودعم جيد..
</p>

<p>
	والآن، أنشأ صور GIF وطبق ما تعلمناه في مقالنا هذا. وفي حال كان لديك مزيد من الاستفسارات حول ما ورد في المقال، أو أردت الحصول على الدعم والمساعدة أضف سؤالك في <a href="https://academy.hsoub.com/questions/" rel="">قسم الأسئلة والأجوبة</a> في <span ipsnoautolink="true">أكاديمية حسوب</span>.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://www.digitalocean.com/community/tutorials/how-to-make-and-optimize-gifs-on-the-command-line" rel="external nofollow">How To Make and Optimize GIFs on the Command Line</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/design/graphic/%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D9%84%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B5%D9%88%D8%B1-gif-%D8%AF%D8%A7%D8%A6%D9%85%D8%A9-%D8%A7%D9%84%D8%AD%D8%B1%D9%83%D8%A9-r395/" rel="">نصائح لإنشاء صور GIF دائمة الحركة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D9%86%D8%B4%D8%A6-%D8%B5%D9%88%D8%B1%D9%8B%D8%A7-%D9%85%D8%AA%D8%AD%D8%B1%D9%83%D8%A9-%D8%A8%D8%B5%D9%8A%D8%BA%D8%A9-gif-%D9%85%D9%86-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D8%A9-%D8%B5%D9%88%D8%B1-png-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-imagemagick-%D9%88%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-r409/" rel="">كيف تنشئ صورًا متحركة بصيغة GIF من مجموعة صور PNG باستخدام ImageMagick وسطر الأوامر</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/design/general/10-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%88%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D9%85%D8%AC%D8%A7%D9%86%D9%8A%D8%A9-%D8%AA%D8%B3%D9%87%D9%84-%D8%B9%D9%84%D9%8A%D9%83-%D8%AA%D8%AD%D8%B3%D9%8A%D9%86-%D8%A7%D9%84%D8%B5%D9%88%D8%B1-r497/" rel="">10 أدوات وتطبيقات مجانية تسهل عليك تحسين الصور</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D8%B9%D9%86-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%88%D8%A7%D9%84%D9%85%D8%AC%D9%84%D8%AF%D8%A7%D8%AA-%D8%B9%D9%84%D9%89-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A3%D9%85%D8%B1-find-r560/" rel="">البحث عن الملفات والمجلدات على لينكس باستخدام الأمر find</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">805</guid><pubDate>Sun, 24 Mar 2024 12:02:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x645;&#x62F;&#x62E;&#x644; &#x627;&#x644;&#x634;&#x627;&#x645;&#x644; &#x644;&#x62A;&#x639;&#x644;&#x645; DevOps</title><link>https://academy.hsoub.com/devops/general/%D8%AA%D8%B9%D9%84%D9%85-devops/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_10/---DevOps.png.ab70c91989b38770f5ef38e4eceae87f.png" /></p>
<p>
	يتطور مع الوقت مفهومنا لتوزيع المسؤوليات بين أعضاء الفرق المسؤولة عن تطوير المنتجات الرقمية، فسواءً كنت مبرمجًا أو مدير أنظمة قد تستفيد من تطبيق ممارسات DevOps أي إدارة العمليات <strong>Dev</strong>elopment <strong>Op</strong>eration<strong>s</strong>) لتحسين المنتج النهائي ولتطوير طريقة عملك ورفع الإنتاجية.
</p>

<p>
	في هذا المدخل الشامل ستتعرف المبادئ الأساسية لممارسات DevOps وخارطة الطريق لتعلم DevOps هذا المجال الشيق واحترافه.
</p>

<h2>
	ما هو DevOps؟
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="136970" href="https://academy.hsoub.com/uploads/monthly_2023_10/---DevOps.png.091ac25fefd29119b890972a247403f7.png" rel=""><img alt="ما هو DevOps" class="ipsImage ipsImage_thumbnailed" data-fileid="136970" data-ratio="62.50" data-unique="3eemzuh3l" style="width: 600px; height: auto;" width="900" src="https://academy.hsoub.com/uploads/monthly_2023_10/---DevOps.thumb.png.6b51adcfb2309efc81db0e10fc2ce5f4.png"></a>
</p>

<p>
	كلمة DevOps هي اختصار لكلمتي التطوير Development، والعمليات Operations وتشير إلى الممارسات التي تهدف لدعم تطوير وتشغيل المنتجات الرقمية بمختلف أنواعها، سواءً لتسريع عملية التطوير أو لرفع جودة المنتج وصولًا لتسهيل عملية تشغيله ونشره وتوصيله للمستخدمين ثم مراقبة أدائه الفعلي وعمله، حيث كانت هذه الأعمال والمسؤوليات سابقًا موزعة على فريقين منفصلين -سنتعرف عليهما في الفقرة التالية- ما أثر على كفاءة عمل هذه الفرق وخلق مشاكل سنتعرف عليها في الفقرات القادمة.
</p>

<p>
	قد تتساءل، ما هي وظيفة DevOps ومن هما فريق التطوير وفريق العمليات؟
</p>

<p>
	هدف DevOps الأساسي مساعدة من يتبنى تلك العمليات على رفع السرعة والكفاءة والإنتاجية في <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-r1827/" rel="">تطوير التطبيقات</a> وبرمجتها، ففي السابق كانت تلك العمليات التي يتضمنها DevOps موزعة بين فريقين، وهما فريق التطوير المسؤول عن كتابة شيفرة البرنامج وتطويره والمحافظة على جودة الشيفرة المصدرية له، وينتهي دور الفريق عند ذلك، والفريق الآخر هو فريق العمليات المسؤول عن استلام النسخة الجديدة من البرنامج من فريق التطوير ونشرها وضبطها ضمن بيئة الإنتاج، سواء بربط وتوفير الوصول للخدمات الخارجية التي يعتمد عليها البرنامج، وحتى إعداد البرنامج نفسه في تلك البيئة وتشغيله، ووصولًا مراقبة عمل البرنامج خلال مرحلة الإنتاج والحفاظ على الأداء ومستوى الوصول العالي للبرنامج، ثم إعلام فريق التطوير بأي مشاكل تحدث أثناء التشغيل تتطلب التطوير على البرنامج لإطلاق نسخة جديدة منه.
</p>

<p>
	تركز مهام DevOps على زيادة التعاون بين هذين الفريقين بما يخدم كل منهما ويؤدي بالنهاية لرفع جودة وكفاءة البرنامج النهائي، أي إلغاء الفصل التام السابق بين مهام الفريقين ليتشارك كلاهما ببعض المسؤوليات والمعلومات التي تُحسّن تصميم التطبيق وإطلاقه وترفع كفاءته خدمةً للمنتج النهائي، ويمكنك التعرف على المراحل التي يمر بها المطور لتبنّي ممارسات DevOps من مقال <a href="https://academy.hsoub.com/devops/general/%D8%B1%D8%AD%D9%84%D8%A9-%D8%A7%D9%84%D9%85%D8%B7%D9%88%D8%B1-%D8%B9%D8%A8%D8%B1-devops-r420/" rel="">رحلة المطور عبر DevOps</a>.
</p>

<h2>
	لماذا أتعلم DevOps؟
</h2>

<p>
	بعد أن ينتهي فريق التطوير من تحضير نسخة جديدة من المنتج الرقمي تنتهي مسؤوليته هنا، وتمرر النسخة الجديدة إلى فريق العمليات الذي يباشر بتحضير ما يلزم لنشرها للمستخدمين، لكن ماذا لو اكتشف فريق العمليات أثناء ذلك مشكلة في تلك النسخة؟ ففي هذه الحال يجب إخبار فريق التطوير بذلك كي يعدلوا على النسخة.
</p>

<p>
	عملية استلام النسخة ومحاولة نشرها واكتشاف الخطأ ثم إخبار فريق التطوير به تأخذ وقتًا وتحتاج لتواصل فعال لتوضيح المشكلة لكلا الفريقين، لذا يبدو أن هناك عملًا مشتركًا بين الفريقين، يبدأ منذ انتهاء تطوير نسخة جديدة من المنتج الرقمي وصولًا لنشرها ومراقبة عملها، هنا تأتي ممارسات DevOps المختلفة والتي لها علاقة بالتعاون بين المطور والمسؤول عن تشغيل المنتج، فتزيد من سرعة توصيل المنتج وترفع من جودته، كما تساعد كلا الفريقين في زيادة الإنتاجية عبر أتمتة الكثير من أعمال تسليم النسخة الجديدة من المنتج وفحصها واكتشاف الأخطاء مبكرًا وصولًا إلى نشرها، وذلك بإزالة الحاجز الذي كان موجود مسبقًا بين المطور ومسؤول العمليات.
</p>

<p>
	وللاطلاع أكثر على أهداف DevOps يمكنك قراءة مقال <a href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%A7%D9%84%D8%BA%D8%A7%D9%8A%D8%A9-%D9%85%D9%86-devops%D8%9F-r414/" rel="">ما هي الغاية من DevOps؟</a>.
</p>

<h2>
	تعلم DevOps: الأساسيات
</h2>

<p>
	سواء كنت ضمن فريق المطورين أو العمليات وتتبع ممارسات DevOps هناك بعض الأساسيات الواجب على كلا الفريقين الاطلاع عليها وتعلمها لزيادة سهولة التعاون والتواصل مع الفريق الآخر ومناقشة حلول المشكلات، يمكنك التعرف أكثر على استراتيجية DevOps من مقال <a href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%A7%D9%84%D8%BA%D8%A7%D9%8A%D8%A9-%D9%85%D9%86-devops%D8%9F-r414/" rel="">ما المقصود بـ DevOps؟</a>، والاطلاع على نموذج التفكير الذي ولّد تلك الممارسات على من مقال <a href="https://academy.hsoub.com/devops/general/%D9%85%D8%AD%D8%A7%D9%83%D8%A7%D8%A9-%D8%B9%D9%82%D9%84%D9%8A%D8%A9-devops-r450/" rel="">محاكاة عقلية DevOps</a>.
</p>

<p>
	انضم لاحقًا مفهوم الأمان Security إلى ممارسات DevOps ليصبح مجموع تلك الممارسات مجتمعة تُعرف باسم DevSecOps (اختصارًا لعبارة Development Security Operations)، فبدلًا من النظر إلى نواحي الأمان للتطبيق كمرحلة أخيرة دُمج ذلك المفهوم منذ بداية عملية التطوير، كالاهتمام بطرق الاستيثاق من مستخدمي البرنامج أو تشفير البيانات المُخزنة وضمان تواصل البرنامج بقنوات مشُفرة مع الخدمات الأخرى لحماية البيانات المرسلة وغيرها من الممارسات التي يمكنك القراءة عنها وعن المفهوم بشكل عام من سلسلة مقالات <a href="https://academy.hsoub.com/search/?tags=%D8%AA%D8%B9%D8%B1%D9%81%20%D8%B9%D9%84%D9%89%20devopssec&amp;sortby=oldest&amp;page=1" rel="">تعرف على devopssec</a> والبدء بالمقال <a href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D9%87%D9%8A-devsecops%D8%9F-r437/" rel="">ما هي DevSecOps؟</a>.
</p>

<h3>
	البنية التحتية
</h3>

<p>
	البنية التحتية infrastructure هي مجموع المكونات الفيزيائية والافتراضية التي تدعم تطوير ونشر وعمل التطبيقات البرمجية، وتتألف المكونات الفيزيائية من الخوادم التي سنتعرف عليها في الفقرة التالية، وأجهزة التشبيك وأجهزة تخزين البيانات وكل الأجهزة الفيزيائية الداخلة في عمل التطبيقات البرمجية، والمكونات الافتراضية هي البرمجيات التي يتعامل معها التطبيق أو يعتمد عليها، لذا فالبنية التحتية هي جزء أساسي من ممارسات DevOps، فهي تخدم عملية التطوير والنشر والتوسيع للتطبيق.
</p>

<h3>
	أساسيات الشبكات
</h3>

<p>
	نحتاج لربط الحواسيب والأجهزة مع بعضها سواء لمشاركة البيانات أو للاستفادة من خدمات الأجهزة الأخرى، ويتم ذلك بربطها بشبكة معًا، لذا اطلاعك على أساسيات عمل شبكات الحاسوب لك كمطور عندما تطور برنامجًا يقدم خدمة أو يستفيد من خدمات أخرى عبر الشبكة، وأساسي إذا كنت ضمن فريق العمليات حيث تعتمد مهامك على إدارة الشبكة بين الخدمات وتوفير الوصول إليها وتطوير تصميم الشبكة لخدمة عمل البرنامج.
</p>

<p>
	يوجد عدة <a href="https://academy.hsoub.com/devops/networking/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D8%A8/" rel="">أنواع من الشبكات</a> سواء من ناحية مكان تلك الأجهزة كالشبكات المحلية LAN أو الواسعة WAN كشبكة الانترنت، كما يوجد العديد من التجهيزات الخاصة بالوصل بين الأجهزة كالمبدلات Switches والموجّهات Routers، وطريقة الوصول للأجهزة عبر الشبكة تتبع عدة بروتوكولات أشهرها <a href="https://academy.hsoub.com/devops/servers/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A8%D8%B1%D9%88%D8%AA%D9%88%D9%83%D9%88%D9%84-tcpip-%D9%88%D8%A8%D8%B9%D8%B6-%D9%85%D9%86-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA%D9%87-r169/" rel="">بروتوكول IP</a> (اختصارًا لبروتوكول الإنترنت Internet Protocol) والذي يحدد عنوانًا مميزًا لكل جهاز على الشبكة يمكن الأجهزة من التخاطب فيما بينها، ويمكنك التعرف على أساسيات أخرى والقراءة أكثر عن الأفكار المذكورة في مجال شبكات الحاسوب من <a href="https://academy.hsoub.com/search/?tags=%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA%20%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA&amp;page=1&amp;sortby=oldest" rel="">سلسلة مقالات أساسيات الشبكات</a>.
</p>

<h3>
	أساسيات الخوادم
</h3>

<p>
	الخوادم servers هي كل جهاز أو برنامج يقدم خدمة لعميل، وما يميزه هو القدرة على الاستجابة لكمية مرتفعة من الطلبات، مما يتطلب توفر الموارد الكافية للخادم لأداء عمله كسعة ذاكرة كبيرة او معالج قوي، وسواء كنت مطورًا أو تعمل خصوصًا ضمن فريق العمليات ستحتاج للتعامل مع تلك الخوادم وإعدادها وفهم متطلباتها وطرق التعامل معها، بدءًا من إعداد نظام التشغيل على جهاز الخادم مرورًا بضبط إعداداته لاستضافة الخدمة كتوصيلها بالشبكة وتشغيلها.
</p>

<p>
	عملت أكاديمية حسوب على ترجمة أفضل مرجع لتعلم الخوادم وإدارتها وهو كتاب <a href="https://academy.hsoub.com/files/10-%D8%AF%D9%84%D9%8A%D9%84-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88/" rel="">دليل إدارة خوادم أوبنتو</a>.
</p>
<iframe allowfullscreen="" data-controller="core.front.core.autosizeiframe" data-embedauthorid="3889" data-embedcontent="" src="https://academy.hsoub.com/files/10-%D8%AF%D9%84%D9%8A%D9%84-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88/?do=embed" style="margin: auto;"></iframe>

<p>
	قد تحتاج في هذه النقطة إلى تعلم نظام التشغيل لينكس والتعامل مع سطر الأوامر فيه إن لم تكن تستعمله من قبل لأنه النظام الشائع والأكثر انتشارًا في إدارة الخوادم وتعلمه أساسي لكل من يريد تعلم DevOps ودخول المجال، وهو ما سنذكره في القسم الآتي.
</p>

<h4>
	وظيفة الخوادم
</h4>

<p>
	تعتمد معظم البرامج المطورة على التكامل مع خدمات أخرى خارجية لإتمام عملها، فمثلًا تحتاج البرامج لتخزين البيانات واسترجاعها فتعتمد على خادم تخزين قواعد البيانات، أو يعتمد على خادم الويب لإدارة الوصول إليه عبر الويب، والعديد من أنواع الخدمات الأخرى التي يختص بها كل خادم على حدى وسنتعرف على بعض أنواعها في الفقرات التالية.
</p>

<h4>
	لغات البرمجة في الخوادم
</h4>

<p>
	تقتصر عملية تنفيذ الأوامر يدويًا ضمن الخادم على المهام البسيطة والتي تُنفذ لمرة واحدة عادةً، لكن أتمتة العمليات على الخادم تتطلب كتابة برامج تعيد تنفيذ المهام المتكررة، ومن تلك اللغات باش Bash وبايثون Python وروبي Ruby وغو Go وغيرها من اللغات والتي يمكنك التعرف عليها وعلى وظيفتها ضمن الخادم من مقال <a href="https://academy.hsoub.com/devops/general/%D8%A3%D9%81%D8%B6%D9%84-5-%D9%84%D8%BA%D8%A7%D8%AA-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%84%D9%80-devops-r416/" rel="">أفضل 5 لغات برمجة لـ DevOps</a>.
</p>

<h4>
	خوادم الويب
</h4>

<p>
	يختص خادم الويب بإدارة الوصول للملفات أو التطبيقات على الخادم من قبل العملاء، فهو المسؤول عن تحديد الملف مثلًا الذي يطلبه العميل وإرسال إليه، أو تحديد تطبيق الويب الذي يحاول العميل طلبه وتنفيذه وإرسال النتيجة للعميل، حيث يتم التواصل بين خادم الويب والعميل الذي يطلب تلك الخدمة عبر البروتوكول الشهير HTTP، ومن أشهر استخدامات خادم الويب هو استضافة تطبيقات ومواقع الويب، ومن أشهر خوادم الويب هما خادم أباتشي Apache وإنجن إكس Nginx، ويمكنك الاطلاع أكثر على خادم الويب واستخداماته من مقال <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%85-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r574/" rel="">مدخل إلى خادم الويب</a>.
</p>

<h4>
	خوادم قواعد البيانات
</h4>

<p>
	يختص خادم قواعد البيانات في إدارة تخزين واسترداد البيانات التي تحتاجها التطبيقات الأخرى، فيركز على سرعة وسهولة جلب تلك البيانات بكفاءة عالية وتوفير مزايا للاستعلام ودمج وتنفيذ الحسابات لاستخلاص المعلومات التي يحتاجها التطبيق، فمثلًا ضمن تطبيق ويب للتسوق يتم تخزين بيانات المنتجات وأسعارها وبيانات الطلبات ضمن خادم قاعدة البيانات، وعندما يحتاج تطبيق الويب لجلب أي معلومة ما يسأل خادم قاعدة البيانات عنها، ومن أشهر الخوادم هي MySQL و MongoDB و Postgres، ويمكنك التعرف أكثر على قواعد البيانات من مقال <a href="https://academy.hsoub.com/devops/servers/databases/%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-r602/" rel="">التعامل مع قواعد البيانات</a>.
</p>

<h4>
	أنواع خوادم أخرى: <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> و Mail و Reverse Proxy
</h4>

<p>
	إن أردت تعلم DevOps فستحتاج إلى التعامل مع العديد من الخوادم الأخرى، أشهرها خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> والتي تسمح لك بالدخول إلى سطر الأوامر لخادم بطريقة آمنة ويمكنك التعرف عليه أكثر من مقال <a href="https://academy.hsoub.com/devops/security/ssh/%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D9%85%D8%B9-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-ssh-%D8%A7%D9%84%D8%B9%D9%85%D9%84%D8%A7%D8%A1-%D9%88%D8%A7%D9%84%D9%85%D9%81%D8%A7%D8%AA%D9%8A%D8%AD-r55/" rel="">العمل مع خواديم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>: العملاء والمفاتيح</a>، وقد يحتاج تطبيقك لإرسال البريد الإلكتروني حيث تفوّض خادم إرسال البريد الإلكتروني Mail Server بتلك العملية، وقد تحتاج أحيانًا لتوزيع الطلبات القادمة إلى خادم معين على عدة خوادم من نفس النوع لتخفيف الحمل عليها، هنا يأتي دور خادم الوكيل العكسي Revese Proxy Server لإدارة التواصل بين العميل وعدة خوادم أخرى، ومن أشهر الخوادم لذلك هي Apache و Nginx.
</p>

<h3>
	نظام تشغيل لينكس
</h3>

<p>
	أنظمة التشغيل هي برامج تدير العتاد والبرامج الأخرى التي تعمل على جهاز الحاسوب، لذا واحدة من المهارات الأساسية لك كمطور أو عضو في فريق العمليات DevOps هي التعرف على مكونات نظام التشغيل وطرق التعامل معه لإدارة البرامج وعملها سواء أثناء تطوير البرنامج أو في بيئة الإنتاج، ومن أشهر أنظمة التشغيل نظام لينكس Linux وهو نظام تشغيل مفتوح المصدر يستخدم في معظم الأجهزة والخوادم وحتى حواسب سطح المكتب، ويتوفر منه عدة نسخ يتم تخصيصها لفئة مختلفة من المستخدمين تسمى توزيعات Distributions، لذا فمن المهم التعرف على نظام التشغيل لينكس، ويمكنك البدء بالتعرف على مكوناته وأشهر التوزيعات وطريقة تثبيته من مقال <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">ما هو نظام التشغيل لينكس؟</a>.
</p>

<p>
	ويمكنك دومًا الرجوع إلى قسم <a href="https://academy.hsoub.com/devops/linux/" rel="">لينكس</a> ففيه عشرات المقالات المفيدة والذي خصصناه لمن يريد تعلم DevOps بادئ الأمر، وننصح أيضًا بكتاب <a href="https://itwadi.com/node/2765" rel="external nofollow">سطر أوامر لينكس</a>.
</p>

<h3>
	أساسيات سطر الأوامر
</h3>

<p>
	يمكنك التخاطب مع أنظمة التشغيل والبرامج عبر الواجهة الرسومية GUI لتشغيل البرامج وضبط الإعدادات وغيرها، لكن هذه الواجهة موجهة للمستخدمين العاديين، لذا دورك كمطور أو عضو من فريق العمليات في DevOps يفرض التعامل مع نظام التشغيل والبرامج لتنفيذ مهام متقدمة لا يمكن أو من الصعب تنفيذها باستخدام الواجهة الرسومية، وهذا هو دور سطر الأوامر وهو استقبال الأوامر من المستخدم وتنفيذها، سواء كانت تلك الأوامر موجهة لنظام التشغيل أو لتنفيذ وضبط برنامج معين يوفر سطر الأوامر مزايا تزيد من كفاءة وقدرة العمليات الممكن تنفيذها.
</p>

<p>
	يمكنك من سطر الأوامر تنفيذ البرامج وتمرير المعاملات لها وربط نواتج تنفيذها مع بعضها لتنفيذ مهمة أعقد، ويمكنك من سطر الأوامر إدارة نظام التشغيل نفسه وضبطه، وإدارة الملفات والمجلدات، فقد تحتاج لتنفيذ تلك العمليات بنفسك يدويًا عبر سطر الأوامر، خصوصًا عند إدارة الخوادم فغالبًا لا توفر معظم الخوادم واجهة رسومية فهي موجهة للمختصين فقط كفريق DevOps من مطورين وأفراد عمليات، ويمكنك التعرف على أساسيات سطر الأوامر وأنواعه المختلفة ضمن أنظمة التشغيل من مقال <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B7%D8%B1%D9%81%D9%8A%D9%91%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-terminal-r18/" rel="">مدخل إلى طرفية لينكس</a> ومقال <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">ما هو سطر الأوامر ؟</a>.
</p>

<h2>
	تعلم DevOps: التعمق في المجال
</h2>

<p>
	تطرقنا في القسم السابق المواضيع الأساسية التي يجب على كل مهندس DevOps تعلمها حتى الاحتراف فهي من بدهيات المجال، وسنتطرق في القسم التالي إلى المواضيع الاختصاصية المتقدمة التي ينتقل إليها من يريد تعلم DevOps بعد تعلم الأساسيات وبذلك يطلق عليه مختص DevOps أو مهندس DevOps خبير.
</p>

<h3>
	الخوادم الافتراضية Virtual Servers والحاويات Containers
</h3>

<p>
	بدلًا من تخصيص جهاز فيزيائي مخصص لكل خادم نحتاجه، أو لكل نوع نظام تشغيل مختلف نريد تثبيته يمكننا تقسيم الجهاز الواحد إلى عدة أجهزة افتراضية نتعامل معها كما لو كانت أجهزة حقيقية منفصلة بمواردها وأنظمة تشغيلها وبيئتها، لتسهل بذلك عملية نشر البرمجيات أو إعداد البيئة لكل خدمة أو مهمة نريد تنفيذها ضمن ممارسات DevOps، ويوجد العديد من التقنيات والطرق لتقسيم موارد الجهاز وعزلها عن بعضها سنتعرف على كل منها في الفقرات التالية.
</p>

<h4>
	الحوسبة الافتراضية VM
</h4>

<p>
	يعتمد مبدأ الحوسبة اعتمادًا على الأجهزة الافتراضية Virtual Machine على تقسيم جهاز الحاسوب بتوزيع العتاد بين الأجهزة الافتراضية، حيث يملك كل خادم افتراضي نظام التشغيل الكامل الخاص به وجزء مخصص له من العتاد Hardware.
</p>

<h4>
	الخوادم الافتراضية VPS
</h4>

<p>
	الخادم الافتراضي الخاص VPS (اختصارًا للعبارة Virtual Private Server) هو بيئة افتراضية معزولة خاصة على جهاز فيزيائي معين، ليبدو كأنه خادم منفصل معزول ببيئة وعتاد خاص، بينما قد تتشارك عدة خوادم افتراضية الجهاز نفسه، يفيد ذلك في تقسيم الجهاز الواحد إلى عدة أجهزة منعزلة لاستضافة الخدمات المختلفة أو لتوزيعها على مستخدمين مختلفين.
</p>

<h4>
	الحاويات containers
</h4>

<p>
	الحاويات هي طريقة لتحديد البيئة ونظام التشغيل والاعتماديات التي يحتاجها برنامج ما بمعزل عن نظام التشغيل الأساسي، وهي تقنية أخف وأصغر وأسهل بالتعامل معها من الأجهزة الافتراضية VM، حيث أنها تعمل فوق نظام التشغيل الواحد وتتشارك العتاد فيما بينها ولا يتم حجز عتاد مخصص لها، ما يقلل حجمها ويزيد من سرعة تشغيلها، وتعتبر الحاويات جزء مهم في ممارسات DevOps سواء لفريق التطوير لبناء بيئات مختلفة معزولة لاختبار عمل التطبيقات أو لفريق العمليات لنشر تلك الحاويات وإدارتها وتوسيعها، ويمكنك التعرف عليها أكثر من مقال <a href="https://academy.hsoub.com/devops/cloud-computing/%D8%A3%D8%A8%D8%B1%D8%B2-%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%AA%D9%8A-%D9%8A%D8%AC%D8%A8-%D8%B9%D9%84%D9%8A%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%85%D8%A7%D9%85-%D8%A8%D9%87%D8%A7-%D8%B9%D9%86-%D8%A7%D9%84%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-r561/" rel="">أبرز المفاهيم التي يجب عليك الإلمام بها عن الحاويات</a>.
</p>

<h4>
	دوكر Docker
</h4>

<p>
	دوكر Docker هي منصة لإنشاء وإدارة وتشغيل الحاويات، والتي باستخدامها يمكننا عزل التطبيقات مع اعتمادياتها عن نظام تشغيل الجهاز وتشغيلها على مختلف أنظمة التشغيل كلينكس وويندوز وماك، حيث تُبنى تلك الحاويات من صورة image والتي تحوي داخلها على حالة نظام ما في لحظة زمنية معينة، مثًلا يمكننا بعد تثبيت وإعداد نظام تشغيل ما ثم تثبيت الاعتماديات اللازمة لعمل تطبيق ضمنه ونسخ ملفات ذلك التطبيق وبناءه أن نحفظ تلك اللحظة الزمنية ما قبل تشغيل التطبيق كصورة في دوكر، لنتمكن بعدها من إنشاء حاوية أو أكثر من تلك الصورة لتشغيل التطبيق بداخلها، بحيث ستكون تلك الحاويات معزولة تمامًا عن نظام التشغيل وعن بعضها البعض.
</p>

<p>
	تفيد تلك الطريقة في حل الكثير من المشاكل، فمثلًا من الصعب تشغيل تطبيقين على نفس نظام التشغيل يعتمد كل منهما على نسخة مختلفة من اعتمادية ما والذي يؤدي لتعارض في عملها، ولكن باستخدام دوكر يمكننا بناء صورة معزولة لكل من تلك التطبيقات تحوي فقط الاعتماديات التي يريدها كل تطبيق، وبعد إنشاء حاوية لكل من تلك الصور وتشغيلها يصبح وكأنما لدينا جهازين منفصلين يختص كل منهما بتشغيل تطبيق واحد فقط، ويفيد استخدام الحاويات أيضًا في عمليات التوسيع، فمثلًا إذا كان لدينا تطبيق خادم معين يعمل بأقصى طاقة استيعابية له، فالحل يكون بعمل نسخة من ذلك الخادم على جهاز جديد آخر لتوزيع الحمل على كليهما، فهنا نستفيد من سهولة إنشاء خادم جديد آخر في دوكر عبر إنشاء حاوية جديدة فقط من صورة ذلك الخادم ليصبح لدينا خادمين يعملان معًا، وهناك العديد من الحلول الأخرى التي يسمح بها دوكر بدءًا من إنشاء بيئة افتراضية للعمل ضمنها في مرحلة التطوير، مرورًا بالمساعدة في إنشاء بيئة لاختبار أو بناء التطبيقات قبل نشرها.
</p>

<p>
	تعتبر دوكر من أشهر منصات إدارة وتشغيل الحاويات وتخدم في معظم ممارسات DevOps سواء من قبل فريق التطوير وخصوصًا من قبل فريق العمليات، وفي أيّ فريق كنت من المهم التعرف على تلك المنصة والتعامل معها ويمكنك البدء بقراءة مقال <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-docker-r3/" rel="">تعرف على Docker</a> وبمشاهدة <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D9%85%D8%A7-%D9%87%D9%8A-%D8%AA%D9%82%D9%86%D9%8A%D8%A9-docker%D8%9F-r639/" rel="">فيديو ما هي تقنية Docker؟</a>.
</p>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" id="ips_uid_6166_6" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="560" data-embed-src="https://www.youtube.com/embed/pAJTmbXCv4I?si=PGL2aHuHfKLRqVK1"></iframe>
</p>

<h4>
	كوبرنيتيز Kubernetes
</h4>

<p>
	توفر منصة كوبرنيتيز Kubernetes (أو اختصارًا K8s) أدوات قوية تختص في إدارة الحاويات وأتمتة عمليات النشر والتوسيع لها سواء ضمن كانت على خادم واحد أو عدة خوادم موزعة، وتوفر أيضًا أدوات أخرى لتوزيع الأحمال بين الحاويات أو لنشر التحديثات عليها مع الحفاظ على استمرار عمل تلك الخدمات، حيث يركز على مهام النشر والتشغيل للخدمات ضمن ممارسات DevOps، لذا وخصوصًا إذا كنت ضمن فريق العمليات من الضروري التعرف على هذه المنصة ويمكنك البدء بقراءة مقال <a href="https://academy.hsoub.com/devops/cloud-computing/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-kubernetes-r467/" rel="">مدخل إلى Kubernetes</a>.
</p>

<h4>
	دوكر سوارم Docker Swarm
</h4>

<p>
	يوفر دوكر بديلًا أخف وأبسط من كوبرنيتيز Kubernetes لإدارة الحاويات يدعى دوكر سوارم docker swarm، والذي يحوي مزايا لإدارة تشغيل وتوزيع الحاويات على عدة أجهزة وتوزيع الأحمال تلقائيًا بين الحاويات، لكنه يفتقر لبعض المزايا مثل المراقبة حيث يحتاج للتكامل مع خدمات إضافية لذلك، وعملية التوسعة باستخدامه تكون يدوية على عكس كوبرنيتيز الذي يوفر تلك الميزة تلقائيًا مع العديد من المزايا المتقدمة، لذا يعد دوكر سوارم مناسبًا لحالات الاستخدام البسيطة لإدارة الحاويات والتي لا نحتاج فيها لإعداد وتثبيت أداة جديدة متقدمة مثل كوبرنيتيز.
</p>

<h3>
	مراقبة الخوادم والتسجيل
</h3>

<p>
	بعد إعداد الخوادم ونشر التطبيق من الضروري ضمن ممارسات DevOps مراقبة عمله من قبل كلا فريقي التطوير والعمليات، وذلك لمراقبة أي مشاكل محتملة ونشر التطويرات لها لحلها أو التغيير على البنية التحتية للاستجابة للعديد من المتغيرات والحوادث، وفي الفقرات التالية سنتعرف على طرق المراقبة للخوادم وأشهر الأدوات التي تساعدنا في ذلك.
</p>

<h4>
	مراقبة الخوادم
</h4>

<p>
	هناك العديد من العوامل الممكن مراقبتها أثناء عمل التطبيق، فمثلًا يجب مراقبة الموارد المستخدمة والموارد المتاحة لتجنب أي خلل في عمل الخادم ورفع أداء الخدمة وسرعتها دومًا، فيمكن ذلك من خلال مراقبة مؤشرات استخدام الذاكرة والمعالج وسعة التخزين على كل خادم، ومن العوامل الأخرى المهمة هي عدد الطلبات المرسلة إلى الخدمة والزمن الوسطي للاستجابة، فقد ترشدنا تلك المؤشرات مثلًا لتوفير عدة نسخ من الخادم نفسه تكفي لاستقبال جميع الطلبات، أو قد تشير إلى خلل ضمن البرنامج ترشد فريق التطوير إلى ضرورة تغيير الخوارزميات المستخدمة ضمن التطبيق لرفع أداءه.
</p>

<p>
	ومن العوامل المهم مراقبتها أيضًا هي خرج التطبيق، فكل تطبيق أو خادم يولّد خرجًا يوصف العمليات التي يقوم بها، يُطبع ذلك الخرج إلى الخرج القياسي Standard Output أو إلى ملفات سجلات Logs خاصة، يفيد قراءتها وتحليلها بالحصول على نظرة واسعة على الخوادم أثناء عملها.
</p>

<h4>
	أشهر أدوات المراقبة
</h4>

<p>
	توفر أنظمة التشغيل بعض الأدوات المفيدة في مراقبة النظام والبرامج العاملة ضمنه والموارد، وتوجد بعض الأدوات والخدمات الخارجية التي تساعد في مراقبة عدة خوادم معًا:
</p>

<ul>
	<li>
		أدوات نظام تشغيل لينكس، أشهرها الأداة <code>top</code> والتي تفيد في معاينة استهلاك كل إجرائية process تعمل حاليًا من موارد الحاسوب، وهي الموجودة افتراضيًا ضمن جميع توزيعات لينكس، وفي حال أردت تفاصيل أكثر يوجد أداة شبيهة بها تدعى <code>htop</code> تعرض لك معلومات مفصلة إضافية، يمكنك التعرف على تلك الأدوات وأخرى متوفرة في لينكس من مقال <a href="https://academy.hsoub.com/devops/linux/4-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-%D9%85%D9%86-%D8%A3%D8%AC%D9%84-%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r523/" rel="">4 أدوات مفتوحة المصدر من أجل مراقبة نظام لينكس</a>.
	</li>
	<li>
		أدوات Elastic وهي حزمة متكاملة لمراقبة سجلات التطبيقات والأداء للخوادم وتعد من أشهر الأدوات استخدامًا.
	</li>
	<li>
		أداة Prometheus لتجميع بيانات المراقبة من مختلف المصادر وتخزينها ضمن قاعدة بيانات بتسلسل حدوثها الزمني، ما يمكننا من الاستعلام عن كل تلك البيانات بطريقة سهلة من مصدر واحد، وتوفر هذه الأداة العديد من المزايا المهمة لعملية المراقبة كإرسال التحذيرات بناءًا على البيانات الواردة وغيرها.
	</li>
	<li style="text-align: center;">
		أداة Grafana والتي توفر لوحة لمراقبة البيانات تحوي مخططات بيانية بالعديد من الأشكال والصيغ وأدوات سهلة للاستعلام عن البيانات الواردة من مختلف المصادر التي يمكن ربطها مع هذه الأداة مثل أداة Prometheus وغيرها.
	</li>
	<li>
		الأداة Checkmk لمراقبة الخوادم والتطبيقات، حيث يتوفر نسخة مفتوحة المصدر منها يمكنك تشغيلها مجانًا، وللتعرف على الأداة وطريقة تثبيتها وإعدادها يمكنك مراجعة المقال <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D8%AE%D8%A7%D8%AF%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A3%D8%AF%D8%A7%D8%A9-checkmk-r584/" rel="">مراقبة خادم لينكس باستخدام أداة Checkmk</a>.
	</li>
</ul>

<p>
	توضح الصورة التالية نموذجًا عن عمل أداة Grafana:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="136968" href="https://academy.hsoub.com/uploads/monthly_2023_10/grafana.jpg.f62190a0c969b5fa89f86e9edde190a0.jpg" rel=""><img alt="أداة Grafana" class="ipsImage ipsImage_thumbnailed" data-fileid="136968" data-ratio="62.48" data-unique="j8hk6s4u9" style="width: 717px; height: auto;" width="717" src="https://academy.hsoub.com/uploads/monthly_2023_10/grafana.thumb.jpg.0d698da7f8a7aee25ca87ab5e60a27ec.jpg"> </a>
</p>

<h3>
	أتمتة سير العمل عبر CI/CD
</h3>

<p>
	تركز ممارسات DevOps على أتمتة العمليات المتكررة ابتداءً بالعمليات المساعدة لتطوير البرمجيات وصولًا لعمليات النشر، تدخل أنشطة CI/CD كجزء أساسي في ممارسات DevOps وهي ما سنتعرف عليه في الفقرة التالية.
</p>

<h4>
	التكامل المستمر والنشر المستمر CI/CD
</h4>

<p>
	التكامل المستمر والنشر المستمر CI/CD (اختصارًا للعبارة Continuous Integration/Continuous Delivery) تدخل في صلب ممارسات DevOps حيث:
</p>

<ul>
	<li>
		التكامل المستمر: هي العمليات التي تدخل في مرحلة تطوير البرمجيات لدمج التغييرات والإضافات الصحيحة فقط ضمن الشيفرة المصدرية للتطبيق، كالتدقيق في تنسيق الشيفرة المصدرية لزيادة وضوحها وبناء نسخة من البرنامج وتنفيذ الاختبارات عليها متضمنة التغييرات الجديدة والتأكد من صحة عملها وجهوزية النسخة للنشر
	</li>
	<li>
		النشر المستمر: هي عمليات التجهيز لنشر آخر نسخة من الشيفرة المصدرية التي تنتجها مرحلة التكامل المستمر، وتتكون من بناء البرنامج وتجهيزه لبيئة الإنتاج.
	</li>
</ul>

<p>
	يمكنك التعرف أكثر على تلك العمليات من <a href="https://academy.hsoub.com/devops/deployment/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AA%D9%83%D8%A7%D9%85%D9%84-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-%D9%88%D8%A7%D9%84%D9%86%D8%B4%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D9%85%D8%B1-cicd-r644/" rel="">مقال مدخل إلى التكامل المستمر والنشر المستمر CI/CD</a>، وبمتابعة الفيديو التالي:
</p>

<p style="text-align: center;">
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="450" id="ips_uid_6166_7" src="https://academy.hsoub.com/applications/core/interface/index.html" title="YouTube video player" width="800" data-embed-src="https://www.youtube.com/embed/hFzSG9qNWWs"></iframe>
</p>

<h4>
	كيف نستعمل Jenkins
</h4>

<p>
	جنكيز Jenkins هو أحد الأدوات التي تساعد في إنشاء خط pipeline للتكامل والنشر المستمر وأتمتمه جميع العمليات الخاصة بهما، حيث توفر تكاملًا مع العديد من الخدمات الأخرى باستخدام الإضافات plugins، فبدئًا من التكامل مع مستودع الشيفرة المصدرية للبرنامج سواء Github أو Gitlab وصولًا لتحضير بيئات الاختبار والنشر وتنفيذ أوامر المختلفة ضمنها، ويمكنك التعرف على طريقة تثبيته وإعداده من مقال <a href="https://academy.hsoub.com/devops/linux/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-jenkins-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-1804-r462/" rel="">تثبيت Jenkins على أوبنتو 18.04</a>.
</p>

<h3>
	أتمتة الخوادم والبنية التحتية
</h3>

<p>
	تصل ممارسات DevOps في أتمتة وتسريع وتسهيل عمليات النشر وإدارة البنية التحتية إلى أتمتة إنشاء البنية التحتية نفسها ولا تصبح مهمة إدارة شكل البنية التحتية مقتصرًا على فريق العمليات، بل يمكن حتى لفريق التطوير المشاركة بتوصيف البنية التحتية التي يلزمها البرنامج قيد التطوير، من هنا نشأت عدة ممارسات منها توصيف البنية التحتية ضمن الشيفرة المصدرية نفسها، فيُضاف ملف خاص ضمن الشيفرة المصدرية للبرنامج يوصّف ما يحتاجه من بنية تحتية، وفي مرحلة النشر تتولى برمجيات خاصة ترجمة ملفات التوصيف تلك إلى عمليات إنشاء وإعداد البنية التحتية لها من خوادم، وتستخدم عملية الأتمتة تلك خصوصًا في البيئة السحابية، ومن الأدوات الشهيرة لذلك Terraform و Puppet و Ansible.
</p>

<h4>
	Terraform
</h4>

<p>
	توفر أداة Terraform المفتوحة المصدر طريقة لأتمتة عمليات إنشاء وضبط البنية التحتية في البيئات السحابية، وتقدم طريقة لتحديد النسخ المتلاحقة من أشكال البنية التحتية بشكل إصدارات يمكن التغيير بينها عند الحاجة، وتوفر تكاملًا مع الخدمات السحابية المشهورة مثل خدمات الويب لأمازون AWS.
</p>

<h4>
	Puppet
</h4>

<p>
	الأداة Puppet هي من الأدوات الشهيرة أيضًا لأتمتة ضبط الخوادم والبنى التحتية وتستعمل في إدارة الإعدادات والمساعدة في أتمتة الإعداد المُسبق provisioning وإعداد وإدارة البنية التحتية. يقلل التخطيط المسبق واستخدام أدوات إدارة الإعدادات مثل الأداة Puppet من الوقت المستغرق في تكرار المهام الأساسية، ويساعد على التأكد من أن الإعدادات مضبوطة بدقة، وتقوم على أساس واحد فيما بينها في جميع الخوادم والبنى التحتية.
</p>

<p>
	وتعمل أداة Puppet، وفق أسلوب خادم-عميل، أي أنك تحتاج لتثبيت برمجية على كل خادم تريد إدارته ليتواصل بدوره مع أداة Puppet لاستقبال أوامر المهام التي تريد تنفيذها على تلك الخوادم.
</p>

<p>
	ويمكنك التعرف عليها أكثر من سلسلة مقالات <a href="https://academy.hsoub.com/tags/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85%20puppet%20%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9%20%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85/" rel="">استخدام puppet لإدارة الخواديم</a>.
</p>

<h4>
	Ansible
</h4>

<p>
	من عمليات الأتمتة المهمة التي تدخل في ممارسات DevOps هي أتمتة عمليات ضبط الخوادم التي تتكرر، فبدلًا من الدخول يدويًا إلى الخادم وضبط إعداداته عند الحاجة لإنشاء خادم جديد يمكن الاعتماد على أدوات تُنفذ عملية الضبط تلك آليًا مثل الأداة الشهيرة Ansible.
</p>

<p>
	أداة أنسبل Ansible من أشهر أدوات أتمتة ضبط الخوادم والتي تمكننا من وصف خطوات تنفيذ مهمة أو ضبط ما للخادم لمرة واحدة ثم إعادة تنفيذها على خادم أو أكثر آليًا، ما يوفر الوقت اللازم لضبط الخوادم ويقلل الأخطاء، فمثلًا يمكنك ترقية نظام التشغيل أو إعداد حسابات المستخدمين والصلاحيات لهم أو نشر تطبيقك أو ترقية قاعدة بيانات على خادم أو بيئة افتراضية أو أكثر عن طريقها دون الحاجة للدخول يدويًا إلى كل منها على حدى وتكرار تنفيذ نفس المهام، ومن أهم مزايا أنسبل أنه لا يحتاج لأي إعداد أو تثبيت لبرامج على الخادم، حيث يتصل ويدخل إلى الخادم ببساطة عبر اتصال <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> لإعدادها تمامًا كما لو كنت تُنفذ تلك المهام يدويًا، ويمكنك التعرف على طريقة تثبيته من مقال <a href="https://academy.hsoub.com/devops/deployment/ansible/%D9%83%D9%8A%D9%81%D9%8A%D9%91%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D8%B6%D8%A8%D8%B7-ansible-%D8%B9%D9%84%D9%89-ubuntu-1804-r394/" rel="">كيفيّة تثبيت وضبط Ansible على Ubuntu 18.04</a>.
</p>

<p>
	وكما تتميز أنسبل بتوفر المكونات الجاهزة modules لها والتي تحوي على إعدادات مسبقة يمكنك تثبيتها وتنفيذها مباشرة دون الحاجة لكتابتها بنفسك، وللتعرف أكثر على هذه الوحدات وطريقة التعامل معها يمكنك قراءة مقال <a href="https://academy.hsoub.com/devops/deployment/ansible/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D9%88%D8%AD%D8%AF%D8%A7%D8%AA-ansible-r637/" rel="">مدخل إلى وحدات Ansible</a>.
</p>

<h2>
	خارطة طريق تعلم DevOps
</h2>

<p>
	إليك خارطة طريق كاملة من الدخول في مجال DevOps حتى احترافه، ومهما كان دورك في عملية صناعة البرمجيات ستستفيد من بعض أو كل هذه المجالات في تطوير كفاءة وسرعة عملك:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="136971" href="https://academy.hsoub.com/uploads/monthly_2023_10/-devops.png.ffb1c87e039c0c2bb0a589912f32c61a.png" rel=""><img alt="تعلم-devops.png" class="ipsImage ipsImage_thumbnailed" data-fileid="136971" data-ratio="262.01" data-unique="jp82kuxgx" width="800" src="https://academy.hsoub.com/uploads/monthly_2023_10/-devops.png.ffb1c87e039c0c2bb0a589912f32c61a.png"></a>
</p>

<h2>
	سوق العمل
</h2>

<p>
	لديك عدة خيارات وتخصصات عمل في مجال DevOps، كلها تتعلق بالممارسات التي ذكرناها من إدارة للبنية التحتية إلى تطوير أدوات تساعد الفرق التي تعمل على تطوير المنتج ومنها:
</p>

<ul>
	<li>
		مهندس DevOps: ستكون مسؤولًا عن التخطيط والتطوير للأدوات المستخدمة في ممارسات DevOps، مثلًا قد يطلب منك تجهيز آلية للاختبار والتوصيل المستمر CI/CD، أو الإشراف على عمليات الأتمتة الخاصة بإصدار نسخ جديدة من المنتج، أو تجهيز نظام مراقبة أداء وأخطاء للمنتج تساعد فرق التطوير والعمليات وحتى الإدارة.
	</li>
	<li>
		مهندس نظم سحابية Cloud Engineer: ستكون مسؤولًا عن إدارة وتطوير الخوادم في بنية سحابية خدمةً للمنتج الرقمي، وإيجاد حلول للمشاكل التقنية التي قد تحدث، كتوسيع النظام حسب الحاجة وزيادة وثوقية وأمان ومرونة النظام بشكل عام، أو قد يطلب منك نقل نظام من استضافة عادية على خادم واحد إلى نظام سحابي للاستفادة من مزاياه، أو تقديم الاستشارات والحلول المتعلقة بتخطيط وإدارة البنية التحتية لنظام ما.
	</li>
</ul>

<h2>
	ختامًا
</h2>

<p>
	تعرفنا في هذا الدليل على مفهوم DevOps والممارسات المتعلقة به، كما تعرفنا على الأساسيات المتعلقة به من بنية تحتية وخوادم بأنواعها، والتقنيات المستخدمة كالخوادم الافتراضية والحاويات وأشهر أدوات إنشاءها وإدارتها، كما تعرفنا على عدة أدوات وتقنيات تفيد في أتمتة مختلف المهام في عملية تطوير المنتج الرقمي، كأدوات أتمتة سير عملية التطوير والتوصيل عبر CI/CD وصولًا لأتمتة تحضير وتجهيز البنية التحتية اللازمة للتشغيل.
</p>

<p>
	مهما كان دورك في عملية تطوير المنتجات الرقمية فستجد في ممارسات DevOps ومفاهيمها الأساسية ما يساعدك على رفع سرعة تطوير المنتج وجودته وكفاءته، كما ستجد فيها ما يساعدك لرفع انتاجية عملك وكفاءته، فقد تستفيد منها كمطور لتساعدك على أتمتة بعض الأعمال اليدوية كالاختبار وتحضير بيئة تطوير محلية، أو كمسؤول عمليات في أتمتة الكثير من مهام النشر والمراقبة والتحضير لنشر المنتج، أو حتى كمدير منتج لزيادة انتاجية وكفاءة فريق العمل المسؤول عن منتجك وتوفير مراقبة تفيدك في اتخاذ قرارات حول تطوير المنتج.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D9%84%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D8%B9%D8%AF-devops-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%D9%8A%D8%AC%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D9%82%D9%86%D9%8A%D8%A9-%D8%A7%D9%84%D8%A3%D9%83%D8%AB%D8%B1-%D8%A3%D9%87%D9%85%D9%8A%D8%A9-%D8%A7%D9%84%D9%8A%D9%88%D9%85-r421/" rel="">لماذا تعد DevOps الاستراتيجية التقنية الأكثر أهمية اليوم</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%AD%D9%85%D8%B6-devops-%D8%A7%D9%84%D9%86%D9%88%D9%88%D9%8A-r446/" rel="">تحليل حمض DevOps النووي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D9%85%D8%AD%D8%A7%D9%83%D8%A7%D8%A9-%D8%B9%D9%82%D9%84%D9%8A%D8%A9-devops-r450/" rel="">محاكاة عقلية DevOps</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">796</guid><pubDate>Sun, 15 Oct 2023 13:04:00 +0000</pubDate></item><item><title>&#x645;&#x627; &#x647;&#x64A; &#x62A;&#x642;&#x646;&#x64A;&#x629; cron &#x644;&#x62C;&#x62F;&#x648;&#x644;&#x629; &#x627;&#x644;&#x645;&#x647;&#x627;&#x645;&#x61F;</title><link>https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D9%87%D9%8A-%D8%AA%D9%82%D9%86%D9%8A%D8%A9-cron-%D9%84%D8%AC%D8%AF%D9%88%D9%84%D8%A9-%D8%A7%D9%84%D9%85%D9%87%D8%A7%D9%85%D8%9F-r791/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/---cron.png.91930c9ee133ae965fac740b54dd585c.png" /></p>
<p>
	هذا الفيديو عبارة عن دليل مختصر لشرح وظائف Cron بالأمثلة العملية، إن Cron هو أحد أكثر الأدوات المفيدة التي يمكنك العثور عليها في نظام التشغيل. فمن خلال Cron يمكنك جدولة المهام لتنفذها في وقت محدد على نظام التشغيل.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="603" id="ips_uid_3893_5" src="https://academy.hsoub.com/applications/core/interface/index.html" title="ما هي تقنية cron لجدولة المهام" width="1072" data-embed-src="https://www.youtube.com/embed/uLnPBHU_lw4"></iframe>
</p>

<p>
	تعلم المزيد عن لينكس في مسار أنظمة التشغيل في <a href="https://academy.hsoub.com/learn/computer-science/" rel="">دورة علوم الحاسوب</a>، ولا تنسَ الاستعانة خلال رحلة تعلمك وعملك بتوثيقات <a href="https://wiki.hsoub.com/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9" rel="external">موسوعة حسوب</a> المجانية. وإذا أردت متابعة المعلومات البرمجية العلمية مكتوبة فيمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/" rel="">قسم البرمجة في أكاديمية حسوب</a>، كما يمكنك متابعة جديد الفيديوهات التقنية المتاحة على <a href="https://www.youtube.com/@HsoubAcademy" rel="external nofollow">يوتيوب أكاديمية حسوب</a> مجانًا.
</p>
]]></description><guid isPermaLink="false">791</guid><pubDate>Sun, 22 May 2022 15:00:00 +0000</pubDate></item><item><title>&#x645;&#x62F;&#x62E;&#x644; &#x625;&#x644;&#x649; &#x627;&#x644;&#x62E;&#x62F;&#x645;&#x627;&#x62A; &#x627;&#x644;&#x645;&#x635;&#x63A;&#x631;&#x629; Microservices &#x641;&#x64A; &#x62F;&#x64A;&#x641;&#x648;&#x628;&#x633;</title><link>https://academy.hsoub.com/devops/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B5%D8%BA%D8%B1%D8%A9-microservices-%D9%81%D9%8A-%D8%AF%D9%8A%D9%81%D9%88%D8%A8%D8%B3-r600/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_04/624bdb145404e_----microservices-.png.3fd2a10878593c7831b7990f360f6508.png" /></p>

<p>
	تكمن الفكرة الرئيسة من الخدمات المصغرة في سهولة بناء بعض أنواع التطبيقات وصيانتها عند تقسيمها إلى أجزاء أصغر قابلة للتركيب وتعمل معًا، حيث يُطوَّر كل مكون باستمرار، ويستطيع المطور صيانته على حدة، ثم تُجمع هذه الأجزاء لتكوين التطبيق، على عكس التطبيق التقليدي ذي المعمارية المتراصة monolithic التي يُطور فيها البرنامج مثل قطعة واحدة، وتكون كل خدماته في وحدات برمجية متراصة، وتعمل كلها في وقت واحد.
</p>

<p>
	تتميز التطبيقات المكونة من مجموعة من المكونات المعيارية بسهولة الفهم والاختبار، وكذلك سهولة الصيانة طوال مدة عمل التطبيق، وقد مكّنت المنظمات من تحقيق مرونة أعلى، مع القدرة على تحسين الوقت المستغرق لتحسين عملية الإنتاج، فأثبت هذا النهج تفوقه خاصةً في تطبيقات المؤسسات الكبيرة التي تعمل عليها فرق من المطورين المتنوعين جغرافيًا وثقافيًا، كما كانت له فوائد أخرى هي:
</p>

<ul>
<li>
		استقلالية المطور: تعمل الفرق الصغيرة بالتوازي، ويمكنها تكرار دورات التطوير development cycles أسرع من الفرق الكبيرة.
	</li>
	<li>
		العزل والمرونة: فإذا توقف أحد المكونات نعزله لفترة قصيرة، بينما تستمر باقي مكونات التطبيق بعملها.
	</li>
	<li>
		قابلية التوسع: تستهلك المكونات الأصغر موارد أقل، ويمكن توسيع نطاقها لتلبية تزايد الطلب على هذا المكون فقط.
	</li>
	<li>
		أتمتة دورة الحياة: من السهل ملاءمة المكونات الفردية في أنابيب التسليم المستمر وسيناريوهات النشر المعقدة، وهذا غير ممكن في نظام المعمارية المتراصة.
	</li>
	<li>
		العلاقة بالعمل: تُقَسم بنى الخدمات المصغرة على طول حدود مجال العمل، مما يزيد الاستقلالية والفهم في المؤسسة.
	</li>
</ul>
<p>
	يعتمد التعريف الشائع للخدمات المصغرة على كل خدمة صغيرة توفر الواجهة البرمجية للتطبيقات <abbr title="Application Programming Interface | واجهة برمجية">API</abbr> مثل نقطة وصول، وتكون REST <abbr title="Application Programming Interface | واجهة برمجية">API</abbr> غالبًا عديمة الحالة stateless، ويمكن الوصول إليها عبر <a href="https://academy.hsoub.com/programming/general/%d9%85%d8%af%d8%ae%d9%84-%d8%a5%d9%84%d9%89-http-r73/" rel="">بروتوكول HTTPS</a> تمامًا مثل <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D8%B5%D9%81%D8%AD%D8%A9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%88%D9%85%D9%88%D9%82%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%88%D8%AE%D8%A7%D8%AF%D9%85-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%88%D9%85%D8%AD%D8%B1%D9%83-%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-r572/" rel="">صفحة الويب</a> القياسية، وتعدّ هذه الطريقة سهلةً للمطورين؛ لأنها لا تتطلب إلا أدوات ودوال يعرفها الكثير منهم.
</p>

<h2>
	هل مفهوم الخدمات المصغرة حديث؟
</h2>

<p>
	إن فكرة فصل التطبيقات إلى أجزاء أصغر ليست جديدةً، حيث تناولت نماذج برمجة أخرى هذا المفهوم، مثل مفهوم البنية الخدمية Service-oriented architecture، والتي تختصر إلى SOA، ومع ذلك أدت التطورات التكنولوجية الحديثة المرتبطة بالتوقعات المتزايدة "للتجارب الرقمية" إلى ظهور جيل جديد من أدوات وتقنيات التطوير المستخدمة لتلبية متطلبات التطبيقات التجارية الحديثة.
</p>

<p>
	لا تعتمد الخدمات المصغرة على التكنولوجيا المُعدة لدعم هذا المفهوم فقط، بل تعتمد أيضًا على ثقافة وخبرة المؤسسة، والبنى المتوافرة لفرق التطوير لتتمكن من اعتماد هذا النموذج، فالخدمات المصغرة جزء من تحول أكبر في أقسام تكنولوجيا المعلومات نحو ثقافة DevOps، والتي تعني تعاون فرق التطوير Development والعمليات Operation تعاونًا وثيقًا لدعم أحد التطبيقات على مدار دورة حياته، والعمل على دورة إصدار سريعة أو مستمرة بدلًا من دورة تقليدية طويلة.
</p>

<h2>
	أهمية المصدر المفتوح للخدمات المصغرة
</h2>

<p>
	عندما تصمم تطبيقاتك من الألف إلى الياء لتكون معياريةً وقابلةً للتركيب، فسيتيح لك ذلك استخدام عدد كبير من المكونات المتاحة في أماكن مختلفة، والتي ربما كانت تتطلب حلولًا مسجلة الملكية سابقًا، إما بسبب ترخيص المكونات أو المتطلبات المتخصصة، ويمكن أن تكون بعض مكونات التطبيق أدوات جاهزةً مفتوحة المصدر، ويتوافر عدد لا يحصى من المشاريع مفتوحة المصدر التي تنفذ المتطلبات الشاملة لبنى الخدمات المصغرة، مثل المصادقة واكتشاف الخدمة والتسجيل والمراقبة وموازنة الحمل والتوسع وغيرها.
</p>

<p>
	يسهّل التركيز على الخدمات المصغرة على مطوري التطبيقات تقديم واجهات بديلة لتطبيقاتك، إذ ستصبح الاتصالات بين مكونات التطبيق قياسيةً عندما يكون كل شيء <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-api-r1314/" rel="">واجهة برمجة تطبيقات <abbr title="Application Programming Interface | واجهة برمجية">API</abbr></a>، وإذا أراد المكون الاستفادة من تطبيقك وبياناتك فما عليه إلا أن يكون قادرًا على المصادقة والتواصل عبر واجهات برمجة التطبيقات القياسية، مما يتيح لمن هم داخل مؤسستك أو خارجها تطوير طرق جديدة بسهولة للاستفادة من بيانات وخدمات تطبيقك.
</p>

<h2>
	الارتباط بين الحاويات والخدمات المصغرة
</h2>

<p>
	ظهر المفهوم الحديث لحاويات <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">نظام التشغيل</a> OS الخفيفة في أوائل العقد الأول من القرن الحادي والعشرين مثل جزء من مشروع <a href="https://www.freebsd.org" rel="external nofollow">FreeBSD</a>، وقدم <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-docker-r3/" rel="">Docker</a> تجربة مستخدم محسّنةً لإنشاء صور الحاويات ومشاركتها، فلاقت اعتمادًا كبيرًا بدءًا من عام 2013. وتناسب الحاويات الخدمات المصغرة، وتتوافق مع الرغبة في الحصول على مكونات خفيفة يمكن إدارتها واستبدالها ديناميكيًا بسهولة، ويمكن تقليص الحاوية للحد الأدنى من القطع القابلة للاستمرار واللازمة لتشغيل ما بداخلها، بدلاً من وضع وظائف متعددة في نفس الجهاز الافتراضي أو المادي، على عكس الأجهزة الافتراضية، وتساعد سهولة التطوير التي يوفرها Docker والأدوات المماثلة على إمكانية تطوير الخدمات واختبارها بسرعة.
</p>

<p>
	الحاويات مجرد أداة، وبنية الخدمات المصغرة مجرد مفهوم، لذلك يمكن إنشاء تطبيق يتبع مفهوم الخدمات المصغرة دون استخدام الحاويات، تمامًا كما يمكن إنشاء تطبيق تقليدي داخل الحاوية، وسيكون هذا منطقيًا عندما تريد الاستفادة من إمكانيات تنظيم الحاوية دون إعادة كتابة تطبيق كبير ذي معمارية متراصة.
</p>

<h2>
	تنسيق الخدمات المصغرة
</h2>

<p>
	لتشغيل تطبيق قائم على الخدمات المصغرة، يجب أن تكون قادرًا على مراقبة الأجزاء المختلفة المكونة للتطبيق وإدارتها وتوسيع نطاقها، وتوجد أدوات مختلفة تسمح لك بذلك، وقد تكون بعض الأدوات مفتوحة المصدر جزءًا من الحل، مثل <a href="https://academy.hsoub.com/devops/cloud-computing/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-kubernetes-r467/" rel="">Kubernetes</a>، ويمكن استخدام أدوات أخرى لتنظيم أجزاء التطبيق التي لا توجد في <a href="https://academy.hsoub.com/devops/cloud-computing/%D8%A3%D8%A8%D8%B1%D8%B2-%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%AA%D9%8A-%D9%8A%D8%AC%D8%A8-%D8%B9%D9%84%D9%8A%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%85%D8%A7%D9%85-%D8%A8%D9%87%D8%A7-%D8%B9%D9%86-%D8%A7%D9%84%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-r561/" rel="">الحاويات</a>، فعلى سبيل المثال قد تستخدم Heat لإدارة مكونات التطبيق في سحابة OpenStack.
</p>

<p>
	يمكن استخدام المنصة مثل خدمة Platform as a service، والتي تختصر إلى PaaS، والتي تتيح للمطورين التركيز على كتابة التعليمات البرمجية عن طريق تجريد بعض تقنيات التنسيق الأساسية، أي تضمين الميزات الأساسية لهذه التقنيات، كما تسمح لهم باختيار مكونات مفتوحة المصدر جاهزة لأجزاء معينة من التطبيق بسهولة، مثل محرك تخزين قاعدة البيانات، أو خدمة التسجيل أو خادم التكامل المستمر أو <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%85-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r574/" rel="">خادم الويب</a>، ولإدارة مكونات التطبيق مباشرةً تستخدم بعض أنظمة PaaS، مثل <a href="https://www.okd.io" rel="external nofollow">OpenShift</a>، مشاريع أولية مثل <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-docker-r3/" rel="">Docker</a> و <a href="https://academy.hsoub.com/devops/cloud-computing/%D9%86%D8%B8%D8%A7%D9%85-%D9%83%D9%88%D8%A8%D9%8A%D8%B1%D9%86%D8%AA%D8%B3-kubernetes-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%B9%D9%85%D9%84%D9%87-r598/" rel="">Kubernetes</a>، بينما يحاول البعض الآخر إعادة تنفيذ أدوات الإدارة بأنفسهم.
</p>

<h2>
	ماذا عن التطبيقات الحالية؟
</h2>

<p>
	قد يكون استخدام الخدمات المصغرة عنصرًا مهمًا للمضي قدمًا في استراتيجية تكنولوجيا المعلومات في المؤسسة، إلا أن العديد من التطبيقات لا تتوافق مع هذا النموذج، ولا نتوقع إعادة تصميم هذه التطبيقات بين عشية وضحاها لتلبي النموذج الجديد، إذ توجد تكلفة ثقافية وتقنية للانتقال إلى بنية الخدمات المصغرة، ولكن لحسن الحظ يمكن أن تعمل الخدمات المصغرة والتطبيقات التقليدية معًا في نفس البيئات، بشرط أن يكون لدى المنظمة استراتيجية قوية لتكنولوجيا المعلومات ثنائية النسق.
</p>

<p>
	تكنولوجيا المعلومات ثنائية النسق Bi-modal IT وفقًا لـشركة جارتنر Gartner، هي القدرة على استخدام أسلوبين مختلفين ولكن مترابطين لتطوير التطبيقات، يركز الأول على الاستقرار ووقت التشغيل، والثاني على المرونة والسرعة، من خلال طرق أحدث تتضمن أمورًا مثل التزويد الذاتي ودورات التطوير القصيرة، وستحتاج العديد من المنظمات، إن لم يكن معظمها، إلى التكيف للعمل مع كليهما في السنوات القادمة.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/resources/what-are-microservices" rel="external nofollow">?What are microservices</a> من موقعopensource.com
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/general/%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%A7%D9%84%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B5%D8%BA%D9%91%D8%B1%D8%A9-%D8%B9%D9%86-%D8%B7%D8%B1%D9%8A%D9%82-devops-r449/" rel="">حماية الخدمات المصغّرة عن طريق DevOps</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/angular/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-%D8%A8%D9%86%D8%A7%D8%A1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-angular-%D9%88%D9%82%D8%A7%D8%B9%D8%AF%D8%A9-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-firestore-r1409/" rel="">مقدمة في بناء تطبيقات الويب باستخدام إطار العمل Angular وقاعدة بيانات Firestore</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A7%D9%84%D8%AA%D9%82%D8%AF%D9%85%D9%8A%D8%A9-pwa-r832/" rel="">مدخل إلى تطبيقات الويب التقدمية PWA</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">600</guid><pubDate>Wed, 30 Mar 2022 16:03:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x641;&#x631;&#x642; &#x628;&#x64A;&#x646; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x64A;&#x627;&#x62A; &#x627;&#x644;&#x62D;&#x631;&#x629; &#x648;&#x645;&#x641;&#x62A;&#x648;&#x62D;&#x629; &#x627;&#x644;&#x645;&#x635;&#x62F;&#x631;</title><link>https://academy.hsoub.com/devops/general/%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%B1%D8%A9-%D9%88%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r590/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/620f56fb4b302_------.png.1f3ceadf06c5d945c37dfcb37371b21f.png" /></p>

<p>
	يميل الكثير من الناس لإهمال جانبٍ معيّن من عملية تطوير البرمجيات، ألا وهو كيفية ترخيص البرنامج، حيث تُملي رخصة البرنامج كيفية استعمال وتوزيع الشيفرة المصدرية بواسطة المُرخّص لهم -أي المستخدمين-، وهذا من شأنه أن يؤثر بشدة على حجم تبنّي الحلّ التقني. تُباع معظم البرامج باستخدام رخصة احتكارية تسمح للناشر أو المطوّر بالاحتفاظ بكامل الحقوق الفكرية للبرنامج.
</p>

<p>
	هناك بعض وجهات النظر التي تنظر لهذه الرخصة بأنها تضيف قدرة تحكم إضافية للناشر يمكن الاستغناء عنها، إذ يساهم منع الأشخاص المُرخّص لهم بنسخ وتغيير الشيفرة المصدرية للبرنامج بكبح ناشري البرامج الاحتكاريّة من الابتكار والتطوير المحتمل لتقنيات جديدة. ألهم هذا الموقف في إيجاد رخَص تعطي الحقّ للمستخدمين برؤية الشيفرة المصدرية وتعديلها ومشاركتها حسب رغبتهم، وعُرفت البرمجيات المرخّصة وفقًا لتلك الطريقة بأحد الإسمين: البرمجيات الحرّة؛ أو <a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">بالبرمجيات مفتوحة المصدر</a>.
</p>

<p>
	يرمز كلا المصطلحين للمعنى ذاته عمومًا، وهو: برمجيات تحتوي على القليل من القيود المتعلّقة بكيفية استعمالها، ويرى مناصروها أن البرمجيات الحرّة والبرمجيات مفتوحة المصدر أكثر أمانًا وفاعليّةً، وأنها تعمل بموثوقية أكبر من البرمجيات الاحتكارية. لمَ نستخدم إذًا تسميتين مختلفتين للدلالة على الشيء ذاته؟ يتضمّن التفسير فهمًا لتاريخ كلا المصطلحين، وفهمًا أعمق للتفاصيل الدقيقة التي تفصل المصطلحين المختلفين.
</p>

<h2>
	لمحة تاريخية
</h2>

<p>
	لا تُعد إمكانية السماح للفرد برؤية وتعديل ومشاركة الشيفرة المصدرية لبرمجيّة معيّنة دون أي ملاحقة قانونيّة فكرةً جديدة؛ فقد كانت توزّع البرمجيات قبل سبعينيات القرن الماضي مصحوبةً بشيفرتها المصدرية، والسبب في ذلك هو أنّ هذه البرمجيات كانت مخصّصةً لمتطلبات العتاد الصلب، وعلى المستخدم أن يعدلها قبل أن تعمل بنجاح على حاسوبه، أو لإضافة وظائف جديدة.
</p>

<p>
	كان التعامل مع الحواسيب في هذه الفترة لمعظم الأشخاص مقتصرًا على أهدافٍ أكاديميّة أو بحثيّة. ومعنى هذا، أن موارد الحوسبة كانت تُشارَك أغلب الأحيان، وكان تغيير البرمجيات لخلق طرق أكثر فاعليّةً ووثوقيّةً لسير العمل مرحّبًا به للغاية. طوّر مشروع المارد Genie في جامعة كاليفورنيا بيركلي مثلًا، <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">نظام تشغيل</a> بيركلي لمشاركة الوقت؛ وهو نظام تشغيل بُنيَ من الصفر عن طريق التعديل على الشيفرة المصدرية لحاسوب SDS 930.
</p>

<p>
	مع ارتفاع تكلفة تطوير البرمجيّات وزيادة تعقيدها، توصلت الشركات لطرق أوقفت المشاركة لشيفرتها المصدرية دون أيّ رقيب، وذلك لحماية مصدر ربحهم ومنع المنافسين من الاطّلاع على حلولهم التقنية. عندها، بدأت عملية وضع القيود القانونيّة، متضمّنةً حقوق التأليف والنشر وعقود الشراء، وباعت هذه الشركات منتجاتها تحت مظلّة الرُخَص الاحتكاريّة. ومع نهايات سبعينيّات القرن الماضي، توقفت معظم الشركات المنتجة للبرمجيات عن تضمين الشيفرة المصدرية لمنتجاتها، وأدّت هذه الحركة لاستياء العديد من مستخدمي الحواسيب القدامى، وكانت نتيجتها إيجاد حركة البرمجيات الحرّة.
</p>

<h2>
	بدايات البرمجيات الحرة
</h2>

<p>
	كانت حركة البرمجيات الحرة Free Software Movement بالمعظم وليدة أفكار شخصٍ واحد هو ريتشارد ستالمان؛ حيث بدأ ستالمان دراساته في <a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8/" rel="">علوم الحاسوب</a> بدايات السبعينيّات، وذلك قبل ولادة البرامج الاحتكاريّة بفترة قصيرة، وعملَ باحثًا في مختبرات جامعة ماساتشوستس <a href="https://academy.hsoub.com/programming/artificial-intelligence/%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-%D9%85%D8%B1%D8%A7%D8%AD%D9%84-%D8%A7%D9%84%D8%A8%D8%AF%D8%A1-%D9%88%D8%A7%D9%84%D8%AA%D8%B7%D9%88%D8%B1-%D9%88%D8%A7%D9%84%D8%A3%D8%B3%D8%B3-%D8%A7%D9%84%D8%AA%D9%8A-%D9%86%D8%B4%D8%A3-%D8%B9%D9%84%D9%8A%D9%87%D8%A7-r988/" rel="">للذكاء الاصطناعي</a> في بدايات الثمانينيّات. كان ستالمان يُكِنّ كثيرًا من الإحباط اتجاه انتشار البرمجيات الاحتكارية بصفته عضوًا في مجتمع القرصنة الأكاديمي لما يقارب القرن، ورأى أن انتشارها ينتهك حق الناس في ابتكار وتحسين برمجياتٍ موجودة.
</p>

<p>
	أطلق ستالمان في عام 1983 مشروعًا سمّاه باسم مشروع جنو GNU في سبيل إنشاء نظام تشغيل متكامل يسمح لمستخدميه برؤية وتعديل ومشاركة الشيفرة المصدريّة. حدّد ستالمان أهدافه من هذا المشروع في <a href="https://www.gnu.org/gnu/manifesto.html" rel="external nofollow">بيان جنو</a>، والذي ذكر فيه بأنّ الرخص الاحتكارية تعيق تطوير البرمجيّات التي يقودها المجتمع، وهذا يؤدي بدوره إلى ركود الابتكار ويعيق تقدُّم التقنية.
</p>

<p>
	يضيف هذا الأمر وفقًا لستالمان، عبئًا غير عادل على المستخدمين والمطوّرين الذين أمكنهم عوضًا عن ذلك تعديل الشيفرة البرمجيّة لتلائم حاجاتهم، أو تغييرها لتُستخدَم في غرضٍ جديد. لقد نُظِرَ إلى مشروع جنو على أنه استجابةً للبرمجيات الاحتكارية وتذكيرًا للناس بالعصر الذي سبقها، وذلك عندما كانت الشيفرة المصدريّة للبرمجيات تُشارَك بحريّة بهدف تطوير البرمجيات التعاوني.
</p>

<p>
	بنى ستالمان في عام 1985 مؤسسة البرمجيات الحرّة، أو كما تُعرف باسم <a href="https://www.fsf.org/" rel="external nofollow">Free Softwar</a> ،Foundation -أو اختصارًا FSS-، معتمدًا على مشروع جنو حجرًا للأساس، وهي مؤسسةٌ غير ربحية هدفها نشر ثقافة البرمجيات الحرة للعامّة. كما طور ستالمان فيما بعد رخصة جنو العموميّة GPL؛ وهي رخصة برمجيات تمنح الحق للمستخدم بتشغيل الشيفرة المصدرية ورؤيتها ومشاركتها بحرية مطلقة.
</p>

<p>
	اعتمادًا على تعريف مؤسسة البرمجيات الحرة، يجب أن تتضمَن أي برمجيّة الحريات الأربع التالية لمستخدميها لتُصنّف برمجيّةً حرة:
</p>

<ul>
<li>
		حرية تشغيل البرنامج متى أراد المستخدم، ولأي غرض.
	</li>
	<li>
		حرية معرفة طريقة عمل البرنامج، وتغييرها بناءً على رغبة المستخدم، فالوصول للشيفرة المصدرية هو شرطٌ مسبق لهذه الحرية.
	</li>
	<li>
		حرية توزيع نسخةٍ من الشيفرة المصدريّة لمعارفك.
	</li>
	<li>
		حرية توزيع نسخ من برنامجك المعدّل للآخرين؛ إذ يمكنك بفعل هذا إتاحة الفرصة لكامل المجتمع بالاستفادة من تعديلاتك. ويُعَد الوصول للشيفرة المصدرية شرطًا مسبقًا لهذه الحرية أيضًا.
	</li>
</ul>
<p>
	تعد مؤسسة البرمجيات الحرّة أي برمجيةٍ تخفق بتحقيق هذه الحريات الأربع برمجيّةً غير حرّة، وبذلك غير أخلاقيّة.
</p>

<h2>
	ولادة البرمجيات مفتوحة المصدر
</h2>

<p>
	اختار ستالمان مصطلح "البرمجيات الحرّة" للدلالة على المبدأ الذي ينصّ على حرية تعديل الشيفرة المصدرية، ومشاركتها لأي برنامجٍ من مستخدميه وفق رغبتهم. خلقت هذه التسمية كثيرًا من الخلط لدى الناس على مرور السنوات، لاعتقادهم بأنّ البرمجيات الحرة هي البرامج التي يمكنهم الحصول عليها مجانًا دون دفع أي مقابل مادّي؛ وذلك نظرًا لازدواجية معنى كلمة Free، فهي تعني حرّ ومجاني في الوقت ذاته حسب السياق. توضّح مؤسسة البرمجيات الحرة هذا الخلط بالمعاني بواسطة مقولتها "فكّر بالكلمة بسياق حرية الرأي، وليس بسياق مشروبٍ مجاني".
</p>

<p>
	تنامى القلق بين مناصري مشروع جنو ونظام لينكس في نهايات تسعينيات القرن الماضي، فقد كان من الممكن أن يتسبب هذا الخلط في المعنى بسوء فهم الناس لمصطلح البرمجيات الحرة، وإيجابياتها موازنةً مع البرمجيات الاحتكارية. كما كانت مؤسسة البرمجيات الحرّة شديدة اللهجة ولاذعة الانتقاد ضدّ جميع أشكال البرمجيات الاحتكارية، وهذا سبّب قلقًا من طرف مناصري البرمجيات الحرّة بكونه سلوكًا عدائيًّا تجاه المصالح التجارية، الذي سيتسبّب في النهاية بعرقلة انتشار حركة البرمجيات الحرة.
</p>

<h2>
	الكاتدرائية والبازار
</h2>

<p>
	كتب إريك ريموند في عام 1997 -وهو مطوّرٌ ومناصرٌ للبرمجيات الحرة-، مقالًا بعنوان الكاتدرائية والبازار The Cathedral and the Bazaar؛ وهي مقالةٌ شهيرة توازن بين نمطين من أنماط تطوير البرمجيات المُستخدمة في تطوير مختلف مشاريع البرمجيات الحرّة. ترمز الكاتدرائية هنا للنمط الهرمي في تطوير البرمجيات، إذ تطور مجموعةٌ معينةٌ من المطورين البرمجيات، مثل عملية تطوير محرّر النصوص إيماكس Emacs على نظام جنو؛ بينما يرمز البازار لنمط التطوير المتمثّل بنشر الشيفرة المصدرية للعموم وتطويرها علنيًا، مثل عملية تطوير نواة <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">لينكس</a>.
</p>

<p>
	تتمحور فكرة المقال حول كفاءة نمط البازار في إيجاد الأخطاء البرمجية وحلّها موازنةً مع النمط الآخر، وذلك بحكم أن هناك عددٌ أكبر من الأشخاص القادرين على مراجعة وتجربة الشيفرة المصدرية للبرنامج. لذا، يزعم ريموند أن تبني هذا النمط المعتمد على الجهد المجتمعي ينتج بالحصول على برمجياتٍ أكثر أمانًا وموثوقيّة.
</p>

<p>
	عُقب الأفكار التي طرحها ريموند في مقالته الكاتدرائية والبازار، أطلقت شركة نتسكيب Netscape الشيفرة المصدريّة لمتصفح الويب الخاص بها المسمى بالمتواصل Communicator مجانًا ومفتوح المصدر للعموم في عام 1998؛ وسيشكّل هذا المتصفح أساس متصفح موزيلا فيرفكس 1.0 لاحقًا. فكّرت مجموعةٌ من مناصري البرمجيات الحرّة، متضمنةً ريموند ولينوس تورفالدس وفيل زيمرمان وآخرون، بإعادة تسويق حركة البرمجيات الحرة، وصرف تركيزها بعيدًا عن الدوافع الفلسفيّة والأخلاقية، مستلهمين ذلك من تجرِبة Netscape والإمكانية التجارية التي أتيحت لها بعد هذه العملية. اختارت هذه المجموعة تسمية "مفتوح المصدر" للدلالة على البرمجيات المشاركة مجانًا، آملين أن تظهر هذه التسمية الفائدة المضافة من نمط تطوير البرمجيات الاجتماعي والتعاوني.
</p>

<p>
	بعد ذلك بوقت وجيز، أوجد كلٌّ من ريموند وبروس بيرنز مبادرة المصدر المفتوح Open Source Initiative -أو اختصارًا OSI-، لتشجيع استخدام التسمية الجديدة ونشر مبادئ البرمجيات مفتوحة المصدر، إذ طوّرت هذه المبادرة تعريف المصدر المفتوح؛ وهي لائحةٌ من عشرة مبادئ تصف معايير رخصة أي برمجية لتعدّ مفتوحة المصدر، وهي:
</p>

<ol>
<li>
		<strong>حرية إعادة التوزيع</strong>: يجب ألّا تمنع الرخصة أي طرفٍ من بيع أو منح البرمجيّة، مثل إضافةٍ لبرمجية أكبر منها تحتوي برمجياتٍ من مصادرٍ متعددة.
	</li>
	<li>
		<strong>الشيفرة المصدرية</strong>: يجب أن يحتوي البرنامج على الشيفرة المصدرية، وأن يسمح بتوزيع البرنامج مثل شيفرة مصدريّة أو إصدار مُجمّع.
	</li>
	<li>
		<strong>الأعمال المشتقة</strong>: يجب أن تسمح الرخصة بالتعديل وإنشاء برمجيات مشتقة، وأن تسمح بتوزيعها تحت شروط رخصة البرنامج الأصلي ذاتها.
	</li>
	<li>
		<strong>الحفاظ على الشيفرة المصدرية للمؤلّف</strong>: يجوز للرخصة أن تمنع توزيع البرامج المعدّلة المبنية على الشيفرة المصدرية الأصل، وذلك في حالة سماح الرخصة بتوزيع ملفات الترقيع patch files مع الشيفرة المصدرية الأصل بهدف تعديل البرنامج بعد تجميعه Compiling.
	</li>
	<li>
		<strong>يُمنَع التمييز ضدّ شخص ما أو مجموعة من الأشخاص</strong>: على الرخصة ألّا تميّز بين الأشخاص أو مجموعة من الأشخاص.
	</li>
	<li>
		<strong>يُمنَع التمييز ضد مجال أو مهنة معيّنة</strong>: يجب ألا تمنع الرخصة أي أحدٍ من استخدام البرنامج بحرية بهدف توظيفه في أي مجال أو غرض.
	</li>
	<li>
		<strong>توزيع الرخصة</strong>: يجب أن تُطبّق الحقوق الموجودة على رخصة البرنامج الأصلية على جميع البرامج المشتقة دون الحاجة لتضمين رخصة إضافية من الموزّعين.
	</li>
	<li>
		<strong>لا ينبغي للرخصة أن تكون مخصصة لمنتج معين</strong>: لا يشترط على الحقوق المُضمّنة في برنامجٍ ما أن تكون فعالةً بحالة كان جزءًا من برنامج معين فقط.
	</li>
	<li>
		<strong>لا ينبغي على الرخصة أن تضع قيودًا على برمجياتٍ أخرى</strong>: يجب ألّا تضع الرخصة قيودًا على برنامج معيّن مُوزعٍ مع البرنامج المرخّص.
	</li>
	<li>
		<strong>على الرخصة أن تكون محايدة</strong>: لا يجوز أن تستند الرخصة على أي تقنيةٍ فردية أو نمط <a href="https://academy.hsoub.com/design/user-interface/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-ui-r652/" rel="">واجهة مستخدم</a>.
	</li>
</ol>
<h2>
	الاختلافات بين البرمجيات الحرة ومفتوحة المصدر
</h2>

<p>
	يُعد الفرق بين مصطلح "البرمجيات الحرة" و"البرمجيات مفتوحة المصدر" ضئيلًا في العموم، ويأتي الاختلاف بالتسمية من فروقات فلسفيّة. تقول مبادرة المصدر المفتوح، أن كلا المصطلحين يعنيان الأمر ذاته، ويمكن استخدامهما بالتبادل في أي سياق كان. يفضّل مصطلح "مفتوح المصدر" ببساطة، لأنّه يُعتقد أنه المصطلح الأفضل الذي يظهر طبيعة البرمجيات ونوايا مؤلّفيها في كيفية استخدامها.
</p>

<p>
	أما بالنسبة لمناصري فلسفة "البرمجيات الحرة"، فلا يصف المصطلح "مفتوح المصدر" بالضبط أهميّة الحركة، والمشاكل الاجتماعية التي قد تحصل بسبب البرامج الاحتكارية. ترى مؤسسة البرمجيات الحرة أنّ مبادرة المصدر المفتوح تولي كثيرًا من الاهتمام لتسويق ونشر الفوائد العملية من البرامج غير الاحتكارية، متضمّنًة ربحية العملية وكفاءة نمط التطوير التعاوني، وذلك على حساب الاهتمام للمشاكل الأخلاقية الناتجة عن تقييد حقوق المستخدمين في تغيير وتحسين الشيفرة المصدرية طبقًا لرغبتهم.
</p>

<p>
	يعتمد تصنيف البرمجية بكونها حرةً أو مفتوحة المصدر، على شروط رخصتها وتحقيقها لشروط كلٍّ من مبادرة المصدر المفتوح، ومؤسسة البرمجيات الحرة، أو كلاهما. هناك نقاط كثيرة مشتركة بين الاثنين، ولكن هناك بعض الاستثناءات في بعض الأحيان؛ إذ تتوافق مثلًا رخصة ناسا مفتوحة المصدر مع معايير مبادرة المصدر المفتوح؛ بينما تعدّها مؤسسة البرمجيات الحرّة رخصة تقييديّة. لكن عمومًا، هناك فرصة كبيرة بكون رخصة ما مفتوحة المصدر إذا عُدّت حرّة.
</p>

<h2>
	أسماء بديلة
</h2>

<p>
	ظهرت على مرّ السنوات كثيرٌ من التسميات الأخرى في سعيٍ منها لحسم الخلاف؛ منها "برمجية حرة ومفتوحة المصدر Free and Open-source Software" -أو اختصارًا FOSS-، وهي واحدةٌ من أكثر التسميات استخدامًا، وتُعد تسميةً وسيطةً بين الطرفين. اكتسبت التسمية "برمجية حرة Libre Software" (إذ تأتي كلمة Libre من كلمة حرية Liberty)، أنصارًا هي الأخرى وأصبحت الكلمة FLOSS رائجةً أيضًا.
</p>

<p>
	تجدر الإشارة هنا إلى أنّ البرمجيات الحرة ومفتوحة المصدر مختلفةٌ كليًّا عن البرمجيات التي تنتمي للملكية العامة Public Domain؛ إذ تستمد البرمجيات الحرة ومفتوحة المصدر حرياتها من ترخيصها؛ بينما تستمد برمجيات الملكية العامة بعضًا من هذه الحريات من خلال الوقوع خارج نظام الترخيص. الفارق الواضح هنا هو أنه من الواجب توزيع كلٍّ من البرمجيات الحرة ومفتوحة المصدر تحت رخصة FOSS؛ بينما لا تخضع برمجيات الملكية العامة للشرط ذاته.
</p>

<p>
	المشكلة المتعلقة ببرمجيات الملكية العامة، هي عدم اعتراف جميع الدول في العالم بمحتواها غير الخاضع لحقوق الطبع والنشر. يجعل هذا الأمر الاعتراف بوجود برمجيّة تحت الملكية العامة عالميًّا أمرًا مستحيلًا. ولهذا السبب، لا تشجّع أيّ من مبادرة المصدر المفتوح OSI ومؤسسة البرمجيات الحرة FSF، بإطلاق المطورين برمجياتهم تحت الملكية العامة.
</p>

<h2>
	الخاتمة
</h2>

<p>
	يُستخدم كلا المصطلحين "برمجيات حرة" و"برمجيات مفتوحة المصدر" في معظم السياقات للدلالة على الشيء ذاته. وينبع تفضيل استخدام مصطلحٍ دونًا عن الآخر من اختلافٍ فلسفي بسيط؛ ولكن قد يصبح الفرق مهمًا بالنسبة للمطورين الذين يطوّرون برامجًا ويطلقونها للعالم، أو للنشطاء الذين يسعون لتغيير طريقة تفاعل الناس مع التقنية. بالتالي من المهم جدًا النظر للسلبيات والإيجابيات لمختلف الرُخَص والمتضمّنة الرُخَص الاحتكاريّة قبل نشر أيّ برنامج، واختيار الرُخصة المُثلى التي تناسب احتياجات الناشر.
</p>

<p>
	إن كنتَ مهتمًّا بقراءة مزيدٍ من التفاصيل عن مختلف الرخص المناسبة لمشروعك القادم، تقدّم مؤسسة البرمجيات الحرة <a href="http://www.gnu.org/licenses/license-list.html" rel="external nofollow">لائحةً من الرُخَص</a> تبيّن تفاصيل كلّ من الرخص الحرّة وغير الحرّة. كما قد تكون <a href="https://opensource.org/licenses" rel="external nofollow">صفحة الرخص والمعايير</a> على موقع مبادرة المصدر المفتوح مفيدةً لك.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://www.digitalocean.com/community/tutorials/free-vs-open-source-software" rel="external nofollow">The Difference Between Free and Open-Source Software</a> لصاحبه Mark Drake.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%85%D8%B5%D8%B7%D9%84%D8%AD-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-open-source%D8%9F-r885/" rel="">ما المقصود بمصطلح مفتوح المصدر (open source)؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r662/" rel="">تعلم البرمجة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/freelance/general/%d8%aa%d8%b9%d8%b1%d9%81-%d8%b9%d9%84%d9%89-%d8%a3%d9%86%d9%88%d8%a7%d8%b9-%d8%a7%d9%84%d8%aa%d8%b1%d8%a7%d8%ae%d9%8a%d8%b5-%d8%a7%d9%84%d8%ad%d8%b1%d8%a9-%d8%a7%d9%84%d8%aa%d9%8a-%d8%aa%d8%b3%d9%85%d8%ad-%d9%84%d9%83-%d8%a8%d8%a8%d9%8a%d8%b9-%d8%a7%d9%84%d9%85%d9%88%d8%a7%d8%af-%d8%a8%d8%b4%d9%83%d9%84-%d8%aa%d8%ac%d8%a7%d8%b1%d9%8a-r43/" rel="">تعرف على أنواع التراخيص الحرة التي تسمح لك ببيع المواد بشكل تجاري</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">590</guid><pubDate>Mon, 07 Feb 2022 17:00:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x62A;&#x62D;&#x642;&#x64A;&#x642; &#x646;&#x647;&#x62C; DevSecOps &#x628;&#x646;&#x62C;&#x627;&#x62D;</title><link>https://academy.hsoub.com/devops/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D9%82%D9%8A%D9%82-%D9%86%D9%87%D8%AC-devsecops-%D8%A8%D9%86%D8%AC%D8%A7%D8%AD-r524/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_08/6106527f2f0f4_---DevSecOps-.png.f58ae4e253ff70868c08665850e721d3.png" /></p>

<p>
	يُعد دمج الأمن ضمن دورة حياة تطوير النظام أمرًا هامًا، ولكنه لا يكون دومًا أمرًا سهلًا، ويُعَد اتباع <a data-ss1627813826="1" href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%80-devops%D8%9F-r413/" rel="">نهج DevOps</a> ضمن أية مؤسسة أمرًا هامًا لأنه يساعد المؤسسة في تحسين سرعة تطوير واختبار وتركيب البرمجيات التي تعمل على تطويرها لتصبح جاهزةً للعمل. توجد العديد من التجارب الناجحة المتعلّقة بتطبيق نهج DevOps ضمن المؤسسات، حيث أصبحت هذه المؤسسات تقدّم أفكارًا مبتكرةً وقادرةً على تسليم منتجاتها البرمجية بصورة رشيقة دون مشاكل، إلا أنّ بعض التجارب لاتباع هذا النهج قد انتهت بالفشل الذريع، فقد سببت عددًا كبيرًا من المشاكل يفوق الفوائد الناتجة عن نجاحها.
</p>

<p>
	توجد العديد من العوامل التي قد تسبب فشل اتباع نهج DevOps ضمن مؤسسة ما، وأهم هذه العوامل هو الأمن. يُعَد غياب ثقافة الأمن في المؤسسة أمرًا خطيرًا، وغالبًا ما يحدث ذلك عندما لا تهتم المؤسسة بمسائل الأمن حتى نهاية مرحلة تبني سياسة DevOps، مما قد يسبب تطبيق الإجراءات الأمنية المتبعة في المؤسسة بطريقة تتسبب في تأخير المشروع من جهة، كما تساهم في إحباط فريق التطوير والعديد من المشاكل المالية التي يمكن أن تضر بالمشروع كثيرًا.
</p>

<p>
	لحل هذه المشاكل وُضِع نهج DevSecOps، حيث أنّ غايته الأساسية هي تأكيد فكرة أن الجميع في الفريق مسؤولون عن أمن المشروع، بحيث يكون التفكير بالقضايا المتعلقة بالأمن في كل مراحل حياة المشروع.
</p>

<h2>
	إجرائية DevSecOps
</h2>

<p>
	يبين الشكل 1 الآلية التي كانت متّبعةً في تطبيق مفاهيم الأمن ضمن عملية التطوير قبل ظهور نهجي <a data-ss1627813826="1" href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%80-devops%D8%9F-r413/" rel="">DevOps</a> و <a data-ss1627813826="1" href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D9%87%D9%8A-devsecops%D8%9F-r437/" rel="">DevSecOps</a>، فمن الواضح أن التفكير بالأمن لم يكن من أولويات فريق التطوير لأنّه يحدث في المراحل النهائية، أي عند البدء بتسليم المشروع، أينما تكون البرمجيات قد قُبِلت للدخول في مرحلة الإنتاج Production.
</p>

<p style="text-align: center;">
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="73513" data-unique="b79alot5g" src="https://academy.hsoub.com/uploads/monthly_2021_08/devsecops_old-process.png.c6b05090c08f5415e6f271b0701c9eeb.png" style="" alt="devsecops_old-process.png"></p>

<p style="text-align: center;">
	<a data-ss1627813826="1" href="https://creativecommons.org/licenses/by-sa/4.0/" rel="external nofollow">Michael Calizo</a>
</p>

<p>
	يمكن تبعًا للإجراءات المتّبعة ضمن المؤسسة أن يحدث في بعض الأحيان تجاوزُ للمراجعات الخاصة بالأمن أثناء قبول المشروع، وعندها يمكن عدّ هذه المراجعة على أنها فقط شكل من أشكال التدقيق، وذلك من أجل ضمان عدم تأخير المشروع.
</p>

<p style="text-align: center;">
	 
</p>

<p style="text-align: center;">
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="73512" data-unique="zkx7iif5s" src="https://academy.hsoub.com/uploads/monthly_2021_08/devsecops_security-as-audit.png.1f32921ef53837eefd234a37b9feb83b.png" style="" alt="devsecops_security-as-audit.png"></p>

<p style="text-align: center;">
	Michael Calizo, CC BY-SA 4.0
</p>

<p>
	يعدّ الهدف الأساسي من اتباع نهج DevSecOps هو دمج الأمن بكل من عملية التطوير وعملية التشغيل، وذلك لضمان عدم إغفال أي من متطلبات الأمن أو خصوصية المعطيات، لذا ينصح الخبراء بأن يغير المطورون طريقة عملهم وسلوكهم وثقافتهم باكرًا. لا تُعَد هذه المهمة سهلةً خصوصًا في البيئات الضخمة، ويُعَد المبدأ الرئيسي لنهج DevSecOps هو بناء ثقافة الأمن في عمليتي التطوير والتشغيل، مما يجعلها أكثر رشاقةً ومرونة، ويجب أن يعمل المطورين بحيث يصبح الأمن والتوافقية متاحةً من قِبل الأجزاء البرمجية لكي تُستهلَك وكأنها خدمة.
</p>

<p>
	يعمل نهج DevSecOps على تضمين الأمن ضمن دورة حياة تطوير النظام ويُعاد تطوير المفاهيم الخاصة بالأمن مع كل دورة من دورات تطوير المنتج
</p>

<p style="text-align: center;">
	 
</p>

<p style="text-align: center;">
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="73514" data-unique="65873qdcu" src="https://academy.hsoub.com/uploads/monthly_2021_08/devsecops_process.png.28135eaf3cf42f3013c125c2064316e3.png" style="" alt="devsecops_process.png"></p>

<p style="text-align: center;">
	Michael Calizo, CC BY-SA 4.0
</p>

<h2>
	عوائق تبني نهج DevSecOps
</h2>

<p>
	يعمل الناس بطبيعتهم على محاربة التغيير، بحيث يميلون إلى إيجاد العيوب والأخطاء في العملية الجديدة التي ستُتبنّى. بطبيعة الحال لا يمكن تغيير ذلك لأنها من الطبيعة البشرية، إذ يفضّل البشر دومًا اتباع عادةٍ ما عوضًا عن إجراء التغيير المستمر؛ أما أهم العوائق التي تواجه تبنّي نهج DevSecOps فهي:
</p>

<ul>
<li>
		<strong>استخدام عملية DevOps أو DevSecOps من مزود خارجي</strong>: يعني ذلك أنّ المفاهيم والعمليات المستخدمة تدور حول منتج ما يقدّمه المزود الخارجي ولن تستطيع المؤسسة لبناء المقاربة لأنها محدودة بما يقدمه المزود.
	</li>
	<li>
		<strong>توتر المدراء</strong>: يعاني المدراء من التخوف المستمر وخصوصًا عند تبني أي تقنية أو نهج جديد، بحيث يؤثر هذا الخوف والتوتر على قدرة المدير على اتخاذ القرار الصحيح.
	</li>
	<li>
		<strong>تجنّب محاولة إصلاح أي شيء ليس معطّلًا بالكامل</strong>: يميل معظم مدراء تقنيات المعلومات إلى تجنّب إجراء أية تغييرات في الخدمات التي تعمل حتى ولو وُجدت فيها عدة مشاكل طالما أن بعض نتائجها صحيحة. وفي بعض الأحيان، حتى مع نجاح النهج الجديد يميل مدراء تقنيات المعلومات إلى المحافظة على المنتج القديم والإجراءات التي أنتجته.
	</li>
	<li>
		<strong>تأثير نتفليكس Netflix وأوبر Uber</strong>: نجحت كل من شركتي نتفليكس ةأوبر بتطبيق نهج DevSecOps بنجاح، وتعمل العديد من الشركات على تقليدهم، ومع ذلك تفشل معظم هذه الشركات بسبب الاختلاف بين ثقافة هذه الشركات وثقافة بقية الشركات.
	</li>
	<li>
		<strong>قلة القياس</strong>: يجب أن تتم عملية قياس التحول ضمن المؤسسة أثناء تنبي نهج DevOps أو DevOpsSec، فهي من أهم المقاييس التي ينظُر إليها الأداء في عملية تسليم البرمجية أو الأداء العام للمؤسسة.
	</li>
	<li>
		<strong>الأمن المقاس بقوائم التحقق</strong>: يتبع فريق الأمن ما يعرف بقائمة التحقق، وهي تتضمن الخطوات التقليدية ذاتها في كل مرة. وانطلاقًا من ذلك ظهرت مقاربة "as code"، والتي تتطلب أن يتعلّم مختصو الأمن البرمجة وأن يتجنبوا الطرائق التقليدية لتطبيق الأمن ضمن المؤسسة.
	</li>
	<li>
		<strong>اعتبار فريق الأمن كفريق خاص</strong>: تظهر هذه المشكلة عندما يكون فريق الأمن مفصولًا عن فريق التطوير والتشغيل، مما يدفعهم إلى صرف الكثير من وقت فريق أمن المعلومات في مراجعة ومحاولة تحسين عمل الفريقين عوضًا عن تواجدهم إلى جانبهم أثناء عملية التطوير.
	</li>
</ul>
<h2>
	كيفية تبني نهج DevSecOps بنجاح
</h2>

<p>
	يُعَد تبني نهج DevSecOps أمرًا صعبًا، ولكن نظرًا للفوائد الكبيرة، يمكن العمل على تجنب العوائق التي أصبحت معروفةً جيدًا، وتُعَد ثقافة الأمن العائق الأكبر، فلكي تنجح هذه الثقافة ضمن المؤسسة يجب أن يكون تبنيها من أعلى هرم المؤسسة، ومن ثم تعميم هذه الثقافة على الموظفين.
</p>

<p>
	يفيد وجود القادة وبعض المتحمسين للنهج الجديد؛ في تسريع عملية تبني الثقافة الجديدة ضمن المؤسسة، حيث يجب تضمين فرق التطوير والتشغيل والأمن بعضًا من هؤلاء الأشخاص ليكونوا مناصرين للنهج الجديد، مما يؤسِّس لظهور فرق متعددة الوظائف تتشارك فيما بينها الخبرة والنجاحات مع بقية الفرق، مما يسرّع عملية تبني النهج الجديد. تحتاج المؤسسة بعد نجاح هذه الخطوة إلى وجود حالة استخدام للنهج الجديد للبدء بها، ولا داعي لكي تكون كبيرةً أو تتضمن الكثير من المخاطرة، بل يجب أن تكون مضمونة النجاح، إذ يفيد ذلك في دفع الفريق إلى التعلم والفشل ومن ثم النجاح دون تأثير وظائف النظام الجوهرية.
</p>

<p>
	يجب أن يكون تبني النهج الجديد قابلًا للقياس، كما يجب الاتفاق على تعريف النجاح ضمن المشروع. ولتحقيق كل ما سبق يجب أن تتوفر لوحة إظهار تعرض القيم التي تُعَد مقاييس يجب مراقبتها وهي:
</p>

<ul>
<li>
		مهلة التغيير.
	</li>
	<li>
		وتيرة تركيب النظام.
	</li>
	<li>
		الزمن الوسطي للاستعادة.
	</li>
	<li>
		معدل فشل التغييرات.
	</li>
</ul>
<p>
	تُعَد هذه المعايير أساسيةً عند التعرف على عملية ما ومحاولة تحديد جوانبها التي تحتاج تحسينًا. تسمى هذه المنهجية بالتحول المقاد بالأحداث Event-Driven Transformation، وتفيد في تحديد ما إذا كانت عملية تبني النهج الجديد ناجحةً أم فاشلة.
</p>

<h2>
	الاستنتاجات
</h2>

<p>
	يسمح تبني نهج DevOps - عندما يُتبنّى بطريقة صحيحة - للمؤسسة بتسليم المنتجات البرمجية بسرعة عالية، مما يُكسبها العديد من المزايا موازنةً بمنافسيها، حيث يحتاج تبني نهج DevOps وDevSecOps ما يأتي:
</p>

<ul>
<li>
		تغيير الثقافات في المؤسسة.
	</li>
	<li>
		اقتناع الإدارة التنفيذية بالتغيير.
	</li>
	<li>
		مشاركة القادة والمتحمسين للنهج الجديد في عملية التبني.
	</li>
	<li>
		فرق متعددة الوظائف.
	</li>
	<li>
		بعض المؤشرات القابلة للقياس.
	</li>
</ul>
<p>
	وبالتالي يُعَد تبني الثقافة السليمة الخطوة الأساسية لتبني نهج DevSecOps بطريقة صحيحة.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a data-ss1627813826="1" href="https://opensource.com/article/21/2/devsecops" rel="external nofollow">How to adopt DevSecOps successfully</a> لصاحبه Mike Calizo.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a data-ss1627813826="1" href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D9%87%D9%8A-devsecops%D8%9F-r437/" rel="">ما هي DevSecOps؟</a>
	</li>
	<li>
		<a data-ss1627813826="1" href="https://academy.hsoub.com/devops/general/%D8%AE%D9%85%D8%B3-%D8%B7%D8%B1%D9%82-%D9%8A%D8%BA%D9%8A%D9%91%D8%B1-%D8%A8%D9%87%D8%A7-%D9%85%D9%81%D9%87%D9%88%D9%85-devsecops-%D9%85%D9%86%D8%B8%D9%88%D9%85%D8%AA%D9%83-%D8%A7%D9%84%D8%A3%D9%85%D9%86%D9%8A%D8%A9-r441/" rel="">خمس طرق يغيّر بها مفهوم DevSecOps منظومتك الأمنية</a>
	</li>
	<li>
		<a data-ss1627813826="1" href="https://academy.hsoub.com/devops/general/%D8%AB%D9%84%D8%A7%D8%AB-%D8%AE%D8%B7%D9%88%D8%A7%D8%AA-%D9%84%D8%AA%D8%A3%D9%85%D9%8A%D9%86-devops-%D9%85%D9%81%D8%AA%D9%88%D8%AD-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1-r415/" rel="">ثلاث خطوات لتأمين DevOps مفتوح المصدر</a>
	</li>
	<li>
		<a data-ss1627813826="1" href="https://academy.hsoub.com/devops/general/%D9%85%D8%A7-%D8%A7%D9%84%D9%85%D9%82%D8%B5%D9%88%D8%AF-%D8%A8%D9%80-devops%D8%9F-r413/" rel="">ما المقصود بـ DevOps؟</a>
	</li>
	<li>
		<a data-ss1627813826="1" href="https://academy.hsoub.com/tags/%D8%AA%D8%B9%D8%B1%D9%81%20%D8%B9%D9%84%D9%89%20devops/" rel="">سلسلة تعرف على DevOps</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">524</guid><pubDate>Thu, 05 Aug 2021 14:04:00 +0000</pubDate></item><item><title>&#x62A;&#x639;&#x631;&#x641; &#x639;&#x644;&#x649; &#x627;&#x644;&#x634;&#x628;&#x643;&#x627;&#x62A; &#x627;&#x644;&#x645;&#x639;&#x631;&#x641;&#x629; &#x628;&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x64A;&#x627;&#x62A; SDN &#x648;&#x627;&#x635;&#x646;&#x639; VPN &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; ZeroTier One</title><link>https://academy.hsoub.com/devops/general/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B9%D8%B1%D9%81%D8%A9-%D8%A8%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-sdn-%D9%88%D8%A7%D8%B5%D9%86%D8%B9-vpn-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-zerotier-one-r459/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_02/zerotier.jpg.6e730f2afb902acf29a67ebdad429ef5.jpg" /></p>

<p>
	يزداد كل يوم عدد المشاريع البرمجيّة المبنيّة بواسطة فرق تعمل من مناطق جغرافيّة مختلفة، وعلى الرغم من مميزات هذه الطريقة، إلا أن هذه الفرق تحتاج في بعض الحالات لربط حواسيبها مع بعضها البعض عبر الإنترنت والتعامل معها على أنها في نفس المكان، فعلى سبيل المثال، قد تستخدم أنظمة الموزّعة مثل Kubernetes أو تبني تطبيقًا معقدًا ذا خدمات متعدّدة وفي بعض الأحيان، سترّفع من الإنتاجية لو كان يمكنك التعامل مع الأجهزة على أن كل واحدة منها بجانب الأخرى لكي لا تتعرّض لخطر تعريض الخدمات غير جاهزة إلى الأنترنت، ويمكنك تحقيق هذا النموذج عن طريق شبكات المعرّفة بالبرمجيات Software-Defined Networking (أي SDN) التي تعتبر تكنولوجيا جديدة تسمح بإنشاء شبكة حيويّة مبنيّة بشكل كامل على البرمجيات.
</p>

<p>
	سنستخدم في هذا الدرس <a href="https://www.zerotier.com/" rel="external nofollow">ZeroTier One</a> وهو تطبيق مفتوح المصدر يستخدم آخر تكنولوجيات SDN للسماح للمستخدمين بإنشاء شبكات محميّة وقابلة للإدارة والتعامل مع الأجهزة المتصلة على أنها في نفس المكان الفيزيائي. يوفّر لك تطبيق ZeroTier طرفيّة (console) للويب لإدارة الشبكة وتطبيقات الأطراف (endpoint) للعملاء، فهي تكنولوجيات مشفّرة ند للند، أي أنها بخلاف حلول <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> التقليديّة، فلا تحتاج عند الإتصالات المرور إلى خادم مركزي أو موجّه، فالرسائل ترسل مباشرةً من جهاز إلى آخر ونتيجة لذلك فهي فعالة جدا وتضمن الحد الأدنى من وقت الاستجابة.
</p>

<p>
	من المميزات الأخرى لهذا التطبيق هو سهولة عملية النشر والإعداد ووضوح عملية الصيانة، ويسمح بالتسجيل المركزي وإدارة العقد المأذون لها عن طريق طرفيّة الويب.
</p>

<p>
	في هذا الدرس، ستربط عميل وخادم معًا في شبكة نقطة-إلى-نقطة (point-to-point) بسيطة، وبما أن الشبكات المعرّفة بالبرمجيات لا تستخدم تصميم العميل/الخادم التقليدي، فلا يوجد خادم <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> مركزي للتثبيت والإعداد، فيبسّط هذا نشر الأداة وإضافة أي عقد إضافيّة. وبمجرّد تأسيس الاتصال، ستحصل على فرصة استخدام قدرات <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> ZeroTier عن طريق استخدام بعض وظائف لينكس الذكيّة للسماح لحركة الحزم بمغادرة شبكة ZeroTier من خادمك وإرشاد العميل لإرسال حركة حزمه إلى ذلك الاتجاه.
</p>

<h2>
	المتطلبات الأساسيّة
</h2>

<p>
	قبل البدء، سنحتاج إلى هذه المتطلبات:
</p>

<ul>
<li>
		خادم أبونتو 18.04، وستحتاج على هذا الخادم، مستخدم عادي مع صلاحيات sudo والتي يمكنك إعدادها عن طريق <a href="https://academy.hsoub.com/devops/linux/%D8%A7%D9%84%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D8%A7%D9%84%D8%A3%D9%88%D9%84%D9%8A%D8%A9-%D9%84%D8%AE%D8%A7%D8%AF%D9%85-%D8%A3%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-1804-r431/" rel="">درس إعداد خادم أبنتو 18.04</a>.
	</li>
	<li>
		حساب على ZeroTier One والذي يمكنك إعداده عن طريق الذهاب إلى <a href="https://my.zerotier.com/" rel="external nofollow">My ZeroTier</a>، النسخة المجانيّة من هذه الخدمة تفي بالغرض في هذا الدرس.
	</li>
	<li>
		حاسوب محلي للانضمام إلى SDN كعميل. في الأمثلة في هذا الدرس، ستجد أن كل من الخادم والحاسوب المحلي يعملان على نظام لينكس أوبنتو لكن يمكنك استخدام أي نظام تشغيل موجود على <a href="https://zerotier.com/download.shtml" rel="external nofollow">صفحة ZeroTier</a>.
	</li>
</ul>
<p>
	الآن، أنت مستعد لإعداد شبكة معرّفة بالبرمجيات للخادم والجهاز المحلي.
</p>

<h2>
	الخطوة الأولى - إنشاء شبكة معرفة بالبرمجيات باستخدام ZeroTier One
</h2>

<p>
	توفّر منصة ZeroTier النقطة المركزيّة للتحكم بالشبكة المعرّفة بالبرمجيات الخاصة بك، ومن هناك يمكنك تخويل ومنع العملاء ويمكنك اختيار مخطّط العنونة وإنشاء معرّف الشبكة الذي ستستخدمه في توجيه عملائك في مرحلة الإعداد.
</p>

<p>
	سجّل دخولك على حساب ZeroTier، ثم أضغط على Networks في أعلى الشاشة، ومن ثم على Create. سيظهر لك اسم شبكة مولّد بشكل آلي، اضغط عليه لرؤية شاشة إعدادات الشبكة، تذكّر معّرف الشبكة Network ID الملوّن بالأصفر لأننا سنحتاجه في وقت لاحق.
</p>

<p>
	إذا أردت، يمكنك تغيير اسم الشبكة إلى اسم آخر أو إضافة تعليق، وسيُحفظ أي تغيير ويطبّق بشكل آلي.
</p>

<p>
	بعد ذلك اختر أي نطاق عناوين IPv4 سيتعامل معه SDN، على الجانب الأيمن من الشاشة في المساحة المسماة IPv4 Auto-Assign، اختر نطاق عناوين التي ستستخدمُه العقد الخاصة بك، بالنسبة لهذا الدرس، يمكنك اختيار أي مجال، ولكنك تأكد من اختيار Auto-Assign from Range.
</p>

<p>
	تأكد من بقاء Access Control في الجانب الأيسر على قيمة Certificate ‏(Private Network)، يضمن هذا أنه يمكن للأجهزة المخوّلة فقط الاتصال بشبكتك، وليس أي شخص لديه معرّف الشبكة الخاص بك.
</p>

<p>
	ستبدو الإعدادات كالتالي عند الإنتهاء منها:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2020_02/001ZeroTierSettings-updated.png.b3aa8b51313872ba4faffdfdfc7a30ca.png" data-fileid="34924" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="34924" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_02/001ZeroTierSettings-updated.thumb.png.41770e73d8278cf875f3c04396ef7c23.png" alt="001ZeroTierSettings-updated.png"></a>
</p>

<p>
	في هذه المرحلة، أنهيّت أساس شبكة معرّفة بالبرمجيات، في الخطوة القادمة، سنثبّت برنامج ZeroTier على خادمك وأجهزة العميل للسماح لهم بالاتصال بـ SDN الخاص بك.
</p>

<h2>
	الخطوة الثانية - تثبيت عميل ZeroTier One على خادمك والحاسوب المحلي
</h2>

<p>
	بما أن ZeroTier One يعتبر برنامجًا جديدًا، فهو غير موجود في مستودعات برامج أوبنتو، ولهذا السبب، يوفّر ZeroTier سكربت التثبيت والذي سيُستخدم لتثبيت البرنامج و يحتوي على سكربت توقيع-GPG، أي سيتأكد من أن الشيفرة البرمجيّة التي ستثبتها منشورة بواسطة ZeroTier.
</p>

<pre class="ipsCode">
curl -s 'https://pgp.mit.edu/pks/lookup?op=get&amp;search=0x1657198823E52A61' | gpg --import &amp;&amp; if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi
</pre>

<p>
	يملك هذا السكربت أربعة أجزاء أساسية وهذا تفسير كل جزء منها:
</p>

<pre class="ipsCode">
curl -s 'https://pgp.mit.edu/pks/lookup?op=get&amp;search=0x1657198823E52A61'
</pre>

<p>
	سيستدعي هذا الجزء مفتاح ZeroTier العام من `MIT.
</p>

<pre class="ipsCode">
gpg --import
</pre>

<p>
	يضيف هذا القسم مفتاح العام لـ ZeroTier إلى سلسلة المفاتيح المحلية للتخويلات للوثوق في الحزم التي ترغب في تثبيتها. الجزء التالي من الأمر سيُنفّذ فقط إذا انتهى استدعاء GPG بنجاح.
</p>

<pre class="ipsCode">
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z"
</pre>

<p>
	يمكنك ترجمة هذا القسم إلى : إذا كان سكربت التثبيت الموقّع بالتشفير منزّل من ZeroTier.com ومّر من GPG ولن يعترض عليه على انه غير موقّع من ZeroTier، اعرض هذه المعلومة على الشاشة.
</p>

<pre class="ipsCode">
sudo bash; fi
</pre>

<p>
	يأخذ هذا القسم السكربت المتحقق منه في ويٌنفّذه قبل الانتهاء.
</p>

<p>
	تحذير: لا تنزّل شيء من الانترنت وتربطه ببرنامج آخر إلا لو تأكدت منه من مصدر موثوق. يمكنك فحص الشيفرة المصدرية لبرنامج ZeroTier على <a href="https://github.com/zerotier/ZeroTierOne" rel="external nofollow">صفحة GitHub الخاصة بالمشروع</a> إذا رغبت في ذلك.
</p>

<p>
	استخدم طرفيّة <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> للاتصال بخادمك المنشئ حديثّا وشغّل الأمر السابق كمستخدم عادي تأكد أنك لا تشغّل هذا الأمر بصلاحيات الجذر، لأن السكربت سيطلب بشكل تلقائي كلمة المرور الخاصة بك لرفع مستوى الصلاحيات، وتذكر إبقاء طرفيّة ZeroTier مفتوح في متصفحك حتى تتمكّن من التعامل معه عند الضرورة.
</p>

<p>
	بمجرّد أن ينتهي السكربت من العمل، ستجد سطرين مشابهين للسطرين التاليين، سجّل عنوان ZeroTier (بدون الأقواس المعقوفة) واسم النظام الذي ولّد هذا العنوان لأنك ستحتاجهم فيما بعد:
</p>

<pre class="ipsCode">
*** Waiting for identity generation...

*** Success! You are ZeroTier address [ 916af8664d ].
</pre>

<p>
	أعد هذه الخطوات على حاسوبك المحلي إذا كنت تستخدم نظام أوبنتو أو اتبع الخطوات الموجودة على <a href="https://www.zerotier.com/download.shtml" rel="external nofollow">موقع ZeroTier</a> إذا كنت تستخدم نظامًا آخرًا. ومرّة أخرى احفظ عنوان ZeroTier والجهاز الذي يولّد هذا العنوان، لأنك ستحتاج إلى هذه المعلومات في الخطوة التالية من الدرس عندما تضم الخادم والعميل إلى الشبكة.
</p>

<h2>
	الخطوة الثالثة - الانضمام إلى شبكة ZeroTier الخاصة بك
</h2>

<p>
	بعد تشغيل برنامج ZeroTier على كل من الخادم والعميل، أنت الآن مستعد لتوصيلهم إلى الشبكة التي أنشأتها في طرفيّة ويب ZeroTier.
</p>

<p>
	استخدم الأمر التالي لتوجيه العميل الخاص بك لطلب الوصول إلى شبكة ZeroTier عن طريق المنصة الخاصة بهم، سيُرفض الطلب الأول للعميل وسيبقى معلّقًا، لكننا سنصلح ذلك بعد لحظات. تأكد من استبدال NetworkID بمعرّف الشبكة الذي سجلناه سابقًا في نافذة إعداد الشبكة.
</p>

<pre class="ipsCode">
sudo zerotier-cli join NetworkID
</pre>

<p>
	ستكون النتيجة كالتالي:
</p>

<pre class="ipsCode">
200 join OK
</pre>

<p>
	ستحصل على رسالة 200 join OK لتأكيد أن خدمة ZeroTier قد اشتغلت على خادمك، وإذا لم تحصل على هذه الرسالة، تأكد من معرّف الشبكة الذي أدخلته.
</p>

<p>
	بما أنك لم تنشئ شبكة عامة يمكن لأي شخص في العالم الإنضمام إليها، ستحتاج الآن إلى تخويل عملائك، اذهب إلى طرفيّة ويب ZeroTier وستجد في الأسفل قسم Members، ستجد المدخلات مع علامة Online، بنفس العناوين التي أدخلتها سابقًا.
</p>

<p>
	في العمود الأول Auth?‎، ضع إشارة على المربع لتخويلهم للانضمام إلى الشبكة، سيخصص متحكم ZeroTier عنوان IP للخادم وللعميل من النطاق الذي اخترته سابقا لاستخدامهم في المرة القادمة عند استدعاء SDN.
</p>

<p>
	يحتاج تخصيص عناوين IP بعض الوقت، في أثناء انتظار انتهاء العملية، يمكنك توفير Short Name و Description للعقد في قسم Members. وبهذا، ربطت النظامين إلى شبكة المعرّف بالبرمجيات الخاصة بك.
</p>

<p>
	حتى الآن تعرفنا على بعض أساسيات لوحة تحكم ZeroTier، ولقد استخدمنا واجهة سطر الأوامر لتنزيل وتثبيت ZeroTier، ومن ثم ربط كل من الخادم والعميل لتلك الشبكة، وبعد ذلك، ستتأكد من تطبيق كل شيء بشكل جيّد عن طريق أداء اختبار اتصال.
</p>

<h2>
	الخطوة الرابعة - التحقق من الاتصال
</h2>

<p>
	في هذه المرحلة، من المهم التحقق من أن كِلا الجهازين يمكنهما التواصل مع بعضهم البعض، فهنالك امكانية أنه لا يمكن التواصل فيما بينهم حتى لو ادعوا أنهم انضموا إلى الشبكة. ومن خلال التحقق من الاتصال الآن، لا تحتاج إلى القلق بشأن مشكلات الترابط الأساسيّة التي قد تسبب مشكلة في وقت لاحق.
</p>

<p>
	من الطرق السهلة لإيجاد عنوان IP الخاص بـ ZeroTier لكل جهاز هو النظر إلى قسم Members في طرفيّة ويب ZeroTier، ربما ستحتاج إلى تحديث الصفحة بعد التخويل للخادم والعميل قبل ظهور عناوين IP الخاصة بهم، وبدلًا من ذلك، توجد طريقة أخرى لفعل هذا وذلك عن طريق استخدام سطر أوامر لينكس لإيجاد هذه العناوين، استخدم الأمر التالي على كِلا الجهازين، عنوان IP الأول الذي يظهر في القائمة هو الذي سنستخدمه، في المثال أدناه، العنوان هو 203.0.113.0.
</p>

<pre class="ipsCode">
ip addr sh zt0 | grep 'inet'
</pre>

<p>
	ستكون المخرجات كالتالي:
</p>

<pre class="ipsCode">
inet 203.0.113.0/24 brd 203.0.255.255 scope global zt0
inet6 fc63:b4a9:3507:6649:9d52::1/40 scope global
inet6 fe80::28e4:7eff:fe38:8318/64 scope link
</pre>

<p>
	لتجربة الاتصال بين الأجهزة، استخدم الأمر ping من أحد الأجهزة متبوع باسم عنوان IP الآخر، فعلى سبيل المثال، على جهاز العميل:
</p>

<pre class="ipsCode">
ping your_server_ip
</pre>

<p>
	وعلى الخادم:
</p>

<pre class="ipsCode">
ping your_client_ip
</pre>

<p>
	إذا عادت نتيجة من الجهاز الآخر (كما هو موضّح في المخرجات أسفله)، فإن كلا العقدين يتواصلان عبر SDN بنجاح.
</p>

<pre class="ipsCode">
PING 203.0.113.0 (203.0.113.0) 56(84) bytes of data.
64 bytes from 203.0.113.0: icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 203.0.113.0: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 203.0.113.0: icmp_seq=3 ttl=64 time=0.043 ms
</pre>

<p>
	يمكنك إضافة أي عدد من الأجهزة إلى هذه الإعدادات عن طريق إعادة تثبيت ZeroTier وضمهم كما وضحنا في الأعلى. تذكر أن هذه الأجهزة لا تحتاج إلى أن تكون قريبة من بعضها البعض بأي طريقة.
</p>

<p>
	والآن، بعد أن تأكدت من أن الخادم والعميل يمكنهم التواصل مع بعضهم البعض، واصل القراءة لتتعلم كيف يمكنك ضبط الشبكة لتوفير بوابة خروج (exit gateway) وبناء <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> خاص بك.
</p>

<h2>
	الخطوة الخامسة - تفعيل قدرات <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> الخاصة بـ ZeroTier
</h2>

<p>
	كما ذكرنا في المقدمة، يمكنك استخدام ZeroTier كأداة <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>، إذا كنت لا تخطط لاستخدام ZeroTier كحل <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>، فلا تحتاج إلى اتباع هذه الخطوة ويمكنك القفز مباشرةً إلى الخطوة السادسة.
</p>

<p>
	إن استخدام <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> يخفي مصدر اتصالاتك مع المواقع عبر الانترنت، ويسمح لك بتجاوز القيود التي قد تكون موجودة في الشبكة التي تستخدمها، فأنت بالنسبة للإنترنت، تتصفحه عن طريق عنوان IP العام للخادم. ولكي تستخدم ZeroTier كأداة <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>، ستحتاج إلى القيام بمزيد من التغييرات لخادمك وإعدادات العميل.
</p>

<h3>
	تفعيل ترجمة عنوان الشبكة وإعادة توجيه عنوان IP
</h3>

<p>
	ترجمة عنوان الشبكة (Network Address Translation) والذي يعرف بـ "NAT"، هي طريقة تمكّن الموجّه (router) من قبول الحزم في واجهة واحدة موسومة بعنوان IP المرسل ومن ثم تبديل ذلك العنوان بعنوان الموجّه. يحفظ سجل هذا التبادل في ذاكرة الموجّه بحيث عند عودة الحزم في الاتجاه المعاكس، يمكن للموجّه ترجمة عنوان IP مرّة أخرى إلى عنوانه الأصلي. يستخدم NAT في العادة للسماح لعدة حواسيب للعمل باستخدام عنوان IP واحد ظاهر للعموم، والذي هو مفيد بالنسبة لخدمة <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>، ومثال على NAT، الموجه المنزلي الذي يقدمه لك مزوّد خدمة الإنترنت لتتصل جميع الأجهزة في منزلك بالإنترنت. فيشترك حاسوبك وهاتفك وأجهزتك اللوحية في نفس عنوان IP لشبكة الأنترنت، لأن الموجّه يستخدم NAT.
</p>

<p>
	عن رغم من أن الموجه هو من يقوم بـ NAT، فيمكن للخادم فعل ذلك أيضًا، وعن طريق هذه الخطوة، ستستفيد من هذه الوظيفة في خادم ZeroTier لتفعيل قدرات <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>.
</p>

<p>
	إن عملية إعادة توجيه عنوان IP ‏(IP forwarding) هي وظيفة يقوم بها الموجّه أو الخادم لتوجيه حركة الحزم من واجهة إلى أخرى إذا كانت عناوين IP في مناطق مختلفة. إذا كان الموجّه متّصل بشبكتين، فيسمح إعادة توجيه عنوان IP بتوجيه الحزم فيما بينهم. يبدو هذا سهلًا، لكن قد تواجه صعوبات في تطبيقه، أما في هذا الدرس، فمجرّد تعديل بضعة ملفات إعداد.
</p>

<p>
	بتفعيل إعادة توجيه IP، ستصل حركة الحزم للـ <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> من عميلك في شبكة ZeroTier إلى واجهة ZeroTier للخادم، وبدون هذه الإعدادات، ستحذف نواة لينكس (افتراضيًا) أي حزم تصل لواجهة ليست لها، وهذا هو سلوكها الافتراضي، لأنه في العادة أي حزم تصل إلى واجهة لديها عنوان وصول شبكة أخرى قد تكون بسبب خطأ من الموجه في الشبكة.
</p>

<p>
	اعتبر إعادة توجيه عنوان IP على أنه إعلام نواة لينكس أنه يمكن إعادة توجيه الحزم بين الواجهات، فالوضع الافتراضي هو 0 أي مغلق، والذي ستحوله إلى 1 أي مفعّل.
</p>

<p>
	شغّل الأمر التالي لرؤية الإعدادات الحالية:
</p>

<pre class="ipsCode">
sudo sysctl net.ipv4.ip_forward
</pre>

<p>
	ستبدو المخرجات كالتالي:
</p>

<pre class="ipsCode">
net.ipv4.ip_forward = 0
</pre>

<p>
	لتفعيل إعادة توجيه عنوان IP، عدّل على ملف <code>‎/etc/sysctl.conf</code> في خادمك وأضف السطر المطلوب، يسمح هذا الملف للمدراء بتجاوز إعدادات النواة الافتراضية وسيظّل يعمل دائما حتى بعد إعادة التشغيل لذلك لا تقلق بشأن إعداده مرّة أخرى. استخدم nano أو محرر النصوص المفضّل لديك لإضافة السطر التالي إلى نهاية الملف:
</p>

<pre class="ipsCode">
sudo nano /etc/sysctl.conf
</pre>

<p>
	ثم أضف السطر التالي:
</p>

<pre class="ipsCode">
. . .
net.ipv4.ip_forward = 1
</pre>

<p>
	اغلق الملف بعد حفظه ثم شغّل الأمر التالي لإعلام النواة بالتغييرات.
</p>

<pre class="ipsCode">
sudo sysctl -p
</pre>

<p>
	سيتبني الخادم أي تغييرات في الإعدادات من الملف وسيطبقها فورا دون الحاجة إلى إعادة التشغيل، شغل نفس الأمر الذي كتبناه سابقا وستجد أن إعادة توجيه IP مفعّل.
</p>

<pre class="ipsCode">
sudo sysctl net.ipv4.ip_forward
</pre>

<p>
	ستكون المخرجات كالتالي:
</p>

<pre class="ipsCode">
net.ipv4.ip_forward = 1
</pre>

<p>
	والآن، بعد تفعيل إعادة توجيه عناوين IP، سنضع بعض القواعد لإعادة توجيه بسيطة للخادم، بما أن نواة لينكس تملك القدرة على توجيه الشبكة بداخلها، فكل ما عليك فعله هو إضافة بعض القواعد لاخبار الجدار الناري الداخلي والموجّه أن حركة الحزم الجديدة مقبولة وأين سيرسلها.
</p>

<p>
	لإضافة هذه القواعد من سطر الأوامر، ستحتاج أولًا إلى معرفة أسماء التي أعطاها أوبنتو لكل من واجهة ZeroTier وواجهة إثرنت Ethernet للإنترنت العادي، سيكونان في العادة zt0 و eth0 لكن ليس دائمًا.
</p>

<p>
	لإيجاد أسماء هذه الواجهات، استخدم الأمر <code>ip link show</code>، هذه الأداة هي جزء من iproute2 وهي مجموعة من أدوات مساحة المستخدم والتي تأتي مثبتة في أبنتو بشكل افتراضي:
</p>

<pre class="ipsCode">
ip link show
</pre>

<p>
	في مخرجات هذا الأمر، ستجد أسماء الواجهة بجانب الأرقام التي تعرّف الواجهة في القائمة، إذا وجدّت أسماء مختلفة عن الموجودة في المثال، فاستخدمها في بقيّة الدرس:
</p>

<pre class="ipsCode">
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 72:2d:7e:6f:5e:08 brd ff:ff:ff:ff:ff:ff
3: zt0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 2800 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether be:82:8f:f3:b4:cd brd ff:ff:ff:ff:ff:ff
</pre>

<p>
	وبعد ذلك استخدم iptables لتفعيل ترجمة عناوين الشبكة (Network-Address-Translation) وعمليّة تنكر IP ‏(IP masquerading):
</p>

<pre class="ipsCode">
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
</pre>

<p>
	اسمح بتوجيه حركة الحزم وراقب الاتصالات النشطة:
</p>

<pre class="ipsCode">
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
</pre>

<p>
	بعد ذلك، اسمح بتوجيه حركة الحزم من zt0 إلى eth0، والقاعدة المعاكسة لهذه غير مطلوبة بما أنك ستفترض أن العميل يتصل دائمًا من هذا الخادم، وليس من طريق آخر:
</p>

<pre class="ipsCode">
sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
</pre>

<p>
	من المهم تذكّر أن قواعد iptables التي وضعتها لهذا الخادم لا تبقى عند إعادة التشغيل، ستحتاج إلى حفظ هذه القواعد لإعادتها في حالة إعادة تشغيل الخادم، شغّل الأوامر في الأسفل وسترى كيف يمكنك بشكل مختصر حفظ قواعد IPv4 الحاليّة (IPv6 غير مطلوبة في الوقت الحالي):
</p>

<pre class="ipsCode">
sudo apt-get install iptables-persistent
</pre>

<pre class="ipsCode">
sudo netfilter-persistent save
</pre>

<p>
	بعد تنفيذ الأمر <code>sudo netfilter-persistent save</code> من الأفضل إعادة تشغيل الخادم للتأكد من أن القواعد قد حفظت بشكل صحيح، وأسهل طريقة للتأكد من ذلك هو عن طريق تشغيل <code>sudo iptables-save</code> والذي سيعرض الإعداد الموجود حاليًا في ذاكرة إلى الطرفية. إذا رأيت قواعد مشابهة للقواعد في الأسفل بغض النظر عن التنكر، إعادة التوجيه IP وواجهة zt0، فإنها حفظت بشكل صحيح.
</p>

<pre class="ipsCode">
sudo iptables-save
</pre>

<p>
	المخرجات:
</p>

<pre class="ipsCode">
# Generated by iptables-save v1.6.0 on Tue Apr 17 21:43:08 2018
. . .
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
. . .
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i zt0 -o eth0 -j ACCEPT
COMMIT
. . .
</pre>

<p>
	بعد تطبيق هذه القواعد على الخادم، يمكنك الآن نقل الحزم بين شبكة ZeroTier والانترنت العام، ومع ذلك، لن يعمل <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> إلا لو أُعلمت شبكة ZeroTier نفسها أن الخادم جاهز لاستخدامه كبوابة خروج (gateway).
</p>

<h3>
	تفعيل خادمك لإدارة التوجيه العمومي (Global Route)
</h3>

<p>
	من أجل أن يتمكن خادمك من معالجة حركة الحزم من أي عميل، يجب أن تتأكد من معرفة العملاء الآخرين في شبكة ZeroTier كيف يرسلون حركة الحزم له، وذلك عن طريق إعداد توجيه عمومي (Global Route) في طرفيّة ZeroTier، يعرّف الأشخاص المختصين في شبكات الحاسوب بالتوجيه الافتراضي (Default Route)، وتعني أين سيرسل كل عميل حركة الحزم الافتراضية، على سبيل المثال، منع توجيه حركة الحزم لمناطق أخرى محددّة.
</p>

<p>
	اذهب إلى أعلى يمين صفحة شبكات ZeroTier وأضف موجّه جديد بمعاملات التالية، يمكنك إيجاد عنوان IP ZeroTier لخادمك في قسم Members من صفحة إعدادات شبكة ZeroTier، وفي حقل network/bits، أضف 0.0.0.0/0 وفي حقل (LAN)، أدخل عنوان IP خادم ZeroTier.
</p>

<p>
	بعد اضافة هذه التفاصيل، اضغط على رمز "+" وسترى ظهور قاعدة جديدة أسفل القاعدة الموجودة، وسترى كرة برتقالية للإعلام بأنه توجيه عمومي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2020_02/002zerotierGlobalRouteRule-updated.png.af792435bc72129211e0c521ce208e1a.png" data-fileid="34925" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="34925" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_02/002zerotierGlobalRouteRule-updated.png.af792435bc72129211e0c521ce208e1a.png" alt="002zerotierGlobalRouteRule-updated.png"></a>
</p>

<p>
	لم يتبقى سوى إعداد العملاء قبل أن يعمل <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>.
</p>

<h3>
	إعداد عملاء لينكس
</h3>

<p>
	ملاحظة: الأوامر الموجودة في هذا القسم تطبّق فقط على عملاء لينكس، بالنسبة إلى تعليمات إعداد عملاء ويندوز وmacOS فستجدها في القسم القادم.
</p>

<p>
	إذا كان العميل يعمل بنظام لينكس، فستحتاج إلى القيام بتغييرات يدوية في ملف <code>‎/etc/sysctl.conf</code> . هذه الإعدادات مطلوبة لتغيير معلومات النواة حول مسار العودة المقبول من حركة حزم العميل، وبسبب الطريقة التي أُعدّ به ZeroTier <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>، فحركة الحزم القادمة من خادمك إلى عميلك قد تظهر أنها تأتي من عنوان شبكة مختلف عن الذي أرسلت إليه، وبشكل افتراضي، سترى نواة لينكس أنها غير صالحة وستحذفها، لذلك من الضروري تغيير هذا السلوك.
</p>

<p>
	افتح ملف <code>‎/etc/sysctl.conf</code> على جهاز العميل:
</p>

<pre class="ipsCode">
sudo nano /etc/sysctl.conf
</pre>

<p>
	وأضف السطر التالي:
</p>

<pre class="ipsCode">
. . .

net.ipv4.conf.all.rp_filter=2
</pre>

<p>
	أغلق الملف بعد حفظه وشغّل الأمر التالي لتطبيق التغييرات:
</p>

<pre class="ipsCode">
sudo sysctl -p
</pre>

<p>
	بعد ذلك، اخبر برنامج عميل ZeroTier أن الشبكة مسموح لها بحمل حركة الحزم الافتراضيّة، أي أنه سيعدّل على توجيه العميل، ويجب تفعيلها بشكل يدوي لأن الأمر حساس، سيعرض هذا الأمر هيكل الإعدادات، تأكد من أن <code>allowDefault=1</code> في الأعلى:
</p>

<pre class="ipsCode">
sudo zerotier-cli set NetworkID allowDefault=1
</pre>

<p>
	إذا أردت في أي وقت ايقاف استخدام ZeroTier كـ <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> مع إبقاء حركة الحزم داخله، أعد قيمة <code>allowDefault</code> إلى 0:
</p>

<pre class="ipsCode">
sudo zerotier-cli set NetworkID allowDefault=0
</pre>

<p>
	في كل مرة تعيد تشغيل جهاز العميل، ستعود قيمة <code>allowDefault=1</code> إلى 0 فتذكّر إعادة تنفيذها من أجل تفعيل وظيفة <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>.
</p>

<p>
	تعمل خدمة ZeroTier بشكل افتراضي عند التشغيل لكل من عميل لينكس والخادم، وإذا لم ترغب بهذا، فيمكنك إيقاف تشغيلها عند اقلاع الحاسوب عن طريق الأمر التالي:
</p>

<pre class="ipsCode">
sudo systemctl disable zerotier-one
</pre>

<p>
	إذا أردت استخدام نظام تشغيل آخر على شبكة ZeroTier فأقرأ القسم التالي، وخلاف لذلك انتقل إلى القسم الذي بعده.
</p>

<h3>
	إعداد عملاء لا يعملون بنظام لينكس
</h3>

<p>
	لا يقتصر عمل برنامج عميل ZeroTier على نظام لينكس فقط، فيمكن دعم حتى الهواتف الذكية، فالبرنامج متوفّر لأنظمة ويندوز وmacOS وأندرويد وiOS و حتى أنظمة التشغيل المتخصصة كنظام QNAP و Synology و WesternDigital NAS.
</p>

<p>
	لضم عملاء يعملون بأنظمة macOS وويندوز إلى الشبكة، شغّل أداة ZeroTier (والتي ثبتها في الخطوة 1) ومن ثم أدخل NetworkID في الحقل قبل أن تضغط على Join. تذكر بأن تعود إلى طرفيّة ZeroTier لاختيار زر Allow لتخويل النظام الجديد إلى شبكتك.
</p>

<p>
	تأكد من وضع اشارة على المربع المسمى Route all traffic through ZeroTier، وإذا لم تفعل ذلك، فالعملاء سيرتبطون بشبكة ZeroTier لكن لن يتمكنوا من ارسال حركة حزم الإنترنت عبرها.
</p>

<p>
	استخدم أداة للتأكد من عنوان IP مثل <a href="http://icanhazip.com/" rel="external nofollow">ICanHazIP</a> للتأكد من أن الحزم تظهر إلى الإنترنت من خلال عنوان IP الخادم، وللتأكد من ذلك، أضف عنوان URL التالي إلى شريط عنوان متصفحك، وسيظهر لك هذا الموقع عنوان IP الذي يراه الخادم (وبقيّة الانترنت) للوصول إلى الموقع: <a href="http://icanhazip.com." ipsnoembed="false" rel="external nofollow">http://icanhazip.com.</a>
</p>

<p>
	وبانتهاء هذه الخطوات، يمكنك بدء استخدام <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> الخاص بك كما تريد، القسم الاختياري التالي سيغطي ميّزة قواعد التدفق (flow rules) الموجودة في ZeroTier SDN، لكنها ليست مطلوبة لعمل وظيفة <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>.
</p>

<h2>
	الخطوة السادسة - إدارة التدفق (اختياري)
</h2>

<p>
	واحدة من فوائد الشبكة المعرّفة بالبرمجيات هي التحكم المركزي، فواجهة مستخدم الويب هي المتحكم المركزي لـ ZeroTier والتي تترأس كامل خدمة ZeroTier SDN، ومن هذه الواجهة، يمكن كتابة قواعد تعرف باسم قواعد التدفّق والتي تحدّد ما يمكن لحركة الحزم في الشبكة فعله أو لا، فعلى سبيل المثال، يمكنك حظر منافذ معيّنة في الشبكة، وتقييد الأجهزة التي يمكنها التحدث لبعضها وحتى إعادة توجيه حركة الحزم.
</p>

<p>
	هذه القدرة مهمة للغاية ويسري مفعولها بشكل فوري تقريبًا، لأن أي تغييرات على جدول التدفّق ترسل إلى أعضاء الشبكة ويسري مفعولها بعد لحظات. لتعديل قواعد التدفّق، إذهب إلى واجهة مستخدم ويب ZeroTier، واضغط على تبويب Networking، وانزل قليلا إلى الأسفل حتى ترى مربع يسمى Flow Rules (والذي سيتوسع)، ويفتح هذا حقل نصي حيث يمكنك إضافة القواعد التي ترغب بها. ستجد كتيّب كامل مع طرفيّة ZeroTier في المربع الذي أسفل مربع ادخال Flow Rules ويسمى Rules Engine Help.
</p>

<p>
	وإليك بعض الأمثلة لقواعد ستساعدك على اكتشاف هذه الوظيفة.
</p>

<p>
	لحظر أي حركة حزم ملزمة لخادم DNS جوجل 8.8.8.8، أضف هذه القاعدة:
</p>

<pre class="ipsCode">
drop
    ipdest 8.8.8.8/32
;
</pre>

<p>
	لإعادة توجيه أي حركة حزم ملزمة لخادم DNS جوجل العامل إلى إحدى عقد ZeroTier، أضف القاعدة التالية، يمكن أن يكون هذا بمثابة اختبارًا ممتازًا لتجاوز عمليات بحث (lookups) DNS:
</p>

<pre class="ipsCode">
redirect NetworkID
    ipdest 8.8.8.8/32
;
</pre>

<p>
	إذا كان لشبكتك متطلبات حماية خاصة، يمكنك إزالة أي نشاط على منافذ FTP و Telnet و HTTP غير المشفّر عن طريق اضافة هذه القاعدة:
</p>

<pre class="ipsCode">
drop
    dport 80,23,21,20
;
</pre>

<p>
	عندما تنتهي من إضافة قواعد التدفّق، اضغط على زر Save Changes وسيسجّل ZeroTier التغييرات.
</p>

<h2>
	خاتمة
</h2>

<p>
	تعلمّت في هذا الدرس بعض من أساسيات شبكات المعرّفة بالبرمجيات، ووفر لك ZeroTier بعض اللمحات حول فائدة هذه التكنولوجيا وعلى الرغم من تثبيت <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> قد يتعارض مع أدوات أخرى قد استخدمتها في الماضي، لكن سيكون سهولة إضافة عملاء جدد سببًا مقنعًا لاستخدام التكنولوجيا في مكان آخر.
</p>

<p>
	لتلخيص الأمر، لقد تعلمت كيفية استخدام ZeroTier كموفّر SDN، بالإضافة إلى إعداد وربط العقد إلى الشبكة، ولقد علمك عنصر <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> كيف يعمل التوجيه وكيف تعمل الشبكة، وسيسمح لك هذا الدرس باستخدام تكنولوجيا التحكم بالتدفّق.
</p>

<p>
	والآن بعد أن أضفنا شبكة نقطة-إلى-نقطة، يمكنك جمعها مع تكنولوجيا أخرى مثل مشاركة الملفات، وإذا كان لديك NAS أو خادم ملفات في البيت فيمكنك ربطه بـ ZeroTier واستخدامه. إذا أردت مشاركته مع أصدقائك، فيمكنك أن تفسّر لهم كيف ينضمون إلى شبكة ZeroTier الخاصة بك.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://www.digitalocean.com/community/tutorials/getting-started-software-defined-networking-creating-vpn-zerotier-one" rel="external nofollow">Getting Started with Software-Defined Networking and Creating a <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> with ZeroTier One</a> لصاحبه Sam Cater
</p>
]]></description><guid isPermaLink="false">459</guid><pubDate>Sun, 15 Mar 2020 18:03:02 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x627;&#x633;&#x62A;&#x636;&#x627;&#x641;&#x629; &#x62E;&#x637;&#x648;&#x637;&#x643; &#x627;&#x644;&#x62E;&#x627;&#x635;&#x629; &#x639;&#x644;&#x649; &#x627;&#x644;&#x648;&#x64A;&#x628;</title><link>https://academy.hsoub.com/devops/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D8%AE%D8%B7%D9%88%D8%B7%D9%83-%D8%A7%D9%84%D8%AE%D8%A7%D8%B5%D8%A9-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r453/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_01/5e1cc27754281_-----.jpg.c2fc7aae196845dd4fcac30ff0bd9fb0.jpg" /></p>

<p>
	غالبًا ما تشكّل الخطوط مشكلةً للعديد من مستخدمي الحاسوب، فهل سبق لك مثلًا وأن صَممت منشورًا رائعًا، وعند أخذك للملف للطباعة في مكان ما وجدت أنّ جميع عناوين تصميمك تحولت إلى خط Arial لأن تلك الطابعة لا تملك الخط المزخرف الجميل الذي استخدمته في التصميم؟ بالطبع هناك طرق للحيلولة دون ذلك: يمكنك مثلًا تحويل الكلمات في خطوط معيّنة إلى «مسارات» ( paths)، أو تجميع الخطوط في PDF، أو تجميع الخطوط مفتوحة المصدر مع ملفات التصميم خاصتك، أو - على الأقل – تسجيل قائمة الخطوط المطلوبة. ومع ذلك لا تزال هذه تُعدّ مشكلة لأننا بشر وننسى.
</p>

<p>
	يواجه الويب ذات النوع من المشاكل. حتى وإن كان لديك فهمًا لأساسيات CSS، فمن المحتمل أنك رأيت نوعًا من التصاريح كهذا:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3028_6" style="">
<span class="pln">h1 </span><span class="pun">{</span><span class="pln"> font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">:</span><span class="pln"> </span><span class="str">"Times New Roman"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Times</span><span class="pun">,</span><span class="pln"> serif</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span></pre>

<p>
	إنّها محاولة من المصمم لتحديد خط معين، وتوفير خط احتياطي في حال لم يكن لدى المستخدم خط Times New Roman مثبتًا على جهازه، وتقديم خط احتياطي آخر في حال لم يكن خط Times متوفرا لدى المستخدم أيضًا. إنّها أفضل من استخدام رسومٍ بدلًا من النّص، لكنّها لا تزال طريقةً غير مألوفةٍ وغير ملائمةٍ لخطٍ بدون إدراة، ومع ذلك، كان هذا كل ما يمكننا عمله في الأيام الأولى من الويب.
</p>

<h2>
	خطوط الويب webfonts
</h2>

<p>
	ثم جاءت خطوط الويب، ونُقلت إدارة الخطوط من العميل إلى الخادم. فبدلًا من مطالبة متصفح الويب بالعثور على الخط المطلوب على نظام المستخدم، أصبحت الخطوط تُوَفَّر للعميل على مواقع الويب من قبل الخادم نفسه. تستضيف Google ومزوّدو الخدمات الأخرى الخطوط المرخّصة ترخيصًا مفتوحًا والتي يمكن للمصمّمين تضمينها على مواقعهم باستخدام قاعدة CSS بسيطة.
</p>

<p>
	إن المشكلة في هذه الميزة المجانيّة هي أنّها بالطبع لا تأتي بدون تكلفة تمامًا. إنّها مجانيّة من ناحية الاستخدام، لكن المواقع الرئيسيّة مثل Google تحبّ تتبّع من يشير إلى بياناتهم بما في ذلك الخطوط. إذا لم تجد حاجة لمساعدة Google لبناء سجل لنشاط كل شخص على الويب، فإنّ الأخبار السارة هي أنّه بالإمكان استضافة خطوط الويب الخاصّة بك، والأمر بسيط ببساطة تحميل الخطوط إلى مضيفك واستخدام قاعدة CSS واحدة سهلة. وكميزة جانبيّة، قد يُحمّل موقعك بشكل أسرع حيث ستجري استدعاءات خارجية أقل عند تحميل كل صفحة.
</p>

<h2>
	خطوط الويب المُستضافة ذاتيًّا
</h2>

<p>
	إنّ أول شيء تحتاجه هو خط مرخّص ترخيصًا مفتوحًا. قد يكون هذا أمرًا مربكًا بعض الشيء إن لم تكن معتادًا على التفكير في تراخيص البرامج المبهمة أو الاهتمام بها، خاصّة أنه يبدو وكأن كل الخطوط مجانيّة. يُدرك عدد قليل جدًا منّا أنّهم يدفعون مالًا من أجل الخطوط، مع العلم أنّ معظم الناس لديهم خطوط مرتفعة الثمن على حواسيبهم. فقد يكون حاسوبك وبفضل اتفاقيات الترخيص قد شُحِن مع خطوط <a href="https://docs.microsoft.com/en-us/typography/fonts/font-faq" rel="external nofollow">لا يُسمح لك قانونيًا بنسخها وإعادة توزيعها</a>. إنّ بعض الخطوط مثل Arial و Verdana و Calibri و Georgia و Impact و Lucida و Lucida Grande و Times و Times New Roman و Trebuchet و Geneva والعديد من الخطوط الأخرى مملوكة لشركة Microsoft و Apple و Adobe. إذا اشتريت جهاز حاسوب مُثبّت عليه مسبقًا نظام تشغيل Windows أو MacOS، فأنت إذًا تدفع مقابل استخدام حزمة الخطوط المُضمّنة، لكنك لا تملك هذه الخطوط ولا يُسمح لك بتحميلها إلى خادم الويب (ما لم يُذكر خلاف ذلك).
</p>

<p>
	إنّ جنون المصدر المفتوح لحسن الحظ قد وصل إلى عالم الخطوط منذ زمن طويل، وهناك مجموعات ممتازة من الخطوط المرخّصة ترخيصًا مفتوحًا من المنظمات والمشاريع مثل <a href="https://www.theleagueofmoveabletype.com/" rel="external nofollow">League of Moveable Type</a> و<a href="https://fontlibrary.org/" rel="external nofollow">Font Library</a> و<a href="https://www.omnibus-type.com/" rel="external nofollow">Omnibus Type</a> وحتى <a href="https://github.com/googlefonts" rel="external nofollow">Google</a> و<a href="https://github.com/adobe-fonts" rel="external nofollow">Adobe</a>.
</p>

<p>
	يمكنك استخدام تنسيقات ملفات الخطوط الأكثر شيوعًا، بما في ذلك TTF و OTF و WOFF و EOT وما إلى ذلك. سأستخدم في هذا المثال الخط Sorts Mill Goudy لأنّه يتضمن إصدار WOFF (تنسيق خط Open Web، طٌوِّر جزئيًا من قبل Mozilla). تعمل التنسيقات الأخرى على أيّة حال بنفس الطريقة.
</p>

<p>
	لنفترض أنّك تريد استخدام الخط <a href="https://www.theleagueofmoveabletype.com/sorts-mill-goudy" rel="external nofollow">Sorts Mill Goudy</a> على صفحة الويب خاصتك:
</p>

<ol>
<li>
		حمّل ملف GoudyStM-webfont.woff إلى خادم الويب الخاص بك:
	</li>
</ol>
<pre class="ipsCode">
scp GoudyStM-webfont.woff seth@example.com:~/www/fonts/
</pre>

<p>
	قد يوفّر مضيفك أيضًا أداة تحميلٍ رسوميّة من خلال cPanel أو لوحة تحكم ويب مشابهة.
</p>

<ol start="2">
<li>
		أضف قاعدة <code>‎@font-face</code> مشابهة لما يلي في ملف CSS الخاص بموقعك:
	</li>
</ol>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3028_10" style="">
<span class="lit">@font</span><span class="pun">-</span><span class="pln">face </span><span class="pun">{</span><span class="pln"> 
  font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">:</span><span class="pln"> </span><span class="str">"titlefont"</span><span class="pun">;</span><span class="pln"> 
  src</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="str">"../fonts/GoudyStM-webfont.woff"</span><span class="pun">);</span><span class="pln"> 
</span><span class="pun">}</span></pre>

<p>
	قيمة الواصف<code>font-family</code>هي تسمية تختارها للخط. إنها اسم أو وصف مألوف للإنسان بغض نظر عمّا تمثله قاعدة <code>‎@font-face</code> للخط. استَخدمتُ القيمة "titlefont" في هذا المثال لأنني أتصوّر أنّ هذا الخط سيُستخدم للعناوين الرئيسية في موقع وهميّ. يمكنك ببساطة استخدام أيّة قيم أخرى مثل "officialfont" أو "myfont".
</p>

<p>
	قيمة الواصف<code>src</code> تُحدَد المسار إلى ملف الخط. يجب أن يكون هذا المسار موافقا لبنية ملف الخادم الخاص بك، لدي في هذا المثال المجلد fonts بجانب المجلد css. قد لا يكون موقعك منظمًا بهذه الطريقة، لذا اضبط المسارات بما يناسبك مع الآخذ بالحسبان أن نقطة واحدة (.) تعني هذا المجلد ونقطتان (..) تعنيان مجلدًا آخرًا للخلف (المجلد الحاوي [الأب] للمجلد الحالي).
</p>

<ol start="3">
<li>
		الآن وبعد تحديد اسم الخط وموقعه، يمكنك استدعائه في أي صنف class من أصناف CSS أو معرّف ID تريده. على سبيل المثال، إذا كنت ترغب في عرض <code>&lt;h1&gt;</code> بخط Sorts Mill Goudy، فعليك جعل قاعدة CSS الخاصّة به تستخدم اسم خطك المخصّص:
	</li>
</ol>
<pre class="ipsCode">
h1 { font-family: "titlefont", serif; }
</pre>

<p>
	أنت الآن تستخدم وتَستضيف خطوطك الخاصّة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="33312" href="https://academy.hsoub.com/uploads/monthly_2020_01/02_webfont.jpg.e26bc74023d20b0500eefa667f53615b.jpg" rel=""><img alt="02_webfont.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="33312" data-unique="n972ulpft" src="https://academy.hsoub.com/uploads/monthly_2020_01/02_webfont.jpg.e26bc74023d20b0500eefa667f53615b.jpg"></a>
</p>

<p>
	ترجمة وبتصرف للمقال <a href="https://opensource.com/article/19/3/webfonts?utm_campaign=intrel" rel="external nofollow">How to host your own webfonts</a> لصاحبه <a href="https://opensource.com/users/seth" rel="external nofollow">Seth Kenlon</a>
</p>
]]></description><guid isPermaLink="false">453</guid><pubDate>Mon, 13 Jan 2020 19:18:17 +0000</pubDate></item><item><title>&#x645;&#x631;&#x627;&#x62C;&#x639;&#x629; &#x63A;&#x64A;&#x631; &#x645;&#x62A;&#x62D;&#x64A;&#x651;&#x632;&#x629; &#x644;&#x623;&#x641;&#x636;&#x644; 10 &#x62E;&#x62F;&#x645;&#x627;&#x62A; &#x644;&#x627;&#x633;&#x62A;&#x636;&#x627;&#x641;&#x629; &#x645;&#x648;&#x627;&#x642;&#x639; &#x627;&#x644;&#x648;&#x64A;&#x628;</title><link>https://academy.hsoub.com/devops/general/%D9%85%D8%B1%D8%A7%D8%AC%D8%B9%D8%A9-%D8%BA%D9%8A%D8%B1-%D9%85%D8%AA%D8%AD%D9%8A%D9%91%D8%B2%D8%A9-%D9%84%D8%A3%D9%81%D8%B6%D9%84-10-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D9%84%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r452/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2019_11/5dd3d36656c3c_----10----.jpg.61cb50c289a766068eb1b9e702246a5f.jpg" /></p>
<p>
	يتطلب كلّ موقع الكتروني استضافة وذلك ليكون متاحًا للزوار عبر شبكة الإنترنت. يُدرك المصممون والمدونون أهمية ذلك تمامًا وأغلبهم يستخدم المواقع الإلكترونية لنشر أعمالهم وعلاماتهم التجارية. عندما يتعلق الأمر باختيار مزود استضافة المواقع فهنالك العديد من الخيارات المتاحة بعضها مجاني ويوفر لك ميزات محدودة جدًا بينما البعض الأخر قد يكلفك القليل من المال ولكن يقدم ميزات غير محدودة. وأنا أفضل خدمات لاستضافة المدفوعة وذلك لتوفيرها العديد من التسهيلات بالموازنة مع المزودات الرخيصة أو المجانية.
</p>

<h2>
	1. <a href="https://www.bluehost.com/" rel="external nofollow">BlueHost</a>
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32538" href="https://academy.hsoub.com/uploads/monthly_2019_11/bluehost.png.8d4b7c9410467ec9cda4570aac01afa3.png" rel="" data-fileext="png"><img alt="bluehost.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32538" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_11/bluehost.thumb.png.b6f4aaa3669c81b056473edadec62adf.png"></a>
</p>

<p>
	وهو أحد الشركات الرائدة في تقديم خدمات <a href="https://www.wpar.net/what-is-web-hosting/" rel="external nofollow">استضافة المواقع </a>والّتي توفر استضافة ووردبريس ممتازة وموصّى بها من قِبل شركة ووردبريس الرسمية، وتستطيع إدارة ازدياد عدد الزوار إلى موقعك بدون إبطائه. عروض الشركة:
</p>

<ul>
	<li>
		استضافة مشتركة - يعدّ خيارًا مناسبًا للمصممين والمدونين الّذين لا يتوقعون ملايين الزيارات شهريًا.
	</li>
	<li>
		استضافة VPS والاستضافة المخصصة - تعدّ خيارًا مناسبًا للأعمال الّتي تحتاج المزيد من موارد المخدم. ويوجد خبراء جاهزين لمساعدتك على مدار ساعة وطيلة أيام الأسبوع.
	</li>
	<li>
		استضافة الموزّعين - يعدّ هذا الخيار مناسبًا للأشخاص الّذين يعملون في مجال بيع خدمات الاستضافة حيث يمكنك شراؤها واستخدام مساحة التخزين في القرص الصلب المخصصة وعرض النطاق (Bandwidth) لاستضافة مواقع العملاء.
	</li>
</ul>

<p>
	وهذه بعض الميزات فيما يخص خيار المصممين والمدونين وتعرض الشركة العديد من الميزات منها:
</p>

<ul>
	<li>
		استضافة نطاقات (Domains) بشكل غير محدود.
	</li>
	<li>
		مساحة استضافة بشكل غير محدودة.
	</li>
	<li>
		شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة"><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr></abbr> مجانية.
	</li>
	<li>
		استقبال 100 دولار أمريكي كهدية من شركة غوغل و100 من شركة مايكروسوفت عند إنفاقك 25 دولار أمريكي في حسابك الجديد على منصاتهم الإعلانية.
	</li>
	<li>
		تراسل بيانات بشكل غير محدود.
	</li>
	<li>
		حسابات بريد إلكتروني بشكل غير محدود.
	</li>
	<li>
		نطاق (Domain) مجاني مخصص.
	</li>
</ul>

<p>
	يمكنك الحصول على هذه الميزات والكثير غيرها الموجودة في الخطة الاستضافة المشتركة مقابل 2.95 دولار أمريكي شهريًا، ومن ناحية أخرى استضافة المواقع المخصصة غالية بعض الشيء ولكنها توفر المزيد من موارد المخدم مثل:
</p>

<ul>
	<li>
		وحدة معالجة مركزية 4×2.3 غيغا هرتز.
	</li>
	<li>
		ذاكرة وصول عشوائي (RAM) بسعة 4 غيغا بايت.
	</li>
	<li>
		سعة تخزين 500 غيغا بايت (منسوخة احتياطيًا في حال فشل النسخة الأصلية).
	</li>
	<li>
		5 تيرا بايت عرض النطاق (Bandwidth).
	</li>
	<li>
		3 عناوين IP.
	</li>
	<li>
		شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة"><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr></abbr> مجانية.
	</li>
	<li>
		اسم نطاق مجاني.
	</li>
	<li>
		دعم فني على مدار الساعة وطيلة أيام الأسبوع.
	</li>
	<li>
		ضمان استرداد أموالك خلال 30 يوم.
	</li>
</ul>

<p>
	تبلغ كلفة الاستضافة المخصصة القياسية 79.99 دولار أمريكي شهريًا. يمكنك أيضًا الحصول على خطة المتاجر الإلكترونية والّتي تتيح مجموعة من المميزات الّتي يحتاجها جميع أصحاب المتاجر الإلكترونية ومن بين المميزات المتوفرة في جميع خطط المتاجر الإلكترونية هي:
</p>

<ul>
	<li>
		اسم نطاق مجاني.
	</li>
	<li>
		تثبيت تلقائي لمتجر WooCommerce.
	</li>
	<li>
		شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة"><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr></abbr> مجانية.
	</li>
	<li>
		تراسل بيانات بشكل غير محدود.
	</li>
	<li>
		استقبال 100 دولار أمريكي كهدية من شركة غوغل و100 من شركة مايكروسوفت عند إنفاقك 25 دولار أمريكي في حسابك الجديد على منصاتهم الإعلانية.
	</li>
	<li>
		عنوان IP مخصص.
	</li>
</ul>

<p>
	ويمكنك الحصول على الخطة الابتدائية والّتي تأتي مع مميزات أخرى مثل:
</p>

<ul>
	<li>
		استضافة متجر واحد.
	</li>
	<li>
		سعة تخزين تبلغ 100 غيغا بايت.
	</li>
	<li>
		مجموعة من القوالب المجانية الجاهزة للتركيب.
	</li>
	<li>
		حماية خصوصية النطاق.
	</li>
	<li>
		مكالمة مجانية للمساعدة في التثبيت.
	</li>
	<li>
		شهر كامل مجانًا لبرنامج أوفيس 365 Mailbox. كل هذه المميزات مقابل 6.95 دولار أمريكي شهريًا للخطة الابتدائية ويوجد ميزات أخرى في الخطط الأخرى المتوفرة للمتاجر الإلكترونية.
	</li>
</ul>

<h2>
	2. <a href="https://wpengine.com/" rel="external nofollow">WP Engine</a>
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32547" href="https://academy.hsoub.com/uploads/monthly_2019_11/wp-engine.png.acb9e7d713c577d2451e9da09b15c2d2.png" rel="" data-fileext="png"><img alt="wp-engine.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32547" data-unique="g4o9u4j9z" src="https://academy.hsoub.com/uploads/monthly_2019_11/wp-engine.thumb.png.4c5c95255528e679638b1f6676ec52e3.png"></a>
</p>

<p>
	تعدّ هذه الشركة الخيار الإحترافي لمواقع الووردبريس حيث تمنحك الشركة خادم استضافة لا ينقطع مع القدرة على التعامل مع ازدياد عدد الزوار، ولا داعي للقلق بشأن الحماية لأنه محمي جيدًا من الاختراق. مع خدمة عملاء قوية وسريعة بنفس الوقت تجعل هذه الشركة مرشحًا قويًا جدًا لخدمات استضافة المواقع ومع فريق من الخبراء في الووردبريس ستشعر بالإطمئنان بشأن أي مشكلة قد تصيب موقعك. وتعد هذه الشركة خيارًا جيدًا للمدونين والمصممين الّذين يبحثون عن استضافة بسعر معقول.
</p>

<p>
	جميع الخطط المُقدمة من قبل هذه الشركة تأتي مع ضمان استرداد أموالك بالكامل خلال 60 يومًا إذا لم تعجبك الخدمة أو المنصة وتشمل بعض عروضهم ما يلي:
</p>

<ul>
	<li>
		النسخ الاحتياطي اليومي.
	</li>
	<li>
		استعادة النسخ الاحتياطي بنقرة زر واحدة.
	</li>
	<li>
		أمان عالي الجودة.
	</li>
	<li>
		تفعيل التخزين المؤقت (Caching) بشكل تلقائي.
	</li>
	<li>
		إلغاء الخدمة بشكل مجاني خلال 60 يومًا.
	</li>
</ul>

<p>
	وحاليًا تقدم الشركة خطة للشركات الناشئة بمبلغ 35.00 دولار أمريكي شهريًا وهي تشمل ما يلي:
</p>

<ul>
	<li>
		تثبيت موقع ووردبريس عدد 1.
	</li>
	<li>
		25000 زيارة للموقع شهريًا.
	</li>
	<li>
		تبادل بيانات 50 غيغا بايت.
	</li>
	<li>
		سعة التخزين تساوي 10 غيغا بايت.
	</li>
	<li>
		أكثر من 35 قالب جاهز للتثبيت.
	</li>
	<li>
		بيئة متكاملة لتطوير معتمدة على إطار العمل Genesis.
	</li>
	<li>
		دعم فني على مدار الساعة وطيلة أيام الأسبوع.
	</li>
	<li>
		قابلية نقل الموقع على إستضافة أخرى.
	</li>
	<li>
		إصدار PHP 7.3.
	</li>
	<li>
		خوادم موزعة CDN (وهي شبكة توصيل المحتوى تتألف من مجموعة من الخوادم المتزامنة والموزعة على شبكة الانترنت في أماكن جغرافية مختلفة، تحتوي على نسخ من المواقع الّتي تضيفها شركة الإستضافة، وفي حال رغب المستخدم في الوصول لمحتوى على الانترنت مدعوم بهذه الميزة فإن الشبكة ستقوم بارساله لأقرب خادم لموقعة الجغرافي يحتوى على نسخة من المحتوى المطلوب) من أجل سرعة الوصول من كافة المناطق.
	</li>
	<li>
		أداة تقيس مدى تفاعل صفحة الويب.
	</li>
</ul>

<p>
	تشمل الخطط الأخرى ما يلي:
</p>

<ul>
	<li>
		الخطة الاحترافية - تتضمن نفس ميزات الخطة الشخصية مع مزيد من موارد الخادم وتبدأ أسعارها من 99.00 دولار أمريكي شهريًا.
	</li>
	<li>
		خطة الأعمال (Business) - تأتي بنفس الميزات مع مزيد من موارد الخادم المتاحة في الخطة الاحترافية وذلك لاستضافة مواقع الأعمال الكبيرة وتبدأ أسعارها 249.00 دولار أمريكي شهريًا.
	</li>
</ul>

<h2>
	3. <a href="https://mediatemple.net/" rel="external nofollow">Media Temple</a>
</h2>

<p style="text-align: center;">
	 
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32548" href="https://academy.hsoub.com/uploads/monthly_2019_11/5dd3db1741476_MediaTemple.png.cc7256622583151b7d3cd3bbed048c56.png" rel="" data-fileext="png"><img alt="Media Temple.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32548" data-unique="tnaxsp2on" src="https://academy.hsoub.com/uploads/monthly_2019_11/5dd3db1887263_MediaTemple.thumb.png.d7f03666fd95d612e18dd30710b96961.png"></a>
</p>

<p>
	تقدم هذه الشركة تجربة استضافة من الطراز العالمي وخصوصًا للمصممين والمدونين ومهما يكن حجم موقعك فإن الشركة تستطيع التعامل معه. جميع خدمة الشركة تتناسب مع سعر الخدمة.
</p>

<p>
	يوجد العديد من الخيارات والخطط المتاحة والّتي تختلف من حيث السعر والمميزات والسعة وتوفر كل خطة قابلية الترقية للخطة الأعلى منها وذلك لكي تتناسب مع نمو موقعك وتشمل الخطط الّتي تقدمها هذه الشركة ما يلي:
</p>

<ul>
	<li>
		خطة الشبكة (Grid): وهي استضافة مشتركة.
	</li>
	<li>
		خطة DV Managed.
	</li>
	<li>
		خطة DV Developer.
	</li>
	<li>
		خطة DV Enterprise.
	</li>
	<li>
		خطة Managed WordPress.
	</li>
</ul>

<p>
	وعندما نتحدث عن المصممين والمدونين فإن أفضل خطة تناسبهم هي خطة Grid وهي تتكامل بشكل مثالي مع الووردبريس مع العديد من الفوائد للمبتدئين ومن بعض هذه الميزات:
</p>

<ul>
	<li>
		استضافة 100 موقع.
	</li>
	<li>
		عرض نطاق (Bandwidth) يصل إلى 1 تيرا بايت.
	</li>
	<li>
		إمكانية تخزين قواعد البيانات بعدد يصل 100 قاعدة.
	</li>
	<li>
		سعة تخزين تصل إلى 20 غيغا بايت.
	</li>
	<li>
		1000 حساب بريد الكتروني.
	</li>
	<li>
		تقديم الدعم الفني على مدار الساعة وطيلة أيام الأسبوع وعلى مدار السنة.
	</li>
</ul>

<p>
	كلّ هذه الميزات متوفرة بسعر 20 دولار أمريكي شهريًا. وتعدّ المنصة سهلة الاستخدام ويمكنك ترقية الخطة متى تشاء. وبعض الخطط المطروحة الأخرى مثل خطة المطورين (DV Developer) والّتي تبدأ بمبلغ 30 دولار أمريكي وخطة المدراء (DV Managed) تبدأ بمبلغ 55 دولار شهريًا.
</p>

<h2>
	4. <a href="https://www.arvixe.com/" rel="external nofollow">Arvixe</a>
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32537" href="https://academy.hsoub.com/uploads/monthly_2019_11/arvixe.png.da77669ffec9829d4608c4334252aefa.png" rel="" data-fileext="png"><img alt="arvixe.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32537" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_11/arvixe.thumb.png.a406afc4a0a6866ce75e211a35961feb.png"></a>
</p>

<p>
	هي شركة استضافة معروفة لدى أغلب المطورين والمصممين والمدونين.أفضل ميزات هذه الشركة هي الموثوقية والجودة وتوفرها بأسعار معقولة. هناك العديد من الخطط الّتي تقدمها هذه الشركة للمطورين والمصممين من ضمنها:
</p>

<ul>
	<li>
		الخطط الشخصية
	</li>
	<li>
		خطط الأعمال
	</li>
	<li>
		خطط الموزّعين
	</li>
</ul>

<p>
	توجد أيضًا خوادم VPS وخوادم مخصصة تعمل على أنظمة التشغيل Windows و Linux إذا كنت تبحث عن أداة بسيطة تستطيع تحمّل ازدياد عدد الزوار على موقعك والتأكد من أن الموقع لا يزال متوفر وفي أي وقت فاطلب خدمات هذه الشركة.
</p>

<p>
	من خلال الاستضافة المشتركة الممتازة، يمكن للمصممين والمدونين أن يرتاحوا حيال التعامل مع الزيارات لمواقعهم على الإنترنت وزيادة نمو هذه المواقع. توفر هذه الاستضافة ميزات مختلفة بما في ذلك:
</p>

<ul>
	<li>
		سعة التخزين غير محدودة.
	</li>
	<li>
		تناقل بيانات غير محدود.
	</li>
	<li>
		حسابات بريد إلكتروني غير محدودة.
	</li>
	<li>
		عدد قواعد بيانات غير محدود.
	</li>
	<li>
		اسم نطاق مجاني.
	</li>
	<li>
		أداة مجانية لبناء المواقع.
	</li>
	<li>
		متجر إلكتروني مجاني.
	</li>
	<li>
		لوحة تحكم سهلة.
	</li>
	<li>
		تقديم الدعم الفني على مدار الساعة وطيلة أيام الأسبوع وعلى مدار السنة.
	</li>
</ul>

<p>
	كل هذه الميزات والكثير غيرها ستكلفك 7 دولار أمريكي شهريًا فقط. مع ضمان عدم وجود رسوم مخفيّة، يمكنك أيضًا الحصول على ضمان استرداد الأموال خلال 60 يومًا في حالة عدم رضاك عن المنصة. الخطط الأخرى تشمل:
</p>

<ul>
	<li>
		استضافة الأعمال مقابل مبلغ 25 دولار أمريكي شهريًا.
	</li>
	<li>
		استضافة الموزّعين مقابل مبلغ 23 دولار أمريكي شهريًا.
	</li>
	<li>
		استضافة VPS مقابل مبلغ 43 دولار أمريكي شهريًا.
	</li>
</ul>

<h2>
	5. <a href="https://www.hostgator.com/" rel="external nofollow">HostGator</a>
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32542" href="https://academy.hsoub.com/uploads/monthly_2019_11/host-gator.png.f6a82c1381a9ed5e4ba40dd1e9a99016.png" rel="" data-fileext="png"><img alt="host-gator.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32542" data-unique="fhl42ha1u" src="https://academy.hsoub.com/uploads/monthly_2019_11/host-gator.thumb.png.9ec53ebb7e71c5a9e97304bf7700cd37.png"></a>
</p>

<p>
	تعدّ هذه الشركة واحدة من أفضل مواقع الاستضافة وتشتهر بدعم العملاء على مدار الساعة وطيلة أيام الأسبوع، وهو ما يفضله العديد من المصممين والمدونين. وتقدم خدماتها بأسعار معقولة جدًا، تقدم خطط استضافة تتضمن:
</p>

<ul>
	<li>
		استضافة مشتركة.
	</li>
	<li>
		استضافة الموزّعين.
	</li>
	<li>
		استضافة VPS والخطط المخصصة.
	</li>
</ul>

<p>
	تم تصميمها لتعمل بشكل مثالي مع المبتدئين والمحترفين. وتقدم ميزة نقل الاستضافة بشكل سهل للغاية وعندما تنقل من مضيف إلى شركة HostGator فإنها توفر لك المميزات التالية:
</p>

<ul>
	<li>
		نقل نطاق مجانًا.
	</li>
	<li>
		نقل الملفات مجانًا.
	</li>
	<li>
		نقل قاعدة البيانات مجانًا.
	</li>
	<li>
		نقل الموقع مجانًا.
	</li>
</ul>

<p>
	تشمل الميزات الّتي تقدمها الشركة لمستخدميها:
</p>

<ul>
	<li>
		سعة التخزين وعرض نطاق غير محدود.
	</li>
	<li>
		لوحة تحكم سهلة.
	</li>
	<li>
		تثبيت سكربت بنقرة واحدة.
	</li>
	<li>
		دعم فني على مدار الساعة وطيلة أيام الأسبوع.
	</li>
</ul>

<p>
	يمكنك الحصول على كلّ هذه الميزات بسعر 3.96 دولار شهريًا. الخطط الأخرى تتضمن:
</p>

<ul>
	<li>
		استضافة الموزّعين بمبلغ يبدأ من 19.95 دولار أمريكي شهريًا.
	</li>
	<li>
		استضافة مخصصة لمواقع الووردبريس بمبلغ يبدأ من 5.95 دولار أمريكي شهريًا.
	</li>
	<li>
		استضافة VPS بمبلغ يبدأ من 29.95 دولارًا أمريكي للشهر الأول.
	</li>
	<li>
		خوادم مخصصة تبدأ من 119 دولار أمريكي للشهر الأول. توفر هذه الشركة ضمان وقت تشغيل المخدم بنسبة 99.9 ٪ وضمان استعادة الأموال لمدة 45 يومًا أيضًا.
	</li>
</ul>

<h2>
	6. <a href="http://godaddy.com" rel="external nofollow">GoDaddy</a>
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32541" href="https://academy.hsoub.com/uploads/monthly_2019_11/go-daddy.png.737495711be03b229f1ecc49003683ac.png" rel="" data-fileext="png"><img alt="go-daddy.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32541" data-unique="olgjw9vue" src="https://academy.hsoub.com/uploads/monthly_2019_11/go-daddy.thumb.png.f009319ac05e37d4b93c0d04902cafb0.png"></a>
</p>

<p>
	هي واحدة من أكثر شركات شهرةً في مجال استضافة المواقع، كل مصمم ومطور يعرف ذلك جيدًا، وهي الخيار الأول لدى المصممين. تقدم الخدمة ميزات كثيرة للمبتدئين والخبراء.
</p>

<p>
	تعرف الشركة مدى أهمية موقعك الويب بالنسبة لك، لذا فإنها تعتني به جيدًا وتهتم بكلّ شيء من مدير الملفات ومدير النطاق وإدارة قواعد البيانات والّذي يعدّ رائعًا وسهل الاستخدام للغاية ويمكنك الحصول على الدعم الفني والمساعدة الّتي تحتاجها من خلال فريق الدعم الّذي يعمل على مدار الساعة وطيلة أيام الأسبوع ويمكنك التواصل معهم عبر الهاتف أو البريد الإلكتروني.
</p>

<p>
	ومع ذلك، فإن إدارة ملايين النطاقات تجعل الدعم أبطأ قليلًا ولكن فريق الدعم سريع الاستجابة دائمًا ويتم حل الشكاوى عادةً خلال 24 ساعة فقط. وتشمل الميزات الّتي تقدمها هذه الشركة لكل خطة:
</p>

<ul>
	<li>
		نطاق مجاني بشرط شراء الخطة السنوية.
	</li>
	<li>
		بريد الكتروني مجاني.
	</li>
	<li>
		التثبيت بنقرة واحدة لأكثر من 125 قالب مجاني.
	</li>
	<li>
		عرض نطاق غير محدود.
	</li>
	<li>
		سعة تخزين قواعد البيانات 1 غيغا.
	</li>
	<li>
		لوحة تحكم سهلة الاستخدام ومرنة.
	</li>
	<li>
		حماية ومراقبة على مدار الساعة وطيلة أيام الأسبوع لهجمات حجب الخدمة DDoS والحماية منها.
	</li>
</ul>

<p>
	على الرغم من توفر هذه الميزات بالإضافة للكثير غيرها في كل خطة، إلا أن الأسعار تختلف من حيث التخزين وعدد المواقع المستضافة.
</p>

<ul>
	<li>
		يمكنك استضافة موقع ويب فردي بمبلغ 5.99 دولار أمريكي للشهر الأول مع سعة تخزين 100 غيغا بايت
	</li>
	<li>
		لاستضافة عدد مواقع غير محدود وبسعة تخزين غير محدودة يجب عليك دفع 7.99 دولار أمريكي للشهر الأول.
	</li>
	<li>
		الخطة الأخرى تشمل استضافة مدونة أو موقع ووردبريس يبدأ من 6.99 دولار أمريكي شهريًا.
	</li>
</ul>

<h2>
	7. <a href="https://www.eleven2.com/" rel="external nofollow">Eleven2</a>
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32539" href="https://academy.hsoub.com/uploads/monthly_2019_11/eleven2.png.0da248c8c16af4318ec6331bb99a702a.png" rel="" data-fileext="png"><img alt="eleven2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32539" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_11/eleven2.thumb.png.906e3cd1b4ce1c98a7b62a26ec64ae38.png"></a>
</p>

<p>
	تعدّ هذه الشركة من الشركات الّتي يُنصح بها بسبب جودة الخدمة والدعم والتجهيزات والميزات ووقت التشغيل.وأغلب المصممين والمدونين يفضلون الاستضافة المشتركة بسبب أسعارها المعقولة جدًا.
</p>

<p>
	وتوفر أداة مجانية لمساعدتك في إنشاء موقع متميز ومتكامل في دقائق معدودة، ويمكنك إدارة موقعك بسهولة باستخدام أدوات وميزات لوحة التحكم القياسية cPanel. مع دعم فني للعملاء، فهي متوفرة على مدار الساعة وطيلة أيام الأسبوع لمساعدتك.
</p>

<p>
	كما أنها توفر ميزة فريدة للدردشة المباشرة الّتي تمكنك من الدردشة مع الخبراء حول مسائل استضافة الموقع الخاص بك وضمان وقت تشغيل المخدم بنسبة 99.9 ٪. إنها بالفعل شركة استضافة مُتقنة. وتقدم هذه الشركة ميزات وفقًا لخططها المختلفة الّتي تكون إما شهرية أو سنوية. تتوفر خطة S-200 القياسية مقابل 7 دولارات أمريكية شهريًا وتشمل:
</p>

<ul>
	<li>
		مساحة تخزين 250 غيغا بايت.
	</li>
	<li>
		عرض نطاق 20 تيرا بايت شهريًا.
	</li>
	<li>
		مجالات (Domains) غير محدودة.
	</li>
	<li>
		ضبط الإعدادات بشكل فوري.
	</li>
	<li>
		عدد قواعد بيانات غير محدود.
	</li>
	<li>
		امكانية النسخ الاحتياطي.
	</li>
	<li>
		ضمان استرداد الأموال خلال 60 يومًا.
	</li>
</ul>

<p>
	تقدم هذه الشركة العديد من الخطط الأخرى الّتي ستناسب احتياجاتك حتمًا. تشمل الخطط الأخرى:
</p>

<ul>
	<li>
		خطة S-300 مقابل 14 دولار شهريًا مع سعة تخزين 500 غيغا بايت وعرض النطاق 40 تيرا بايت شهريًا.
	</li>
	<li>
		خطة R-100 للبائعين مقابل 13.97 دولار شهريًا مع سعة تخزين 100 غيغا بايت وعرض النطاق 1 تيرا بايت شهريًا.
	</li>
	<li>
		خطة R-200 للبائعين مقابل 24.47 دولار شهريًا مع سعة تخزين 200 غيغا بايت وعرض النطاق 2 تيرا بايت شهريًا.
	</li>
	<li>
		خطة R-300 للبائعين مقابل 34.97 دولار شهريًا مع سعة تخزين 300 غيغا بايت وعرض النطاق 3 تيرا بايت شهريًا.
	</li>
</ul>

<p>
	تقدم أيضًا الشركة خطة استضافة سحابية والّتي تعدّ من الخطط الرخيصة نسبيًا بالموازنة مع خدمات أمازون السحابية أو خدمات مايكروسوفت. وتقدم الاستضافة السحابية الخدمات التالية:
</p>

<ul>
	<li>
		منصة سريعة جدًا باستخدام حاويات لينكس مع أقراص صلبة من نوع SSD.
	</li>
	<li>
		نسخ احتياطي يومي لضمان عدم خسارة أي جزء من بياناتك.
	</li>
	<li>
		فريق من المهندسين يعملون على صيانة الخدمة السحابية لضمان عدم توقفها.
	</li>
	<li>
		عدد من المراكز السحابية موزعة على مختلف الدول.
	</li>
	<li>
		دعم فني سريع جدًا مع سرعة رد تبلغ 10 دقائق فقط.
	</li>
</ul>

<p>
	تقدم كل هذه الخدمات مقابل 25 دولار شهريًا مع سعة تخزين 125 غيغا بايت وعرض النطاق 10 تيرا بايت شهريًا.
</p>

<h2>
	8. <a href="https://www.fatcow.com/" rel="external nofollow">Fatcow</a>
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32540" href="https://academy.hsoub.com/uploads/monthly_2019_11/fat-cow.png.d2546d83054c05b6a200f1478250d12f.png" rel="" data-fileext="png"><img alt="fat-cow.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32540" data-unique="j607uw4j5" src="https://academy.hsoub.com/uploads/monthly_2019_11/fat-cow.thumb.png.ac525179894298a94e024308ac6640db.png"></a>
</p>

<p>
	تعدّ خيارًا جيدًا للمصممين والمدونين الّذين بحوزتهم رأس مال قليل أو الّذين يطلقون الموقع الإلكتروني لأغراض شخصية.
</p>

<p>
	وهي تحافظ على خدمات وميزات موقعك يعمل طول الوقت وبلا انقطاع، يجد الناس أنها موثوقة وودية للغاية. تتأكد الشركة من حصول كلّ عميل على موقع متاح دائما عبر الشبكة وغير متقطع بمساعدة النسخ الاحتياطي للخادم يوميًا.
</p>

<p>
	خدمة العملاء موثوقة جدًا ومتاحة على مدار الساعة وطيلة أيام الأسبوع ويمكنك أيضًا التواصل معهم عبر البريد الإلكتروني. وتقدم الشركة برامج تعليمية ومكتبة لأكثر الأسئلة شيوعًا والأجوبة عليها. وتشمل حلول الاستضافة الّتي تقدمها ما يلي:
</p>

<ul>
	<li>
		خطة Fatcow.
	</li>
	<li>
		استضافة ووردبريس.
	</li>
	<li>
		حجز دومين.
	</li>
	<li>
		استضافة VPS.
	</li>
	<li>
		استضافة مخصصة.
	</li>
	<li>
		تسجيل نطاقات.
	</li>
	<li>
		مجموعة أيقونات Farm-Fresh.
	</li>
</ul>

<p>
	تشمل الميزات الّتي تقدمها:
</p>

<ul>
	<li>
		سعة تخزين غير محدودة.
	</li>
	<li>
		عرض النطاق غير محدود.
	</li>
	<li>
		ضمان التشغيل والمتابعة بنسبة 90%.
	</li>
	<li>
		قاعدة بيانات MySQL غير محدودة.
	</li>
	<li>
		استضافة نطاقات بشكل غير محدود.
	</li>
	<li>
		صندوق بريد نوع POP غير محدود.
	</li>
	<li>
		ضمان استرداد المال خلال 30 يوم.
	</li>
	<li>
		استقبال 100 دولار أمريكي كهدية من شركة مايكروسوفت و 100 دولار أمريكي من شركة غوغل عند إنفاقك 25 دولار أمريكي في حسابك الجديد على إعلانات غوغل أو مايكروسوفت.
	</li>
</ul>

<p>
	كل هذه الميزات متوفرة بسعر 4.08 دولار أمريكي شهريًا وأما خطة استضافة مواقع الووردبريس فهي بأقل سعر على الإطلاق وهو 3.75 دولار أمريكي شهريًا. وتشمل الخطط الأخرى:
</p>

<ul>
	<li>
		استضافة خوادم VPS الأساسية وتبدأ من 19.99 دولار أمريكي شهريًا وتأتي مع معالج واحد وذاكرة وصول عشوائي بسعة 1 غيغا بايت وسعة تخزين تبلغ 40 غيغا بايت وعرض النطاق 1 تيرا بايت.
	</li>
	<li>
		استضافة خوادم VPS للأعمال وتبدأ من 47.99 دولار أمريكي شهريًا وتأتي مع معالجين وذاكرة وصول عشوائي بسعة 4 غيغا بايت وسعة تخزين تبلغ 90 غيغا بايت وعرض النطاق 3 تيرا بايت.
	</li>
	<li>
		استضافة خوادم VPS المثالية وتبدأ من 79.99 دولار أمريكي شهريًا وتأتي مع 4 معالجات وذاكرة وصول عشوائي بسعة 8 غيغا بايت وسعة تخزين تبلغ 120 غيغا بايت وعرض النطاق 4 تيرا بايت.
	</li>
	<li>
		استضافة مخصصة تبدأ من 119.99 دولار أمريكي شهريًا وتأتي مع معالجين وذاكرة وصول عشوائي بسعة 4 غيغا بايت وسعة تخزين تبلغ 500 غيغا بايت وعرض النطاق 5 تيرا بايت.
	</li>
</ul>

<h2>
	9. <a href="https://www.inmotionhosting.com/" rel="external nofollow">InMotion Hosting</a>
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32543" href="https://academy.hsoub.com/uploads/monthly_2019_11/inmotion-hosting.png.3d89a42f6c4ba0ec819eb02d5b9f98b8.png" rel="" data-fileext="png"><img alt="inmotion-hosting.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32543" data-unique="7b7dcm9vn" src="https://academy.hsoub.com/uploads/monthly_2019_11/inmotion-hosting.thumb.png.4fd9dfad03b9c2ac40ef6be3435d713a.png"></a>
</p>

<p>
	تعدّ هذه الشركة ذائعة الصيت بين الشركات المتوسطة والكبيرة، سواءً أكان موقع أو مدونة تقدم لك الشركة الخدمة الّتي تريدها وتأتي شهرة هذه الشركة من فريق الدعم الفني الحائز على عدة جوائز ويصل وقت تشغيل المخدم إلى 99.9٪.
</p>

<p>
	تتعامل الشركة مع احتياجات العمل المتنامية، من الأعمال التجارية الصغيرة إلى مستوى الشركات. تضمن الشركة سرعة جيدة وخدمة عالية مع مراكز بيانات متعددة. توفر ميزة منطقة السرعة القصوى (Max Speed Zone) لخطط VPS ورجال الأعمال والّتي تمكن المستخدمين القريبين من مراكز البيانات في الشركة الاستمتاع بالتصفح أسرع بست مرات من أي شخص أخر.
</p>

<p>
	تتأكد الشركة من حصولك اتاحية موقعك بشكل دائم عبر الإنترنت وبدون انقطاع ومع توفر دعم الفني العملاء على مدار الساعة وطيلة أيام الأسبوع. تم تحسين استضافة مواقع الووردبريس بشكل كبير للمدونين وتقدم لك الشركة بعض الميزات الرائعة لجعل مدونتك تنمو بسرعة. تتضمن خدمات الاستضافة:
</p>

<ul>
	<li>
		استضافة رجال الأعمال.
	</li>
	<li>
		استضافة رخيصة.
	</li>
	<li>
		استضافة VPS.
	</li>
	<li>
		خوادم مخصصة.
	</li>
	<li>
		استضافة الموزّعين.
	</li>
</ul>

<p>
	تشمل الميزات الّتي توفرها الشركة:
</p>

<ul>
	<li>
		سعة التخزين غير محدودة
	</li>
	<li>
		عرض النطاق غير محدود.
	</li>
	<li>
		باقة مواقع مجانية بأكثر من 400 مواقع مع ميّزة التثبيت بنقرة واحدة.
	</li>
	<li>
		أقراص التخزين الصلبة من نوع SSD.
	</li>
	<li>
		تقدم لوحة تحكم cPanel &amp; WHM بشكل مجاني.
	</li>
	<li>
		إعلانات مجانية بقيمة 150 دولار أمريكي.
	</li>
	<li>
		اسم نطاق مجاني.
	</li>
	<li>
		ضمان استرداد المال خلال 90 يوم (تشمل خطة استضافة الموزّعين والاستضافة المخصصة والاستضافة المشتركة).
	</li>
</ul>

<p>
	هنالك الكثير من الميزات الأخرى المضمنة في الخطة وهي متاحة مقابل 6.39 دولار أمريكي شهريًا. وتشمل الخطط الأخرى
</p>

<ul>
	<li>
		استضافة VPS تبدأ من 29.19 دولار أمريكي شهريًا.
	</li>
	<li>
		استضافة مخصصة تبدأ من 105.69 دولار أمريكي شهريًا.
	</li>
	<li>
		استضافة الموزّعين تبدأ من 15.39 دولار أمريكي شهريًا.
	</li>
</ul>

<h2>
	10. <a href="https://www.tmdhosting.com/" rel="external nofollow">TMDHosting</a>
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="32545" href="https://academy.hsoub.com/uploads/monthly_2019_11/tmd-hosting.png.98d12d17ffd7baacb600ba2705331716.png" rel="" data-fileext="png"><img alt="tmd-hosting.png" class="ipsImage ipsImage_thumbnailed" data-fileid="32545" data-unique="7l5psmgp0" src="https://academy.hsoub.com/uploads/monthly_2019_11/tmd-hosting.thumb.png.5a3d3acff0d35efb993ba1e416c05f66.png"></a>
</p>

<p>
	عندما تقوم بتشغيل موقع أو مدونة مشهورة، فإنك ستحتاج إلى المعرفة بالعديد من الأدوات والمعلومات التسويقية. إن هذه الشركة ستسهل الأمر عليك وستقوم بتشغيل موقع الويب الخاص بك أو مدونة.
</p>

<p>
	وتوفر لك وقت تشغيل مضمون بنسبة 99.9٪ في جميع خطط الاستضافة، وتقدم لك أفضل تجربة استضافة وتضمن لك استرداد أموالك لمدة 30 يومًا في حالة عدم رضاك عن المنصة. توفر الشركة أيضًا استضافة للتطبيقات المفتوحة المصدر بما في ذلك استضافة Joomla، واستضافة Magneto …الخ. الميزة الّتي تتفوق بها هذه الشركة على منافسيها هي دعم العملاء السريع على مدار الساعة وطيلة أيام الأسبوع، وسيتم حل استفساراتك في غضون 15 دقيقة. كما تقدم مساعدة على أعلى مستوى مع أحدث التقنيات المتاحة.
</p>

<p>
	بالنسبة للمبتدئين، تقدم الشركة برامج تعليمية تساعدك خطوة بخطوة في أي مسألة تتعلق باستضافة المواقع. وتقدم العروض الترويجية بشكل يومي والّتي تكون تحديثات على خطط الاستضافة الحالية وتقدمها بأقل الأسعار للعملاء. خدمات الاستضافة الّتي تقدمها الشركة تشمل:
</p>

<ul>
	<li>
		استضافة المواقع.
	</li>
	<li>
		استضافة الموزّعين
	</li>
	<li>
		استضافة VPS
	</li>
	<li>
		استضافة الخدمات السحابية (Cloud).
	</li>
	<li>
		خوادم مخصصة
	</li>
</ul>

<p>
	تشمل الميزات المختلفة الّتي توفرها استضافة الشركة
</p>

<ul>
	<li>
		اسم نطاق مجاني للأبد.
	</li>
	<li>
		خوادم CloudLinux-powered.
	</li>
	<li>
		سعة التخزين وعدد زيارات غير محدودة.
	</li>
	<li>
		إصدارات PHP متعددة.
	</li>
	<li>
		قواعد بيانات MySQL بشكل غير محدود.
	</li>
	<li>
		ضمان استعادة المال خلال 60 يوم.
	</li>
</ul>

<p>
	وهنالك عدة ميزات أخرى مع الحزمة. تتوفر خطة استضافة الويب بمبلغ 2.95 دولار أمريكي شهريًا. والخطط أخرى تشمل:
</p>

<ul>
	<li>
		استضافة الموزّعين تبدأ من 19.95 دولار أمريكي شهريًا مع ضمان استعادة المال خلال 30 يوم.
	</li>
	<li>
		استضافة VPS تبدأ من 19.97 دولار أمريكي شهريًا.
	</li>
	<li>
		استضافة سحابية تبدأ من 5.95 دولار أمريكي شهريًا.
	</li>
	<li>
		خوادم مخصصة تبدأ من 229 دولار أمريكي شهريًا.
	</li>
</ul>

<h2>
	ختامًا
</h2>

<p>
	إن كل شركات الاستضافة السابقة موصّى بها للمصممين والمدونين، ومع ذلك أنصحك بتصفح كل خطة عن كثب لتقرر أي العروض هي الأفضل بالنسبة لك. ففي بعض الأحيان يكون الدعم الفني للعملاء هو الفارق الوحيد بين الشركات الاستضافة العادية والشركات المتميزة.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://1stwebdesigner.com/unbiased-review-top-web-hosting-services/" rel="external nofollow">Unbiased Review of the 10 Top Web Hosting Services</a>
</p>
]]></description><guid isPermaLink="false">452</guid><pubDate>Wed, 11 Dec 2019 13:07:00 +0000</pubDate></item><item><title>&#x645;&#x62D;&#x627;&#x643;&#x627;&#x629; &#x639;&#x642;&#x644;&#x64A;&#x629; DevOps</title><link>https://academy.hsoub.com/devops/general/%D9%85%D8%AD%D8%A7%D9%83%D8%A7%D8%A9-%D8%B9%D9%82%D9%84%D9%8A%D8%A9-devops-r450/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2019_10/5db474b34ba48_--DevOps.jpg.78e18f45650c678baabe9ac8d127b3f4.jpg" /></p>

<p>
	إن معظم المؤسسات في هذه الأيام تنتقل من نموذج أعمال المُحسن للموارد والذي يستند إلى النفقات الرأسمالية (CAPEX) إلى نموذج أعمال المُحسن للسوق والذي يستند إلى النفقات التشغيلية (OPEX). ولكن ما الذي يقود هذا التحول؟ في الحقيقة أن الهدف الأساسي من هذا التحول هو تقليل الوقت اللازم للتسوق وإسعاد الزبائن باستمرار عن طريق تقديم قيمة (Value) لهم وتُعرف القيمة بأنها منتج أو خدمة معينة والتي يكون الزبون مستعدًا للدفع مقابلها.
</p>

<p>
	مرحبا بك في التحول الرقمي. هل أنت مستعد لتبني عقلية DevOps في شركتك؟
</p>

<p>
	لقد أشار مدير DevOps السيد Donovan Brown إلى أن DevOps
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		هي إتحاد الأشخاص والعمليات والمنتجات لتمكين التسليم المستمر لتقديم القيمة للعملاء.
	</p>
</blockquote>

<p>
	إن DevOps هي رحلة تعلم وتطوير بشكل مستمر، مع وجهة لن تصل إليها أبدًا. ولهذا فإن جميع الصور الواردة في هذا المقال على شكل رمز اللانهاية.
</p>

<p>
	ولكوني شخصًا ذو عقلية مرئية (visual-minded)، فقد أنشأت عرضًا تقديميًا يحتوي على صور من أجل مخيم تدريب DevOps العالمي <a href="https://globaldevopsbootcamp.com/" rel="external nofollow">GDBC</a> (Global DevOps Bootcamp) وهذا الحدث السنوي الذي تنسقه المجتمعات المحلية في جميع أنحاء العالم وذلك لخلق بيئة استكشافية وتعاونية لاستعراض مبادئ التحول الرقمي ورؤى DevOps.
</p>

<p>
	دعنا نستكشف سريعًا أربعة من الصور المرجعية (والتي تدعى أيضًا بالصور المرئية والإنفوجرافيك). واذا أردت التعمق أكثر يمكنك مراجعة كتاب <a href="https://www.amazon.com/DevOps-Handbook-World-Class-Reliability-Organizations-ebook/dp/B01M9ASFQ3" rel="external nofollow">The DevOps Handbook</a>، لكُتّابه Gene Kim، و Jez Humble، وPatrick Debois، وJohn Willis.
</p>

<h2>
	الممارسات
</h2>

<p>
	بناءً على <a href="https://aka.ms/devopsassessment" rel="external nofollow">استطلاع</a> قامت به شركة مايكروسوفت على مستوى العالم لتحديد أهم المجالات التي يجب التركيز عليها في DevOps والمجالات التي تحتاج إلى تحسين، والذي جاء فيه أن جميع المشاركين الذين يستخدمون DevOps يركزون على نفس الممارسات في استخدام DevOps ونفس التقنيات لتحقيق DevOps و سوف نستعرضها في الصورتين التاليتين. في الصورة الأولى نلاحظ الممارسات الخمس الأولى الرئيسية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/devops-mindset-essentials-practices.jpg.1da7bb5105879fa21f3d4bca89828250.jpg" data-fileid="32196" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32196" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/devops-mindset-essentials-practices.thumb.jpg.151cae175a5abd7969f73379356a9c21.jpg" alt="devops-mindset-essentials-practices.jpg"></a>
</p>

<p>
	يشجع كبار المختصين في الأداء (Performers) على تعزيز عقلية استسراع النمو، والمكافأة على الابتكار، والتعاون، والتجريب، والتعلم، والتعاطف مع المستخدمين. والسعي لعملية تسليم تطبيقات سريعة الاستجابة، والجدولة المرنة، والتجارب التكرارية. ورصد المشاكل والتعرف عليها وتخفيفها، والقضاء باستمرار على الاختناقات التي تهدر الأداء، وقياس مؤشرات الأداء المهمة وذلك لتحسين المخرجات، مثل معدل فشل التغيير المنخفض (CFR Change Failure Rate)، والوقت الأدنى للاستعادة من الفشل ( Minimal Time To Recover MTTR)، ويجب دومًا أن نحرص على معالجة المشكلات من جذورها. وأخيرًا، لنأتي إلى التكنولوجيا، والتي هي أداة تمكين ستكون محور الصورة التالية.
</p>

<p>
	نلاحظ في هذه الصورة التقنيات التي تركز عليها DevOps:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/devops-mindset-essentials-technology.jpg.9264026b1f70c86bc11d8fa7a0b862d5.jpg" data-fileid="32197" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32197" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/devops-mindset-essentials-technology.thumb.jpg.f32093d010d51b305e5fb15fedbdab19.jpg" alt="devops-mindset-essentials-technology.jpg"></a>
</p>

<p>
	يقوم نظام التحكم في النُسخ (Version Control System) بإدارة إصدارات التطبيق واعداداته، والبنية الأساسية، وغيرها من الشيفرات البرمجية للتطبيق. وهو يتيح التعاون بين الفِرق ومراقبة الأنشطة مثل عمليات النشر (Deployments). يستخدم كبار المختصين في الأداء نسخ فرعية من التطبيق وذلك لعزل التغييرات قصيرة الأجل ومعاينتها قبل أن يتم دمجها في النسخة الأساسية (Master)، ويستمر مراجعة وتدقيق طلبات الدمج باستمرار ويتم إصدار النُسخ على أساس ذلك.
</p>

<p>
	يجب أن يُنظر للاختبار على أنه نشاط مستمر، وأن يُدمج في مخطط سير العمل للمطور وذلك من أجل تحقيق التكامل المستمر مع التغيّرات (Continuous Integration CI) والتسليم المستمر للتطبيق (Continuous Delivery CD).
</p>

<p>
	يتيح لك التخزين السحابي توفير البنية التحتية اللازمة والفعّالة وذلك للتحرك بأقصى سرعة ممكنة عند الضرورة وذلك تجنبًا للوقت المبذول في بناء البنية التحتية المناسبة للشركة.
</p>

<p>
	وأخيرًا، تمكنك المراقبة من تكوين فرضية، أو التحقق من صحة التجارب، أو دحضها، واكتشاف المشاكل بشكل استباقي قبل حدوثها وفهم حالة التطبيق.
</p>

<p>
	يسرد الشريط الأسود الموجود على يمين الصورة المنتجات التي يجب أخذها في عين الاعتبار عند البحث عن تقنية للتطوير والإنتاج والهندسة المشتركة وبيئات أخرى. حاول أن تقيّم المنتجات المدرجة وحدّث هذه القائمة بانتظام لأن هذا الجزء متغير وإلزامي بنفس الوقت من أجل اختصار الوقت.
</p>

<h2>
	العادات
</h2>

<p>
	بناءً على <a href="https://www.slideshare.net/WillyPeterSchaub/devconf-moving-65000-microsofties-to-devops-with-visual-studio-team-services" rel="external nofollow">قصة</a> تحوّل 65,000 مهندس إلى DevOps بمساعدة فريق خدمات Visual Studio، تركز هذه الصورة على العادات الخمس الرئيسية التي تعلموها أثناء تحولهم إلى DevOps. يعدّ التركيز على العملاء، والاستقلال الذاتي للفِرق، وتنسيق الشركة، والتركيز على عادات Shift Left، هي عوامل التطوير لمنهجية التصميم المرن (Agile)، كما أن عقلية الإنتاج أولًا والبنية التحتية مثل الموارد المرنة جميعهم خواص تتفرد بها عقلية DevOps.
</p>

<p>
	يعدّ التركيز على العملاء جزءًا من سعينا لإمتاعهم وهاجسنا بتقديم خدمة قيّمة لهم. ويجب أن تُصغ إلى المستخدمين بشكل نشط أي أن تسمع لمشاكلهم واقتراحاتهم، وتمكين الميزات وتعطيلها تدريجيًا، وإجراء التجارب المستمرة، وقياس مؤشرات الأداء الرئيسية. واستخدام المُراجعات المتوفرة لتحسين الأداء أو المنتج ومحاولة الإستفادة بأكبر قدر منها وزيادة التأثير على العملاء إلى أقصى حد.
</p>

<p>
	تُعد عادات Shift left طريقةً لاختبار البرمجيات والنظام، ويتم إجراء الاختبار في وقت مُبكر من دورة الحياة (أي تم نقله إلى اليسار في الجدول الزمني للمشروع). ويشجع shift left على المراجعات، والتحقق من الصحة، والموافقات على كل من الاختبار والأمان في أقرب وقت ممكن في دورة توصيل الميزات وذلك لزيادة الجودة وتمكين أسلوب الفشل السريع (أحد أهداف هذه الفلسفة هي تقليل الخسائر، وذلك عندما يكشف الاختبار وجود شيء ما لا يعمل فالأفضل دومًا تجربة شيء آخر بسرعة. أي تجاوز الفشل بسرعة). عندما يتجاوز الأعطال الفنية الحد المحدد مسبقًا (مثلا خمسة أخطاء لكل مهندس)، يجب تشجيع الفِرق التي تعمل على المميزات على تعليق العمل حتى يتم جميع الأخطاء الموجودة.
</p>

<p>
	إن استقلالية الفريق وتنسيق الشركة يهتمان بما تقوم الشركة بإنشائه وكيفية إنشائه وسبب إنشائه. لذا ستحتاج إلى وتيرة عمل سريعة ونشاط دائم داخل الشركة لتمكين فِرق القيادة وفِرق المميزات من التعاون بشفافية وفعالية. تمتلك أكثر فرق المميزات فعالية خاصية تحويل الفكرة إلى نتائج، مع الاستقلال الذاتي للقرارات حول كيفية تطويرها ودعمها لخصائص ومميزات هذه الفكرة.
</p>

<p>
	إن عقلية الإنتاج أولًا لا تُميّز كيفية التعامل مع المميزات والأخطاء خلال التطوير والاختبار والدعم الفني. وإنما كل شيء يجب أن يكون مُؤتمت، ومُحرر، ومُحسن في الإنتاج. ويتم الاعتماد على النشر الدائري والحلقات (<a href="https://opensource.com/article/18/2/feature-flags-ring-deployment-model" rel="external nofollow">ring-based deployment and rings</a>) والتي تنص على عرض التغييرات لمستخدمين محددين ومراقبتها والتحقق من صحتها قبل عرضها على جميع المستخدمين وذلك للحد من الأخطاء التي تنتج أثناء إحداث تغييرات في المميزات المطروحة، ومعالجة جميع المشكلات من جذورها، وتذكر أن تكون واضحًا عند حدوث مشكلة معينة وتوضيحها وما هو السبب الرئيسي لظهورها والحل الذي استخدمته لتجاوزها (لان المستخدم سيكون أكثر تفهما في حال كان لديه معرفة بسبب حدوث المشكلة والآلية المتبعة في حلها).
</p>

<p>
	تصف البنية التحتية مثل الموارد المرنة كيفية تكيّف الحلول المطروحة مع الخدمات السحابية والحاويات (container) والخدمات المصغّرة (Microservices). يجب تبني تحوّل عملي يكون منطقيًا لشركتك وأهدافك ومنتجاتك وثقافتك. كما هو الحال مع العادات السابقة، من المهم أن نُفضّل البنية الاستقلالية على بنية الوصفية وألا نُغير كل شيء في وقت واحد.
</p>

<h2>
	الشروع في العمل
</h2>

<p>
	يجمع التصور الأخير بين كل ما سبق ويقترح خمس خطوات للبدء مع Devops.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/devops-mindset-essentials-getting-started.jpg.791740b10b73452b4c31c3f4ca61e592.jpg" data-fileid="32195" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32195" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/devops-mindset-essentials-getting-started.thumb.jpg.ac8e7496f23c4f2a42f6800c7c3107d7.jpg" alt="devops-mindset-essentials-getting-started.jpg"></a>
</p>

<p>
	أفضّل أن أبدأ بالتقييم لقدرته في تحديد المناطق الرئيسية التي يمكن تحسينها.
</p>

<p>
	توفر التقييمات معيارًا لعقلية وأداء DevOps مقارنة بباقي المنهجيات المتبعة في قطاع الصناعات الأخرى. من المهم أن نفهم أي جزء من عملك يسير على ما يرام وأي جزء يحتاج لأن تستثمر فيه لنقله إلى المستوى التالي. إن كُلًا من التقييمات التابعة لشركة <a href="https://www.devops-survey.com/" rel="external nofollow">DORA</a> و تقييمات شركة <a href="https://aka.ms/devopsassessment" rel="external nofollow">مايكروسوفت</a> بالنسبة Devops هي تقييمات رائعة للبداية. بالإضافة إلى ذلك، إجمع أدوات القياس لاستخدامها كقاعدة لقياس التقدم - على سبيل المثال، معدل تكرار النشر (Deployment Frequency) والوقت اللازم لتطبيق التغييرات (lead time for changes)، ومتوسط وقت الإصلاح (mean time to repair)، ومعدل فشل التغيير (change failure rate).
</p>

<p>
	إن التحدي الأكبر الذي سوف يواجهك هو الناس وثقافاتهم. يحتاج كل شخص لأن يعتنق فكرة التحول الرقمي، وأن يفهم كيف سيتأثر في هذا التغيير، وأن يُشجع على رفع مستوى الشفافية, ويجب عليه المشاركة بشكل فعّال وأن يتحمل المسؤولية الكاملة للقيمة المضافة للخدمة المتوقعة منهم. ويشمل هذا التحدي أيضًا مجلس قيادة الشركة والذي يحتاج لأن يقدم الدعم والإلهام والتمكين وتوجيه الموظفين لرؤية واضحة. وبناء عليه ستقوم إما بإنجاح هذا التحول كفريق واحد أو بإفشاله.
</p>

<p>
	وبدون وجود أشخاص ملتزمين وثقافة تجريبية، فإن بقية رحلة التحول إلى DevOps ستفشل.
</p>

<p>
	إن العملية (Process) هي نظامك الهندسي، والذي يقوم بتمكين الفرق من إصلاح المشاكل بشكل مباشر، واستخدام الإدارة والتطوير الرشيق (lean management and development)، وتقديم خدمة قيّمة باستمرار. ويوفر نظام الهندسة المشترك الثبات، ويخول فِرق المميزات، ويتيح ويشجع الجميع على دعم بعضهم بعضًا والمساهمة فيه. يجب أن تتضمن أهم أهداف عملياتك التركيز على الجودة، واحتضان البنيات خفيفة الترابط (loosely coupled architectures) لتمكين التطوير، والإدارة الخفيفة، والأتمتة، والإصدارات المتعددة في اليوم، والاحتفال بالنجاح كفريق وكشركة.
</p>

<p>
	المنتجات هي أسهل وصلة في السلسلة. فهي تمكن الجميع من التركيز على ما هو مهم ألا وهو توفير قيمة (Value) للعملاء. تعدّ القيمة من أهم الأشياء الّتي تُرضي المستخدمين. تتضمن مؤشرات الأداء الرئيسية مثل تكرار النشر، والوقت اللازم لتطبيق التغييرات، ومعدل فشل التغيير، ووقت الاسترداد من الخطأ. سواء كنت تتعامل مع كل هذه الخطوات دفعة واحدة أو خطوة بخطوة أو حتى لو أنك ابتكرت خطة للانتقال وذلك بالاستعانة بكل الخطوات التي ناقشناها. تذكر دومًا أن تكون واقعيًا.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		يمكن تحقيق التحسين للجميع إذا قدمت القيادة دعمًا ثابتًا، وأن يلتزم أعضاء الفريق بالعمل. - Accelerate: The Science of Lean Software and DevOps
	</p>
</blockquote>

<p>
	أيّ من صور أحببتها؟ أيّ منها أحسست بأنها لا تضيف أي قيمة؟ وما الجزء الذي تعتقد بأنه مفقود؟ دعونا نتعاون لكشف الغموض عن DevOps ومساعدتك وموظفينك على التألق. يحتاج المستخدمون إلى فهم أنهم ليسوا وحدهم وأن يعرفوا بأنه يمكنهم الاعتماد على الممارسات المُجربة والمُثبت فعاليتها وعلى النهج التعليمي الواقعي.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/18/8/visualizing-devops-essentials-mindset" rel="external nofollow">Visualizing a DevOps mindset</a> لصاحبه Willy-Peter Schaub
</p>
]]></description><guid isPermaLink="false">450</guid><pubDate>Sat, 26 Oct 2019 16:31:11 +0000</pubDate></item><item><title>&#x62D;&#x645;&#x627;&#x64A;&#x629; &#x627;&#x644;&#x62E;&#x62F;&#x645;&#x627;&#x62A; &#x627;&#x644;&#x645;&#x635;&#x63A;&#x651;&#x631;&#x629; &#x639;&#x646; &#x637;&#x631;&#x64A;&#x642; DevOps</title><link>https://academy.hsoub.com/devops/general/%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%A7%D9%84%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B5%D8%BA%D9%91%D8%B1%D8%A9-%D8%B9%D9%86-%D8%B7%D8%B1%D9%8A%D9%82-devops-r449/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2019_10/5db467e13b02e_-----DevOps.jpg.47fcde311fa1714b9a64c39ee3cc19be.jpg" /></p>

<p>
	لقد أحدثت الحاويات (Containers) والخدمات المصغّرة (Microservices) ثورة في تطوير التطبيقات وإدارة البنية التحتية لها، وقدمت لنا تحديات أمنية جديدة دون أن تعالج التحديات السابقة. إذن ما هي أبرز التحديات الأمنية الجديدة؟ وما الذي يجب علينا فعله تجاهها؟
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/5db467eec465d_-----DevOps.jpg.e429ca9ba29d1b9f11200a516c49940d.jpg" data-fileid="32194" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32194" data-unique="eldjp8ccu" src="https://academy.hsoub.com/uploads/monthly_2019_10/5db467eeda12d_-----DevOps.thumb.jpg.5303818d9a4bdc1f4ac4f59e4aafb1e6.jpg" alt="حماية-الخدمات-المصغرة-عن-طريق-DevOps.jpg"></a>
</p>

<h2>
	تقنيات جديدة وتحديات جديدة
</h2>

<p>
	تُعدّ الخدمات المصغّرة (Microservices) من أشهر المعماريات البرمجية في وقتنا الحالي، والتي جاءت لتحل مشاكل الطريقة التقليدية في تطوير المشاريع والتي تُعرف باسم (Monolithic) وهي معمارية تجعل كلّ خدمات المشروع عبارة عن وحدات برمجية متراصّة ومتجانسة مع بعضها بعضًا وتعمل جميعها في وقت واحد. فإذا حدث مشكلة ما في أحد خدمات المشروع سوف تتأثر جميع الأجزء المتجانسة الأخرى أمّا (Microservices) قسّمت المشروع الواحد إلى عِدّة مشاريع منفصلة، وكلّ مشروع يكون عبارة عن خدمة مصغرة، وتعمل كل خدمة منهم بشكل مستقل عن الخدمة الأخرى مع إمكانية إتصال خدمة معينة بخدمة أخرى من خلال قنوات اتصال محددة.
</p>

<p>
	لقد غيّرت الخدمات المصغّرة كلّ شيء. إذ نلاحظ أن أغلب الشركات في وقتنا الحالي تتجه لوضع خارطة عملٍ معتمدة على الخدمات المصغّرة باستخدام بنى معمارية مثل البنية التحتية الثابتة (Immutable infrastructure)، أو البنية المعمارية التي لا تدعم التشارك (shared-nothing architecture)، أو التطبيقات المتوضعة في الحاويات (containerized applications).
</p>

<p>
	لقد كانت طريقة الكشف عن فعالية المشاريع في حالات معينة مثل العمل في نطاق صغير، أو في الإستقلالية، أو في تحقيق الإستدامة الذاتية تُعرف عند بناء الواجهة البرمجية <abbr title="Application Programming Interface | واجهة برمجية">API</abbr> وتشغيلها على الآلة الوهمية (virtual machine) أو بداخل حاوية، أو حتى بتشغيلها على القرص الصلب (حيث يكون مُثبت عليه نظام التشغيل)، أما الآن فيمكننا الكشف عن فعالية هذه المشاريع باستخدام الخدمات المصغّرة بحيث يتم إختبار كلّ حالة على حدة ومعرفة فعالية المشاريع بدون بناء واجهة برمجية.
</p>

<p>
	وعلى الرغم من المزايا المتعددة لإستخدام الحاويات إلا أنها تقدم لنا مجموعة من التحديات أيضًا من بين تلك التحديات المباشرة التي تواجه الحاويات هي الزحف على الحاويات (container crawl)، وحماية الحاويات، وتعقب الخدمات المصغّرة، ومعرفة مصدر نُسخ الحاويات.
</p>

<p>
	إذًا ما تأثير ذلك على الأمن في بيئة الخدمات المصغّرة؟ إن التحديات الأمنية لا تزال موجودة في بيئة التطبيقات أحادية النواة <a href="https://en.wikipedia.org/wiki/Monolithic_application" rel="external nofollow">monolithic applications</a>، ولا نزال نحتاج إلى معرفتها وتحديدها لمعالجتها. بالإضافة إلى ذلك، نحتاج إلى النظر في التحديات الأمنية الإضافية التي تفرضها الخدمات المصغّرة وتقنيات الحاويات.
</p>

<p>
	ومن منظور أمني، زادت إمكانية التعرض للهجوم بشكل كبير في عالم الخدمات المصغّرة بالموازنة مع التطبيقات أحادية النواة. أن زيادة قابلية النشر للوحدات وللأجهزة البعيدة (مثل: الهواتف الذكية والأجهزة المحمولة والأجهزة اللاسلكية الأخرى) أدى إلى زيادة التعرض للخطر، وإحتمالية حدوث هجوم أمني على الأجهزة البعيدة، ومشكلات التكاملية. بالإضافة إلى ذلك، قد تحتوي نُسخ Docker الأساسية على ثغرات أمنية والتي قد تضر بالخدمات المصغّرة. لذا ينبغي إدارة مصدر نُسخ Docker لضمان صحتها وخلوها من الثغرات. ويشكّل نشر تحديثات الأمنية والترقيعات مع المحافظة على أدنى مدة زمنية لتعطل الحاويات تحديًا آخر يصعب تجاوزه. يمكن أن تضيف DevOps المزيد من التركيز على الاحتياجات الأمنية في عالم الخدمات المصغّرة. حيث تركز أدوات النشر والبناء المستمرة حاليًا على تبسيط عملية التسليم، على الرغم من عدم تركيزها كثيرًا على حماية DevOps .
</p>

<h2>
	أفضل الممارسات الأمنية
</h2>

<p>
	لمواجهة بعض التحديات المذكورة أنفًا، دعونا نُلق نظرة على أفضل الممارسات التي يمكن إتخاذها. كجزء من استراتيجية DevOps الفعالة، يجب دمج خطوات الحماية والتدقيق المستمرة في منهجية DevOps. ويجب أن يتضمن الاختبار المستمر مُميزات إختبار الأمان المختلفة ويجب إضافة التحقق من سلامة نُسخ الحاويات إلى منهجية DevOps. وكما يمكننا أيضًا استخدام السجلات الخاصة private registries والتي تضمن لنا أن النُسخ موثوق بها وموجودة داخل الشركة.
</p>

<p>
	وينبغي تعزيز المراقبة من خلال آليات للكشف عن حالات الشذوذ لاكتشاف أي استخدام خاطئ للموارد أو الأحداث الغير طبيعية مع الحاويات، كما ينبغي تعزيز جميع قدرات المراقبة لتتبع العمليات المعتمدة على وكيل (agent-based) والعمليات بدون وكيل (agentless). كما يجب تحديث إدارة الترقيعات (Patch management) وتحسينها لضمان ترقيع الحاويات بأحدث التحديثات مع ضمان الحد الأدنى من وقت التوقف عن العمل.
</p>

<p>
	ولقد قدم Docker آلية لتحديد مصدر النُسخ تسمى (Notary)، والتي تستند إلى TUF (اختصارًا إلى The Update (Framework الذي يُستخدم في توزيع وتحديث البرامج بشكل نموذجي). ولكن العديد من أخصائيي الحاويات في وقتنا الحالي لا يستخدمونه Notary وذلك لأنه لا يزال في مرحلة التطوير. كما أن Notary يتطلب عملية إدارة رئيسية خبيرة في الشركة. تعدّ المنطقة التي تقع بين الخدمات المصغّرة من المناطق التي تُرتكب فيها الأخطاء أمنية، ويمكن استخدام Gateway <abbr title="Application Programming Interface | واجهة برمجية">API</abbr> (وهي برمجية تقع أمام الواجهة البرمجية وتعمل كنقطة دخول واحدة لمجموعة محددة من الخدمات المصغّرة) بفعالية في هذا الموقف. إن تشفير الرسائل باستخدام تشفير الرسائل التقليدي PKI (البنية التحتية للمفتاح العام Public Key Infrastructure وهو إطار التشفير والأمن السيبراني الذي يحمي الاتصالات بين الخادم والعميل) ليس خيارًا قابلًا للتوسعة في هذا الموقف. لذا بدلًا من ذلك، يمكننا استخدام JSON Web Token) JWT) وهو رمز مشفّر مع مجموعة من سياسات التأكيد assertion policies حول الطالب للخدمة (requestor).حيث يوقعّ خادم الهوية الرسائل برمز مُميز والذي يُمكن التحقق منه بواسطة نظام المستلم (recipient system). كما يمكن تشفير JWT رقميًا للحفاظ على سرية وسلامة التأكيدات (assertions) والتي تسمى حينَئِذٍ JSON Web Encryption) JWE).
</p>

<p>
	غالبًا ما تكون الحماية صعبة وباهظة الثمن. لذا حاول أن تجعل من الحماية سمة أساسية للبنية التحتية للخدمات المصغّرة لتوفير أفضل مستوى من الأمان والأداء.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/business/16/11/secured-devops-microservices" rel="external nofollow">Secured DevOps for microservices</a> لصاحبه Sreekanth Nyamars
</p>
]]></description><guid isPermaLink="false">449</guid><pubDate>Sat, 26 Oct 2019 15:36:37 +0000</pubDate></item><item><title>&#x625;&#x632;&#x627;&#x644;&#x629; &#x627;&#x644;&#x62D;&#x648;&#x627;&#x62C;&#x632; &#x628;&#x64A;&#x646; &#x627;&#x644;&#x645;&#x646;&#x62A;&#x62C; &#x648;&#x627;&#x644;&#x639;&#x645;&#x644;&#x64A;&#x629; &#x648;&#x627;&#x644;&#x646;&#x627;&#x633; &#x639;&#x646;&#x62F; &#x627;&#x644;&#x627;&#x646;&#x62A;&#x642;&#x627;&#x644; &#x625;&#x644;&#x649; DevOps</title><link>https://academy.hsoub.com/devops/general/%D8%A5%D8%B2%D8%A7%D9%84%D8%A9-%D8%A7%D9%84%D8%AD%D9%88%D8%A7%D8%AC%D8%B2-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D9%85%D9%86%D8%AA%D8%AC-%D9%88%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A9-%D9%88%D8%A7%D9%84%D9%86%D8%A7%D8%B3-%D8%B9%D9%86%D8%AF-%D8%A7%D9%84%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A5%D9%84%D9%89-devops-r448/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2019_10/5db45fdac7f63_---------DevOps.jpg.9ae8809008a9f2577089131d8fc4dc60.jpg" /></p>

<p>
	على مدار الأشهر القليلة الماضية، نشرت بعض المقالات الّتي تستكشف النقاط الأساسية الثلاث في تحولك الرقمي وهي المنتج والعملية والناس، وذلك لتمكينك من الانتقال من نموذج عمل مُحسن للموارد استنادًا إلى النفقات الرأسمالية (CAPEX) إلى نموذج مُحسن للسوق استنادًا إلى النفقات التشغيلية (OPEX). ومن الأمثلة على الانتقال من CAPEX إلى OPEX هو استخدام خدمات أمازون السحابية AWS بدلًا من إنشاء بنية تحتية من الصفر والتي ستُخدّم المشروع. ومن بين الفوائد الأخرى، يساعدك إتحاد الأشخاص والعمليات والمنتجات على رفع قيم العمل الأساسية، مثل زيادة قيمة الأعمال Business Value، مثل: زيادة قيمة الموظف، وقيمة العميل وقيمة الموارد وكثير من هذه القيم التي لا تقاس مباشرة بالقيم النقدية، بالإضافة إلى تقليل أوقات دورة التسليم، وتمكين الجميع من التعلم والتكيّف وتطوير مستواهم بشكل مستمر.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/01.png.ca51bf516fead8e55e88d0001aa46997.png" data-fileid="32192" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32192" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/01.thumb.png.070c011ed27d6df2bc6bb53d7220ac6c.png" alt="01.png"></a>
</p>

<p>
	يركز المهندسون (مثلي) عادة على المنتجات والأدوات والتقنيات. إذا أردنا النجاح في الانتقال إلى DevOps، فمن المهم أن ندرك أنه لا يمكنك شراء أو تركيب DevOps! المنتجات هي أدوات داعمة، وليست الحل السحري للأمر، فهي تتيح لك التركيز على النتائج، مثل الأتمتة، والتطابق، والموثوقية، والقدرة على الصيانة، وتمكين الميزات أو تعطيلها بشكل تدريجي، و تصور الخطوات اللازمة للانتقال من إنشاء المنتج إلى تسليمه إلى العميل النهائي أو ما يسمى flow of value.
</p>

<p>
	عندما نتحدث عن العملية، فإننا غالبًا ما نتجه نحو الأتمتة لرفع قيمة الكفاءة والاستقرار والثبات. ومن المهم أيضا تضمين أهداف الاحتفال بالنجاح سواءً كفريق أو منظمة، والتركيز على الجودة انطلاقًا من تصوّرها وتخيلها وانتهاءً بتحقيقها على أرض الواقع، وإنشاء عملية إدارة التغيير بحيث تكون سريعة الاستجابة وخفيفة، واحتضان البنيات المترابطة بشكل خفيف (loosely coupled architectures) لتمكين التطوير، والسعي إلى إصدار عدة مميزات جديدة في اليوم.
</p>

<p>
	إن جوهر هذا التحول هو تحول الناس وثقافتهم وليس المنتجات أو العمليات أو حتى حجم المنظمة. يحتاج الناس لأن يدركوا أهمية التحول وأن يعتنقوا فكرة DevOps، وأن يفهموا كيف ستتأثر مهامهم ووظائفهم، ويجب عليهم تحمل مسؤولية أدوارهم المنوطة إليهم في هذا التحول. ويجب عليهم أيضًا أن يدركوا أن DevOps لا تقتصر على التنمية والعمليات، حتى وإن كان اسمها بحد ذاته يدل على ذلك ويستبعد أصحاب المصلحة الآخرين.إنك تحتاج إلى إزالة جميع العوائق والمفاهيم الخاطئة داخل مؤسستك والتي تمنع من الانتقال إلى DevOps، وأن تجمع بين كلّ أصحاب المصلحة ومن جميع الأقسام في الشركة، بما في ذلك أقسام التطوير وخدمات البيانات والعمليات والأمان والأعمال إلى أن يتم تحقيق التحول إلى DevOps.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/02.png.de8d74c7a6dd3ebe15c91f68bb032cf3.png" data-fileid="32193" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32193" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/02.png.de8d74c7a6dd3ebe15c91f68bb032cf3.png" alt="02.png"></a>
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/19/3/breaking-down-walls-between-people-process-and-products" rel="external nofollow">Breaking down walls between people, process, and products</a> لصاحبه Willy-Peter Schaub
</p>
]]></description><guid isPermaLink="false">448</guid><pubDate>Sat, 26 Oct 2019 15:02:17 +0000</pubDate></item><item><title>&#x62A;&#x62D;&#x644;&#x64A;&#x644; &#x62D;&#x645;&#x636; DevOps &#x627;&#x644;&#x646;&#x648;&#x648;&#x64A;</title><link>https://academy.hsoub.com/devops/general/%D8%AA%D8%AD%D9%84%D9%8A%D9%84-%D8%AD%D9%85%D8%B6-devops-%D8%A7%D9%84%D9%86%D9%88%D9%88%D9%8A-r446/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2019_10/5db4584703933_--DevOps-.jpg.8cb0e94d77030df6a7585d08d1539ca4.jpg" /></p>

<p>
	كيف شَكّل نموذج الشلال (Waterfall)، والنموذج المرن (Agile)، وغيرها من أُطر التطوير الشكل الحالي DevOps؟ إليك ما اكتشفناه.
</p>

<p>
	إذا أردت أن تحلل حمض DevOps النووي، فما الذي ستعثر عليه في تقرير أسلافها؟
</p>

<p>
	هذه المقالة ليست مقاربة منهجية، لذا فإن كنت تبحث عن نصيحة أو مناقشة حول أفضل المنهجيات المتبعة لهندسة البرمجيات، فيمكنك التوقف عن القراءة هنا. لأننا في هذا المقال سنبحث في التسلسل التاريخي للمنهجيات منذ نشأتها إلى وقتنا الحالي وسنتعرف كيف أصبحت DevOps في مقدمة التحولات الرقمية في يومنا الحالي.
</p>

<p>
	لقد تطورت DevOps عبر الكثير من التجربة والخطأ، مع سعي الشركات للاستجابة لطلبات العملاء وتحسين الجودة والصمود في السوق مع ازدياد التنافسية بشكل متصاعد. ومما يزيد هذا التحدي صعوبةً هو انتقال الاقتصاد العالمي القائم على المنتجات إلى الاقتصاد العالمي القائم على الخدمات والذي أدى اتصال الناس بطرق جديدة. أصبحت دورة حياة تطوير البرمجيات المبنية على الخدمات والخدمات المصغرّة متزايدة التعقيد، كلًا من المتصلة ببعضها بعضًا و المجمعّة. لذا فإن DevOps دفعت للتطور بشكل أسرع وأكبر من أي وقت مضى، وإن سرعة التغيير هذه ستمحو المنهجيات التقليدية الأبطأ مثل نموذج الشلال (waterfall).
</p>

<p>
	بالتأكيد نحن لا نقلل من شأن نموذج الشلال فالعديد من المنظمات لديها أسباب وجيهة للاستمرار في استخدامه. لذا ينبغي على المنظمات الواعية أن تهدف إلى الابتعاد عن العمليات أو المنهجيات التي تُهدر الوقت، وإن الكثير من الشركات الناشئة تمتلك ميزة تنافسية على الشركات التي تستخدم نهجًا تقليديًا في عملياتها اليومية.
</p>

<p>
	والجدير بالذكر أن أغلب النماذج الحالية من نموذج التصميم الرشيق (Lean) ونموذج (<a href="https://en.wikipedia.org/wiki/Kanban" rel="external nofollow">Kanban</a>) ونموذج التصميم المستمر (<a href="https://searchsoftwarequality.techtarget.com/definition/Continuous-Software-Development" rel="external nofollow">Continuous</a>) ونموذج التصميم المرن (agile) تتتبع مبادئ وعمليات تعود إلى أوائل الأربعينات، لذا لا يمكن أن ندعي DevOps أنها فكرة جديدة كليًا.
</p>

<p>
	دعنا نعود بالزمن لبضع سنوات وننظر إلى نماذج تطوير البرمجيات مثل نموذج الشلال، والنموذج الرشيق، والنموذج المرن. يوضح الشكل التالي المخطط الزمني لتطور دورة حياة تطوير البرمجيات. (تذكر أننا لا نبحث عن أفضل طريقة ولكننا نحاول فهم المنحى الذي أحدث تأثيرًا إيجابيًا على هندسة البرمجيات والتي قمنا بتجميعها منذ 67 عامًا والتطور الذي حصل على مرِّ هذه السنوات حتى وصولنا لعقلية DevOps).
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/01.png.6c7e7d40fdedcdeedb43f0b578990769.png" data-fileid="32175" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32175" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/01.thumb.png.a2173315b79b692c449cadb018c50eed.png" alt="01.png"></a>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		"يبقى الأحمق أحمقًا حتى وإن كان معه أداة" - ماثيو ماثاي
	</p>
</blockquote>

<h2>
	نموذج الشلال التقليدي (Waterfall)
</h2>

<p>
	من وجهة نظرنا، تأتي أقدم الممارسات من نموذج الشلال، الذي قُدم لأول مرة من قبل الدكتور وينستون دبليو رويس في ورقة نشرت في السبعينيات.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/02.png.e9d5f79a26269e2b587f42daf12a26e0.png" data-fileid="32176" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32176" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/02.thumb.png.09af67fa035411c9297b495fa78f7b8b.png" alt="02.png"></a>
</p>

<p>
	يؤكد نموذج الشلال على النهج التقدم المنطقي والتتابعي من خلال مراحل جمع المتطلبات والتحليل وصياغة الشيفرة البرمجية والاختبار وهذه المراحل في إتجاه واحد أي يجب عليك إكمال كل مرحلة على حدة، وذلك باستكمال جميع المعايير المطلوبة في المرحلة وبعدها تستطيع أن تبدأ بالمرحلة التالية. يفيد نموذج الشلال في المشاريع التي تحتاج إلى تسلسلات صارمة والتي لها مجال مفصل ويمكن التنبؤ به أو المشاريع التي القائمة على الأحداث. وخلافا للاعتقاد السائد، فإنه يسمح أيضا للفرق بتجربة وإجراء تغييرات في التصميم في وقت مبكر خلال مرحلة جمع المتطلبات ومرحلة التحليل، ومراحل التصميم.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/03.png.3c94d8634d3e683625694d9550444ffe.png" data-fileid="32177" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32177" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/03.png.3c94d8634d3e683625694d9550444ffe.png" alt="03.png"></a>
</p>

<h2>
	نموذج التصميم الرشيق (Lean)
</h2>

<p>
	رغم أن التصميم الرشيق يعود إلى عام 1450 في مدينة البندقية، إلا أننا سنبدأ عندما قامت تويوتا بإنشاء <a href="https://en.wikipedia.org/wiki/Toyota_Production_System" rel="external nofollow">نظام إنتاج تويوتا</a>، الذي طوره المهندسون اليابانيون بين عامي 1948 و 1972. ونشرت تويوتا وصفًا رسميًا للنظام في عام 1992.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/04.png.851c449f8ef1470646b9dc2684a2c95e.png" data-fileid="32178" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32178" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/04.thumb.png.990d813799f499900fe9db8e6a04f344.png" alt="04.png"></a>
</p>

<p>
	يستند نموذج التصميم الرشيق إلى <a href="https://www.lean.org/WhatsLean/Principles.cfm" rel="external nofollow">خمسة مبادئ</a>: القيمة ومجرى القيمة والتدفق والسحب والكمال. ويكمن جوهر هذا النهج في فهم ودعم تدفق قيم فعال والتخلص من العمليات التي لا تضيف قيمة وتعدّ هدرًا وضياعًا وتقديم قيمة مستمرة للمستخدم. ويهدف أيضًا لإسعاد المستخدمين بدون انقطاع.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/05.png.9f4ded34ac50cc8267f0b4e220caa7ad.png" data-fileid="32179" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32179" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/05.png.9f4ded34ac50cc8267f0b4e220caa7ad.png" alt="05.png"></a>
</p>

<h2>
	نموذج Kaizen
</h2>

<p>
	تعتمد <a href="https://ar.wikipedia.org/wiki/%D9%83%D8%A7%D9%8A%D8%B2%D9%86" rel="external nofollow">kaizen</a> على التحسينات الإضافية وتتكون دورة حياة kaizen المراحل التالية: التخطيط -&gt;التنفيذ-&gt;التحقق-&gt;التصحيح. وتهدف عقلية kaizen للتوجه للتحسين المستمر. طُوّر مفهوم kaizen في الأصل لتحسين تدفق وعمليات خط التجميع، وهو يضيف أيضًا قيمة عبر سلسلة التوريد. وكان نظام إنتاج تويوتا واحدًا من أوائل المنفذين لنموذج kaizen والتحسين المستمر. يعمل كل من kaizen و DevOps معا بشكل جيد في البيئات التي ينتقل فيها سير العمل من التصميم إلى الإنتاج. يركز kaizen على مجالين:
</p>

<ul>
<li>
		التدفق (هو التوجه نحو تدفق المواد والمعلومات)
	</li>
	<li>
		العملية (وهي تعني تحسين وضعية عمل الشخص)
	</li>
</ul>
<h2>
	التسليم المستمر (Continuous Delivery)
</h2>

<p>
	وقد ألهمت kaizen تطوير العمليات والأدوات لأتمتة الإنتاج. وقد تمكنت الشركات من تسريع الإنتاج وتحسين الجودة والتصميم والبناء والاختبار والتسليم عن طريق تقليل مصادر الهدر (بما في ذلك الثقافة والعقلية) والتوجه نحو الأتمتة قدر الإمكان وذلك باستخدام الآلات والبرمجيات والروبوتات. كما أن معظم فلسفة kaizen تنطبق أيضا على الممارسات التجارية والبرمجيات غير المحدودة ونشر التسليم المستمر لمبادئ وأهداف DevOps.
</p>

<h2>
	نموذج التصميم المرن (Agile)
</h2>

<p>
	ظهر <a href="http://agilemanifesto.org/" rel="external nofollow">بيان</a> تطوير البرمجيات المرنة في عام 2001، والذي كتبه مجموعة من الشبان الطموحين النهج المتبع في التطوير.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/06.png.8085bc034c3decb1e1c7c515713c9887.png" data-fileid="32180" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32180" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/06.thumb.png.3813a0d0ae38caeb751db68e28d8a9b7.png" alt="06.png"></a>
</p>

<p>
	إن <a href="https://www.agilealliance.org/agile101" rel="external nofollow">النموذج المرن</a> لا يقوم على إهمال الحيطة والحذر، أو كسر خطط التصميم، أو بناء برمجية بخشونة أو بشكل عشوائي. وإنما هو أن تكون قادر على الإنشاء والاستجابة للتغييرات. يعتمد نموذج المرن على <a href="http://agilemanifesto.org/principles.html" rel="external nofollow">اثني عشر مبدأً</a> والتي تقدر الأفراد والتعاون فيما بينهم والبرمجيات الصالحة للاستعمال والتعاون مع العملاء، والاستجابة للتغيير.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/07.png.9b7adb648ddc69a12908a593e7459061.png" data-fileid="32181" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32181" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/07.png.9b7adb648ddc69a12908a593e7459061.png" alt="07.png"></a>
</p>

<h2>
	النموذج المرن المنضبط (Disciplined Agile Delivery)
</h2>

<p>
	ومنذ أن ظل البيان المرن ثابتًا لمدة 20 عامًا، بحث العديد من الممارسين للنموذج عن طرق لإضافة خيارات إضافية ومخصصة إلى النهج. بالإضافة إلى ذلك، يركز البيان المرن بشكل كبير على التطوير، لذا تكونت الحاجة الماسّة إلى الحلول بدلًا من الشيفرات البرمجية أو البرمجيات وخصيصًا في بيئة التطوير السريعة اليوم. شارك سكوت أمبلر وماركس بريز في تأليف عملية تسليم المرنة المنضبطة وإطار عمل مرن ومنضبط، استنادًا إلى خبرتهما في شركة Rational و IBM والمنظمات التي تحتاج فيها الفرق إلى مزيد من الخيارات المتاحة أو الشركات التي لم تكن ذات خبرة بما يكفي لتنفيذ المنهجية الرشيقة (lean)، أو حيث لا يتناسب دورة حياة البرمجية مع سياق النهج.
</p>

<p>
	تأتي أهمية النموذج المرن النضبط أو ما يعرف DAD (اختصارًا للعبارة Disciplined agile delivery) و DA (اختصارًا للعبارة Disciplined agile) من أنه يسمح لنا باتخاذ قرارت حول العمليات بشكل مبسط من أجل تقديم حلول تدريجية ومتكررة. ويعتمد DAD على العديد من ممارسات تطوير البرمجيات المرنة (Agile)، بما في ذلك ممارسات Scrum، وممارسات نموذج الرشيق (Lean)، وغيرها. إن الاستخدام المكثف للنمذجة الرشيقة وإعادة تحليل، بما في ذلك تشجيع الأتمتة من خلال نموذج التطوير القائم على الاختبار TDD (اختصارًا للعبارة Test-driven Development)، والتصميم الرشيق مثل <a href="https://www.digite.com/kanban/what-is-kanban/" rel="external nofollow">Kanban</a> و <a href="https://en.wikipedia.org/wiki/Extreme_programming" rel="external nofollow">XP</a> و <a href="https://www.scrum.org/resources/what-is-scrum" rel="external nofollow">Scrum</a> و <a href="https://en.wikipedia.org/wiki/Rational_Unified_Process" rel="external nofollow">Rup</a> من خلال اختيار واحدة من خمس دورات حياة رشيقة، وإدخال مفاهيم هيكلية المالك (<a href="https://disciplinedagiledelivery.com/the-dad-role-of-architecture-owner/" rel="external nofollow">Architecture Owner</a>)، يكتسب الممارسين لنموذج المرن مجموعة من الأفكار وطرق التفكير وعمليات وأدوات لتحقيق DevOps بنجاح.
</p>

<h2>
	نموذج DevOps
</h2>

<p>
	وعلى المدى الذي يمكننا أن نجمع فيه، ظهرت DevOps خلال سلسلة من DevOpsDays في بلجيكا في عام 2009، لتصبح الأساس للعديد من التحولات الرقمية. يعرّف مدير DevOps الأساسي في شركة مايكروسوفت <a href="http://donovanbrown.com/" rel="external nofollow">Donovan Brown</a> نموذج DevOps بأنه
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		إتحاد الأشخاص والعمليات والمنتجات لتمكين التسليم المستمر لتقديم القيمة Value (إن القيمة هي المنتج أو الخدمة، والتي يكون الزبون مستعدًا للدفع مقابلها) للعملاء.
	</p>
</blockquote>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/08.png.e64080e42a616e31ac8919f1e9309688.png" data-fileid="32182" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32182" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/08.thumb.png.dadd8611d52d3ecd6a99044bd1f5673e.png" alt="08.png"></a>
</p>

<p>
	والآن لنعود إلى سؤالنا الأصلي: إذا أردت أن تحلل حمض DevOps النووي، فما الذي ستعثر عليه في تقرير أسلافها؟
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/09.png.9e231a4be4f406ab8284f97123aa23ae.png" data-fileid="32183" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32183" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/09.png.9e231a4be4f406ab8284f97123aa23ae.png" alt="09.png"></a>
</p>

<p>
	إننا ننظر إلى التاريخ الذي يعود إلى 80 و48 و26 و17 عامًا، ولكن في وقتنا الحالي إن البيئة اليومية سريعة الإيقاع وغالبًا ما تكون مضطربة. بطبيعتنا نحن البشر نختبر ونجرب باستمرار ونتعلم ونتكيّف ونورّث نقاط القوة ونحل نقاط الضعف تيمّنًا بجيناتنا الوراثية.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/10.png.2a29909611d9a8c4521065a7278b7dec.png" data-fileid="32184" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32184" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/10.thumb.png.96da6632920cd94ec5b6e86a397c6784.png" alt="10.png"></a>
</p>

<p>
	يمكنك استخدام القياس عن بعد الذي تجمعه من مشاهدة الحل الخاص بك في الإنتاج وذلك لإدارة التجارب، وتأكيد الفرضيات، وترتيب أولويات الأعمال المتراكمة لديك. بمعنى آخر، يرث Devops من مجموعة متنوعة من الأطر والمنهجيات التي أثبتت جدارتها وتطورها، ويمكّنك من تحويل ثقافتك، واستخدام المنتجات كأدوات مساعدة، والأهم من ذلك، إرضاء عملائك.
</p>

<p>
	إن كنت مرتاحًا مع نموذج التصميم الرشيق أو المرن، فإنك حتمًا ستستمتع بفوائد DevOps. وإن كنت تستخدم نموذج الشلال فإن عقلية DevOps ستساعدك كثير في تعزيز التطوير.
</p>

<h2>
	نموذج eDevOps
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/11.png.23a2f10ef4e9f73b028dc5a1cdd084f7.png" data-fileid="32185" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32185" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/11.png.23a2f10ef4e9f73b028dc5a1cdd084f7.png" alt="11.png"></a>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/12.png.e121a726d0a567288114daf0528e88fe.png" data-fileid="32186" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32186" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/12.thumb.png.f0b4894e8dbcb0e61a09fe4d02683313.png" alt="12.png"></a>
</p>

<p>
	في عام 2016، صاغ Brent Reed مصطلح eDevOps (لا توجد له مراجع في Google أو ويكيبيديا حتى هذه اللحظة)، وهو يُعرف بأنه "طريقة للعمل (Way of Work) التي تجلب التحسين المستمر في الشركة بسلاسة، من خلال الأشخاص والعمليات والأدوات.
</p>

<p>
	وجد برانت أن النموذج المرن فشل في شركات تقنية المعلومات فالشركات التي اعتمدت تفكيرًا رشيقًا كانت لا تحقق قيمة (Value) للعملاء ولم تحقق أيضًا التركيز والسرعة التي توقعوها خبراء النموذج المرن الموثوق بهم في مجال تكنولوجيا المعلومات. وعندما شعر بالإحباط لرؤية "برج عاجي" تم فيه فصل فريق خدمات تقنية المعلومات المستقل عن فرق الدعم في مجال الهندسة والتطوير والعمليات ومكتب المساعدة، عندها طبق معرفته السابقة بنموذج التسليم الرشيق المنضبط (DAD)، وأضاف بعض الأهداف والتطبيقات العملية لمجموعة أدوات DAD، من ضمنها:
</p>

<p>
	التركيز على الثقافة ودفعها من خلال عقلية التحسين المستمر (Kaizen)، والجمع بين الناس حتى عندما يكونون في غرفة واحدة. السرعة من خلال الأتمتة (TDD + إعادة تحليل كل شئ ممكن)، إزالة الهدر واعتماد نهج <a href="http://www.opengroup.org/togaf" rel="external nofollow">TOGAF</a>، أو JBGE (وهو جيد إلى حدٍ ما) من أجل التوثيق تقديم القيمة (Value) من خلال النمذجة (نمذجة التصميم) و (<a href="https://en.wikipedia.org/wiki/Shift-left_testing" rel="external nofollow">shift left</a>) لتمكين الكشف عن الأنماط المتضاربة أثناء المشاركة من خلال أنماط التعاون في مستودع رقمي أكثر تنوعا واستراتيجيا حديث
</p>

<p>
	باستخدام خبرته مع AI في IBM، صمم برنت نموذج eDevOps الذي يقوم بشكل متزايد بأتمتة لوحات التحكم لأغراض القياس وصنع القرار بحيث يتم التحسين المستمر من خلال النشر المستمر (أتمتة العمليات من مرحلة التطوير إلى مرحلة الإنتاج) لجلب الإمكانيات الحقيقية لأي منظمة. إن برنامج التحول الفعال إلى eDevOps الذي يُبنى على التحول المنضبط إلى DevOps يُمكننا من القيام بما يلي:
</p>

<ul>
<li>
		تحويل نظام الأعمال إلى Bizdevops) DevOps).
	</li>
	<li>
		تحويل نظام الأمن إلى SecDevOps) DevOps).
	</li>
	<li>
		تحويل نظام المعلومات إلى DataDevOps) DevOps).
	</li>
	<li>
		تقديم خدمات تقنية مترابطة بشكل خفيف والتي تجمع بين جميع أصحاب المصلحة.
	</li>
	<li>
		بناء حلول قابلة للاستخدام كل أسبوعين أو أسرع.
	</li>
	<li>
		جمع وقياس وتحليل وعرض وأتمتة الرؤية القابلة للتنفيذ من خلال عمليات DevOps من المفهوم من خلال الاستخدام المباشر للإنتاج.
	</li>
	<li>
		تحسين مستمر امتثالًا بنموذج Kaizen ونموذج الرشيق منضبط.
	</li>
</ul>
<h1>
	المرحلة التالية في تطوير DevOps
</h1>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_10/13.png.da47fce0369137846a2bef3552c87d09.png" data-fileid="32187" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="32187" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2019_10/13.thumb.png.7416be484ddbd3b04ed684749b8e3f06.png" alt="13.png"></a>
</p>

<p>
	في النهاية هل تعدّ DevOps مجموعة من العبارات الطنانة والأفكار التقنية التي تُلقى على الشركات؟ سوف ندرك بكل تأكيد مع مرور الوقت كيف DevOps سيتقدم ويتطور. ومع ذلك، فإن حمض DevOps النووي يجب أن يستمر في النضج وأن يُنقح، ويجب أن يفهم المطورون أنه ليس الحل السحري ولا علاج لكل الأمراض والحلّ لكل المشاكل.
</p>

<p>
	إذن ما هي العلاقة بين DevOps وبقية النماذج السابقة<br>
	DevOps != Agile != Lean Thinking != Waterfall<br>
	DevOps != Tools !=Technology<br>
	إن DevOps تحتوي على ممارسات من النموذج المرن (Agile) ونموذج التصميم الرشيق (Lean) ونموذج الشلال (Waterfall).
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/18/11/analyzing-devops" rel="external nofollow">Analyzing the DNA of DevOps</a> لصاحبيه Willy-Peter Schaub و Brent Aaron Reed
</p>
]]></description><guid isPermaLink="false">446</guid><pubDate>Sat, 26 Oct 2019 14:40:04 +0000</pubDate></item><item><title>&#x62E;&#x645;&#x633; &#x637;&#x631;&#x642; &#x64A;&#x63A;&#x64A;&#x651;&#x631; &#x628;&#x647;&#x627; &#x645;&#x641;&#x647;&#x648;&#x645; DevSecOps &#x645;&#x646;&#x638;&#x648;&#x645;&#x62A;&#x643; &#x627;&#x644;&#x623;&#x645;&#x646;&#x64A;&#x629;</title><link>https://academy.hsoub.com/devops/general/%D8%AE%D9%85%D8%B3-%D8%B7%D8%B1%D9%82-%D9%8A%D8%BA%D9%8A%D9%91%D8%B1-%D8%A8%D9%87%D8%A7-%D9%85%D9%81%D9%87%D9%88%D9%85-devsecops-%D9%85%D9%86%D8%B8%D9%88%D9%85%D8%AA%D9%83-%D8%A7%D9%84%D8%A3%D9%85%D9%86%D9%8A%D8%A9-r441/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2019_09/5d6e7ea306f9b_5DevOpsSec.jpg.03ee4f736dc56b4826359af2bad2f568.jpg" /></p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		ينبغي أن يتطور الأمان ليواكب الطريقة التي تُكتب بها وتُنشر التطبيقات اليوم.
	</p>
</blockquote>

<p>
	لقد كان هناك دائمًا جدل مستمر حول ما إذا كنا بحاجة إلى توسيع مفهوم DevOps من أجل جلب الأمان بوضوح. بعد كل شيء، من الواضح أن DevOps كانت دائمًا اختزالًا لمجموعة واسعة من الممارسات الجديدة باستخدام أدوات جديدة (غالبًا ما تكون مفتوحة المصدر) ومبنية على ثقافات أكثر تعاونًا. ولم لا نتجه نحو DevBizOps لتحسين التوافق مع احتياجات السوق؟ أو DevChatOps للتشديد على نظام اتصال أفضل وأسرع؟
</p>

<p>
	ومع ذلك، كما كتب جون ويليس في وقت سابق من هذا العام عند وقوفه على المصطلحات الخاصة بـالDevSecOps: "نأمل أنه في يوم من الأيام سنكون في عالم ليس علينا أن نستخدم فيه كلمة DevSecOps، وسيكون الأمن جزءًا لا يتجزأ من جميع مناقشات تقديم الخدمة. حتى ذلك اليوم، وفي هذه المرحلة، استنتاجي العام هو أنها مجرد ثلاث حروف جديدة (Sec). والأهم من ذلك أن الاسم يميز حقًا مشكلتنا في عالم لا نقوم فيه بعمل رائع في مجال أمن المعلومات."
</p>

<p>
	فلماذا لا نقوم بعمل رائع في مجال أمن المعلومات؟ وماذا يعني القيام بعمل رائع في سياق DevSecOps؟
</p>

<p>
	لم نتمكن من القيام بعمل كبير في مجال أمن المعلومات على الرغم من (أو ربما بسبب) الإنتاج الواسع للبرامج المعقدة التي تعالج المشاكل الضيقة. لكننا أيضًا قمنا بعمل جيد بما فيه الكفاية خلال تلك الفترة عندما كان الدفاع ضد التهديدات يركز على تأمين محيط العمل فقط، وكانت اتصالات الشبكة محدودة، وكان معظم المستخدمين موظفين يستخدمون أجهزة توفرها الشركة.
</p>

<p>
	لا تصف هذه الظروف بدقةٍ حقيقة معظم المنظمات منذ عدة سنوات حتى الآن. لكن الحقبة الحالية، التي لم تجلب مفهوم DevSecOps فحسب، بل حتى الأنماط الهيكلية للتطبيقات الجديدة، وممارسات التطوير، وعدد متزايد من التهديدات، تحدد وضعًا طبيعيًا جديدًا وقاسيًا يتطلب وتيرة تغيير أسرع. ليس تغيير منظومة الأمان مرتبطا بالDevSecOps منعزلة، ولكن الأمر يتطلب أمنًا معلوماتيًا بمقاربات جديدة.
</p>

<p>
	أمعن النظر في هذه المجالات الخمسة.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2019_09/5d6e7e9d47d09_5DevOpsSec.jpg.50762393ae49757135e6e4aa2d167ad6.jpg" data-fileid="31251" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="31251" data-unique="olb3witwf" src="https://academy.hsoub.com/uploads/monthly_2019_09/5d6e7e9d5daf5_5DevOpsSec.thumb.jpg.c1c39aabade8a08b47ad86609d168347.jpg" alt="5 طرق يغير بها مفهوم DevOpsSec الأمان.jpg"></a>
</p>

<h2 id="-automation-">
	1. الأتمتة (Automation)
</h2>

<p>
	إن السمة المميزة لـ DevOps بشكل عام هي الأتمتة بأكبر قدر ممكن. ويتعلق الأمر جزئياً بالسرعة. إذا كنت ستتحرك بسرعة (دون الإضرار بالأشياء)، فستحتاج حتمًا إلى عمليات قابلة للتكرار تُنفذ دون تدخل بشري كبير. في الواقع، تعد الأتمتة مدخلًا مهمًا لـDevOps، حتى في المؤسسات التي لا تزال تعمل في الغالب على التطبيقات القديمة المتجانسة. وتمثل أتمتة العمليات الروتينية المرتبطة بالتكوينات أو الاختبارات باستخدام أدوات سهلة الاستخدام مثل Ansible دفعةً سريعةً لبدء الطريق إلى DevOps.
</p>

<p>
	ليست DevSecOps مختلفة عن هذا المفهوم، فالأمن اليوم هو عملية مستمرة وليس نقطة تفتيش منفصلة في دورة حياة التطبيق، أو حتى فحصًا أسبوعيًا أو شهريًا. عندما يُعثر على الثغرات ويُصدر البائع إصلاحاته، يكون من المهم أن تُطبّق بسرعة لكي تنتهي عمليات استغلال هذه الثغرات الأمنية قريبًا.
</p>

<h2 id="-shift-left-">
	2. التحرّك نحو اليسار (Shift left)
</h2>

<p>
	غالبًا ما يُنظر إلى الأمن التقليدي كحارس بوابة في نهاية عملية التطوير. افحص جميع الصناديق وسيمرّ تطبيقك إلى مرحلة الإنتاج وإلّا حاول مرة أخرى. تُعرف فرق الأمن بأنها لا تكثر الكلام.
</p>

<p>
	وبالتالي، لم لا نحرك الأمن مبكرًا نحو اليسار (في الرسم النموذجي من اليسار إلى اليمين لمسلسل التطوير)؟ قد يصرّ الأمنيون على الرفض، ولكن عواقب إعادة الصياغة في مرحلة مبكرة من التطوير هي بالتأكيد أقل بكثير مما يكون عليه الحال عندما يكون التطبيق كاملًا وجاهزًا للتسليم.
</p>

<p>
	لا أحب مصطلح "التحرّك نحو اليسار" فذلك يعني أن الأمان لا يزال مجرّد حدثٍ لمرة واحدة نُقل لمرحلة مبكّرة. يجب أن يكون الأمان عملية مؤتمتة إلى حد كبير في كل مكان في دورة حياة التطبيق، من سلسلة التوريد إلى عملية التطوير والاختبار على طول الطريق حتى النشر.
</p>

<h2 id="-manage-dependencies-">
	3. إدارة التبعيات (Manage dependencies)
</h2>

<p>
	أحد التغييرات الكبيرة التي نراها في تطوير التطبيقات الحديثة هو أنك غالبًا لا تكتب معظم الكود. ويعدّ استخدام المكتبات والأطر مفتوحة المصدر مثالًا واضحًا على ذلك. لكن يمكنك أيضًا استخدام الخدمات الخارجية من موفري الخدمات السحابية العامة أو مصادر أخرى. في كثير من الحالات، ستغطي هذه الأكواد والخدمات الخارجية على ما تكتبه بنفسك.
</p>

<p>
	نتيجة لذلك، تحتاج منظومة DevSecOps إلى تركيز جادٍّ على سلسلة التوريد الخاصة بالبرنامج. هل تحصل على برنامجك من مصادر موثوقة؟ هل هو مُحدّث؟ هل هو مدمج في عمليات الأمان التي تستخدمها لكودك الخاص؟ ما هي السياسات التي تطبقها في أيّ أكوادٍ وأيّ واجهات لبرمجة التطبيقات قد تستخدمها؟ هل يتوفر الدعم التجاري للمكونات التي تستخدمها لشيفرة المنتج الخاص بك؟
</p>

<p>
	لن تكون هناك مجموعة من الإجابات تناسب جميع الحالات. قد تكون مختلفة في حالة "إثبات الجدوى" عنها في حالة الإنتاج على نطاق واسع. ولكن، كما كان الحال في التصنيع لفترة طويلة (هناك العديد من أوجه الشبه بين DevSecOps وكيفية تطور التصنيع)، تبقى سلامة سلسلة التوريد أمرًا بالغ الأهمية.
</p>

<h2 id="-vision-">
	4. الرؤية (Vision)
</h2>

<p>
	لقد تحدثت كثيرًا عن الحاجة إلى الأتمتة خلال جميع مراحل دورة حياة التطبيق. هذا يجعلنا نفترض أنه يمكننا رؤية ما يجري في كل مرحلة من تلك المراحل.
</p>

<p>
	تتطلب منظومة DevSecOps الفعالة بالضرورة أدوات فعالة حتى يتضح ما يجب على الأتمتة أن تقوم به. وتندرج هذه الأدوات في عدد من الفئات. هناك مقاييس طويلة الأمد وعالية المستوى تساعدنا في معرفة ما إذا كانت عملية DevSecOps الشاملة تعمل بشكل جيد. وهناك أدوات إنذار حساسة تتطلب تدخلًا بشريًا فوريًا (إذا كان نظام المسح الأمني معطّلًا!). وهناك إنذارات، مثل الفحص الفاشل، تتطلب علاجًا أو إصلاحًا. وهناك سجلات للعديد من البارامترات التي نلتقطها من أجل التحليل لاحقًا (ما الذي يتغير بمرور الوقت؟ وما الذي يتسبب في هذا الفشل؟).
</p>

<h2 id="-">
	5. الخدمات مقابل الوحدات المتراصة
</h2>

<p>
	رغم أنه يمكن تطبيق ممارسات DevSecOps على العديد من هياكل تصميمات التطبيقات، إلا أنها تكون أكثر فاعلية من خلال المكونات الصغيرة والموضوعة بشكل فضفاض يتيح تحديثها وإعادة استخدامها دون فرض تغييرات في أماكن أخرى من التطبيق. يمكن أن تكون هذه المكونات في أنقى صورها خدمات مصغرة أو وظائف، لكن المبادئ العامة تنطبق حيثما كان لديك خدمات مقترنة بشكل فضفاض تتواصل عبر الشبكة.
</p>

<p>
	يقدم هذا النمط بعض التحديات الأمنية الجديدة. يمكن أن تكون التفاعلات بين المكونات معقدة ويمكن أن تكون المساحة المعرّضة للهجوم أكبر لأن هناك الآن المزيد من نقاط الدخول إلى التطبيق عبر الشبكة. من ناحية أخرى، يدلّ هذا النمط من الهياكل على أن الأمن والمراقبة الآليين يتمتعان أيضًا برؤية أكثر دقة لمكونات التطبيق لأنها لم تعد مدفونة بعمق داخل تطبيق متراصٍّ.
</p>

<p>
	لا تنغمس كثيرًا في مصطلح DevSecOps، ولكن عليك أن تتذكر أن الأمن يتطور لأن الطريقة التي نكتب بها وننشر التطبيقات تتطور.
</p>

<p>
	ترجمة وبتصرف للمقال ‎<a href="https://opensource.com/sites/default/files/gated-content/getting_started_with_devsecops-v1.pdf" rel="external nofollow">5 ways DevSecOps changes security</a> لغوردون هاف
</p>
]]></description><guid isPermaLink="false">441</guid><pubDate>Tue, 03 Sep 2019 15:00:42 +0000</pubDate></item><item><title>&#x62B;&#x644;&#x627;&#x62B; &#x646;&#x635;&#x627;&#x626;&#x62D; &#x623;&#x645;&#x646;&#x64A;&#x629; &#x644;&#x645;&#x637;&#x648;&#x631;&#x64A; &#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x64A;&#x627;&#x62A;</title><link>https://academy.hsoub.com/devops/general/%D8%AB%D9%84%D8%A7%D8%AB-%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D8%A3%D9%85%D9%86%D9%8A%D8%A9-%D9%84%D9%85%D8%B7%D9%88%D8%B1%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA-r440/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2019_09/5d6e62a26d09a_.jpg.3f1b5a892ee29edd84a341ec89c2f9a3.jpg" /></p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		لا ترتكب هذه الأخطاء الأمنية الشائعة التي تجعلك عرضة للهجوم.
	</p>
</blockquote>

<p>
	يعرف كل مطور أهمية اتباع أفضل ممارسات الأمان. لكننا في كثير من الأحيان نتصرف باقتصاد ولامبالاة، ربما لأنه يتعين علينا العمل بجد حتى تترسخ تلك الممارسات الأمنية. لسوء الحظ، يكون هذا مثل رؤية سلوك أمني سيء جدًا لدرجة لا يُمحى فيها من أدمغتنا.
</p>

<p>
	لقد رأيت الكثير من حالات ممارسات الأمان السيئة أثناء مسيرتي مديرًا للأنظمة، لكن الأمور الثلاثة التي سأصفها هنا أساسية ويجب على كل مطور برمجيات تجنبها. من المهم الإشارة إلى أنني رأيت الشركات الكبيرة والمطورين ذوي الخبرة يرتكبون هذه الأخطاء، لذلك لا يمكنك أن تربط هذه الأخطاء بالمهندسين المبتدئين.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="31244" href="https://academy.hsoub.com/uploads/monthly_2019_09/5d6e62a5531b3_.jpg.69669ef8c6d0137ec093fe0f21903ac8.jpg" rel=""><img alt="ثلاثة نصائح أمنية لمطوري البرمجيات.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="31244" data-unique="cphzfnz28" src="https://academy.hsoub.com/uploads/monthly_2019_09/5d6e62a569be2_.thumb.jpg.0621957ab0e3da425852fc97c2c21067.jpg"></a>
</p>

<h2 id="1-">
	1. لا تشفر كلمات المرور، بل جزّئها
</h2>

<p>
	في وقت سابق من حياتي المهنية، عملت لدى شركة تستخدم نظامًا إداريًا يحتوي على بعض المعلومات المهمة. في أحد الأيام، طُلب مني إجراء مراجعة أمنية للشبكة والبرنامج الذي يُخزّن معلوماتنا المهمة. أمضيت بضع دقائق في التجول قبل أن أقرر استخدام برنامج وايرشارك لتحليل حركة المرور في الشبكة.
</p>

<p>
	استخدمت جهازي المحلي، وسجلت الدخول إلى نظام المعلومات، فلاحظت شيئًا غريبًا. على الرغم من أن هذا كان قبل انتشار بروتوكول <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>، إلا أنني لم أتوقع أن أرى البيانات بنص عادي يحتوي على بايتات مثل "اسم المستخدم" و "كلمة المرور". عند الفحص الدقيق، بدا أن النظام كان يرسل اسم المستخدم الخاص بي وسلسلة عشوائية، لم تكن كلمة المرور الخاصة بي، عبر الشبكة. لم أستطع ترك الأمر كذلك. لقد حاولت تسجيل الدخول مرة أخرى، إلا أنه في هذه المرة أدخلت كلمة المرور الخاصة بي خاطئة عن قصد. لم أغيرها كاملة، بل حرفا واحدًا فقط.
</p>

<p>
	ما كنت أتوقعه هو سلسلة عشوائية مختلفة تمامًا تمثل كلمة المرور. بدلاً من ذلك، تغيّر البايتان الأولان فقط. كان هذا مثيرًا للاهتمام. على الرغم من أنني كنت قليل الخبرة نسبيًا، فقد علمت أنه إذا تجزّأ تمثيل كلمة المرور الخاصة بي كما كان مفترضًا، فسيكون الأمر مختلفًا تمامًا، ولن يكون الاختلاف في حرفين فقط. تبًّا، فحتى مخطط تشفير جيد سيفعل ذلك. لكن هذا، مع ذلك، لم يفعل ذلك على الإطلاق. لقد جربت مرتين أخريين كلمات مرور خاطئة.
</p>

<p>
	أمضيت الساعتين التاليتين مسلّحا ببعض الأوراق وقلم رصاص في اكتشاف مخطط فك التشفير. في نهاية الساعتين، كان لديّ نص بايثون يمكن أن يأخذ أي كلمة مرور "مشفرة" ويفك تشفيرها للكشف عن كلمة المرور الأصلية، وهو أمر لا ينبغي لأحد أن يفعله. أنا متأكد من أن الشخص الذي تخيل مخطط التشفير هذا لم يفكر أبدًا في أن شخصًا ما سوف يجلس ساعتين ويستطيع حلّه، لكنني فعلت ذلك.
</p>

<p>
	لماذا؟ لأنني أستطيع ذلك.
</p>

<p>
	إذا كان عليك تخزين كلمات المرور للمقارنة، فلا تشفرها مطلقًا إذ يُحتمل دائمًا أن يجد شخص ما خوارزمية أو مفتاح فك التشفير. ليس للتجزئة (hash) انعكاس مباشر، مما يعني أنه لا يمكن لأحد عكسها ما لم يكن لديه بالفعل جدول مع التعيين من النص العادي إلى التجزئة (أو أن يخمنه ببساطة). لا تؤثر معرفة آلية التجزئة على سلامة البيانات، بينما يضر بها انكشاف مخطط ومفاتيح التشفير.
</p>

<h2 id="2-">
	2. لا تضع أبوابا خلفية سرية في البرنامج
</h2>

<p>
	كجزء من متابعة برنامج تابع لجهة خارجية، كنت أدعم بعض المستخدمين الذين أخبروني أن تسجيلات الدخول الخاصة بهم لا تعمل. كانت هذه خدمة مدفوعة الأجر مقدمة من بائع، لكن قبل أن أتعامل مع أحد كانت أكثر مكالمات الدعم إزعاجًا تحت عنوان "لا يعمل تسجيل الدخول الخاص بي"، اعتقدت أنني سأحاول ذلك بنفسي. لقد كان الأمر صحيحًا، لم تعمل تسجيلات الدخول.
</p>

<p>
	كان النظام عبارة عن منصة لإدارة التعلم عبر الإنترنت، والتي دفعنا مقابلها جزءًا صغيرًا من قدراتها الكبيرة. عندما بحثت بفضول في صفحة تسجيل الدخول، لفت انتباهي شيء ما. بدا لي حرف واحد في إحدى الكلمات مختلفًا. ربما كان خطًا مختلفًا للكتابة، أي شكلًا مختلفًا قليلاً لحرف "o". ولأنني أنا دون غيري، فتحت الصفحة بطريقة عرض المصدر، ولاحظت وجود رابط مرتبط بهذا الحرف المحدّد. لقد أُخفي الرابط عن قصد بحيث لا يتغير مؤشر الفأرة عند التمرير فوقه. لهذا حمّلت هذا الرابط الغامض بحذر شديد في نافذة متصفح جديدة.
</p>

<p>
	وفجأة ، قابلتني شاشة تعرض بالتفصيل مجموعة كاملة من أجهزة الحواسيب، وتمنحني سيطرة كاملة على ما يمكنها القيام به والقدرة على إيقاف تشغيلها، وإعادة تشغيلها، وأخذ لقطات للشاشة، سمِّها ما شئت. اتصلت ببائع البرنامج وطلبت التحدث إلى تقني المعلومات. بعد المرور على بعض الأشخاص، وصلت أخيرًا إلى شخصٍ يعرف مسبقًا ما الذي كنت أتحدث عنه.
</p>

<p>
	قال لي: "أوه نعم! لقد وضعنا ذلك في مكان يسهل الوصول إليه، ولم يعثر عليه أحد حتى الآن قبلك. سنقوم بإزالته على الفور". قبل أن ننهي المكالمة، سألني سؤالًا أخيرًا:" لماذا بدأت تبحث في HTML؟".
</p>

<p>
	كانت إجابتي بسيطة: "لأنني أستطيع".
</p>

<p>
	إن الأمر لا يستحق المخاطرة بوضع منفذٍ خلفيٍّ جميلٍ في أي نظام، لأنك قد تراهن بآخر دولار لديك وسيجده شخص ما. بغض النظر عن مدى الغموض، غالبًا ما يؤدي تحليل الشفرة، وحتى البحث الفضولي السطحي، إلى أكثر النتائج غرابةً وإثارة للاهتمام.
</p>

<h2 id="3-">
	3. فعِّل تصديق هوية المستخدمين في كل صفحة، وليس فقط على صفحة تسجيل الدخول
</h2>

<p>
	في مرحلة ما من حياتي المهنية، شاركت في مشروع لتطوير البرمجيات نفّذه مطوّر متمرس. بعد أن شعرت قليلاً بقلّة الحيلة أمام هذا التطبيق المميز، أخبرت مديري أننا سنحتاج إلى مراجعة أمنية معمقة للشيفرة. وطُلب مني النظر على أي حال لمعرفة ما يمكن أن أجده. بدأت اللعب مع التطبيق، وسجلت الدخول، وعرضت بعض البيانات. ثم وجدت شيئًا مثيرًا للاهتمام حقًا.
</p>

<p>
	إذا وضعت إشارة مرجعية على أحد عناوين URL التي ألج إليها كثيرا في النظام، فيمكنني فقط نسخها ولصقها في متصفح آخر، وقضي الأمر! سأكون هناك دون الحاجة إلى تسجيل الدخول. سألت المطور: "لماذا لا تُسجّل الدخول في كل صفحة؟ إذا أدخلت عنوان URL لصفحة ما في النظام، فيمكنني الوصول إليها دون تسجيل الدخول". فسألني: "لماذا تفعل ذلك؟".
</p>

<p>
	أجبته: "لأنني أستطيع".
</p>

<h2 id="-">
	لا تترك أي شيء للصدفة
</h2>

<p>
	حتى المطورون المتمرسون قد يرتكبون هذه الأخطاء. يعتقدون أن لا أحد سيحاول مطلقًا الخوض في نظام لا يستطيع الوصول إليه فعليًا. المشكلة هي أن الناس سوف يبحثون بفضول، وسوف يحفرون. نصيحتي الجوهرية التي أود أن أنقلها هنا لأي شخص مهمته مراعاة الأمان فقط هي: لا تترك أي شيء للصدفة. هناك أشخاص مثلي، يحبون الحفر في الأشياء ومعرفة علّة وكيفية عملها. ولكن هناك أيضًا عدد كبير من الأشخاص الذين سيحفرون لاستغلال عيوبك ونقاط ضعفك.
</p>

<p>
	لماذا؟ لأنهم يستطيعون!
</p>

<p>
	ترجمة وبتصرف للمقال <a href="https://opensource.com/sites/default/files/gated-content/getting_started_with_devsecops-v1.pdf" rel="external nofollow">‎3 security tips for software developers</a> لبيت سافايج
</p>
]]></description><guid isPermaLink="false">440</guid><pubDate>Wed, 25 Sep 2019 13:04:02 +0000</pubDate></item></channel></rss>
