פלטפורמת פיתוח פנימית עם שירות עצמי למפתחים

מפתחים מבזבזים זמן בהמתנה למהנדסי DevOps במשימות שגרתיות, והצוות נתקע בטיקטים במקום לפתח את המוצר. אנחנו בונים Internal Developer Platform עם self-service שמעניק לצוותים גישה ישירה לתשתית. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת תהליכים ועד הטמעה ותמיכה שוטפת, ומבטיח פעילות יציבה וצמיחה עם העסק.

היכולות שלנו:

שאלות נפוצות

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

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

מפתחים ממתינים למהנדס DevOps כדי ליצור namespace, לפרוס שירות, או לקבל גישה ללוגים? זהו מצב מוכר בחברות עם 20+ מפתחים. אנחנו פותרים זאת עם פלטפורמת מפתחים פנימית (IDP) — סט של הפשטות שמאפשר למפתחים לבצע משימות אלה בעצמם, ללא מעורבות של צוות DevOps בכל שלב.

התפיסה השגויה הנפוצה ביותר: "הקמנו Backstage, אז יש לנו IDP." Backstage הוא פורטל, החזית של הפלטפורמה. הפלטפורמה עצמה היא מה שמאחוריה: אוטומציה של provisioning, ניהול סודות, pipelines מתוקננים, ו-observability כברירת מחדל. הניסיון שלנו מראה ש-IDP מקצר את הזמן לפריסת שירות חדש פי 3 בהשוואה לתיאום ידני. זה פי 3 מהר יותר מגישות מסורתיות.

אילו בעיות IDP פותר?

לפרוס גרסה חדשה ל-staging? צריך להתחבר ל-GitLab, למצוא את ה-pipeline הנכון, ולהריץ אותו ידנית או לחכות ל-trigger. לבדוק לוגים? לפתוח את Grafana, לעבור ל-Loki, ולבנות שאילתת LogQL נכונה. להקים שירות חדש? לפתוח קריאה ל-DevOps, לחכות שמישהו ייצור repository, namespace ב-cluster, וינפיק סודות.

זו לא הגזמה — זה המצב האמיתי בחברות עם 20+ מפתחים שאין להן IDP. DevOps הופך לצוואר בקבוק לא בגלל ביצועים ירודים, אלא בגלל שאין ממשק מתאים בין התשתית למפתח. IDP פותר בעיות אלה על ידי מתן ממשק self-service ואוטומציה של משימות שגרתיות.

ארכיטקטורת IDP: מה באמת צריך

IDP עובד בנוי על מספר שכבות. לא חייבים ליישם את כולן בבת אחת — אבל חשוב להבין מה נכלל בו.

שכבת הפורטל

נקודת הכניסה למפתחים. Backstage הוא התקן דה-פקטו. הוא מספק: קטלוג שירותים (registry של כל השירותים עם metadata, בעלים, סטטוס פריסה), תבניות תוכנה (scaffolding לפרויקטים חדשים), TechDocs (תיעוד לצד הקוד), ומערכת אקוסיסטם של תוספים לאינטגרציות עם Kubernetes, Vault, GitHub Actions, PagerDuty, Datadog.

---
# catalog-info.yaml — регистрация сервиса в Backstage
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: payments-service
  description: Сервис обработки платежей
  annotations:
    gitlab.com/project-slug: backend/payments-service
    backstage.io/techdocs-ref: dir:.
    prometheus.io/rule: payments_service
    grafana/dashboard-selector: "payments"
spec:
  type: service
  lifecycle: production
  owner: group:payments-team
  system: billing
  dependsOn:
    - component:postgres-payments
    - component:redis-sessions
---

שכבת Provisioning

יצירת משאבי תשתית ב-self-service. שתי גישות: GitOps דרך Crossplane (משאבים מתוארים כ-Kubernetes CRDs, ו-reconciler מחיל אותם) או אוטומציה של pull-request דרך Terraform + Atlantis/Spacelift.

Crossplane נוח כשכל הצוות כבר נמצא באקוסיסטם של Kubernetes:

---
# Crossplane XRD — разработчик запрашивает базу данных
apiVersion: database.company.com/v1alpha1
kind: PostgreSQLInstance
metadata:
  name: payments-db
  namespace: payments-service
spec:
  parameters:
    storageGB: 20
    version: "15"
    environment: production
  compositionRef:
    name: postgresql-aws-rds
---

DevOps כתב Composition שפורס מופע RDS, יוצר סוד עם credentials, ומזריק אותו ל-namespace של השירות. המפתח רק מחיל את ה-YAML — אין צורך לדעת על AWS, תפקידי IAM, או קבוצות subnet.

