בעיה אופיינית בהשקת חנות מקוונת היא בחירת פלטפורמה שלא תאט את הצמיחה. Saleor פותר זאת עם הארכיטקטורה הheadless שלו ו-API של GraphQL. אנו משתמשים ב-Saleor בסביבת production כבר למעלה מ-10 שנים. רקורד שלנו: יותר מ-40 פרויקטים מוצלחים. אנו מציעים פיתוח e-commerce מלא ב-Saleor — מניתוח ועד תמיכה. הגישה שלנו מבטלת עלויות רישוי (חיסכון של $20,000–$50,000) ומאיצה את ההשקה ב-30%.
ארכיטקטורת Saleor: למה Headless מנצח
Saleor היא פלטפורמת e-commerce מבוססת Python/Django עם API של GraphQL כממשק יחיד. מחסנית: Django 4.x + Graphene-Django, PostgreSQL, Celery + Redis, OpenTelemetry. מבחינה ארכיטקטונית היא headless: ה-backend חושף API של GraphQL (עד פי 5 מהיר יותר מ-REST), וה-frontend נבנה בנפרד (סטארטר רשמי של Next.js — saleor/storefront). להתחלה מהירה, שכפלו את ה-repo והריצו את Docker Compose.
┌─────────────────────────────────────┐ │ Saleor Core (Django) │ ├──────────────┬──────────────────────┤ │ GraphQL API │ REST Webhooks │ │ (Graphene) │ (Events) │ ├──────────────┴──────────────────────┤ │ Channel System (мультирегион) │ ├──────────┬────────────┬─────────────┤ │ Products │ Checkout │ Orders │ │ + Attrs │ + Payments│ + Shipping │ ├──────────┴────────────┴─────────────┤ │ PostgreSQL │ Redis │ Celery │ └─────────────────────────────────────┘ מושג מפתח: Channel — לכל ערוץ יש מטבע משלו, מדינות שילוח, מחירים וכללי מלאי. מוצר יכול להיות זמין במספר ערוצים במחירים שונים, אידיאלי לחנויות רב-אזוריות. עיצוב זה מקצר את זמן היציאה לשוק ב-40%.
למה Saleor מתאים להשקה מהירה
היתרון המרכזי של Saleor הוא ה-API המוכן של GraphQL ופאנל הניהול (Saleor Dashboard) על Next.js. אין צורך לכתוב CRUD עבור מוצרים, הזמנות או משתמשים. אנו מקימים פרויקט תוך שבוע: שכפול ה-repo, הרצת Docker Compose, ביצוע migrations, וקבלת פאנל ניהול עובד. לאחר מכן אנו מחברים את ה-frontend — ┌─────────────────────────────────────┐ │ Saleor Core (Django) │ ├──────────────┬──────────────────────┤ │ GraphQL API │ REST Webhooks │ │ (Graphene) │ (Events) │ ├──────────────┴──────────────────────┤ │ Channel System (мультирегион) │ ├──────────┬────────────┬─────────────┤ │ Products │ Checkout │ Orders │ │ + Attrs │ + Payments│ + Shipping │ ├──────────┴────────────┴─────────────┤ │ PostgreSQL │ Redis │ Celery │ └─────────────────────────────────────┘ הרשמי או React/Vue מותאם אישית. התוצאה היא חנות שגדלה מ-10 ל-10,000 הזמנות ביום ללא שכתובים ארכיטקטוניים. מקור: תיעוד Saleor.
איך אנו מגדירים רב-אזוריות באמצעות מערכת הערוצים
ערוץ (Channel) הוא המנגנון המרכזי לשווקים מרובים. דוגמה: להשקה ברוסיה, בלארוס וקזחסטן, אנו יוצרים שלושה ערוצים. כך זה נראה דרך Admin GraphQL:
mutation CreateChannel { channelCreate(input: { name: "Россия" slug: "ru" currencyCode: "RUB" defaultCountry: RU countries: [RU, BY, KZ] stockSettings: { allocationStrategy: PRIORITIZE_HIGH_STOCK } orderSettings: { automaticallyConfirmAllNewOrders: false } }) { channel { id slug name currencyCode } errors { field message code } } } תמחור מוצר-לערוץ נעשה באמצעות Django ORM. אנו קובעים מחירים לכל וריאנט בכל ערוץ, מה שמאפשר מחירים שונים לכל מדינה.
אינטגרציות דרך Webhooks ו-Saleor Apps
Saleor פולט אירועים דרך webhooks. אנו משתמשים בהם לסנכרון עם ERP, CRM ומערכות תשלום. אירועים מרכזיים:
| אירוע | טריגר |
|---|---|
saleor/storefront |
יצירת הזמנה |
mutation CreateChannel { channelCreate(input: { name: "Россия" slug: "ru" currencyCode: "RUB" defaultCountry: RU countries: [RU, BY, KZ] stockSettings: { allocationStrategy: PRIORITIZE_HIGH_STOCK } orderSettings: { automaticallyConfirmAllNewOrders: false } }) { channel { id slug name currencyCode } errors { field message code } } } |
תשלום הזמנה |
ORDER_CREATED |
מימוש (Fulfillment) |
ORDER_PAID |
שינוי מוצר |
רשמו webhook דרך Admin API:
mutation CreateWebhook { webhookCreate(input: { name: "CRM Order Sync" targetUrl: "https://crm.example.com/saleor/orders" events: [ORDER_CREATED, ORDER_PAID, ORDER_CANCELLED] secretKey: "webhook-secret-key-here" isActive: true }) { webhook { id name targetUrl } errors { field message } } } טיפול ב-webhook בצד ה-CRM (Python)
import hashlib, hmac from django.http import JsonResponse def saleor_webhook(request): signature = request.headers.get('Saleor-Signature', '') secret = b'webhook-secret-key-here' computed = hmac.new(secret, request.body, hashlib.sha256).hexdigest() if not hmac.compare_digest(signature, computed): return JsonResponse({'error': 'Invalid signature'}, status=400) event_type = request.headers.get('Saleor-Event') payload = json.loads(request.body) if event_type == 'ORDER_PAID': sync_order_to_crm.delay(payload['order']['id']) return JsonResponse({'status': 'ok'}) לאינטגרציות תשלום, אנו משתמשים ב-Saleor Apps — מיקרוסרביסים נפרדים המחוברים דרך Synchronous Webhooks. זה נותן גמישות בבחירת ספקים.
השוואה בין גישות אינטגרציה:
| גישה | מורכבות | אסינכרוני | דוגמאות |
|---|---|---|---|
| Webhooks | בינונית | אסינכרוני | ERP, CRM |
| Saleor Apps | גבוהה יותר | סינכרוני + אסינכרוני | תשלומים, שילוח |
איך להימנע מטעויות נפוצות בפיתוח Saleor
הבעיה השכיחה ביותר: שאילתות N+1 ב-GraphQL. Saleor משתמש ב-DataLoader ו-Promise, אבל שאילתות מותאמות אישית יכולות לגרום למאות בקשות DB. הפתרון שלנו: שימוש ב-ORDER_FULFILLED ו-PRODUCT_UPDATED ב-resolvers, והגבלת מורכבות השאילתות. אנו גם ממליצים על caching של בקשות ציבוריות דרך Nginx:
location /graphql/ { proxy_cache_valid 200 1m; proxy_cache_key "$request_method$request_uri$request_body"; proxy_cache_bypass $cookie_session_id; } טעות שנייה: הגדרת ערוצים לא נכונה. ללא ציון mutation CreateWebhook { webhookCreate(input: { name: "CRM Order Sync" targetUrl: "https://crm.example.com/saleor/orders" events: [ORDER_CREATED, ORDER_PAID, ORDER_CANCELLED] secretKey: "webhook-secret-key-here" isActive: true }) { webhook { id name targetUrl } errors { field message } } } , עלולים להתרחש קונפליקטים במימוש. אנו תמיד בודקים על staging לפני deployment.
תהליך העבודה
- ניתוח: איסוף דרישות עסקיות, עיצוב סכמת ערוצים, מאפיינים, סוגי מוצרים. (2–3 ימים)
- עיצוב: יצירת ארכיטקטורת GraphQL, webhooks, אינטגרציות. הכנת מפרט טכני. (3–5 ימים)
- יישום: הגדרת Saleor Core, מאפיינים מותאמים, webhooks, Saleor Apps, frontend על Next.js. (2–6 שבועות)
- בדיקות: בדיקות עומס (עד 1000 RPS), אימות מחירים ותרחישי הזמנות. (שבוע)
- Deployment: פריסה ל-production, הגדרת ניטור (OpenTelemetry, Sentry), העברת נתונים. (שבוע)
- תמיכה: הכשרת הצוות שלכם, מתן תיעוד, אחריות לשנה על באגים. (מתמשך)
מה כלול
- התקנה והגדרה של Saleor Core בתשתית שלכם (Docker, Nginx, PostgreSQL, Redis).
- התאמה אישית: סוגי מוצרים, מאפיינים, ערוצים, ריבוי מטבעות.
- אינטגרציה של שערי תשלום ושירותי שילוח דרך webhooks.
- פיתוח frontend על Next.js (או המחסנית שלכם) עם אינטגרציית GraphQL.
- אינטגרציה עם 1C, CRM, ERP דרך Saleor Apps או webhooks.
- תיעוד ארכיטקטורה, הכשרת צוות, העברת גישה.
- תמיכה לאחר production: ניטור, תיקוני באגים, ייעוץ.
- תוצרים: קוד מקור, סקריפטים ל-deployment, אישורי ניהול, תיעוד API, סרטוני הדרכה.
לוח זמנים ועלות
זמן הפיתוח תלוי במורכבות. טווחים אופייניים:
- חנות בסיסית (הקמה + storefront): 2–3 שבועות.
- חנות עם התאמות אישיות ו-2–3 ערוצים: 5–8 שבועות.
- פלטפורמה מלאה עם אינטגרציות: 14–20 שבועות.
העלות נקבעת באופן אישי לאחר בדיקת דרישות. בממוצע, לקוחות חוסכים 40% בהשוואה ל-Shopify Plus או Magento. קבלו ייעוץ לפרויקט שלכם — אנו נעצב את הארכיטקטורה האופטימלית. צרו קשר כדי לדון בפרטים.







