
پاسخ سریع:
برای راهاندازی Redis، MongoDB و RabbitMQ در آرانیک، وارد پنل ابری شوید، از بخش سرویسهای موجود ابزار موردنظر را انتخاب کنید و منابع موردنیاز را مشخص کنید. پس از ایجاد سرویس، اطلاعات اتصال در اختیار شما قرار میگیرد و میتوانید Redis، MongoDB یا RabbitMQ را به پروژه Node.js، Python یا سایر برنامههای خود متصل کنید.
توسعهدهندگان برای ساخت اپلیکیشنهای مدرن معمولاً به سه نوع سرویس زیرساختی نیاز دارند: Redis برای کشینگ و ذخیرهسازی سریع، MongoDB برای ذخیرهسازی دادههای سندمحور و RabbitMQ برای مدیریت صف پیام و پردازشهای ناهمگام.
راهاندازی دستی این سرویسها روی سرور میتواند شامل نصب نرمافزار، تنظیم شبکه، مدیریت دسترسیها، پیکربندی امنیتی و نگهداری مداوم باشد. استفاده از سرویسهای ابری آماده میتواند این مراحل را سادهتر کند و به توسعهدهنده اجازه دهد تمرکز خود را روی توسعه و اجرای پروژه بگذارد.
Redis چیست و چه کاربردی دارد؟
Redis یک دیتابیس مبتنی بر حافظه است که به دلیل سرعت بالای خواندن و نوشتن، در بسیاری از پروژهها بهعنوان Cache استفاده میشود.
برخی از کاربردهای رایج Redis عبارتاند از:
کش کردن پاسخ API
ذخیره Session کاربران
Rate Limiting
Pub/Sub
مدیریت برخی صفهای پردازشی
ذخیره دادههای موقت
کاهش تعداد درخواستها به دیتابیس اصلی
برای مثال، اگر اطلاعات یک محصول مرتباً درخواست شود، میتوان نتیجه Query را برای مدت مشخصی در Redis ذخیره کرد تا درخواستهای بعدی سریعتر پاسخ داده شوند.
MongoDB چیست و چه کاربردی دارد؟
MongoDB یک دیتابیس NoSQL سندمحور است که دادهها را در قالب Document و با ساختاری مشابه JSON ذخیره میکند.
انعطافپذیری ساختار داده باعث شده MongoDB برای پروژههایی که مدل داده آنها دائماً تغییر میکند، گزینه مناسبی باشد.
از MongoDB میتوان در موارد زیر استفاده کرد:
API و Backend
اپلیکیشنهای وب
پروژههای MVP
سامانههای SaaS
اپلیکیشنهای موبایل
سیستمهای مدیریت محتوا
پروژههای دارای دادههای نیمهساختاریافته
RabbitMQ چیست و چه کاربردی دارد؟
RabbitMQ یک Message Broker است که برای ارسال، دریافت و مدیریت پیام میان سرویسهای مختلف استفاده میشود.
در یک برنامه معمولی ممکن است اجرای یک عملیات زمانبر باعث شود کاربر مدت بیشتری منتظر پاسخ بماند. با استفاده از RabbitMQ میتوان این عملیات را به یک Queue منتقل کرد تا یک Worker آن را در پسزمینه پردازش کند.
برخی از کاربردهای RabbitMQ عبارتاند از:
پردازش کارهای پسزمینه
ارسال ایمیل و پیامک
ارتباط بین Microserviceها
پردازش سفارشها
معماری Event-Driven
مدیریت Jobهای سنگین
توزیع وظایف میان Workerها
برای مثال، در یک فروشگاه اینترنتی، پس از ثبت سفارش میتوان ارسال ایمیل تأیید را به RabbitMQ سپرد تا پردازش سفارش بدون منتظر ماندن برای ارسال ایمیل ادامه پیدا کند.
Redis، MongoDB یا RabbitMQ؛ کدام را انتخاب کنیم؟
این سه سرویس کاربرد یکسانی ندارند و در بسیاری از پروژهها حتی میتوانند در کنار یکدیگر استفاده شوند.
یک معماری ساده میتواند به این شکل باشد:
User
↓
Application
├── Redis → Cache
├── MongoDB → Persistent Data
└── RabbitMQ → Background Jobs
در چنین معماریای، MongoDB دادههای اصلی را نگهداری میکند، Redis برای افزایش سرعت دسترسی به اطلاعات پرتکرار استفاده میشود و RabbitMQ عملیات ناهمگام را مدیریت میکند.
منابع موردنیاز Redis، MongoDB و RabbitMQ
منابع موردنیاز به حجم داده، تعداد کاربران، تعداد درخواستها و نوع عملیات بستگی دارد. جدول زیر میتواند نقطه شروع مناسبی برای پروژههای کوچک و متوسط باشد:
برای محیط Production بهتر است منابع را بر اساس مصرف واقعی، تعداد Connectionها، حجم داده و بار سرویس تعیین کنید.
راهاندازی Redis، MongoDB و RabbitMQ در آرانیک
برای شروع استفاده از این سرویسها، وارد پنل ابری آرانیک شوید و سرویس موردنظر خود را ایجاد کنید.
مراحل کلی به این صورت است:
وارد پنل آرانیک شوید.
گزینه ساخت سرویس جدید را انتخاب کنید.
Redis، MongoDB یا RabbitMQ را از سرویسهای موجود انتخاب کنید.
منابع موردنیاز را مشخص کنید.
سرویس را ایجاد کنید.
اطلاعات اتصال را دریافت کنید.
سرویس را به برنامه خود متصل کنید.
اطلاعات اتصال بسته به سرویس میتواند شامل Host، Port، Username، Password و Connection String باشد.
نکته امنیتی: اطلاعات واقعی ورود به سرویس را داخل کد، Git یا محتوای عمومی قرار ندهید. بهتر است Connection String و رمز عبور را در Environment Variable نگهداری کنید.
ویدیوی آموزش سریع راهاندازی
ویدیوی آموزشی ۶۰ ثانیهای: راهاندازی Redis، MongoDB و RabbitMQ در پنل آرانیک
در این بخش میتوان ویدیویی کوتاه از فرایند انتخاب سرویس، تعیین منابع، ایجاد سرویس و دریافت اطلاعات اتصال قرار داد.
[محل قرارگیری Embed ویدیوی آموزشی آرانیک]
اتصال Redis به Node.js
برای اتصال Node.js به Redis میتوانید از کتابخانه ioredis استفاده کنید.
ابتدا پکیج را نصب کنید:
npm install ioredis
سپس اتصال را ایجاد کنید:
const Redis = require(“ioredis”);
const redis = new Redis(process.env.REDIS_URL);
async function testRedis() {
try {
await redis.set(“status”, “Aranik Cloud Redis Active”);
const value = await redis.get(“status”);
console.log(“Redis:”, value);
} catch (error) {
console.error(“Redis connection error:”, error);
} finally {
await redis.quit();
}
}
testRedis();
Connection String را میتوانید در Environment Variable قرار دهید:
REDIS_URL=redis://:YOUR_PASSWORD@YOUR_HOST:6379
مقادیر واقعی Host و Password را از پنل سرویس خود دریافت کنید.
اتصال MongoDB به Node.js
برای اتصال Node.js به MongoDB میتوانید از MongoDB Driver استفاده کنید.
ابتدا پکیج را نصب کنید:
npm install mongodb
نمونه اتصال:
const { MongoClient } = require(“mongodb”);
const client = new MongoClient(process.env.MONGODB_URI);
async function testMongoDB() {
try {
await client.connect();
const db = client.db(“aranik_test”);
const collection = db.collection(“test”);
await collection.insertOne({
project: “Aranik Cloud”,
status: “active”
});
console.log(“MongoDB: connection successful”);
} catch (error) {
console.error(“MongoDB connection error:”, error);
} finally {
await client.close();
}
}
testMongoDB();
در Environment Variable:
MONGODB_URI=mongodb://USERNAME:PASSWORD@YOUR_HOST:27017/YOUR_DATABASE
اتصال RabbitMQ به Node.js
برای اتصال Node.js به RabbitMQ میتوانید از پکیج amqplib استفاده کنید.
ابتدا:
npm install amqplib
سپس اتصال را تست کنید:
const amqp = require(“amqplib”);
async function testRabbitMQ() {
try {
const connection = await amqp.connect(
process.env.RABBITMQ_URL
);
const channel = await connection.createChannel();
await channel.assertQueue(“aranik_queue”);
console.log(“RabbitMQ: connection successful”);
await connection.close();
} catch (error) {
console.error(“RabbitMQ connection error:”, error);
}
}
testRabbitMQ();
Connection String:
RABBITMQ_URL=amqp://USERNAME:PASSWORD@YOUR_HOST:5672
اتصال Redis به Python
برای اتصال Python به Redis از کتابخانه redis استفاده کنید:
pip install redis
نمونه کد:
import os
import redis
r = redis.from_url(
os.getenv(“REDIS_URL”)
)
r.set(“status”, “Aranik Cloud Redis Active”)
value = r.get("status")
print(“Redis:”, value.decode(“utf-8”))
اتصال MongoDB به Python
برای MongoDB میتوانید از PyMongo استفاده کنید:
pip install pymongo
نمونه اتصال:
import os
from pymongo import MongoClient
client = MongoClient(
os.getenv(“MONGODB_URI”)
)
db = client["aranik_test"]
result = db["test"].insert_one({
“project”: “Aranik Cloud”,
“status”: “active”
})
print(“MongoDB Document ID:”, result.inserted_id)
اتصال RabbitMQ به Python
برای اتصال Python به RabbitMQ از کتابخانه pika استفاده کنید:
pip install pika
نمونه کد:
import os
import pika
parameters = pika.URLParameters(
os.getenv(“RABBITMQ_URL”)
)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(
queue="aranik_python_queue"
)
print(“RabbitMQ: connection successful”)
connection.close()
تست سرعت Redis با Benchmark
برای بررسی عملکرد Redis میتوان از ابزار redis-benchmark استفاده کرد.
برای مثال:
redis-benchmark -h YOUR_HOST -p 6379 -n 10000 -c 50
در این دستور:
-h آدرس Redis را مشخص میکند.
-p پورت سرویس را مشخص میکند.
-n تعداد درخواستها را تعیین میکند.
-c تعداد Connectionهای همزمان را مشخص میکند.
خروجی Benchmark میتواند اطلاعاتی مانند تعداد درخواست در ثانیه و Latency را نمایش دهد.
توجه: عملکرد Redis به منابع انتخابشده، فاصله شبکه، تعداد Connectionها، نوع عملیات و شرایط اجرای تست بستگی دارد. بنابراین نباید یک عدد ثابت مانند «۱۲۸ هزار درخواست در ثانیه» یا «Latency زیر یک میلیثانیه» را بهعنوان عملکرد تضمینشده برای همه کاربران معرفی کرد.
تست RabbitMQ
برای RabbitMQ علاوه بر بررسی برقراری Connection، میتوان ارسال و دریافت پیام را نیز آزمایش کرد.
یک جریان ساده به شکل زیر است:
Producer
↓
Exchange
↓
Queue
↓
Consumer
Producer پیام را ارسال میکند، RabbitMQ آن را در Queue قرار میدهد و Consumer پیام را دریافت و پردازش میکند.
برای مثال میتوانید یک Queue آزمایشی ایجاد کنید و یک پیام ساده در آن قرار دهید:
await channel.assertQueue(“test_queue”);
channel.sendToQueue(
“test_queue”,
Buffer.from(“Hello from Aranik”)
);
در محیط Production باید مواردی مانند Acknowledgement، Retry، Dead Letter Queue و مدیریت خطا نیز متناسب با معماری پروژه در نظر گرفته شوند.
نکات امنیتی مهم
استفاده از سرویسهای دیتابیس و Message Broker بدون تنظیمات امنیتی مناسب میتواند ریسک ایجاد کند.
برای امنیت بیشتر:
از رمز عبور قوی استفاده کنید.
دسترسی شبکه را محدود کنید.
در صورت امکان IPهای مجاز را مشخص کنید.
Connection String را داخل کد عمومی قرار ندهید.
اطلاعات احراز هویت را در Environment Variable نگهداری کنید.
Credentials را در Git Commit قرار ندهید.
دسترسی کاربران و سرویسها را حداقل موردنیاز تنظیم کنید.
برای دادههای مهم، سیاست Backup مناسبی داشته باشید.
سوالات متداول
آیا میتوان Redis، MongoDB و RabbitMQ را همزمان استفاده کرد؟
بله. این سه سرویس وظایف متفاوتی دارند و میتوانند در یک معماری بهصورت همزمان استفاده شوند. برای مثال MongoDB برای ذخیره دادههای اصلی، Redis برای Cache و RabbitMQ برای پردازشهای ناهمگام استفاده میشود.
آیا امکان راهاندازی هر سه سرویس در آرانیک وجود دارد؟
در صورت ارائه این سرویسها در پنل آرانیک، میتوان آنها را بهصورت مستقل ایجاد کرد و سپس هر سرویس را به برنامه موردنظر متصل کرد.
Redis برای چه کاری مناسبتر است؟
Redis بیشتر برای Cache، Session، دادههای موقت، Pub/Sub و برخی سناریوهای پردازش سریع استفاده میشود.
MongoDB برای چه پروژههایی مناسب است؟
MongoDB برای پروژههایی با دادههای Document-oriented و ساختار انعطافپذیر، مانند APIها، اپلیکیشنهای وب و پروژههای SaaS، کاربرد دارد.
RabbitMQ چه مشکلی را حل میکند؟
RabbitMQ ارتباط بین سرویسها و پردازشهای ناهمگام را مدیریت میکند. به کمک Queue میتوان عملیات زمانبر را از مسیر اصلی درخواست جدا کرد و در پسزمینه پردازش کرد.
آیا میتوان از Node.js و Python به این سرویسها متصل شد؟
بله. برای هر سه سرویس کتابخانههای مختلفی در Node.js و Python وجود دارد و میتوان از آنها برای برقراری Connection و انجام عملیات استفاده کرد.
نکات کلیدی
Redis برای Cache و عملیات سریع مناسب است.
MongoDB برای ذخیره Documentهای NoSQL استفاده میشود.
RabbitMQ برای Queue و پردازشهای ناهمگام کاربرد دارد.
این سه سرویس میتوانند در یک معماری مدرن کنار یکدیگر استفاده شوند.
Node.js و Python هر دو امکان اتصال به این سرویسها را دارند.
Benchmark باید در شرایط واقعی پروژه انجام شود.
اطلاعات حساس اتصال باید خارج از کد و در Environment Variable نگهداری شوند.
راهاندازی اولین سرویس ابری در آرانیک
اگر پروژه شما به Cache، دیتابیس NoSQL یا Message Queue نیاز دارد، میتوانید سرویس موردنظر خود را در آرانیک ایجاد کرده و پس از دریافت اطلاعات اتصال، آن را به برنامه خود متصل کنید.
اولین سرویس ابری خود را در آرانیک راهاندازی کنید و زیرساخت موردنیاز پروژه را سریعتر در اختیار داشته باشید.
پرسشهای متداول
آیا Redis جای پایگاه داده اصلی را میگیرد؟
در بیشتر پروژهها Redis برای Cache، Session یا داده سریع استفاده میشود و جایگزین عمومی پایگاه داده اصلی نیست.
MongoDB و RabbitMQ چه تفاوتی دارند؟
MongoDB پایگاه داده سندی است؛ RabbitMQ پیامها را میان تولیدکننده و مصرفکننده صفبندی و مسیریابی میکند.
چطور اتصال این سرویسها را امن کنیم؟
دسترسی شبکه را محدود، احراز هویت و TLS را فعال و Secretها را خارج از Repository نگهداری کنید.
منابع رسمی
قدم بعدی: برای راهاندازی سرویس مرتبط، وارد داشبورد آرانیک شوید و از بخش Easy Install سرویس را بسازید.
سوالات متداول
آیا Redis جای پایگاه داده اصلی را میگیرد؟
در بیشتر پروژهها Redis برای Cache، Session یا داده سریع استفاده میشود و جایگزین عمومی پایگاه داده اصلی نیست.
MongoDB و RabbitMQ چه تفاوتی دارند؟
MongoDB پایگاه داده سندی است؛ RabbitMQ پیامها را میان تولیدکننده و مصرفکننده صفبندی و مسیریابی میکند.
چطور اتصال این سرویسها را امن کنیم؟
دسترسی شبکه را محدود، احراز هویت و TLS را فعال و Secretها را خارج از Repository نگهداری کنید.
نظرات کاربران