שכבת סודות

HashiCorp Vault עם credentials דינמיים. שירותים לא מאחסנים סיסמאות סטטיות. Vault מייצר credentials תוך כדי תנועה עם TTL ומבטל אותם כשהפוד נעצר. ה-External Secrets Operator מסנכרן סודות מ-Vault ל-Kubernetes Secrets.

---
# ExternalSecret — получение credentials из Vault
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: payments-db-credentials
spec:
  refreshInterval: 1h
  secretStoreRef:
    name: vault-backend
    kind: ClusterSecretStore
  target:
    name: payments-db-credentials
    creationPolicy: Owner
  data:
    - secretKey: DB_PASSWORD
      remoteRef:
        key: secret/payments/database
        property: password

שכבת Observability

כל שירות שנוצר דרך IDP מקבל אוטומטית ServiceMonitor עבור Prometheus, דשבורד Grafana בסיסי המבוסס על תבנית הצוות, לוגים מובנים עם correlation ID ב-Loki, ו-tracing דרך OpenTelemetry.

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

איך אנחנו בונים IDP: לא Backstage מהיום הראשון

הטעות היקרה ביותר היא להתחיל בהתקנת Backstage ולבלות חודש בהגדרתו בזמן שהבעיות המרכזיות נותרות ללא פתרון.

הגישה שלנו: קודם כל, למפות את מסע המפתח. מה קורה מ-# catalog-info.yaml — регистрация сервиса в Backstage apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: payments-service description: Сервис обработки платежей annotations: gitlab.com/project-slug: backend/payments-service backstage.io/techdocs-ref: dir:. prometheus.io/rule: payments_service grafana/dashboard-selector: "payments" spec: type: service lifecycle: production owner: group:payments-team system: billing dependsOn: - component:postgres-payments - component:redis-sessions ועד שירות רץ ב-production? בכל שלב: מי מעורב, כמה זמן זה לוקח, איפה זמני ההמתנה? המפה הזו מראה היכן הפלטפורמה נחוצה ביותר.

לאחר מכן אנחנו בונים אוטומציה מלמטה למעלה: קודם מתקנים Helm charts ותבניות CI pipeline, אחר כך מוסיפים self-service provisioning לבקשות הנפוצות ביותר, ולבסוף שמים את Backstage מעל כאוטומציה שכבר עובדת.

Backstage ללא אוטומציה מתחתיו הוא רק ממשק יפה מעל כאוס.

פרויקט אמיתי: IDP לחברת פינטק

חברה עם 40 מפתחים ו-60+ מיקרוסרוויסים על Kubernetes ב-AWS EKS. צוות DevOps של 3 אנשים בילה ~60% מזמנם על בקשות "תפעוליות" ממפתחים.

שבועיים ראשונים: ביקורת. גילינו ש-70% מהבקשות היו או "צור לי namespace," "עזור עם סודות," או "למה ה-deployment שלי נכשל?" השאר היו מקרים חד-פעמיים.

חודשים 1–2: פתרון שלוש הבעיות המובילות. יצירת namespace — אוטומציה דרך repo GitOps: המפתח פותח PR עם # Crossplane XRD — разработчик запрашивает базу данных apiVersion: database.company.com/v1alpha1 kind: PostgreSQLInstance metadata: name: payments-db namespace: payments-service spec: parameters: storageGB: 20 version: "15" environment: production compositionRef: name: postgresql-aws-rds , ו-Flux/ArgoCD מחיל אותו. סודות — מעבר ל-External Secrets Operator + Vault, הסרת כל הסודות הסטטיים מ-ConfigMaps. ניפוי deployment — הוספת תוסף Kubernetes ל-Backstage, כך שמפתחים יכולים לראות סטטוס pod, אירועים אחרונים, ולוגים ישירות בפורטל.

חודש 3: הוספת תבניות תוכנה. שלוש תבניות — שירות Node.js, שירות Go, worker ב-Python. לאחר scaffolding, המפתח מקבל repository עם Dockerfile, Helm chart, # ExternalSecret — получение credentials из Vault apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: payments-db-credentials spec: refreshInterval: 1h secretStoreRef: name: vault-backend kind: ClusterSecretStore target: name: payments-db-credentials creationPolicy: Owner data: - secretKey: DB_PASSWORD remoteRef: key: secret/payments/database property: password , git commit, דשבורד Grafana בסיסי, וסט של כללי התראה ב-Prometheus.

תוצאה אחרי 3 חודשים: מספר קריאות ה-DevOps ממפתחים ירד ב-70%. זמן מרעיון ועד deployment ראשון ב-dev — מ-2-3 ימים ל-1.5 שעות. זה פי 16 פריסה מהירה יותר.

