spinny:~/writing $ less platform-engineering-internal-developer-platform.md
12ככל שמערכות התוכנה הופכות מורכבות יותר - מיקרוסרוויסים, Kubernetes, מולטי-קלאוד, צינורות CI/CD, מחסניות צפיות - מפתחים מבלים יותר זמן על תשתית ופחות זמן על בניית מוצרים. **Platform Engineering** פותר זאת על ידי יצירת פלטפורמה פנימית שמפשטת את המורכבות ומספקת למפתחים כלי שירות עצמי לאספקה מהירה יותר.34Gartner חוזה שעד 2027, **80% מארגוני הנדסת התוכנה** יקימו צוותי פלטפורמה. במדריך זה, נחקור מה זה Platform Engineering, למה זה חשוב, ואיך לבנות Internal Developer Platform מאפס.56## מה זה Platform Engineering?78Platform Engineering הוא התחום של תכנון ובניית שרשראות כלים ותהליכי עבודה המאפשרים יכולות שירות עצמי לארגוני הנדסת תוכנה. הפלט הוא **Internal Developer Platform (IDP)** - שכבה שנמצאת בין המפתחים לתשתית.910```mermaid11graph TD12 subgraph "Developers"13 D1[Frontend Team]14 D2[Backend Team]15 D3[Data Team]16 end1718 subgraph "Internal Developer Platform"19 Portal[Developer Portal]20 Templates[Service Templates]21 CICD[CI/CD Pipelines]22 Infra[Infrastructure Abstraction]23 end2425 subgraph "Infrastructure"26 K8s[Kubernetes]27 Cloud[Cloud Services]28 DB[Databases]29 Monitor[Monitoring]30 end3132 D1 --> Portal33 D2 --> Portal34 D3 --> Portal35 Portal --> Templates36 Portal --> CICD37 Portal --> Infra38 Infra --> K8s39 Infra --> Cloud40 Infra --> DB41 CICD --> Monitor42```4344### Platform Engineering מול DevOps4546Platform Engineering אינו תחליף ל-DevOps - זהו האבולוציה הבאה. DevOps אמר "אתה בונה את זה, אתה מפעיל את זה." Platform Engineering אומר "נהפוך את הבנייה וההפעלה לקלות."4748| היבט | DevOps | Platform Engineering |49|------|--------|---------------------|50| **מיקוד** | תרבות ופרקטיקות | מוצרים ושירות עצמי |51| **גישה** | כל צוות מנהל תשתית | צוות הפלטפורמה מפשט תשתית |52| **עומס קוגניטיבי** | גבוה (כל צוות לומד הכל) | נמוך (נתיבי זהב מסופקים) |53| **פלט** | צינורות CI/CD, סקריפטי IaC | Internal Developer Platform |54| **משתמשים** | כל ההנדסה | צוות הפלטפורמה משרת את ההנדסה |5556## למה Platform Engineering חשוב5758### בעיית העומס הקוגניטיבי5960בארגון מודרני טיפוסי, מפתח צריך להבין:6162- תהליכי עבודה ב-Git ואסטרטגיות סניפים63- הגדרת צינורות CI/CD64- בניית קונטיינרים וניהול רגיסטרי65- מניפסטים של Kubernetes ו-Helm Charts66- שירותי ספק ענן (AWS/GCP/Azure)67- רשתות, DNS, אישורי TLS68- הגדרת ניטור, רישום ביומן, התראות69- הקצאת מסדי נתונים והגירות70- מדיניות אבטחה ותאימות7172זהו עומס קוגניטיבי עצום שמסיט את המיקוד מהמוצר האמיתי.7374### נתיב הזהב7576Platform Engineering מציג את הרעיון של **נתיבי זהב** - נתיבים ברורי דעה, נתמכים היטב ומתועדים למשימות נפוצות. נתיב זהב אינו חובה; מפתחים *יכולים* לסטות, אבל הפלטפורמה הופכת את הדבר הנכון לדבר הקל.7778```mermaid79flowchart LR80 Dev[Developer] -- "Create new service" --> Portal[Portal]81 Portal -- "Select template" --> Template[Service Template]82 Template -- "Auto-provision" --> Repo[Git Repository]83 Template --> Pipeline[CI/CD Pipeline]84 Template --> Infra[Kubernetes Namespace]85 Template --> Monitor[Dashboards + Alerts]86 Repo --> Ready[Ready to Code!]87```8889**דוגמה לנתיב זהב ליצירת מיקרוסרוויס חדש:**901. המפתח בוחר "שירות Backend חדש" בפורטל912. בוחר שפה/פריימוורק (Node.js, Go, Python)923. הפלטפורמה יוצרת אוטומטית: מאגר Git, צינור CI/CD, namespace של Kubernetes, דשבורדי ניטור וכללי התראות934. המפתח משכפל את המאגר ומתחיל לכתוב קוד מיד9495## בניית Internal Developer Platform9697### שכבה 1: Developer Portal9899הפורטל הוא נקודת הכניסה היחידה למפתחים. האפשרות הפופולרית ביותר בקוד פתוח היא **Backstage** (נוצר על ידי Spotify, כעת פרויקט CNCF).100101תכונות מפתח:102- **קטלוג שירותים**: כל שירות, בעליו, תיעוד ותלויות103- **תבניות תוכנה**: שלד לשירותים חדשים עם שיטות עבודה מומלצות מובנות104- **תיעוד טכני**: תיעוד כקוד, מרונדר וניתן לחיפוש105- **אקוסיסטם תוספים**: ניתן להרחבה עם פונקציונליות מותאמת106107```yaml108# backstage/catalog-info.yaml109apiVersion: backstage.io/v1alpha1110kind: Component111metadata:112 name: user-service113 description: Manages user accounts and authentication114 annotations:115 github.com/project-slug: myorg/user-service116 backstage.io/techdocs-ref: dir:.117spec:118 type: service119 lifecycle: production120 owner: team-auth121 system: identity-platform122 dependsOn:123 - resource:postgresql-main124 providesApis:125 - user-api126```127128### שכבה 2: הפשטת תשתית129130מפתחים לא צריכים לכתוב Terraform או Kubernetes YAML ישירות. הפלטפורמה צריכה לספק הפשטות.131132**כלים:**133- **Crossplane**: הקצאת תשתית מקורית ב-Kubernetes134- **Terraform עם מודולים**: מודולי תשתית מוכנים ובדוקים135- **Pulumi**: תשתית כקוד אמיתי (TypeScript, Python, Go)136137```yaml138# Example: Crossplane composition for a database139apiVersion: database.example.com/v1140kind: PostgreSQLInstance141metadata:142 name: user-db143spec:144 size: small # Abstraction: small = 2 vCPU, 4GB RAM145 version: "16"146 backup: daily147 team: auth-team148```149150במקום להגדיר פרמטרי RDS, רשתות משנה VPC, קבוצות אבטחה ומדיניות גיבוי, המפתח פשוט מציין `size: small` ו-`backup: daily`. הפלטפורמה מטפלת בשאר.151152### שכבה 3: סטנדרטיזציית CI/CD153154סטנדרטו את ה-CI/CD כדי שצוותים לא יבנו כל אחד את הצינורות שלהם.155156```yaml157# .github/workflows/platform-ci.yml158# Teams just include the shared workflow159name: Build and Deploy160on:161 push:162 branches: [main]163164jobs:165 pipeline:166 uses: myorg/platform-workflows/.github/workflows/standard-pipeline.yml@v2167 with:168 language: node169 deploy-target: production170 secrets: inherit171```172173**פרקטיקות מפתח:**174- תבניות CI/CD משותפות שצוותים כוללים (לא מעתיקים)175- סריקת אבטחה אוטומטית (SAST, ביקורת תלויות)176- אסטרטגיות פריסה מתוקננות (canary, blue/green)177- חזרה אוטומטית בכישלון בדיקות תקינות178179### שכבה 4: צפיות180181ניטור מוגדר מראש כדי שמפתחים יקבלו דשבורדים והתראות מוכנים לשימוש.182183- **מדדים**: Prometheus + Grafana עם דשבורדים סטנדרטיים לכל שירות184- **רישום ביומן**: רישום מובנה עם איסוף מרכזי (Loki, ELK)185- **מעקב**: מעקב מבוזר עם OpenTelemetry186- **התראות**: אינטגרציה עם PagerDuty/Opsgenie עם ברירות מחדל הגיוניות187188```mermaid189graph LR190 Service[Your Service] -- "OpenTelemetry SDK" --> Collector[OTel Collector]191 Collector --> Prometheus[Prometheus]192 Collector --> Loki[Loki]193 Collector --> Tempo[Tempo]194 Prometheus --> Grafana[Grafana Dashboards]195 Loki --> Grafana196 Tempo --> Grafana197 Grafana --> PagerDuty[PagerDuty Alerts]198```199200## מדידת הצלחה201202איך יודעים שהפלטפורמה עובדת? עקבו אחר המדדים האלה:203204### מדדי DORA205- **תדירות פריסה**: כמה פעמים הקוד מגיע לפרודקשן206- **זמן הובלה לשינויים**: זמן מ-commit לפרודקשן207- **שיעור כישלון שינויים**: אחוז הפריסות שגורמות לתקלות208- **זמן ממוצע לשחזור**: זמן לשחזור השירות לאחר אירוע209210### מדדים ספציפיים לפלטפורמה211- **זמן עד הפריסה הראשונה**: כמה זמן מ"שירות חדש" עד הפריסה הראשונה בפרודקשן212- **שביעות רצון מפתחים (NPS)**: סקרו את המשתמשים שלכם באופן קבוע213- **יחס שירות עצמי**: % של בקשות תשתית שמטופלות ללא כרטיסים214- **אימוץ נתיב זהב**: % של שירותים שעוקבים אחר הנתיב המומלץ215216## טעויות נפוצות217218### 1. לבנות יותר מדי, מוקדם מדי219התחילו מנקודת הכאב הגדולה ביותר, לא מחזון גרנדיוזי. אם פריסות כואבות, התחילו שם. אם הקצאה לוקחת שבועות, התחילו שם.220221### 2. לא להתייחס לפלטפורמה כמוצר222צוות הפלטפורמה צריך מנהל מוצר, מחקר משתמשים ולולאות משוב. מפתחים הם הלקוחות שלכם - הבינו את הצרכים שלהם.223224### 3. לחייב במקום למשוך225הפלטפורמות הטובות ביותר מאומצות מרצון כי הן מקלות על חיי המפתחים. אם אתם חייבים לחייב שימוש, הפלטפורמה שלכם לא מספיק טובה.226227### 4. להתעלם מחוויית המפתח228פלטפורמה עם UX נוראי לא תהיה בשימוש. השקיעו בתיעוד ברור, הודעות שגיאה מועילות ולולאות משוב מהירות.229230## איך להתחיל231232מפת דרכים מעשית לבניית ה-IDP הראשונה שלכם:233234```mermaid235flowchart TD236 A[Month 1-2: Discovery] --> B[Month 3-4: MVP]237 B --> C[Month 5-6: Iterate]238 C --> D[Month 7+: Scale]239240 A --> A1[Interview developers]241 A --> A2[Map pain points]242 A --> A3[Choose first golden path]243244 B --> B1[Deploy Backstage]245 B --> B2[First service template]246 B --> B3[Standardized CI/CD]247248 C --> C1[Gather feedback]249 C --> C2[Add infrastructure abstraction]250 C --> C3[Improve docs and onboarding]251252 D --> D1[More templates and golden paths]253 D --> D2[Self-service infrastructure]254 D --> D3[Advanced observability]255```256257### פלטפורמת מינימום ברת-קיימא2582591. **קטלוג שירותים** (Backstage) - לדעת מה קיים ומי הבעלים2602. **תבנית שירות אחת** - נתיב זהב לסוג השירות הנפוץ ביותר2613. **CI/CD מתוקנן** - צינור משותף שצוותים כוללים2624. **תיעוד בסיסי** - איך להשתמש בפלטפורמה, איפה לקבל עזרה263264אפשר לבנות MVP זה ב-2-3 חודשים עם צוות של 2-3 מהנדסים.265266## סיכום267268Platform Engineering אינו על בניית הפלטפורמה המושלמת מהיום הראשון. זה על הפחתה הדרגתית של העומס הקוגניטיבי על מפתחים כדי שיוכלו להתמקד בבניית מוצרים. התחילו בקטן, מדדו את ההשפעה, ובצעו איטרציות על בסיס משוב מפתחים.269270ארגונים שמשקיעים ב-Platform Engineering יהנו מיתרון תחרותי משמעותי: אספקה מהירה יותר, מפתחים מרוצים יותר, ומערכות אמינות יותר.271272**משאבים:**273- [Team Topologies](https://teamtopologies.com/) - הספר שהפך צוותי פלטפורמה לפופולריים274- [Backstage](https://backstage.io/) - פורטל המפתחים בקוד פתוח של Spotify275- [CNCF Platforms White Paper](https://tag-app-delivery.cncf.io/whitepapers/platforms/) - הגדרת הקהילה ושיטות עבודה מומלצות276- [platformengineering.org](https://platformengineering.org/) - קהילה, אירועים ומשאבים277
:Platform Engineering: איך לבנות Internal Developer Platformlines 1-277 (END) — press q to close