Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK: Semua tingkatan manajemen API
Dengan nilai strategis API di perusahaan, mengadopsi teknik integrasi berkelanjutan (CI) DevOps dan penyebaran berkelanjutan (CD) telah menjadi aspek penting dari pengembangan API. Artikel ini membahas keputusan yang perlu Anda buat untuk mengadopsi prinsip DevOps untuk manajemen API.
API DevOps terdiri dari tiga bagian:
Setiap bagian dari alur API DevOps dibahas di bawah ini.
Definisi API
Pengembang API menulis definisi API dengan memberikan spesifikasi, pengaturan (seperti pengelogan, diagnostik, dan pengaturan backend), dan kebijakan yang akan diterapkan ke API. Definisi API menyediakan informasi yang diperlukan untuk menyediakan API pada layanan Azure API Management. Spesifikasinya mungkin didasarkan pada spesifikasi API berbasis standar (seperti WSDL, OpenAPI, atau GraphQL), atau mungkin ditentukan menggunakan API Azure Resource Manager (ARM) (misalnya, templat ARM yang menjelaskan API dan operasi). Definisi API akan berubah dari waktu ke waktu dan harus dianggap sebagai "kode sumber." Pastikan definisi API disimpan di bawah kontrol kode sumber dan memiliki tinjauan yang sesuai sebelum adopsi.
Ada beberapa alat untuk membantu memproduksi definisi API:
- Toolkit Azure APIOps menyediakan alur kerja yang dibangun di atas sistem kontrol kode sumber git (seperti GitHub atau Azure Repos). Ini menggunakan ekstraktor untuk menghasilkan definisi API yang kemudian diterapkan ke layanan API Management target oleh penerbit. APIOps mendukung REST dan GraphQL API saat ini.
- Alat dotnet-apim mengonversi definisi YAML yang terbentuk dengan baik menjadi templat ARM untuk penyebaran nanti. Alat ini difokuskan pada REST API.
- Terraform adalah alternatif untuk Azure Resource Manager untuk mengonfigurasi sumber daya di Azure. Anda dapat membuat konfigurasi Terraform (bersama dengan kebijakan) untuk mengimplementasikan API dengan cara yang sama seperti templat ARM dibuat.
Anda juga dapat menggunakan alat berbasis IDE untuk editor seperti Visual Studio Code untuk menghasilkan artefak yang diperlukan untuk menentukan API. Misalnya, ada lebih dari 90 plugin untuk mengedit file spesifikasi OpenAPI di Visual Studio Code Marketplace. Anda juga dapat menggunakan generator kode untuk membuat artefak. Bahasa TypeSpec memungkinkan Anda menentukan API dan bentuk layanan cloud dan sangat dapat diperluas, dengan primitif yang dapat menggambarkan bentuk API yang umum di antara REST, OpenAPI, gRPC, dan protokol lainnya.
Persetujuan API
Setelah definisi API diproduksi, pengembang mengirimkan definisi API untuk ditinjau dan disetujui. Jika menggunakan sistem kontrol kode sumber berbasis git (seperti GitHub atau Azure Repos), pengembang dapat mengirimkan melalui permintaan pull. Permintaan pull memberi tahu orang lain tentang perubahan yang telah diusulkan ke definisi API. Setelah gerbang persetujuan dikonfirmasi, pemberi persetujuan menggabungkan permintaan pull ke repositori utama untuk menandakan bahwa definisi API dapat disebarkan ke produksi. Proses permintaan pull memberdayakan pengembang untuk memulihkan masalah apa pun yang ditemukan selama proses persetujuan.
GitHub dan Azure Repos memungkinkan Anda mengonfigurasi alur persetujuan yang berjalan saat permintaan pull dikirimkan. Anda dapat mengonfigurasi alur persetujuan untuk menjalankan alat seperti:
- Linter spesifikasi API seperti Spectral untuk memastikan bahwa definisi memenuhi standar API yang diperlukan oleh organisasi.
- Melanggar deteksi perubahan menggunakan alat seperti openapi-diff.
- Alat untuk audit dan penilaian keamanan. OWASP mempertahankan daftar alat untuk pemindaian keamanan.
- Kerangka kerja pengujian API otomatis.
Note
Api Azure harus sesuai dengan serangkaian panduan ketat yang dapat Anda gunakan sebagai titik awal untuk panduan API Anda sendiri. Ada konfigurasi Spektral untuk menegakkan pedoman.
Setelah alat otomatis berjalan, definisi API ditinjau oleh mata manusia. Alat tidak akan mendeteksi semua masalah. Peninjau manusia memastikan bahwa definisi API memenuhi kriteria organisasi untuk API, termasuk kepatuhan terhadap pedoman keamanan, privasi, dan konsistensi.
Publikasi API
Definisi API diterbitkan ke layanan API Management melalui alur rilis. Alat yang digunakan untuk menerbitkan definisi API bergantung pada alat yang digunakan untuk menghasilkan definisi API:
- Jika menggunakan Toolkit Azure APIOps, toolkit menyertakan penerbit yang menulis definisi API ke layanan target.
- Jika menggunakan dotnet-apim, definisi API diwakili sebagai templat ARM. Tugas tersedia untuk Azure Pipelines dan GitHub Actions untuk menyebarkan templat ARM.
- Jika menggunakan Terraform, alat CLI menyebarkan definisi API pada layanan Anda. Ada tugas yang tersedia untuk Azure Pipelines dan GitHub Actions.
Dapatkah saya menggunakan kontrol kode sumber dan sistem CI/CD lainnya?
Yes. Proses yang dijelaskan berfungsi dengan sistem kontrol kode sumber apa pun (meskipun APIOps memang mengharuskan sistem kontrol kode sumber berbasis git ). Demikian pula, Anda dapat menggunakan platform CI/CD apa pun selama dapat dipicu oleh check-in dan menjalankan alat baris perintah yang berkomunikasi dengan Azure.
Praktik terbaik
Tidak ada standar industri untuk menyiapkan alur DevOps untuk menerbitkan API, dan tidak ada alat yang disebutkan yang akan berfungsi dalam semua situasi. Namun, sebagian besar situasi dicakup dengan menggunakan kombinasi alat dan layanan berikut:
- Azure Repos menyimpan definisi API dalam repositori git .
- Azure Pipelines menjalankan proses persetujuan API otomatis dan publikasi API.
- Azure APIOps Toolkit menyediakan alat dan alur kerja untuk menerbitkan API.
Kami telah melihat keberhasilan terbesar dalam implementasi pelanggan dengan menggunakan praktik berikut:
- Siapkan GitHub atau Azure Repos untuk sistem kontrol kode sumber Anda. Pilihan ini juga menentukan pilihan pelari alur Anda. GitHub dapat menggunakan Azure Pipelines atau GitHub Actions, sedangkan Azure Repos harus menggunakan Azure Pipelines.
- Siapkan layanan Azure API Management untuk setiap pengembang API sehingga mereka dapat mengembangkan definisi API bersama dengan layanan API. Gunakan SKU konsumsi atau SKU pengembang pada saat membuat layanan.
- Gunakan fragmen kebijakan untuk mengurangi kebijakan baru yang perlu ditulis pengembang untuk setiap API.
- Gunakan nilai yang dinamai dan backend yang dinamai untuk memastikan bahwa kebijakan bersifat umum dan dapat berlaku untuk instance API Management apa pun.
- Gunakan Toolkit Azure APIOps untuk mengekstrak definisi API yang berfungsi dari layanan pengembang.
- Siapkan proses persetujuan API yang berjalan pada setiap permintaan pull. Proses persetujuan API harus mencakup deteksi perubahan yang signifikan, linting, dan pengujian API otomatis.
- Gunakan penerbit Toolkit Azure APIOps untuk menerbitkan API ke layanan API Management produksi Anda.
Tinjau Penyebaran API otomatis dengan APIOps di Azure Architecture Center untuk detail selengkapnya tentang cara mengonfigurasi dan menjalankan alur penyebaran CI/CD dengan APIOps.
References
- Layanan Azure DevOps mencakup Azure Repos dan Azure Pipelines.
- Azure APIOps Toolkit menyediakan alur kerja untuk API Management DevOps.
- Spectral menyediakan linter untuk spesifikasi OpenAPI.
- openapi-diff menyediakan detektor perubahan yang melanggar untuk definisi OpenAPI v3.