Rekomendasi untuk menstandarkan alat dan proses

Berlaku untuk rekomendasi daftar periksa Azure Well-Architected Framework Operational Excellence ini:

OE:04 Optimalkan pengembangan perangkat lunak dan proses jaminan kualitas dengan mengikuti praktik pengembangan dan pengujian yang terbukti di industri. Untuk penentuan peran yang tidak ambigu, standarisasi praktik di seluruh komponen seperti alat, kontrol sumber, pola desain aplikasi, dokumentasi, dan panduan gaya.

Panduan terkait: Meningkatkan kecepatan | buildGunakan integrasi berkelanjutan

Panduan ini menjelaskan rekomendasi untuk menentukan standar untuk alat dan proses pengembangan perangkat lunak. Menentukan praktik yang konsisten mengarah ke tim beban kerja yang efisien dan pekerjaan berkualitas tinggi. Tim berkinerja tinggi menggunakan alat dan proses yang terbukti di industri untuk meminimalkan upaya yang terbuang sia-sia dan potensi kesalahan kode.

Strategi desain utama

Langkah pertama untuk mengoptimalkan praktik pengembangan adalah menstandarkan alat dan proses. Jika memungkinkan, gunakan solusi yang terbukti di industri daripada mengembangkan solusi internal. Untuk lebih mengoptimalkan praktik Anda, adopsi alat kode rendah dan tanpa kode. Alat-alat ini memungkinkan Anda untuk memfokuskan upaya pada aplikasi Anda dan membantu Anda menghemat waktu. Untuk semua alat dan proses yang Anda standarkan, terapkan pelatihan sehingga tim Anda memahami dan menggunakannya secara efisien. Untuk menentukan standar yang membantu mengoptimalkan praktik pengembangan Anda, pertimbangkan rekomendasi berikut.

Gunakan alat off-the-shelf yang terkenal dan matang

Gunakan alat off-the-shelf yang terkenal dan matang dan standarkan penggunaannya. Tim teknik yang sangat efektif mengadopsi alat terbaik di kelasnya. Pendekatan ini meminimalkan kebutuhan untuk mengembangkan solusi untuk perencanaan, pengembangan, pengujian, kolaborasi, dan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD). Banyak perusahaan memberi pengembang pilihan antara beberapa alat, tetapi semua opsi adalah alat standar untuk organisasi dan divalidasi secara internal. Yang paling penting, pilih alat yang memenuhi persyaratan untuk beban kerja Anda. Alat di luar rak harus menyediakan fungsi berikut:

  • Perencanaan kerja dan manajemen backlog

  • Kontrol dan repositori versi

  • Alur CI/CD

  • Pengujian, seperti integrasi, asap, pengguna sintetis, simulasi, kekacauan, dan pengujian kualitas lainnya

  • Pengembangan kode

Dalam beberapa kasus, satu alat atau serangkaian alat mungkin menyediakan beberapa fungsi. Pastikan Anda memahami kemampuan alat dan batasannya sehingga memenuhi kebutuhan Anda di seluruh fungsi.

Tentukan apakah Anda harus berinvestasi dalam alat mahal atau versi alat premium. Pertimbangkan waktu dan upaya pengembangan solusi Anda sendiri dibandingkan dengan fitur yang disediakan alat premium. Pertimbangkan biaya satu kali versus biaya berulang. Dalam kebanyakan kasus, alat off-the-shelf memberikan nilai yang lebih tinggi untuk tim Anda.

Gunakan alat kode rendah, tanpa kode, dan AI saat praktis. Alat kode rendah dan tanpa kode menghemat waktu pengembang berpengalaman dengan memungkinkan mereka untuk dengan mudah mencolokkan fungsionalitas daripada melakukan seluruh proses pengembangan kode. Alat-alat ini juga memungkinkan anggota tim beban kerja yang mungkin tidak dilatih pengembang untuk berkontribusi pada pengoperasian beban kerja. Alat AI dapat membantu pengembangan kode, ulasan, dan pengoptimalan.

Menstandarkan strategi percabangan Anda

Pilih model berbasis batang jika memungkinkan. Percabangan berbasis trunk membuat tim pengembangan beban kerja tetap sinkron dan mendorong pengiriman berkelanjutan. Tentukan kebijakan cabang untuk melindungi cabang penting, seperti cabang utama. Untuk informasi selengkapnya, lihat Mengadopsi strategi pencabangan Git dan kebijakan dan pengaturan Cabang.

