Arsitektur Platform Layanan Mandiri Pengembang
Pengalaman layanan mandiri pengembang bergantung pada kombinasi konsep, pola, dan alat, yang mencakup teknologi yang dibuat khusus, di luar rak, dan sumber terbuka. Tujuannya adalah untuk memberdayakan pengembang dengan eksekusi dan provisi tugas yang diatur sambil mempertahankan visibilitas terpusat. Fokus utama harus pada tugas yang melelahkan atau terlalu kompleks bagi pengembang untuk menangani secara independen.
Komponen Platform Layanan Mandiri Pengembang
Fondasi layanan mandiri pengembang terdiri dari beberapa komponen utama yang bekerja sama untuk merampingkan dan mengotomatiskan alur kerja pengembang. Komponen-komponen ini termasuk API Platform Pengembang, Grafik Platform Pengembang, Orkestrator Platform Pengembang, Penyedia Platform Pengembang, dan Profil Pengguna dan Metadata Tim.
API Platform Pengembang bertindak sebagai titik pusat interaksi, berfungsi sebagai antarmuka kontraktual antara pengalaman pengguna dan sistem lainnya. API platform pengembang harus mengaktifkan akses data dan mendorong tindakan provisi melalui berbagai antarmuka pengguna. Ini berfungsi sebagai lapisan autentikasi dan keamanan utama, membatasi akses ke API mentah yang mendasar bersama dengan data dan operasi yang sesuai. API mengelola profil pengguna, peran dalam platform, dan pengidentifikasi idP utama untuk memastikan kontrol akses yang tepat.
Melengkapi API Platform Pengembang adalah Developer Platform Graph, struktur data terkelola yang aman yang memfasilitasi penemuan dan asosiasi entitas dan templat dalam platform. Entitas menggabungkan data dari beberapa sumber, sementara templat memandu input pengguna untuk otomatisasi.
Grafik Platform Pengembang memungkinkan Anda mengaitkan entitas dan templat dari beberapa penyedia ke dalam struktur yang dapat dicari. Meskipun data untuk entitas ini tidak perlu disimpan langsung dalam database grafik, interaksi dengan penyedia dapat di-cache bersama dengan metadata yang diperlukan. Grafik ini menjadi sangat berharga ketika bekerja dengan entitas umum yang dikontribusikan oleh beberapa penyedia. Misalnya, API mungkin berasal dari Azure API Center, sementara penyebaran dan lingkungan mungkin ditarik dari sistem penyebaran berkelanjutan. Grafik ini mendukung pengalaman pengguna melalui API umum, memungkinkan penemuan, pencarian, dan tata kelola.
Untuk menjalankan tindakan berbasis templat, Developer Platform Orchestrator merutekan dan melacak permintaan, berkoordinasi dengan Penyedia Platform Pengembang khusus yang terintegrasi dengan sistem hilir. Orkestrator memungkinkan pengembang atau sistem untuk meminta tindakan menggunakan templat, tanpa melakukan tindakan secara langsung. Ini berkoordinasi dengan mesin tugas, mesin alur kerja, atau orkestrator lain untuk menjalankan tindakan. Komponen ini sangat penting untuk mengaktifkan layanan mandiri, karena memungkinkan pengembang untuk memicu tindakan tanpa memerlukan izin langsung. Tidak seperti CI/CD, tindakan ini tidak terbatas pada kode sumber aplikasi. Mesin alur kerja seperti GitHub Actions atau Azure Pipelines dapat berfungsi sebagai orkestrator, tetapi abstraksi dapat berguna untuk mendukung mesin yang berbeda dari waktu ke waktu. Fleksibilitas ini memungkinkan migrasi mesin, mendukung langkah manual untuk proses yang nantinya dapat diotomatisasi, dan mengakomodasi tindakan yang menargetkan peran non-pengembangan (misalnya, akun yang dibayarkan). Selain itu, tugas yang lebih sederhana dapat ditangani melalui permintaan HTTP, menghindari kebutuhan akan mesin yang kompleks.
Penyedia Platform Pengembang mengelola logika untuk operasi Buat, Baca, Perbarui, dan Hapus (CRUD) pada entitas dan eksekusi permintaan tindakan, mendukung beragam alur kerja dan layanan. Penyedia memperkenalkan fungsionalitas ke dalam API melalui model penyedia yang dapat diperluas, memungkinkan fitur utama seperti otomatisasi dan agregasi data. Model ini mempromosikan konektor longgar, memungkinkan integrasi inkremental fungsionalitas baru dan meningkatkan pemeliharaan. Dengan menumbuhkan mentalitas sumber dalam, fungsionalitas platform dapat dikontribusikan dan dikelola oleh tim yang berbeda, meminimalkan beban pemeliharaan pada tim pusat. Meskipun penting untuk meninjau kode penyedia dan mengelola akses dengan hati-hati, pendekatan yang dapat dicolokkan ini membantu menskalakan upaya pengembangan di seluruh organisasi.
Fondasi ini juga mencakup kemampuan untuk mengelola Profil Pengguna dan Metadata Tim, yang mengikat informasi individu dan tim ke akun yang dihosting oleh penyedia identitas, seperti ID Microsoft Entra. Metadata ini digunakan untuk pengelompokan dan kontrol akses dalam API platform pengembang. Meskipun mungkin untuk menyimpan informasi ini di Developer Platform Graph, memisahkannya memastikan kejelasan.
Fondasi layanan mandiri pengembang dapat diakses melalui antarmuka pengguna/pengalaman pengguna terpusat (UI/UX). Menawarkan titik akses terpadu menyederhanakan interaksi untuk pengembang, memfasilitasi penggunaan alur kerja dan sumber daya dengan cara yang mulus dan intuitif.
Fondasi layanan mandiri pengembang tidak perlu dibangun sepenuhnya sejak awal. Sebaliknya, ini berfungsi sebagai panduan konseptual untuk kemampuan yang ditujukan dari waktu ke waktu. Implementasi awal dapat disederhanakan, menggunakan alat, antarmuka, atau kelas yang ada untuk mengatasi prioritas yang paling mendesak yang diidentifikasi melalui umpan balik pelanggan. Dengan memulai dari yang kecil dan berulang, fondasi dapat berkembang untuk secara efektif memenuhi tuntutan baru.
Konsep Penyedia Platform Pengembang Utama
Dalam platform pengembang, manajemen dan orkestrasi sumber daya yang efektif bergantung pada penggunaan entitas bersama dengan properti dan templat mereka. Konsep utama ini menyediakan struktur dan otomatisasi, memungkinkan integrasi yang mulus di berbagai penyedia dan memfasilitasi alur kerja dan tata kelola yang konsisten.
Entitas
Entitas adalah objek utama yang perlu dilacak oleh pengembang atau sistem, memperbarui, menyajikan, atau bertindak di dalam platform pengembang internal. Entitas ini dapat memiliki hubungan satu sama lain, membentuk grafik yang memberikan informasi penting tentang platform. Penyedia platform pengembang dapat menghasilkan entitas untuk mendukung berbagai kemampuan inti, seperti menemukan sumber daya eksternal, melakukan analisis dependensi, atau memunculkan kepemilikan dan informasi pengelola. Antarmuka penyedia yang terdefinisi dengan baik menyederhanakan integrasi, pengujian, dan penyebaran sambil memungkinkan tim pengembang beroperasi secara independen.
Properti Umum
Untuk mengelola entitas secara efektif, sangat membantu untuk menentukan sekumpulan properti umum. Beberapa properti yang disarankan termasuk pengidentifikasi unik, nama, penyedia asal, dan asosiasi opsional kepada pengguna, tim, atau entitas lainnya. Properti ini penting untuk kontrol akses berbasis peran (RBAC), penemuan, dan agregasi data. Menerapkan RBAC sejak awal sangat penting untuk keamanan dan penskalaan platform dari waktu ke waktu. Asosiasi pengguna dan tim sangat berharga karena mereka membantu penemuan dan kolaborasi, memungkinkan penggunaan kembali, dukungan, dan sumber dalam yang efisien dalam platform.
Entitas Umum dan Spesifik Penyedia
Anda juga harus menentukan sekumpulan entitas umum, tingkat tinggi, yang dinormalisasi yang dapat dihasilkan oleh beberapa penyedia. Ini mungkin termasuk lingkungan, sumber daya, API, repositori, komponen, dan alat. Entitas ini harus konseptual, berfokus pada kategorisasi luas (seperti lingkungan) daripada detail teknis terperinci (misalnya, infrastruktur internal). Tampilan tingkat tinggi ini memfasilitasi penemuan, memungkinkan agregasi data dari waktu ke waktu sambil menunjuk ke detail tingkat bawah di luar sistem. Selain itu, seiring berkembangnya platform, Anda mungkin perlu mengakomodasi serangkaian jenis entitas khusus penyedia yang terus berkembang untuk memenuhi berbagai kasus penggunaan.
Templat
Templat dirancang untuk mendorong tindakan seperti provisi infrastruktur, pembuatan repositori, atau proses jangka panjang lainnya. Templat ini tersedia melalui penyedia platform pengembang dan mencakup properti umum seperti asosiasi entitas dan input yang diperlukan (misalnya, nama sumber daya). Templat dapat mewakili berbagai format, termasuk templat Infrastructure-as-Code (IaC), templat aplikasi, atau skrip berparameter. Mereka seringkali khusus penyedia, dengan representasi yang berbeda tergantung pada teknologi yang digunakan. Contoh representasi ini termasuk templat Terraform atau Bicep, bagan Helm, alur kerja Tindakan GitHub berparameter, Alur Azure, skrip sederhana, atau format kustom yang disesuaikan dengan ekosistem penyedia tertentu.
Meskipun templat tidak perlu disimpan secara terpusat, templat harus dapat diakses melalui penyedia untuk memastikan akses yang konsisten di seluruh platform. Mereka dapat ada di repositori, registri, atau katalog yang berbeda tergantung pada kasus penggunaan. Misalnya, repositori templat GitHub dapat digunakan untuk templat aplikasi, sementara templat IaC dapat berada di repositori katalog terbatas yang diakses pengembang secara tidak langsung melalui alat seperti Lingkungan Penyebaran Azure. Templat IaC lainnya mungkin disimpan dalam registri artefak Open Container Initiative (OCI), seperti bagan Helm. Dalam beberapa kasus, templat mungkin hanya mereferensikan titik akhir HTTP berparameter.
Teknisi platform atau spesialis domain biasanya menulis templat ini dan membagikannya dengan tim pengembangan untuk digunakan kembali. Memusatkan penggunaan templat dalam sistem memfasilitasi akses mereka sambil menegakkan standar dan kebijakan organisasi. Proses ini membantu menjaga kontrol dan kepatuhan di seluruh platform sambil memberdayakan pengembang untuk bekerja lebih efisien.
GitHub Actions sebagai Penyedia Platform
Untuk mengilustrasikan cara kerja penyedia, mari kita pertimbangkan GitHub Actions dan Azure Pipelines. Salah satunya dapat berfungsi sebagai penyedia platform pengembang dengan memicu alur kerja atau eksekusi alur melalui API masing-masing, seperti GitHub Actions REST API atau Azure DevOps Pipeline API. Alur kerja atau alur ini tidak diperlukan untuk ditempatkan di repositori kode sumber aplikasi, memungkinkan teknisi platform untuk mempertahankannya di repositori pusat dan privat. Dalam model ini, pengembang tidak memiliki akses langsung ke alur kerja tetapi dapat menggunakan penyedia platform pengembang untuk berinteraksi dengan mereka. Penyedia dapat mengelola rahasia yang diperlukan, seperti kredensial atau kunci API, dengan mengintegrasikan dengan layanan seperti Azure Key Vault. Saat alur kerja dijalankan, penyedia melacak status mereka, menggunakan webhook untuk Tindakan GitHub dan kait layanan untuk Azure Pipelines untuk memantau kemajuan. Setelah alur kerja selesai, artefak apa pun yang dihasilkan, seperti hasil build atau penyebaran, ditangkap dan diterbitkan. Artefak ini, bersama dengan parameter input dan referensi ke alur kerja, dapat ditambahkan ke grafik platform pengembang. Pendekatan ini juga memungkinkan fleksibilitas dalam menggunakan CLIs arbitrer, mendukung berbagai tugas otomatisasi dari waktu ke waktu. Selain itu, penggunaan GitHub Actions atau Azure Pipelines dalam konteks ini tidak bergantung pada peran tradisional mereka dalam CI/CD, memberikan penerapan yang lebih luas untuk mengelola berbagai proses dan templat.
Ada jenis penyedia platform pengembang lainnya, yang dapat menangani berbagai tugas melalui templat. Untuk operasi kontrol sumber, penyedia dapat membantu mengelola tugas Git seperti membuat repositori, mengirimkan PR, atau operasi Git lainnya tanpa mengandalkan mesin alur kerja umum. Provisi infrastruktur dapat disederhanakan melalui penyedia khusus seperti Lingkungan Penyebaran Azure atau Terraform Cloud, yang berfokus pada Infrastruktur sebagai Kode (IaC) dengan keamanan dan efisiensi. Penyedia perancah aplikasi, seperti Azure Developer CLI, mendukung pembuatan pohon sumber aplikasi dan mendorongnya ke repositori sumber, menambahkan fleksibilitas untuk ekosistem yang berbeda. Proses manual, seperti menghasilkan permintaan pull (PR) atau mengotomatiskan alur kerja untuk non-pengembang, juga dapat dikelola melalui penyedia berbasis templat, memungkinkan otomatisasi bertahap. Contoh-contoh ini menyoroti bagaimana ekstensibilitas dan kemampuan beradaptasi di penyedia platform pengembang dapat meningkatkan kemampuan otomatisasi dari waktu ke waktu.