שימו לב: כאשר מספר הקבצים המועלים עולה על כמה אלפים ביום, אחסון סטנדרטי על VPS הופך לצוואר בקבוק. נתקלנו בכך בפרויקט מסחר אלקטרוני — דף המוצר נטען ב-2+ שניות עקב קריאה איטית של תמונות. לאחר מעבר ל-Selectel Cloud Storage (אחסון אובייקטים תואם S3 מספק רוסי), LCP ירד מ-3.2 שניות ל-1.1 שניות, ומהירות טעינת הדף עלתה ב-40%. הניסיון שלנו בן עשור בטכנולוגיות ענן ולמעלה מ-50 פרויקטים מיושמים עם Selectel מבטיחים תוצאות. אחסון אובייקטים זה נמצא במרכזי נתונים בסנקט פטרבורג ובמוסקבה, עומד בדרישות 152-FZ, ומשכפל נתונים בשלושה עותקים.
למה Selectel Cloud Storage?
לפי תיעוד Selectel, השירות תואם לחלוטין ל-Amazon S3 API, ומאפשר שימוש בכל לקוח S3. הנתונים משוכפלים אוטומטית בשלושה עותקים, מה שמבטיח סובלנות לתקלות ועקביות בסופו של דבר. מאיץ ה-CDN המובנה מקצר את זמני הטעינה למשתמשים ברוסיה ובחבר העמים. והכי חשוב — אתם עומדים בדרישות 152-FZ ללא אישורים נוספים. הגדרת S3 מפורטת אינה שונה מעבודה עם Amazon S3, כך שהצוות שלכם מסתגל במהירות.
שילוב אחסון אובייקטים זה עבור רוסיה בפרויקט עובר דרך S3 API הסטנדרטי, מה שמפשט את הפיתוח.
אילו בעיות אנחנו פותרים?
- העלאה והורדה איטיות. Selectel משתמש בהאצת CDN, ומקצר את זמן התגובה פי 2–3 בהשוואה ל-FTP או VPS.
- אי-עמידה בדרישות החוק. הנתונים מאוחסנים ברוסיה; עמידה ב-152-FZ היא אוטומטית.
- קשיי קנה מידה. ארכיטקטורת S3 מאפשרת אחסון פטה-בייטים ללא השבתות.
כיצד להגדיר את Selectel Cloud Storage: שלב אחר שלב
ראשית, קבלו מפתחות גישה ל-S3: בלוח הבקרה של Selectel, עברו לקטע "משתמשים", צרו משתמש חדש, וצרו מפתחות גישה. שמרו אותם — תצטרכו אותם כדי להגדיר את היישום שלכם.
- צרו דלי (bucket) בלוח הבקרה של Selectel. בחרו אזור (ru-1 או ru-2) וסוג גישה (פרטי).
- צרו מפתחות S3 בקטע "משתמשים".
- הגדירו את היישום שלכם (Laravel, Node.js או אחרים). דוגמאות להלן.
- בדקו את נגישות הקבצים באמצעות כתובות URL חתומות מראש או כתובות URL חתומות זמניות.
| אזור | מיקום | נקודת קצה |
|---|---|---|
| ru-1 | סנקט פטרבורג | s3.ru-1.storage.selcloud.ru |
| ru-2 | מוסקבה | s3.ru-2.storage.selcloud.ru |
הגדרת Laravel (דיסק S3 של Laravel)
// config/filesystems.php
'selectel' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'ru-1'),
'bucket' => env('AWS_BUCKET'),
'endpoint' => env('AWS_ENDPOINT', 'https://s3.ru-1.storage.selcloud.ru'),
'use_path_style_endpoint' => true,
'throw' => true,
];
// Загрузка файла
$path = Storage::disk('selectel')->putFile('uploads/' . date('Y/m'), $request->file('document'));
// Временная ссылка (presigned URL)
$url = Storage::disk('selectel')->temporaryUrl($path, now()->addHour());
// Публичная ссылка (если бакет public)
$url = Storage::disk('selectel')->url($path);
Node.js עם AWS SDK v3
import { S3Client, PutObjectCommand, GetObjectCommand } from "@aws-sdk/client-s3";
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
const s3 = new S3Client({
region: "ru-1",
endpoint: "https://s3.ru-1.storage.selcloud.ru",
forcePathStyle: true,
credentials: {
accessKeyId: process.env.SELECTEL_KEY!,
secretAccessKey: process.env.SELECTEL_SECRET!,
},
});
// Загрузка
await s3.send(
new PutObjectCommand({
Bucket: "myapp-uploads",
Key: `uploads/${Date.now()}-${filename}`,
Body: fileBuffer,
ContentType: mimeType,
})
);
// Presigned URL для скачивания
const url = await getSignedUrl(
s3,
new GetObjectCommand({
Bucket: "myapp-uploads",
Key: fileKey,
}),
{ expiresIn: 3600 }
);
כיצד להגדיר CDN?
Selectel מספק CDN מובנה — פשוט הפעילו את האפשרות בלוח הבקרה והגדירו רשומת CNAME. עבור נכסים סטטיים (css, js, תמונות), זמן הטעינה יורד ב-40-60%. עבור קבצים דינמיים, השתמשו בכתובות URL חתומות מראש. ודאו שהדלי פתוח לקריאה (ציבורי) או הגדירו מדיניות דלי עם גישה ציבורית. כמו כן, הגדירו כללי CORS עבור הדלי אם אתם משתמשים בפרונטאנד.
מדיניות גישה לדלי
מדיניות דלי פועלת בדומה למדיניות IAM ב-AWS. להפצת קבצים סטטיים ציבוריים (לדוגמה, תמונות פרופיל):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadAvatars",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::myapp-uploads/avatars/*"
}
]
}החילו את המדיניות באמצעות AWS CLI עם נקודת קצה מותאמת אישית:
aws s3api put-bucket-policy --bucket myapp-uploads --policy file://bucket-policy.json --endpoint-url https://s3.ru-1.storage.selcloud.ru סנכרון וגיבוי
# Синхронизация локальной папки в Selectel
aws s3 sync ./backups/ s3://myapp-backups/database/ --endpoint-url https://s3.ru-1.storage.selcloud.ru --exclude "*.tmp"
# Копирование между бакетами (межрегиональный backup)
aws s3 sync s3://myapp-uploads s3://myapp-uploads-backup --endpoint-url https://s3.ru-1.storage.selcloud.ru --source-region ru-1 השוואה: Selectel מול אחסון VPS מסורתי
| קריטריון | Selectel Cloud Storage | VPS + NFS |
|---|---|---|
| אמינות | שכפול ב-3 עותקים | נקודת כשל יחידה |
| תפוקה | עד 10 Gbps | מוגבלת על ידי VPS |
| עמידה ב-152-FZ | כן | דורש הגדרה עצמית |
| CDN | מובנה | נפרד |
טעויות אינטגרציה נפוצות
- שגיאות CORS — אל תשכחו להגדיר כללי CORS עבור הדלי אם אתם משתמשים בפרונטאנד.
- סגנון נתיב נקודת קצה — Selectel דורש סגנון נתיב, לכן הגדירו
// config/filesystems.php 'selectel' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION', 'ru-1'), 'bucket' => env('AWS_BUCKET'), 'endpoint' => env('AWS_ENDPOINT', 'https://s3.ru-1.storage.selcloud.ru'), 'use_path_style_endpoint' => true, 'throw' => true, ]; // Загрузка файла $path = Storage::disk('selectel')->putFile('uploads/' . date('Y/m'), $request->file('document')); // Временная ссылка (presigned URL) $url = Storage::disk('selectel')->temporaryUrl($path, now()->addHour()); // Публичная ссылка (если бакет public) $url = Storage::disk('selectel')->url($path);. - גודל קובץ — עבור קבצים > 5 GB, השתמשו בהעלאה מרובת חלקים.
מה כוללת העבודה שלנו
- תיעוד של ההגדרה ופרטי הגישה.
- ביקורת על ארכיטקטורת האחסון הנוכחית שלכם.
- יצירה והגדרה של דליים, מדיניות גישה.
- אינטגרציה עם Laravel / Node.js / Python (Django) — קוד ותיעוד.
- הגדרת CDN וכתובות URL חתומות מראש.
- ארגון גיבויים אוטומטיים (תזמון, בין-אזורי).
- בדיקות עומס ואופטימיזציה של ביצועים.
- מסירת גישה והדרכת צוות.
צרו קשר לביקורת על האחסון שלכם.
לוח זמנים ועלות
שילוב אחסון אובייקטים זה בפרויקט טיפוסי אורך 1 עד 3 ימים. לוח הזמנים המדויק תלוי בנפח הנתונים ובדרישות ההעברה. העלות מחושבת באופן אישי — נעריך את הפרויקט שלכם לאחר בריף קצר. הזמינו אינטגרציה וקבלו פתרון מוכן עם תיעוד.







