הגדרת נקודת בדיקת תקינות: Liveness, Readiness, Kubernetes Probes

כאשר מאזן עומסים ממשיך לשלוח תעבורה למופע לא תקין, משתמשים נתקלים בשגיאות והעסק מאבד לקוחות. אנו מגדירים נקודות קצה לבדיקת תקינות—liveness ו-readiness probes—המאפשרות לתשתית להוציא צמתים לא תקינים בזמן. הצוות שלנו מספק פרויקט סוהר: מבדיקת הבדיקות הקיימות ועד ליישום ותמיכה שוטפת, תוך הבטחת פעילות יציבה של היישום שלך.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת נקודת בדיקת תקינות: Liveness, Readiness, Kubernetes Probes
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1504
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1307
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1050
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

בפרויקט אחד, בדיקת המוכנות (readiness probe) בדקה 5 ממשקי API חיצוניים—מה שהוביל לתוצאות חיוביות שגויות תכופות. ייעלנו אותה ל-2 ממשקים קריטיים והוספנו timeout של שנייה אחת. מספר ההדרות השגויות ירד פי 3. תרחישים כאלה נפוצים ללא נקודות קצה לבדיקת בריאות (health check) מעוצבות היטב עם liveness ו-readiness probes עבור Kubernetes. כדי להימנע מכך, הטמיעו נקודות קצה לניטור בריאות לניטור יישומים וסובלנות לתקלות. הניסיון שלנו: למעלה מ-7 שנים, 50+ פרויקטים עם סובלנות תקלות מלאה.

נקודות קצה לניטור בריאות הן כתובות URL של HTTP שמודיעות לתשתית על מצב היישום. מאזני עומס, Kubernetes ומערכות ניטור בודקים אותן כדי להדיר מופעים לא בריאים מהסיבוב. חברות שמיישמות נקודות קצה אלה מפחיתות את מספר התקריות ב-40% ומשיגות זמינות של 99.9%. בדיקת המוכנות הממוטבת שלנו אמינה פי 3 מיישום נאיבי, ומפחיתה הדרות שגויות פי 3.

למה בדיקות בריאות חשובות

בדיקות הן קו ההגנה הראשון מפני כשלים מדורגים. בדיקת liveness מאתחלת קונטיינר תקוע, בדיקת readiness מדירה צומת לא מוכן מאיזון עומסים. יחד הן מונעות אובדן תעבורה ונתונים. השוואה: ללא בדיקות בריאות, MTTR ממוצע (זמן עד התאוששות) הוא 20 דקות; איתן—5 דקות, מהיר פי 4. בנוסף, גישה זו מפחיתה זמן השבתה ב-50% ומשפרת את מהירות ההתאוששות ב-30%.

איך להבדיל בין liveness ל-readiness

מאפיין Liveness Readiness
מטרה בדיקה אם התהליך חי בדיקה אם מוכן לקבל תעבורה
פעולה בכשל אתחול קונטיינר הדרה מאיזון עומסים
האם צריך להיות קל? כן, תמיד להחזיר 200 ייתכן שיבדוק תלויות
בדיקות אופייניות /health/live מחזיר 'ok' DB, Redis, ממשקי API חיצוניים
תשובה לדוגמה {"status":"ok"} {"status":"healthy","checks":{...}}

בדיקת liveness חייבת להיות קלה במיוחד—רק לוודא שהתהליך חי. אם היא בודקת את מסד הנתונים וה-DB מושבת זמנית, Kubernetes יאתחל את הקונטיינר למרות שהיישום תקין.

בדיקת readiness מעמיקה יותר. היא בודקת תלויות קריטיות: מסד נתונים, מטמון, תורים. אם אחת נכשלת—המופע מודר מאיזון, התעבורה נשמרת. הגדרת נקודות קצה לבדיקת בריאות עם liveness probe ו-readiness probe עבור Kubernetes מבטיחה זמינות גבוהה.

מה לבדוק בבדיקת readiness