Mengevaluasi metrik untuk mengukur efektivitas pengembangan

Tim pengembangan perangkat lunak dan jaminan kualitas dapat meningkat hanya jika mereka dapat mengukur efektivitasnya. Untuk mengukur efektivitas, mereka harus mengidentifikasi metrik yang mengukur kecepatan pengembang dan menentukan KPI. Contoh metrik ini meliputi:

  • Frekuensi penyebaran: Jumlah penyebaran yang disebarkan setiap pengembang setiap hari.

  • Waktu tunggu: Waktu yang diperlukan tugas atau cerita pengguna untuk pergi dari backlog ke penyebaran produksi.

  • Rata-rata waktu untuk resolusi: Waktu rata-rata yang dihabiskan untuk memperbaiki bug atau cacat kode.

  • Tingkat kegagalan perubahan: Persentase perubahan yang mengakibatkan kegagalan.

Untuk membantu pemangku kepentingan dan tim beban kerja melacak kecepatan dengan mudah, visualisasikan KPI dengan menggunakan dasbor atau alat pelaporan lainnya.

Menstandarkan cara tim beban kerja Anda menulis, meninjau, dan kode dokumen

Standarkan cara tim beban kerja Anda menulis, meninjau, dan kode dokumen dengan menggunakan panduan gaya. Gaya standar memudahkan kolaborasi dan membantu pengembang baru on-boarding. Untuk bekerja secara efektif, pengembang baru perlu tahu bagaimana tim beban kerja beroperasi. Panduan gaya dengan standar yang jelas dapat memudahkan proses pelatihan mereka. Dalam panduan gaya, tentukan standar untuk bahasa pengembangan, pustaka, kerangka kerja, dan konvensi lainnya.

Saat praktis, gunakan alat untuk menerapkan standar pemformatan kode. Misalnya, Visual Studio menawarkan beberapa alat yang memindai kode untuk gaya, kualitas, keberlanjutan, desain, dan masalah lainnya. Untuk infrastruktur sebagai kode (IaC), Anda dapat menggunakan Checkov atau Terrascan untuk Terraform.

Untuk memastikan konsistensi dan menghindari potensi kebingungan, panduan gaya harus menyertakan konvensi penamaan standar untuk artefak, lingkungan, cabang, build, dan eksekusi.

Anda juga harus menetapkan pedoman dan standar untuk tingkat variansi yang diizinkan di lingkungan Anda. Jika ada bahasa, kerangka kerja, atau teknologi baru yang ingin ditambahkan anggota tim beban kerja ke daftar standar, terapkan proses untuk menggunakan alat tersebut di kotak pasir atau lingkungan yang lebih rendah. Uji kelayakannya, dan ganti teknologi yang ada jika sesuai.

Gunakan rekaman keputusan arsitektur (ADR) untuk menyimpan catatan historis keputusan desain tim beban kerja Anda. ADR membantu tim Anda mempertahankan pemahaman baru tentang beban kerja. Mereka juga membantu anggota tim baru mempelajari tentang keputusan desain yang dibuat selama siklus hidup beban kerja. Pastikan ADR dikontrol versinya.

Di ADR Anda, sertakan:

  • Alat dan teknologi tertentu, misalnya menggunakan SQL atau NoSQL, yang dipilih tim Anda.

  • Alasan keputusan tim Anda.

  • Opsi lain yang dipertimbangkan, yang membantu kontekstualisasi keputusan akhir.

  • Persyaratan fungsional dan nonfungsi yang diperhitungkan dalam keputusan.

  • Konteks proses pengambilan keputusan, seperti masalah yang ditangani.

Menerapkan standar untuk mengatasi utang teknis

Mengadopsi pola pikir bahwa utang teknis disengaja dan diperlukan untuk hasil kerja tim beban kerja Anda. Pola pikir ini memotivasi tim Anda untuk mempertimbangkan dan mengatasi utang teknis secara teratur untuk menghindari akumulasi. Mengatasi utang teknis sebagai tugas berulang secara teratur di backlog.

