spinny:~/writing $ less platform-engineering-internal-developer-platform.md
12Apabila sistem perisian menjadi semakin kompleks - mikroservis, Kubernetes, multi-cloud, pipeline CI/CD, timbunan observabiliti - pembangun menghabiskan lebih banyak masa pada infrastruktur dan kurang masa membina produk. **Platform Engineering** menyelesaikan masalah ini dengan mencipta platform dalaman yang mengabstrakkan kerumitan dan menyediakan pembangun alat layan diri untuk penghantaran lebih pantas.34Gartner meramalkan menjelang 2027, **80% organisasi kejuruteraan perisian** akan menubuhkan pasukan platform. Dalam panduan ini, kita akan meneroka apa itu Platform Engineering, mengapa ia penting, dan cara membina Internal Developer Platform dari awal.56## Apa itu Platform Engineering?78Platform Engineering ialah disiplin mereka bentuk dan membina rantaian alat dan aliran kerja yang membolehkan keupayaan layan diri untuk organisasi kejuruteraan perisian. Hasilnya ialah **Internal Developer Platform (IDP)** - satu lapisan yang berada di antara pembangun dan infrastruktur.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 vs DevOps4546Platform Engineering bukan pengganti DevOps - ia adalah evolusi seterusnya. DevOps berkata "anda bina, anda jalankan." Platform Engineering berkata "kami akan menjadikan pembinaan dan penjalanan mudah."4748| Aspek | DevOps | Platform Engineering |49|-------|--------|---------------------|50| **Fokus** | Budaya dan amalan | Produk dan layan diri |51| **Pendekatan** | Setiap pasukan menguruskan infra | Pasukan platform mengabstrakkan infra |52| **Beban Kognitif** | Tinggi (setiap pasukan mempelajari semuanya) | Rendah (golden path disediakan) |53| **Output** | Pipeline CI/CD, skrip IaC | Internal Developer Platform |54| **Pengguna** | Seluruh kejuruteraan | Pasukan platform melayani kejuruteraan |5556## Mengapa Platform Engineering Penting5758### Masalah Beban Kognitif5960Dalam organisasi moden biasa, seorang pembangun perlu memahami:6162- Aliran kerja Git dan strategi pencabangan63- Konfigurasi pipeline CI/CD64- Pembinaan kontena dan pengurusan registri65- Manifest Kubernetes dan Helm Charts66- Perkhidmatan penyedia awan (AWS/GCP/Azure)67- Rangkaian, DNS, sijil TLS68- Persediaan pemantauan, pengelogan, amaran69- Peruntukan dan migrasi pangkalan data70- Dasar keselamatan dan pematuhan7172Itu adalah beban kognitif yang sangat besar yang mengalihkan fokus daripada produk sebenar.7374### Golden Path7576Platform Engineering memperkenalkan konsep **golden path** - laluan yang berpendirian, disokong dengan baik, dan didokumenkan untuk tugas-tugas biasa. Golden path bukan mandat; pembangun *boleh* menyimpang, tetapi platform menjadikan perkara yang betul sebagai perkara yang mudah.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**Contoh golden path untuk mencipta mikroservis baharu:**901. Pembangun memilih "Perkhidmatan Backend Baharu" di portal912. Memilih bahasa/rangka kerja (Node.js, Go, Python)923. Platform mencipta secara automatik: repositori Git, pipeline CI/CD, namespace Kubernetes, papan pemuka pemantauan, dan peraturan amaran934. Pembangun mengklon repositori dan mula mengekod serta-merta9495## Membina Internal Developer Platform9697### Lapisan 1: Developer Portal9899Portal ialah titik masuk tunggal untuk pembangun. Pilihan sumber terbuka paling popular ialah **Backstage** (dicipta oleh Spotify, kini projek CNCF).100101Ciri-ciri utama:102- **Katalog perkhidmatan**: Setiap perkhidmatan, pemiliknya, dokumentasi, dan kebergantungan103- **Templat perisian**: Perancah untuk perkhidmatan baharu dengan amalan terbaik terbina104- **Dokumentasi teknikal**: Dokumentasi sebagai kod, dipapar dan boleh dicari105- **Ekosistem plugin**: Boleh dikembangkan dengan fungsi tersuai106107```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### Lapisan 2: Abstraksi Infrastruktur129130Pembangun tidak sepatutnya menulis Terraform atau Kubernetes YAML secara langsung. Platform sepatutnya menyediakan abstraksi.131132**Alat:**133- **Crossplane**: Peruntukan infrastruktur asli Kubernetes134- **Terraform dengan modul**: Modul infrastruktur pra-bina dan diuji135- **Pulumi**: Infrastruktur sebagai kod sebenar (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```149150Daripada mengkonfigurasi parameter RDS, subnet VPC, kumpulan keselamatan, dan dasar sandaran, pembangun hanya menyatakan `size: small` dan `backup: daily`. Platform menguruskan yang selebihnya.151152### Lapisan 3: Penstandardan CI/CD153154Standardkan CI/CD supaya pasukan tidak membina pipeline masing-masing.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**Amalan utama:**174- Templat CI/CD kongsi yang disertakan oleh pasukan (bukan disalin)175- Pengimbasan keselamatan automatik (SAST, audit kebergantungan)176- Strategi penggunaan yang distandardkan (canary, blue/green)177- Rollback automatik apabila health check gagal178179### Lapisan 4: Observabiliti180181Pemantauan pra-konfigurasi supaya pembangun mendapat papan pemuka dan amaran sedia untuk digunakan.182183- **Metrik**: Prometheus + Grafana dengan papan pemuka standard setiap perkhidmatan184- **Pengelogan**: Pengelogan berstruktur dengan pengumpulan berpusat (Loki, ELK)185- **Pengesanan**: Pengesanan teragih dengan OpenTelemetry186- **Amaran**: Integrasi PagerDuty/Opsgenie dengan lalai yang munasabah187188```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## Mengukur Kejayaan201202Bagaimana anda tahu platform anda berfungsi? Jejak metrik ini:203204### Metrik DORA205- **Kekerapan penggunaan**: Berapa kerap kod sampai ke pengeluaran206- **Masa utama untuk perubahan**: Masa dari commit ke pengeluaran207- **Kadar kegagalan perubahan**: Peratusan penggunaan yang menyebabkan kegagalan208- **Masa purata pemulihan**: Masa untuk memulihkan perkhidmatan selepas insiden209210### Metrik Khusus Platform211- **Masa ke deploy pertama**: Berapa lama dari "perkhidmatan baharu" ke deploy pengeluaran pertama212- **Kepuasan pembangun (NPS)**: Tinjau pengguna anda dengan kerap213- **Nisbah layan diri**: % permintaan infrastruktur yang dikendalikan tanpa tiket214- **Penggunaan golden path**: % perkhidmatan yang mengikuti laluan yang disyorkan215216## Kesilapan Biasa217218### 1. Membina Terlalu Banyak, Terlalu Awal219Mulakan dengan titik kesakitan terbesar, bukan visi besar. Jika penggunaan menyakitkan, mulakan di situ. Jika peruntukan mengambil masa berminggu-minggu, mulakan di situ.220221### 2. Tidak Melayan Platform sebagai Produk222Pasukan platform memerlukan pengurus produk, penyelidikan pengguna, dan gelung maklum balas. Pembangun adalah pelanggan anda - fahami keperluan mereka.223224### 3. Mewajibkan Berbanding Menarik225Platform terbaik diterima secara sukarela kerana menjadikan kehidupan pembangun lebih mudah. Jika anda perlu mewajibkan penggunaan, platform anda tidak cukup baik.226227### 4. Mengabaikan Pengalaman Pembangun228Platform dengan UX yang teruk tidak akan digunakan. Laburkan dalam dokumentasi yang jelas, mesej ralat yang membantu, dan gelung maklum balas yang pantas.229230## Memulakan231232Peta jalan praktikal untuk membina IDP pertama anda: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### Platform Minimum Berdaya Maju2582591. **Katalog perkhidmatan** (Backstage) - tahu apa yang wujud dan siapa pemiliknya2602. **Satu templat perkhidmatan** - golden path untuk jenis perkhidmatan paling biasa anda2613. **CI/CD yang distandardkan** - pipeline kongsi yang disertakan oleh pasukan2624. **Dokumentasi asas** - cara menggunakan platform, di mana mendapatkan bantuan263264Anda boleh membina MVP ini dalam 2-3 bulan dengan pasukan 2-3 jurutera.265266## Kesimpulan267268Platform Engineering bukan tentang membina platform sempurna dari hari pertama. Ia tentang mengurangkan beban kognitif pembangun secara berperingkat supaya mereka boleh fokus membina produk. Mulakan kecil, ukur impak, dan iterasi berdasarkan maklum balas pembangun.269270Organisasi yang melabur dalam Platform Engineering akan mempunyai kelebihan daya saing yang signifikan: penghantaran lebih pantas, pembangun lebih gembira, dan sistem lebih boleh dipercayai.271272**Sumber:**273- [Team Topologies](https://teamtopologies.com/) - buku yang mempopularkan pasukan platform274- [Backstage](https://backstage.io/) - portal pembangun sumber terbuka Spotify275- [CNCF Platforms White Paper](https://tag-app-delivery.cncf.io/whitepapers/platforms/) - definisi komuniti dan amalan terbaik276- [platformengineering.org](https://platformengineering.org/) - komuniti, acara, dan sumber277
:Platform Engineering: Cara Membina Internal Developer Platformlines 1-277 (END) — press q to close