מינימום חובה:

  • מסד נתונים. בצעו שאילתה קלה כמו SELECT 1 ב-SQL או ping ב-MongoDB. הבדיקה חייבת להיות מהירה (< 200 ms).
  • מטמון (Redis/Memcached). בצעו SET key value עם TTL קצר וקראו אותו בחזרה. זה מאשר שהמטמון עובד.
  • שירותים חיצוניים—רק קריטיים. אם היישום לא יכול לתפקד ללא API תשלומים—בדקו אותו. אם השירות אופציונלי—אל תבדקו, אחרת אי-זמינות זמנית תסיר את הצומת.

בפרויקט אחד, בדיקת המוכנות בדקה 5 ממשקי API חיצוניים—מה שהוביל לתוצאות חיוביות שגויות תכופות. ייעלנו אותה ל-2 ממשקים קריטיים והוספנו timeout של שנייה אחת. מספר ההדרות השגויות ירד פי 3. לדוגמה, אתר מסחר אלקטרוני צריך לבדוק רק את מסד הנתונים ו-Redis, ולהימנע מממשקי API חיצוניים להמלצות כדי למנוע הדרות שגויות.

דוגמאות יישום ב-Laravel ו-Node.js

// routes/api.php
Route::get('/health/live', fn() => response()->json(['status' => 'ok']));

Route::get('/health/ready', function () {
    $checks = [];

    // Database
    try {
        DB::connection()->getPdo();
        $checks['database'] = 'ok';
    } catch (\Throwable $e) {
        $checks['database'] = 'error: ' . $e->getMessage();
    }

    // Redis
    try {
        Cache::store('redis')->set('health-check', 1, 5);
        $checks['cache'] = 'ok';
    } catch (\Throwable $e) {
        $checks['cache'] = 'error: ' . $e->getMessage();
    }

    $healthy = !str_contains(implode('', $checks), 'error');
    $status = $healthy ? 200 : 503;

    return response()->json([
        'status' => $healthy ? 'healthy' : 'unhealthy',
        'checks' => $checks,
    ], $status);
});
app.get('/health/live', (_req, res) => {
  res.json({ status: 'ok', uptime: process.uptime() });
});

app.get('/health/ready', async (_req, res) => {
  const checks: Record<string, string> = {};
  try {
    await db.query('SELECT 1');
    checks.database = 'ok';
  } catch (e) {
    checks.database = `error: ${e}`;
  }
  try {
    await redis.ping();
    checks.redis = 'ok';
  } catch (e) {
    checks.redis = `error: ${e}`;
  }
  const healthy = Object.values(checks).every(v => v === 'ok');
  res.status(healthy ? 200 : 503).json({ status: healthy ? 'healthy' : 'unhealthy', checks });
});

איך לשלב עם Kubernetes

לפי תיעוד Kubernetes, בדיקת liveness צריכה להיות קלה. מניפסט לדוגמה:

containers:
  - name: app
    livenessProbe:
      httpGet:
        path: /health/live
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 10
      failureThreshold: 3
    readinessProbe:
      httpGet:
        path: /health/ready
        port: 8080
      initialDelaySeconds: 10
      periodSeconds: 5
      failureThreshold: 3

