Arsitektur garis besar CI/CD dengan Azure Pipelines

Artikel ini menjelaskan alur kerja DevOps tingkat tinggi untuk menyebarkan perubahan aplikasi ke lingkungan penahapan dan produksi di Azure. Solusi ini menggunakan praktik integrasi berkelanjutan/penyebaran berkelanjutan (CI/CD) dengan Azure Pipelines.

Penting

Artikel ini membahas arsitektur CI/CD umum menggunakan Azure Pipelines. Ini tidak dimaksudkan untuk mencakup spesifikasi penyebaran ke lingkungan yang berbeda, seperti Azure App Services, Virtual Machines, dan Azure Power Platform. Spesifikasi platform penyebaran tercakup dalam artikel terpisah.

Arsitektur

Diagram arsitektur alur CI/CD menggunakan Azure Pipelines.

Unduh file Visio arsitektur ini.

Catatan

Meskipun artikel ini membahas CI/CD untuk perubahan aplikasi, Azure Pipelines juga dapat digunakan untuk membangun alur CI/CD untuk perubahan infrastruktur sebagai kode (IaC).

Aliran data

Data mengalir melalui skenario sebagai berikut:

  1. Alur PR - Permintaan pull (PR) ke Azure Repos Git memicu alur PR. Alur ini menjalankan pemeriksaan kualitas cepat. Pemeriksaan ini harus mencakup:

    • Membangun kode, yang memerlukan penarikan dependensi dari sistem manajemen dependensi.
    • Penggunaan alat untuk menganalisis kode, seperti analisis kode statis, linting, dan pemindaian keamanan
    • Uji unit

    Jika salah satu pemeriksaan gagal, eksekusi alur berakhir dan pengembang harus membuat perubahan yang diperlukan. Jika semua pemeriksaan lolos, alur harus memerlukan peninjauan PR. Jika tinjauan PR gagal, alur berakhir dan pengembang harus membuat perubahan yang diperlukan. Jika semua pemeriksaan dan ulasan PR lulus, PR akan berhasil digabungkan.

  2. Alur CI - Penggabungan ke Azure Repos Git memicu alur CI. Alur ini menjalankan pemeriksaan yang sama dengan alur PR dengan beberapa tambahan penting. Alur CI menjalankan pengujian integrasi. Pengujian integrasi ini seharusnya tidak memerlukan penyebaran solusi, karena artefak build belum dibuat. Jika pengujian integrasi memerlukan rahasia, alur mendapatkan rahasia tersebut dari Azure Key Vault. Jika salah satu pemeriksaan gagal, alur berakhir dan pengembang harus membuat perubahan yang diperlukan. Hasil dari keberhasilan menjalankan alur ini adalah pembuatan dan penerbitan artefak build

  3. Pemicu alur CD - Penerbitan artefak memicu alur CD.

  4. Rilis CD ke penahapan - Alur CD mengunduh artefak build yang dibuat di alur CI dan menyebarkan solusi ke lingkungan penahapan. Alur kemudian menjalankan pengujian penerimaan terhadap lingkungan penahapan untuk memvalidasi penyebaran. Jika ada pengujian penerimaan yang gagal, alur berakhir dan pengembang harus membuat perubahan yang diperlukan. Jika pengujian berhasil, tugas validasi manual dapat diimplementasikan untuk mengharuskan seseorang atau grup memvalidasi penyebaran dan melanjutkan alur.

  5. Rilis CD ke produksi - Jika intervensi manual dilanjutkan, atau tidak ada intervensi manual yang diterapkan, alur merilis solusi untuk produksi. Alur harus menjalankan uji asap dalam produksi untuk memastikan rilis berfungsi seperti yang diharapkan. Jika langkah intervensi manual menghasilkan pembatalan, rilis gagal, atau uji asap gagal, rilis digulung balik, alur berakhir dan pengembang harus membuat perubahan yang diperlukan.

  6. Pemantauan - Azure Monitor mengumpulkan data observabilitas seperti log dan metrik sehingga operator dapat menganalisis data kesehatan, performa, dan penggunaan. Application Insights mengumpulkan semua data pemantauan khusus aplikasi, seperti jejak. Azure Log Analytics digunakan untuk menyimpan semua data tersebut.