Misalnya, tim Anda distandarisasi di pustaka. Seiring waktu, Anda perlu beralih ke pustaka yang berbeda untuk fungsionalitas baru dalam beban kerja. Transisi tersebut dapat mengakibatkan utang teknis. Sering kali, transisi seperti ini dapat membuat tim beban kerja mendukung dua teknologi karena mereka tidak dapat sepenuhnya bertransisi dengan lancar. Tim beban kerja harus memprioritaskan penyelesaian transisi karena ketika beban kerja mencapai fungsionalitas baru, pemangku kepentingan puas dan lebih kecil kemungkinannya untuk mempertimbangkan utang teknis.

Menstandarkan cara Anda menerapkan penerapan versi ke artefak Anda

Standarkan cara Anda menerapkan penerapan versi ke artefak Anda dan bagaimana penerapan versi diekspos secara internal dan eksternal. Misalnya, sistem yang menghadap klien harus mengekspos versi yang sedang berjalan di antarmuka pengguna. Teknik ini sangat membantu ketika tim beban kerja memecahkan masalah karena pelanggan dapat dengan mudah mengomunikasikan versi mana yang mereka gunakan. Antarmuka REST dapat mengekspos versi untuk komponen atau database tertentu. Anda mungkin menggunakan tabel tertentu dalam metadata untuk skema guna mengekspos versi skema.

Gunakan pola desain aplikasi yang terbukti di industri untuk memastikan bahwa aplikasi Anda andal, berkinerja, dan aman. Gunakan pola-pola ini untuk menghemat waktu dan upaya dibandingkan dengan mengembangkan solusi Anda sendiri untuk aplikasi Anda. Pilih pola yang menguntungkan beban kerja Anda. Tinjau pola desain secara teratur untuk memastikan bahwa Anda menggunakan pola yang tepat saat beban kerja Anda berkembang.

Menerapkan pendekatan shift-left untuk pengujian

Terapkan pendekatan shift-left untuk pengujian dengan melakukan pengujian unit lebih awal dan sering sepanjang proses pengembangan. Pengujian yang sering dilakukan di setiap lingkungan pengembangan membantu pengembang mendapatkan kepercayaan pada aplikasi mereka. Untuk membantu membuat strategi pengujian Anda dengan pendekatan shift-left, pertimbangkan prinsip-prinsip berikut:

  • Tulis tes pada tingkat terendah mungkin. Mendukung pengujian dengan dependensi eksternal terkecil, dan jalankan pengujian sebagai bagian dari build.

  • Tulis pengujian sekali, dan jalankan pengujian di mana saja, termasuk produksi. Tulis pengujian yang dapat Anda jalankan di setiap lingkungan pengembangan tanpa memperhitungkan faktor-faktor yang khusus untuk satu lingkungan, seperti rahasia atau konfigurasi terenkripsi.

  • Rancang beban kerja Anda untuk pengujian. Saat Anda mengembangkan aplikasi, jadikan uji coba sebagai persyaratan.

  • Perlakukan kode pengujian sebagai kode aplikasi. Terapkan standar kualitas dan pengembangan yang sama ke kode aplikasi dan kode pengujian. Simpan kode pengujian bersama kode aplikasi. Mengembangkan dan memelihara kode pengujian dengan kode aplikasi. Untuk memastikan kualitas pengujian, buang pengujian yang tidak dapat diandalkan.

  • Pertimbangkan kepemilikan pengujian, yang didasarkan pada kepemilikan beban kerja. Tim beban kerja Anda memiliki pengujian mereka dan tidak boleh mengandalkan tim lain untuk menguji kode mereka.

  • Mengotomatiskan pengujian sebanyak mungkin. Kode otomatis meringankan beban tim beban kerja Anda dan memberlakukan kualitas yang konsisten.

Untuk panduan terperinci tentang menerapkan strategi pengujian DevOps, lihat Menggeser pengujian ke kiri dengan pengujian unit.

Memerlukan praktik DevSecOps sebagai bagian dari prosedur operasi standar Anda. Tim beban kerja Anda harus memahami praktik keamanan yang terkait dengan pengembangan perangkat lunak dan jaminan kualitas. Mereka harus mengikuti praktik ini tanpa terkecuali. Untuk informasi selengkapnya, lihat Panduan siklus hidup pengembangan keamanan.

Menerapkan standar untuk penamaan dan pemberian tag sumber daya