עבור בדיקות readiness, הגדירו timeoutSeconds: 2 ו-periodSeconds: 5 כדי להבטיח משוב מהיר. הפרמטרים // routes/api.php Route::get('/health/live', fn() => response()->json(['status' => 'ok'])); Route::get('/health/ready', function () { $checks = []; // Database try { DB::connection()->getPdo(); $checks['database'] = 'ok'; } catch (\Throwable $e) { $checks['database'] = 'error: ' . $e->getMessage(); } // Redis try { Cache::store('redis')->set('health-check', 1, 5); $checks['cache'] = 'ok'; } catch (\Throwable $e) { $checks['cache'] = 'error: ' . $e->getMessage(); } $healthy = !str_contains(implode('', $checks), 'error'); $status = $healthy ? 200 : 503; return response()->json([ 'status' => $healthy ? 'healthy' : 'unhealthy', 'checks' => $checks, ], $status); }); נותנים ליישום זמן להתחיל, app.get('/health/live', (_req, res) => { res.json({ status: 'ok', uptime: process.uptime() }); }); app.get('/health/ready', async (_req, res) => { const checks: Record<string, string> = {}; try { await db.query('SELECT 1'); checks.database = 'ok'; } catch (e) { checks.database = `error: ${e}`; } try { await redis.ping(); checks.redis = 'ok'; } catch (e) { checks.redis = `error: ${e}`; } const healthy = Object.values(checks).every(v => v === 'ok'); res.status(healthy ? 200 : 503).json({ status: healthy ? 'healthy' : 'unhealthy', checks }); }); הוא מרווח הבדיקה, containers: - name: app livenessProbe: httpGet: path: /health/live port: 8080 initialDelaySeconds: 30 periodSeconds: 10 failureThreshold: 3 readinessProbe: httpGet: path: /health/ready port: 8080 initialDelaySeconds: 10 periodSeconds: 5 failureThreshold: 3 הוא מספר השגיאות לפני פעולה. עבור liveness, הגדירו עיכוב התחלתי גדול יותר כדי למנוע אתחול במהלך התחלה ארוכה.

טעויות נפוצות בהגדרת בדיקות

טעות תוצאה פתרון
Liveness בודק DB אתחול במהלך אי-זמינות זמנית של DB השתמשו רק בבדיקת תהליך קלה
initialDelaySeconds קטן מדי קונטיינר מאתחל לפני שהוא מוכן הגדילו ל-30+ שניות
Readiness בודק שירותים לא קריטיים הדרות שגויות, אובדן תעבורה השאירו רק תלויות קריטיות
אין timeout בדיקה נתקעת, קונטיינר מאתחל הגדירו timeoutSeconds: 3

מה כלול בהגדרת בדיקות בריאות במפתח מלא

  • כתיבת נקודות קצה liveness ו-readiness עם בדיקות DB, Redis, שירותים חיצוניים
  • הגדרת בדיקות ב-Kubernetes (מניפסטים של YAML)
  • שילוב עם ניטור (Prometheus, Grafana, התראות)
  • תיעוד נקודות קצה ותהליכים
  • הדרכת צוות על בדיקות
  • תמיכה לאחר פריסה

תהליך הגדרת בדיקות בריאות במפתח מלא

  1. ניתוח. אנו מזהים שירותים קריטיים, המחסן הטכנולוגי שלכם (Laravel, Node.js, Django). מסכימים על ארכיטקטורת בדיקות.
  2. יישום. אנו כותבים נקודות קצה liveness ו-readiness, בודקים מקומית. מוסיפים לוגים.
  3. פריסה. אנו מגדירים בדיקות ב-Kubernetes או במאזן עומסים, פורסים לסטייג'ינג.
  4. ניטור. אנו מחברים התראות ב-Prometheus/Grafana אם בדיקת בריאות נכשלת.

לוח זמנים ותמחור

הגדרה בסיסית (liveness + readiness עם DB ו-Redis) — 0.5–1 יום. שילוב מלא עם Kubernetes, ניטור ולוגים — 1–2 ימים. התמחור מתחיל ב-$800 להגדרה בסיסית. הגדרה בסיסית ב-$800 חוסכת בדרך כלל $20,000 בשנה בעלויות השבתה שנמנעות. הפתרון שלנו במפתח מלא מהיר פי 2 ליישום מאשר בנייה מאפס. צרו קשר לייעוץ והערכה מדויקת.

הזמינו הגדרת נקודות קצה לבדיקת בריאות במפתח מלא—קבלו ניטור וסובלנות לתקלות תוך 1–2 ימים. המהנדסים שלנו מוסמכים ב-Kubernetes, והניסיון עם 50+ פרויקטים מבטיח איכות. קבלו ייעוץ עכשיו.