تخيل إنك شغال على مشروع ضخم، وعايز تضيف خاصية جديدة أو تجرب فكرة معينة، بس من غير ما تخاطر إن حاجة تبوظ في الكود أو بدون ما تأثر على المستخدمين...
أفضل حل هنا إنك تستخدم الـ Feature Toggles أو زي ما بنسميها أحيانًا الـ Feature Flags...
📌 إيه هي الـ Feature Toggles؟
ببساطة عبارة عن (أداة أو تقنية) بتخليك تتحكم في تفعيل أو تعطيل أجزاء معينة من الكود بتاعك من غير ما تضطر تعيد نشر (Deploy) التطبيق بالكامل.
بمعنى تاني، بتقدر تخلّي خاصية معينة "On" أو "Off" بناءً على شروط معينة أو حتى بشكل ديناميكي.
📌 أنواع الـ Feature Toggles:
📍 الـ Release Toggles
دي بنستخدمها لما نكون عايزين نطلع ميزة لجزء معين من المستخدمين ونسيب الباقي زي ما هو. مثال: تجربة خاصية جديدة على مستخدمين معينين بس.
📍 الـ Experiment Toggles
النوع ده بيُستخدم في الـ A/B Testing، وده لما تحب تقارن بين نسختين من نفس الميزة وتشوف أي نسخة بتأدي أداء أفضل.
📍 الـ Ops Toggles
دي لها علاقة بالـ DevOps. مثلا لو عندك خاصية بتستهلك موارد كتير من السيرفر، تقدر توقفها مؤقتًا من غير ما تدخل على الكود.
📍 الـ Permission Toggles
النوع ده بيتحكم في إتاحة ميزات معينة بناءً على المستخدم نفسه، زي لما تطبق خاصية Premium متاحة بس للمستخدمين اللي دفعوا.
📌 ليه نستخدم الـ Feature Toggles؟
✅ تسريع الشغل
بدل ما تأجل نشر التطبيق بالكامل لغاية ما كل الميزات تجهز، ممكن تضيف الـ Feature Toggles عندك وتفعّل الميزات تدريجيًا.
✅ تقليل المخاطر
لو حصلت مشكلة في الميزة الجديدة، تقدر تقفلها فورًا من غير ما ترجع تعمل Rollback للـ Deploy
✅ تسهيل التعاون بين الفرق
الفرق المختلفة في المشروع (Frontend, Backend, DevOps) يقدروا يشتغلوا مع بعض على نفس الكود بسهولة.
✅ تجربة المستخدم (User Testing)
بسهولة تقدر تجرب ميزات جديدة مع مجموعة صغيرة من المستخدمين وتشوف رأيهم قبل ما تنشرها بشكل عام.
📌 إزاي نطبق الـ Feature Toggles؟
حدد إيه الميزة اللي محتاجة Toggle وهدفك من وراها.
فيه مكتبات كتير بتساعدك زي:
- LaunchDarkly
- Unleash
- Optimizely
ولو بتشتغل بـ React أو Node.js، ممكن تلاقي مكتبات خفيفة وسهلة زي Feature Toggle أو تعمل Toggle بسيط بنفسك.
دائمًا خلي الـ Toggles مربوطة بـ Configuration File أو API تقدر تعدلها بسهولة.
تأكد من اختبار الميزة بشكل كويس في مرحلة الـ Dev أو الـ Staging
وفقكم الله لكل خير 🌿