Komponen

  • Repositori Azure Repos Git berfungsi sebagai repositori kode yang menyediakan kontrol versi dan platform untuk proyek kolaboratif.

  • Azure Pipelines menyediakan cara untuk membangun, menguji, mengemas, dan merilis aplikasi dan kode infrastruktur. Contoh ini memiliki tiga alur berbeda dengan tanggung jawab berikut:

    • Alur PR memvalidasi kode sebelum memungkinkan PR untuk digabungkan melalui linting, pembuatan, dan pengujian unit.
    • Alur CI berjalan setelah kode digabungkan. Mereka melakukan validasi yang sama dengan alur PR, tetapi menambahkan pengujian integrasi dan menerbitkan artefak build jika semuanya berhasil.
    • Alur CD menyebarkan artefak build, menjalankan pengujian penerimaan, dan merilis ke produksi.
  • Umpan Artefak Azure memungkinkan Anda mengelola dan berbagi paket perangkat lunak, seperti Maven, npm, dan NuGet. Umpan artefak memungkinkan Anda mengelola siklus hidup paket Anda, termasuk penerapan versi, mempromosikan, dan menghentikan paket. Ini membantu Anda memastikan bahwa tim Anda menggunakan versi terbaru dan paling aman dari paket Anda.

  • Key Vault menyediakan cara untuk mengelola data aman untuk solusi Anda, termasuk rahasia, kunci enkripsi, dan sertifikat. Dalam arsitektur ini, ini digunakan untuk menyimpan rahasia aplikasi. Rahasia ini diakses melalui alur. Rahasia dapat diakses oleh Azure Pipelines dengan tugas Key Vault atau dengan menautkan rahasia dari Key Vault.

  • Monitor adalah sumber daya pengamatan yang mengumpulkan dan menyimpan metrik dan log, telemetri aplikasi, dan metrik platform untuk layanan Azure. Gunakan data ini untuk memantau aplikasi, mengatur peringatan, dasbor, dan melakukan analisis akar penyebab kegagalan.

  • Application Insights adalah layanan pemantauan yang memberikan wawasan real-time tentang performa dan penggunaan aplikasi web Anda.

  • Ruang kerja Log Analytics menyediakan lokasi terpusat tempat Anda dapat menyimpan, mengkueri, dan menganalisis data dari berbagai sumber, termasuk sumber daya, aplikasi, dan layanan Azure.

Alternatif

Meskipun artikel ini berfokus pada Azure Pipelines, Anda dapat mempertimbangkan alternatif berikut:

  • Azure DevOps Server (sebelumnya dikenal sebagai Team Foundation Server) dapat digunakan sebagai pengganti lokal.

  • Jenkins adalah alat sumber terbuka yang digunakan untuk mengotomatiskan build dan penyebaran.

  • GitHub Actions memungkinkan Anda mengotomatiskan alur kerja CI/CD langsung dari GitHub.

  • Repositori GitHub dapat diganti sebagai repositori kode. Azure Pipelines terintegrasi dengan mulus dengan repositori GitHub.

Artikel ini berfokus pada praktik CI/CD umum dengan Azure Pipelines. Berikut ini adalah beberapa lingkungan komputasi yang dapat Anda pertimbangkan untuk disebarkan:

  • App Services adalah layanan berbasis HTTP untuk menghosting aplikasi web, REST API, dan back end seluler. Anda dapat mengembangkan dalam bahasa favorit Anda, dan aplikasi berjalan dan menskalakan dengan mudah di lingkungan berbasis Windows dan Linux. Web Apps mendukung slot penyebaran seperti penahapan dan produksi. Anda dapat menyebarkan aplikasi ke slot penahapan dan merilisnya ke slot produksi.

  • Azure Virtual Machines menangani beban kerja yang memerlukan kontrol tingkat tinggi, atau bergantung pada komponen dan layanan OS yang tidak dimungkinkan dengan Web Apps (misalnya, Windows GAC, atau COM).

  • Azure Power Platform adalah kumpulan layanan cloud yang memungkinkan pengguna untuk membangun, menyebarkan, dan mengelola aplikasi tanpa perlu keahlian infrastruktur atau teknis.

  • Azure Functions adalah platform komputasi tanpa server yang dapat Anda gunakan untuk membangun aplikasi. Dengan Functions, Anda dapat menggunakan pemicu dan pengikatan untuk mengintegrasikan layanan. Functions juga mendukung slot penyebaran seperti penahapan dan produksi. Anda dapat menyebarkan aplikasi ke slot penahapan dan merilisnya ke slot produksi.

  • Azure Kubernetes Service (AKS) adalah kluster Kubernetes terkelola di Azure. Kubernetes adalah platform orkestrasi kontainer sumber terbuka.

  • Azure Container Apps memungkinkan Anda menjalankan aplikasi kontainer pada platform tanpa server.

Detail skenario

Menggunakan praktik CI dan CD yang terbukti untuk menyebarkan perubahan aplikasi atau infrastruktur memberikan berbagai manfaat termasuk:

  • Siklus rilis yang lebih pendek - Proses CI/CD otomatis memungkinkan Anda menyebarkan lebih cepat daripada praktik manual. Banyak organisasi menyebarkan beberapa kali per hari.
  • Kualitas kode yang lebih baik - Gerbang kualitas dalam alur CI, seperti linting dan pengujian unit, menghasilkan kode kualitas yang lebih tinggi.
  • Penurunan risiko rilis - Praktik CI/CD yang tepat secara dramatis mengurangi risiko merilis fitur baru. Penyebaran dapat diuji sebelum rilis.
  • Peningkatan produktivitas - CI/CD otomatis membebaskan pengembang dari bekerja pada integrasi dan penyebaran manual sehingga mereka dapat fokus pada fitur baru.
  • Aktifkan putar kembali - Meskipun praktik CI/CD yang tepat menurunkan jumlah bug atau regresi yang dirilis, mereka masih terjadi. CI/CD dapat mengaktifkan pemutaran kembali otomatis ke rilis sebelumnya.

