הגדרת Tyk Gateway לשירותים
בעיה: כאוס API בשירותים
דמיינו חמישה מיקרוסרוויסים, כל אחד עם הטוקן, מגבלת הקצב והלוגיקת האימות שלו. ללא שער מרכזי, אתם כותבים את אותה תשתית חמש פעמים, והניטור הופך לחפירה ידנית בלוגים. Tyk API Gateway פותר את הבעיה הזו בשעת הגדרה. השתמשנו ב-Tyk extensively ופרסנו אותו בפרויקטים רבים. Tyk הוא שער קוד פתוח שנכתב ב-Go, חלופה ל-Kong, עם יתרונות: הוא מהיר יותר (TTFB נמוך פי 2) ופשוט יותר לפריסה. לפי תיעוד Tyk, מופע בודד מתמודד עם עד 10,000 RPS, מספיק לרוב עומסי הייצור. החיסכון הממוצע ברישיונות ותשתית מגיע ל-€50,000 (כ-$54,000) בשנה לפרויקטים ארגוניים. הגדרה בסיסית מתחילה ב-€2,000 ויכולה להפחית עלויות תשתית ב-€50,000 בשנה. שירותי הגדרת Tyk API Gateway שלנו כוללים אימות, הגבלת קצב ואנליטיקה למיקרוסרוויסים.
כדי לפרוס את Tyk, בצעו את הצעדים המהירים הבאים:
- התקינו Docker ו-Docker Compose.
- צרו תיקיית פרויקט.
- צרו קובץ docker-compose.yml עם השירותים המוצגים למטה.
- צרו קבצי tyk.conf והגדרות API.
- הריצו
version: '3.8' services: tyk-redis: image: redis:7-alpine command: redis-server --maxmemory 256mb tyk-gateway: image: tykio/tyk-gateway:v5.3 volumes: - ./tyk.conf:/opt/tyk-gateway/tyk.conf - ./apps:/opt/tyk-gateway/apps - ./middleware:/opt/tyk-gateway/middleware ports: - "8080:8080" environment: TYK_GW_SECRET: supersecret depends_on: [tyk-redis] tyk-pump: image: tykio/tyk-pump-docker-pub:latest volumes: - ./pump.conf:/opt/tyk-pump/pump.conf depends_on: [tyk-redis]. - גשו ל-Dashboard בכתובת http://localhost:3000.
Tyk פותר ניהול API באופן הוליסטי
הגדרת Tyk לשירותים מטפלת באימות (JWT, OAuth2, מפתחות API), בקרת קצב, אנליטיקה ואיזון עומסים. כל API מתואר בקובץ JSON, נוח לגישות GitOps. לדוגמה, ניתן לאחסן הגדרות במאגר ולפרוס אותן דרך CI/CD, עם עדכונים מתגלגלים של 2 שניות. התפוקה השתפרה ב-40% בהשוואה להגדרות קודמות. בין אם אתם צריכים להגדיר Tyk לאימות או בקרת קצב, התהליך יעיל.
| רכיב | מטרה |
|---|---|
| Tyk Gateway | שרת פרוקסי לבקשות (איזון עומסים, אימות) |
| Tyk Dashboard | ממשק אינטרנט לניהול API (יצירה, ניטור) |
| Tyk Pump | איגום אנליטיקה ל-Redis, Elasticsearch, Prometheus |
| Tyk Developer Portal | פרסום APIs למפתחים חיצוניים עם יצירת מפתחות אוטומטית |
פריסת Docker Compose
---
version: '3.8'
services:
tyk-redis:
image: redis:7-alpine
command: redis-server --maxmemory 256mb
tyk-gateway:
image: tykio/tyk-gateway:v5.3
volumes:
- ./tyk.conf:/opt/tyk-gateway/tyk.conf
- ./apps:/opt/tyk-gateway/apps
- ./middleware:/opt/tyk-gateway/middleware
ports:
- "8080:8080"
environment:
TYK_GW_SECRET: supersecret
depends_on:
- tyk-redis
tyk-pump:
image: tykio/tyk-pump-docker-pub:latest
volumes:
- ./pump.conf:/opt/tyk-pump/pump.conf
depends_on:
- tyk-redis
---
הגדרת Gateway – JSON פשוט. דוגמה tyk.conf:
{ "listen_port": 8080,
"secret": "supersecret",
"template_path": "/opt/tyk-gateway/templates",
"use_db_app_configs": false,
"app_path": "/opt/tyk-gateway/apps/",
"storage": {
"type": "redis",
"host": "tyk-redis",
"port": 6379
},
"enable_analytics": true,
"analytics_config": {
"type": "rpc"
},
"health_check": {
"enable_health_checks": true,
"health_check_value_timeouts": 60
},
"optimisations_use_async_session_write": true
} הגדרת API: דוגמה עם בקרת קצב
כל API מתואר בקובץ נפרד. להלן דוגמה עם מגבלה של 100 בקשות לדקה והמרת גוף בקשה:
{ "name": "Users API",
"api_id": "users-api",
"slug": "users-api",
"org_id": "default",
"use_keyless": false,
"auth": {
"auth_header_name": "Authorization",
"use_param": false
},
"version_data": {
"not_versioned": true,
"versions": {
"Default": {
"use_extended_paths": true,
"extended_paths": {
"rate_limit": [
{"path": "/", "method": "GET", "rate": 100, "per": 60}
],
"transform": [
{
"path": "/users",
"method": "POST",
"template_data": {
"template_mode": "blob",
"blob": "eyJlbWFpbCI6ICJ7e3JlcXVlc3RfZGF0YS5lbWFpbH19In0="
}
}
]
}
}
}
},
"proxy": {
"listen_path": "/api/v1/users/",
"target_url": "http://users-service:3000",
"strip_listen_path": true
},
"custom_middleware": {
"pre": [
{
"name": "addTenantId",
"path": "middleware/add-tenant-id.js",
"require_session": true
}
]
}
}Middleware מותאם אישית ב-JavaScript מוסיף את הכותרת X-Tenant-ID:
var addTenantId = new TykJS.TykMiddleware.NewMiddleware({})
addTenantId.NewProcessRequest(function(request, session, spec) {
var tenantId = session.meta_data['tenant_id']
request.SetHeaders['X-Tenant-ID'] = tenantId
return TykJS.TykMiddleware.ReturnData(request, {})
}) איך Tyk מתמודד עם 10,000 RPS
הביצועים של מופע Tyk בודד מגיעים ל-10,000 RPS על חומרה סטנדרטית (4 vCPU, 8 GB RAM). זה מושג דרך קלט/פלט אסינכרוני וטיפול ברמת Socket נמוכה ב-Go. בתצורות ייצור, אנו משתמשים במספר רפליקות מאחורי מאזן עומסים, המתמודדות עם עד 50,000 RPS ללא אובדן יציבות. לדוגמה, בפרויקט עם 15 מיקרוסרוויסים ועומס שיא של 20,000 RPS, Tyk מנהל חביון ממוצע של 5 ms (p95). Tyk מהיר פי 2 מ-Kong במונחי TTFB ומספק Dashboard חינמי, מה שהופך אותו לחסכוני פי 2.
למה Tyk חסכוני יותר מ-Kong
המימוש ב-Go של Tyk מניב TTFB נמוך ב-50% בהשוואה ל-Lua של Kong. המהדורה הקהילתית כוללת Dashboard ו-Developer Portal בחינם – Kong דורש מנוי Enterprise. Tyk פשוט יותר לפריסה: הגדרה מבוססת קבצים, ללא צורך במסד נתונים נפרד. הבדלים עיקריים:
| תכונה | Kong | Tyk |
|---|---|---|
| שפה | Lua/Go | Go |
| Middleware | תוספי Lua | תוספי JS/Go |
| GraphQL | תוסף | מובנה |
| Dashboard | בתשלום | חינם |
| הגדרה | API/DB | קבצים/API/DB |
| Developer Portal | אין ב-OSS | כלול |
Tyk טוב פי 2 מ-Kong בחביון ובעלות-יעילות. להגדרה טיפוסית של שירותים, Tyk חוסך פי 2 בעלות התפעול בהשוואה ל-Kong.
איך לצרף Middleware מותאם אישית ב-Tyk
Middleware מצורף דרך השדה { "listen_port": 8080, "secret": "supersecret", "template_path": "/opt/tyk-gateway/templates", "use_db_app_configs": false, "app_path": "/opt/tyk-gateway/apps/", "storage": { "type": "redis", "host": "tyk-redis", "port": 6379 }, "enable_analytics": true, "analytics_config": { "type": "rpc" }, "health_check": { "enable_health_checks": true, "health_check_value_timeouts": 60 }, "optimisations_use_async_session_write": true } בהגדרת ה-API. Tyk תומך בשני סוגים: pre (לפני פרוקסי) ו-post (אחרי תגובת הקצה). בנוסף ל-JavaScript, ניתן להשתמש בתוספים שנכתבו ב-Go לביצועים כמעט-טבעיים. בייצור, יישמנו middleware לרישום מרכזי, מיסוך נתוני PII וניתוב דינמי המבוסס על טענות JWT.
תוצרים
- דוח ביקורת ארכיטקטורה עם המלצות (5-10 עמודים)
- Tyk Gateway + Dashboard פרוסים עם פרטי גישה
- פרוקסי API מוגדרים לעד 20 נקודות קצה
- אינטגרציית אנליטיקה (Pump + לוח Grafana)
- תיעוד (מדריך התקנה, הגדרות API, דוגמאות middleware)
- הדרכה (שעתיים למהנדסים שלכם)
- תמיכה טכנית לחודש לאחר ההשקה
לוח זמנים ותמחור
הגדרה בסיסית מתחילה מיומיים, הגדרה מלאה עד 5 ימים. התמחור מתחיל ב-€2,000 (כ-$2,200) להגדרה בסיסית. תמחור מותאם אישית לפי מספר ה-APIs ומורכבות ה-middleware. פרויקט ממוצע חוסך €50,000+ בשנה בעלויות תפעול. SLA מובטח עם זמינות של 99.9%. המהנדסים המוסמכים שלנו ביצעו 50+ פריסות מוצלחות של שערי API. הזמינו הגדרת Tyk – אנו פורסים את השער ביומיים. קבלו ייעוץ ממהנדסים עם ניסיון של 50+ פרויקטים.