מה כלול בפרויקט

רכיב תיאור
ביקורת מיפוי מסע מפתח, ראיונות צוות, דוח עם צווארי בקבוק
ארכיטקטורת IDP בחירת מחסנית טכנולוגית, עיצוב שכבות, הגדרות תקן
תבניות CI/CD Helm charts, תבניות pipeline (GitLab CI, GitHub Actions)
Provisioning Crossplane Compositions או מודולי Terraform ל-self-service
סודות Vault + External Secrets Operator, credentials דינמיים
Observability ServiceMonitor, דשבורדים של Grafana, Loki, OpenTelemetry
פורטל Backstage: קטלוג שירותים, תבניות תוכנה, TechDocs
תיעוד והדרכה Runbook, סדנאות למפתחים

השוואת גישות: Backstage מול פתרון מותאם אישית

קריטריון Backstage פתרון מותאם אישית
זמן עד השקה 2-3 שבועות לפורטל בסיסי 1-2 חודשים
גמישות גבוהה בזכות תוספים מקסימלית
קהילה גדולה, אינטגרציות רבות מוגבלת
מורכבות תחזוקה בינונית (עדכוני upstream) גבוהה
מתאים ביותר ל צוותים שרוצים תקן דה-פקטו דרישות ייחודיות

שלב אחר שלב: איך לבנות פלטפורמת מפתחים פנימית

שלב 1: ביקורת מסע המפתח מפה כל שלב מהתחייבות קוד ועד production. ראיין מפתחים ו-DevOps כדי לזהות צווארי בקבוק. הפק דוח עם זמן שאבד לכל בקשה.
שלב 2: עיצוב ארכיטקטורת IDP בחר את המחסנית הטכנולוגית בהתבסס על התשתית הקיימת שלך. הגדר תקנים לשירותים, סביבות, ושערי איכות.
שלב 3: אוטומציה של זרימות עבודה מרכזיות בנה תבניות CI/CD, ניהול סודות, ו-observability בסיסי. זה מפחית עבודה ידנית ב-70%.
שלב 4: הוספת Self-Service Provisioning יישם מודולי Crossplane או Terraform לבקשות הנפוצות ביותר. מפתחים יכולים ליצור namespaces, מסדי נתונים, ושירותים בעצמם.
שלב 5: פריסת הפורטל הגדר Backstage עם קטלוג שירותים, תבניות תוכנה, ו-TechDocs. חבר אותו לשכבת האוטומציה.

שלבי הפרויקט

שלב תוכן ציר זמן
ביקורת מיפוי מסע מפתח, ראיונות צוות שבוע 1
עיצוב ארכיטקטורת IDP, בחירת מחסנית, הגדרות תקן 1-2 שבועות
ליבת הפלטפורמה תבניות CI/CD, ניהול סודות, observability בסיסי 2-4 שבועות
Self-Service אוטומציית provisioning, תבניות תוכנה 2-4 שבועות
פורטל הגדרת Backstage, אכלוס קטלוג, תוספים 2-3 שבועות
הדרכה ומסירה תיעוד, סדנאות, העברת בעלות שבוע 1

משך כולל — מ-6 שבועות עד 3 חודשים בהתאם למצב התשתית הנוכחי ולמספר השירותים. קבל פתרון turnkey תוך 6 שבועות בלבד. צור קשר לביקורת של הפרויקט שלך — נעריך את המצב שלך ונציע תוכנית במחיר קבוע.

מה חייבים להגדיר בהתחלה

לפני כתיבת התבנית הראשונה, צריך להסכים על תקנים: מוסכמות שמות למשאבים (מוסכמת שמות namespace), תוויות חובה לכל משאבי Kubernetes (namespaces/payments-team/new-service.yaml, .gitlab-ci.yml, catalog-info.yaml, team), בקשות/מגבלות משאבים מינימליות מותרות, ומה נחשב ל"שער איכות" לפריסה ל-production.

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

למה לסמוך עלינו?

עם ניסיון של 10+ שנים ב-DevOps והנדסת פלטפורמות, סיפקנו 100+ פרויקטים של פלטפורמת מפתחים פנימית לחברות החל מסטארטאפים ועד Fortune 500. אנחנו מוסמכים ISO 27001, וכל הפתרונות שלנו מגיעים עם אחריות 100% שביעות רצון. הפלטפורמות שלנו מפחיתות קריאות DevOps ב-70% בממוצע, וחוסכות ללקוחותינו מעל $200,000 בשנה.