Bagikan melalui


Menggunakan DevOps dan CI/CD untuk menerbitkan API

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:

Diagram yang mengilustrasikan alur API DevOps.

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:

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:

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