Menerapkan konvensi pemberian tag dan penamaan adalah praktik terbaik untuk mengelola dan mengatur sumber daya Azure. Konvensi pemberian tag dan penamaan membantu mengidentifikasi, mengklasifikasikan, dan mengelompokkan sumber daya berdasarkan atribut umum, seperti lingkungan, aplikasi, pemilik, atau pusat biaya. Mereka juga mengaktifkan keamanan, otomatisasi, pelaporan, dan tata kelola sumber daya di seluruh langganan dan grup sumber daya.

Beberapa manfaat menggunakan konvensi pemberian tag dan penamaan standar adalah:

  • Mereka memberikan konsistensi dan kejelasan untuk identifikasi dan manajemen sumber daya, memfasilitasi penemuan dan pencarian di seluruh portal Azure, PowerShell, CLI, dan API.
  • Mereka memungkinkan pemfilteran dan pengelompokan sumber daya untuk tujuan penagihan, pemantauan, keamanan, dan kepatuhan.
  • Mereka mendukung manajemen siklus hidup sumber daya, seperti provisi, penonaktifan, pencadangan, dan pemulihan.
  • Mereka sangat penting untuk tujuan keamanan. Jika Anda mengalami insiden keamanan, sangat penting untuk dengan cepat mengidentifikasi sistem yang terpengaruh, fungsi yang didukung sistem tersebut, dan potensi dampak bisnis.

Untuk informasi selengkapnya tentang menggunakan konvensi penamaan untuk sumber daya cloud Anda, lihat Menentukan konvensi penamaan Anda. Untuk informasi selengkapnya tentang cara menerapkan tag metadata ke sumber daya cloud Anda, lihat Menentukan strategi pemberian tag Anda.

Fasilitasi Azure

  • Azure DevOps adalah kumpulan layanan yang dapat Anda gunakan untuk membangun praktik pengembangan yang kolaboratif, efisien, dan konsisten. Azure DevOps menggabungkan solusi berikut:

    • Azure Pipelines menyediakan layanan build dan rilis untuk mendukung CI/CD aplikasi Anda.

    • Azure Boards adalah alat manajemen kerja berbasis web yang mendukung praktik Agile seperti Scrum dan Kanban.

    • Azure Repos adalah alat kontrol versi yang mendukung sistem kontrol versi terdistribusi Git dan sistem Kontrol Versi Team Foundation .

    • Azure Test Plans adalah solusi manajemen pengujian berbasis browser yang menyediakan kemampuan yang diperlukan untuk pengujian manual terencana, pengujian penerimaan pengguna, pengujian eksplorasi, dan mengumpulkan umpan balik dari pemangku kepentingan.

    • Azure Artifacts digunakan untuk memungkinkan pengembang berbagi kode mereka secara efisien dan mengelola paket mereka.

  • GitHub Actions for Azure adalah alat yang dapat Anda gunakan untuk mengotomatiskan proses CI/CD. Ini terintegrasi langsung dengan Azure untuk menyederhanakan penyebaran. Anda dapat membuat alur kerja yang membangun dan menguji setiap permintaan pull ke repositori Anda, atau menyebarkan permintaan pull gabungan ke produksi.

  • Proyek GitHub adalah alat manajemen kerja yang dapat Anda gunakan untuk membuat papan, laporan, dasbor, dan fungsi Kanban lainnya.

  • Alat kode rendah dan tanpa kode meliputi:

  • Templat Azure Resource Manager dan Bicep adalah alat asli Azure yang dapat Anda gunakan untuk menyebarkan IaC. Terraform adalah alat IaC lain yang didukung Azure yang dapat Anda gunakan untuk menyebarkan dan mengelola infrastruktur.

  • Visual Studio adalah alat pengembangan kuat yang terintegrasi dengan Azure dan mendukung banyak bahasa.

  • GitHub Copilot adalah layanan AI yang bertindak sebagai pemrogram pasangan dan memberikan saran gaya lengkapi otomatis saat Anda membuat kode. Copilot tersedia sebagai ekstensi di Visual Studio dan beberapa alat pengembangan lainnya.

  • Azure Load Testing adalah layanan pengujian beban terkelola penuh yang dapat Anda gunakan untuk menghasilkan beban skala tinggi dengan mensimulasikan lalu lintas untuk aplikasi Anda, terlepas dari di mana mereka dihosting.

Daftar periksa Keunggulan Operasional

Lihat serangkaian rekomendasi lengkap.