Potensi penggunaan kasus

Pertimbangkan proses Azure Pipelines dan CI/CD untuk:

  • Mempercepat pengembangan aplikasi dan siklus hidup pengembangan.
  • Membangun kualitas dan konsistensi ke dalam proses build dan rilis otomatis.
  • Meningkatkan stabilitas dan waktu aktif aplikasi.

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian prinsip panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.

Keunggulan operasional

  • Pertimbangkan untuk menerapkan Infrastruktur sebagai Kode (IaC) untuk menentukan infrastruktur Anda dan untuk menyebarkannya di alur Anda.

  • Pertimbangkan untuk menggunakan salah satu Tugas Tokenisasi yang tersedia di marketplace VSTS, dalam konteks sering merujuk pada proses di mana informasi sensitif (seperti kunci API, kata sandi, atau rahasia lainnya) diganti dengan token atau tempat penampung selama penyebaran atau konfigurasi.

  • Gunakan Variabel Rilis dalam definisi rilis Anda untuk mendorong perubahan konfigurasi lingkungan Anda. Variabel rilis dapat dicakupkan ke seluruh rilis atau lingkungan tertentu. Saat menggunakan variabel untuk informasi rahasia, pastikan Anda memilih ikon gembok.

  • Pertimbangkan untuk menggunakan agen yang dihost sendiri jika Anda menyebarkan ke sumber daya yang berjalan di jaringan virtual yang aman. Anda mungkin juga mempertimbangkan agen yang dihost sendiri jika Menjalankan build dalam volume tinggi. Dalam kasus volume build yang tinggi, agen yang dihost sendiri dapat digunakan untuk mempercepat build dengan cara yang hemat biaya.

  • Pertimbangkan untuk menggunakan Application Insights dan alat pemantauan lainnya sedini mungkin di alur rilis Anda. Banyak organisasi hanya mulai memantau di lingkungan produksi mereka. Dengan memantau lingkungan Anda yang lain, Anda dapat mengidentifikasi bug lebih awal dalam proses pengembangan dan menghindari masalah di lingkungan produksi Anda.

  • Pertimbangkan untuk menggunakan sumber daya pemantauan terpisah untuk produksi.

  • Pertimbangkan untuk menggunakan alur YAML alih-alih antarmuka Klasik. Alur YAML dapat diperlakukan seperti kode lainnya. Alur YAML dapat diperiksa ke kontrol sumber dan versi, misalnya.

  • Pertimbangkan untuk menggunakan Templat YAML untuk mempromosikan penggunaan kembali dan menyederhanakan alur. Misalnya, alur PR dan CI serupa. Templat berparameter tunggal dapat digunakan untuk kedua alur.

  • Pertimbangkan untuk membuat lingkungan di luar penahapan dan produksi untuk mendukung aktivitas seperti pengujian penerimaan pengguna manual, pengujian performa dan beban, dan pembatalan.

Pengoptimalan biaya

Optimalisasi biaya adalah tentang mencari cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Gambaran umum pilar pengoptimalan biaya.

Biaya Azure DevOps bergantung pada jumlah pengguna di organisasi Anda yang memerlukan akses, bersama dengan faktor lain seperti jumlah build/rilis bersamaan yang diperlukan dan jumlah pengguna pengujian. Untuk informasi selengkapnya, lihat Harga Azure DevOps.

Kalkulator harga ini memberikan perkiraan untuk menjalankan Azure DevOps dengan 20 pengguna.

Azure DevOps ditagih berdasarkan per pengguna per bulan. Mungkin ada lebih banyak biaya tergantung pada alur bersamaan yang diperlukan, selain pengguna uji tambahan atau lisensi dasar pengguna.

Keamanan

  • Pertimbangkan manfaat keamanan menggunakan agen yang dihosting Microsoft saat memilih apakah akan menggunakan agen yang dihosting Microsoft atau dihost sendiri.

  • Pastikan semua perubahan pada lingkungan dilakukan melalui alur. Terapkan kontrol akses berbasis peran (RBAC) pada prinsip hak istimewa paling sedikit, mencegah pengguna mengakses lingkungan.

  • Pertimbangkan untuk mengintegrasikan langkah-langkah di Azure Pipelines untuk melacak dependensi, mengelola lisensi, memindai kerentanan, dan menjaga dependensi hingga saat ini.

Langkah berikutnya

Ulas sumber daya berikut untuk mempelajari selengkapnya tentang CI/CD dan Azure DevOps: