ساختن یک سیستم پرچم ویژگی در node.js با redis و وسط نرم افزار
پرچم های ویژگی (همچنین به عنوان ضامن ویژگی شناخته می شود) به شما امکان می دهد بدون استفاده از کد جدید ، عملکرد را فعال یا غیرفعال کنید. آنها برای آزمایش A/B ، مرحله مرحله ای و کنترل عملیاتی در تولید بسیار ارزشمند هستند. در این مقاله ، شما می آموزید که چگونه یک سیستم پرچم ویژگی را در Node.js با استفاده از Redis و Express Middleware پیاده سازی کنید.
چرا از پرچم های ویژگی استفاده می کنیم؟
پرچم های ویژگی به شما کمک می کنند:
- ویژگی های خطرناک را با خیال راحت مستقر کنید
- آزمایشات اجرا (آزمایش A/B)
- ویژگی هایی را برای کاربران خاص فعال کنید
- در دسترس بودن ویژگی بدون استفاده مجدد
مرحله 1: تنظیم پروژه
npm init -y
npm install express redis
مرحله 2: تنظیم مشتری Redis
// redisClient.js
const redis = require('redis');
const client = redis.createClient();
client.on('error', (err) => console.error('Redis Error:', err));
client.connect();
module.exports = client;
مرحله 3: میانی نرم افزار برای پرچم های ویژگی
// featureFlagMiddleware.js
const client = require('./redisClient');
const featureFlag = (flagName) => {
return async (req, res, next) => {
try {
const enabled = await client.get(`feature:${flagName}`);
if (enabled === 'true') {
return next();
} else {
return res.status(403).json({ message: 'Feature disabled' });
}
} catch (err) {
console.error(err);
return res.status(500).json({ message: 'Feature check failed' });
}
};
};
module.exports = featureFlag;
مرحله 4: استفاده در مسیرها
// server.js
const express = require('express');
const featureFlag = require('./featureFlagMiddleware');
const client = require('./redisClient');
const app = express();
app.get("https://dev.to/", (req, res) => {
res.send('Main API');
});
app.get('/beta-feature', featureFlag('beta-feature'), (req, res) => {
res.send('Beta feature is active!');
});
app.listen(3000, () => console.log('Server running on http://localhost:3000'));
مرحله 5: پرچم های ویژگی را در redis تغییر دهید
یک ویژگی را در Redis CLI یا با هر ابزار Redis GUI فعال کنید:
SET feature:beta-feature true
آن را غیرفعال کنید:
SET feature:beta-feature false
پیشرفت
- ویژگی هایی را برای شناسه یا نقشهای خاص کاربری فعال کنید
- انواع پرچم را برای آزمایش A/B پیاده سازی کنید
- داشبورد برای پرچم ها ایجاد کنید
- برای قوانین پیچیده تر از ساختارهای JSON در REDIS استفاده کنید
پایان
یک سیستم پرچم ویژگی ، کنترل ریز و درشت بر رفتار برنامه خود در تولید را به شما می دهد. با استفاده از Redis به عنوان فروشگاه پرچم خود و میان افزار سبک در Node.js ، می توانید این سیستم را برای پاسخگویی به نیازهای تیم های بزرگ و استقرار پیچیده مقیاس کنید.
اگر این موضوع را مفید پیدا کردید ، از من حمایت کنید: buymeacoffee.com/hexshift