Daftar Periksa DevOps

DevOps adalah integrasi pengembangan, jaminan kualitas, dan operasi TI ke dalam budaya terpadu dan serangkaian proses untuk mengirimkan perangkat lunak. Gunakan daftar periksa ini sebagai titik awal untuk menilai budaya dan proses DevOps Anda.

Kultur

Pastikan keselarasan bisnis di seluruh organisasi dan tim. Konflik atas sumber daya, tujuan, sasaran, dan prioritas dalam suatu organisasi dapat menjadi risiko bagi keberhasilan operasi. Pastikan bahwa tim bisnis, pengembangan, dan operasi selaras.

Pastikan tim Anda memahami siklus hidup perangkat lunak Anda. Tim Anda perlu memahami siklus hidup keseluruhan aplikasi Anda, dan di mana setiap aplikasi berada dalam siklus hidup tersebut. Memiliki informasi ini membantu semua anggota tim mengetahui apa yang harus mereka lakukan sekarang, dan apa yang harus mereka rencanakan dan persiapkan di masa depan.

Kurangi waktu siklus. Bertujuan untuk meminimalkan waktu yang diperlukan untuk berpindah dari ide ke perangkat lunak yang dikembangkan yang dapat digunakan. Batasi ukuran dan cakupan rilis individu untuk menjaga agar beban pengujian tetap rendah. Mengotomatiskan proses build, pengujian, konfigurasi, dan penyebaran jika memungkinkan. Hapus hambatan apa pun untuk komunikasi di antara pengembang, dan antara pengembang dan tim operasi.

Tinjau dan tingkatkan proses. Proses dan prosedur Anda, baik otomatis maupun manual, tidak pernah final. Siapkan peninjauan rutin alur kerja, prosedur, dan dokumentasi saat ini, dengan tujuan peningkatan berkelanjutan.

Lakukan perencanaan proaktif. Buat rencana untuk menghadapi kegagalan secara proaktif. Memiliki proses untuk mengidentifikasi masalah dengan cepat ketika terjadi, meningkatkan masalah ke anggota tim yang benar untuk diperbaiki, dan mengonfirmasi resolusi mereka.

Belajar dari kegagalan. Kegagalan tidak dapat dihindari, tetapi penting untuk belajar dari kegagalan agar tidak terulang kembali. Jika kegagalan operasional terjadi, triase masalah, dokumentasikan penyebab dan solusinya, dan bagikan pelajaran apa pun yang Anda pelajari. Jika memungkinkan, perbarui proses pembangunan untuk mendeteksi jenis kegagalan tersebut secara otomatis di masa mendatang.

Optimalkan untuk kecepatan, dan kumpulkan data. Setiap peningkatan yang direncanakan adalah hipotesis. Bekerja dengan kenaikan terkecil yang dimungkinkan. Perlakukan ide-ide baru sebagai eksperimen. Instrumen eksperimen sehingga Anda dapat mengumpulkan data produksi untuk menilai efektivitas eksperimen. Bersiaplah untuk gagal dengan cepat jika hipotesis salah.

Berikan waktu untuk belajar. Kegagalan dan keberhasilan memberikan peluang untuk belajar. Sebelum Anda beralih ke proyek baru, izinkan waktu untuk mengumpulkan pelajaran penting, dan pastikan tim Anda menyerap pelajaran tersebut. Berikan juga waktu kepada tim Anda untuk membangun keterampilan, bereksperimen, dan belajar tentang alat dan teknik baru.

Dokumentasikan operasi. Dokumentasikan semua alat, proses, dan tugas otomatis dengan tingkat kualitas yang sama dengan kode produk Anda. Dokumentasikan desain dan arsitektur saat ini dari sistem apa pun yang Anda dukung, bersama dengan proses pemulihan dan prosedur pemeliharaan lainnya. Fokus pada langkah-langkah yang benar-benar Anda lakukan, bukan proses optimal secara teoritis. Tinjau dan perbarui dokumentasi Anda secara teratur. Untuk kode, pastikan untuk menyertakan komentar yang bermakna, terutama di API publik. Gunakan alat untuk menghasilkan dokumentasi kode secara otomatis bila memungkinkan.

Bagikan pengetahuan. Dokumentasi hanya berguna jika orang tahu bahwa dokumentasi tersebut ada dan jika mereka dapat menemukannya. Atur dokumentasi Anda, dan buat dokumentasi Anda mudah ditemukan. Jadilah kreatif: gunakan pelatihan informal (presentasi informal), video, atau buletin untuk berbagi pengetahuan.

Pengembangan

Beri pengembang lingkungan seperti produksi. Jika lingkungan pengembangan dan pengujian tidak cocok dengan lingkungan produksi Anda, sulit untuk menguji dan mendiagnosis masalah. Jaga lingkungan pengembangan dan pengujian sedekat mungkin dengan lingkungan produksi Anda. Pastikan bahwa data pengujian konsisten dengan data yang Anda gunakan dalam produksi, meskipun data sampel dan bukan data produksi nyata (untuk alasan privasi atau kepatuhan). Rencanakan untuk membuat dan menganonimkan data uji sampel.

Pastikan bahwa semua anggota tim yang berwenang dapat menyediakan infrastruktur dan menyebarkan aplikasi. Menyiapkan sumber daya seperti produksi dan menyebarkan aplikasi seharusnya tidak melibatkan tugas manual yang rumit atau pengetahuan teknis terperinci tentang sistem. Siapa pun dengan izin yang tepat harus dapat membuat atau menyebarkan sumber daya seperti produksi tanpa masuk ke tim operasi Anda.

Rekomendasi ini tidak menyiratkan bahwa siapa pun dapat mendorong pembaruan langsung ke penyebaran produksi. Ini tentang mengurangi gesekan bagi tim pengembangan dan QA untuk membuat lingkungan seperti produksi.

Instrumen setiap aplikasi untuk wawasan. Untuk memahami kesehatan aplikasi Anda, Anda perlu mengetahui performanya dan apakah mereka mengalami kesalahan atau masalah. Selalu sertakan instrumentasi sebagai persyaratan desain, dan bangun instrumentasi ke dalam setiap aplikasi sejak awal. Instrumentasi harus mencakup pengelogan peristiwa untuk analisis akar penyebab, tetapi juga telemetri dan metrik untuk memantau kesehatan dan penggunaan setiap aplikasi.

Lacak hutang teknis Anda. Banyak proyek memprioritaskan jadwal rilis daripada kualitas kode hingga satu derajat atau yang lain. Selalu dokumentasikan ketika pintasan diambil atau implementasi suboptimal lainnya, dan jadwalkan waktu untuk mengunjungi kembali masalah ini.

Pertimbangkan untuk mendorong pembaruan langsung ke produksi. Untuk mengurangi waktu siklus rilis Anda secara keseluruhan, pertimbangkan untuk mendorong penerapan kode yang diuji dengan benar langsung ke produksi. Gunakan pengalih fitur untuk mengontrol fitur mana yang Anda aktifkan. Kemudian Anda dapat bergerak cepat dari pengembangan ke rilis dengan menggunakan tombol untuk mengaktifkan atau menonaktifkan fitur. Pengalih juga berguna saat Anda melakukan pengujian seperti rilis kenari, di mana Anda menyebarkan fitur tertentu ke subset lingkungan produksi Anda.

Pengujian

Otomatiskan pengujian. Menguji perangkat lunak secara manual itu membosankan dan rentan terhadap kesalahan. Otomatiskan tugas pengujian umum, dan integrasikan pengujian ke dalam proses build Anda. Pengujian otomatis memastikan cakupan pengujian dan reproduktifitas yang konsisten. Saat Anda menjalankan pengujian UI terintegrasi, gunakan juga alat otomatis. Azure menawarkan sumber daya pengembangan dan pengujian yang dapat membantu Anda mengonfigurasi dan mengeksekusi pengujian. Untuk informasi selengkapnya, lihat Mengembangkan dan menguji di Azure.

Uji untuk kegagalan. Ketika sistem tidak dapat terhubung ke layanan, sistem harus merespons dengan baik. Dan ketika layanan tersedia lagi, sistem harus pulih. Jadikan pengujian injeksi kesalahan sebagai bagian standar dalam tinjauan terhadap lingkungan pengujian dan penyusunan tahap. Saat proses dan praktik pengujian Anda sudah matang, pertimbangkan untuk menjalankan pengujian ini dalam produksi.

Uji dalam produksi. Proses rilis tidak berakhir dengan penyebaran ke produksi. Lakukan pengujian untuk memastikan bahwa kode yang disebarkan berfungsi seperti yang diharapkan. Untuk penyebaran yang jarang Anda perbarui, jadwalkan pengujian produksi sebagai bagian rutin dari pemeliharaan.

Otomatiskan pengujian performa untuk mengidentifikasi masalah performa lebih awal. Dampak masalah performa serius bisa separah bug dalam kode. Meskipun pengujian fungsi otomatis dapat mencegah bug aplikasi, pengujian ini mungkin tidak mendeteksi masalah performa. Tentukan sasaran performa yang dapat diterima untuk metrik seperti latensi, waktu muat, dan penggunaan sumber daya. Sertakan pengujian performa otomatis dalam alur rilis Anda untuk memastikan bahwa aplikasi Anda memenuhi tujuan tersebut.

Lakukan pengujian kapasitas. Aplikasi mungkin bekerja dengan baik di bawah kondisi pengujian, lalu bermasalah dalam produksi karena keterbatasan skala atau sumber daya. Selalu tentukan kapasitas maksimum yang diharapkan dan batas penggunaan. Uji untuk memastikan bahwa aplikasi dapat menangani batas tersebut, tetapi juga menguji apa yang terjadi ketika Anda melebihi batas tersebut. Lakukan pengujian kapasitas secara berkala.

Setelah rilis awal, Anda harus menjalankan pengujian performa dan kapasitas setiap kali Memperbarui kode produksi. Gunakan data historis untuk menyempurnakan pengujian dan untuk menentukan jenis pengujian apa yang perlu Anda lakukan.

Lakukan pengujian penetrasi keamanan otomatis. Memastikan keamanan aplikasi Anda sama pentingnya dengan menguji fungsionalitas lainnya. Jadikan pengujian penetrasi otomatis sebagai bagian standar dari proses build dan penyebaran Anda. Jadwalkan pengujian keamanan reguler dan pemindaian kerentanan pada aplikasi yang disebarkan, yang memantau port terbuka, titik akhir, dan serangan. Pengujian otomatis tidak menghilangkan kebutuhan akan peninjauan keamanan mendalam secara berkala.

Lakukan pengujian kelangsungan bisnis otomatis. Kembangkan pengujian untuk kelangsungan bisnis skala besar, termasuk pemulihan cadangan dan failover. Siapkan proses otomatis untuk melakukan pengujian ini secara rutin.

Lepaskan

Mengotomatiskan penyebaran. Automation memberikan banyak manfaat, termasuk:

  • Mengaktifkan penyebaran yang lebih cepat dan lebih andal.
  • Memastikan penyebaran yang konsisten ke lingkungan yang didukung, termasuk pengujian, penahapan, dan produksi.
  • Menghapus risiko kesalahan manusia yang dapat diperkenalkan oleh penyebaran manual.
  • Membuatnya mudah untuk menjadwalkan rilis untuk waktu yang tepat, yang meminimalkan efek dari potensi waktu henti.

Otomatiskan proses penyebaran setiap aplikasi ke lingkungan pengujian, penahapan, dan produksi Anda. Miliki sistem untuk mendeteksi masalah apa pun selama peluncuran, dan miliki cara otomatis untuk menggulung ke depan perbaikan atau menggulung balik perubahan.

Gunakan integrasi berkelanjutan. Integrasi berkelanjutan (CI) adalah praktik menggabungkan semua kode pengembang ke dalam basis kode pusat pada jadwal reguler, dan kemudian secara otomatis melakukan proses build dan pengujian standar. CI memastikan bahwa seluruh tim dapat bekerja pada basis kode secara bersamaan tanpa konflik. CI juga membantu Anda menemukan cacat kode sedini mungkin. Sebaiknya, proses CI harus berjalan setiap kali Anda menerapkan atau memeriksa kode. Ini harus berjalan setidaknya sekali per hari.

Pertimbangkan untuk mengadopsi model pengembangan berbasis batang. Dalam model ini, pengembang melakukan penerapan pada satu cabang (batang). Ada persyaratan yang menerapkan tidak pernah merusak build. Model ini memfasilitasi CI, karena Anda melakukan semua pekerjaan fitur di bagasi, dan Anda menyelesaikan konflik penggabungan saat setiap penerapan terjadi.

Pertimbangkan untuk menggunakan pengiriman berkelanjutan. Pengiriman berkelanjutan (CD) adalah praktik untuk memastikan bahwa kode selalu siap untuk disebarkan, dengan secara otomatis membangun, menguji, dan menyebarkan kode ke lingkungan seperti produksi. Menambahkan CD untuk membuat alur CI/CD lengkap membantu Anda mendeteksi cacat kode sesegera mungkin. Ini juga memastikan bahwa Anda dapat merilis pembaruan yang diuji dengan benar dalam waktu singkat.

Penyebaran berkelanjutan adalah proses yang secara otomatis mengambil pembaruan apa pun yang telah melewati alur CI/CD dan menyebarkannya ke dalam produksi. Penyebaran berkelanjutan memerlukan pengujian otomatis yang mumpuni dan perencanaan proses lanjutan. Hal ini mungkin tidak sesuai untuk semua tim.

Buat perubahan kecil dan inkremental. Perubahan kode besar memiliki potensi yang lebih besar untuk memperkenalkan bug daripada yang lebih kecil. Jika memungkinkan, pertahankan agar perubahannya selalu kecil. Melakukannya membatasi efek potensial dari setiap perubahan dan menyederhanakan tugas memahami dan men-debug masalah.

Kontrol eksposur terhadap perubahan. Pastikan Anda mengontrol kapan pembaruan terlihat oleh pengguna akhir Anda. Pertimbangkan untuk menggunakan pengalih fitur untuk mengontrol saat Anda mengaktifkan fitur untuk pengguna akhir.

Implementasikan strategi manajemen rilis untuk mengurangi risiko penyebaran. Menyebarkan pembaruan aplikasi ke produksi selalu mengandung beberapa risiko. Untuk meminimalkan risiko ini, gunakan strategi seperti rilis Kenari atau penyebaran biru-hijau untuk menyebarkan pembaruan ke subset pengguna. Konfirmasikan bahwa setiap pembaruan berfungsi seperti yang diharapkan, lalu luncurkan setiap pembaruan ke sistem lainnya.

Dokumentasikan semua perubahan. Pembaruan dan perubahan konfigurasi kecil dapat menjadi sumber kebingungan dan konflik penerapan versi. Selalu simpan catatan yang jelas tentang semua perubahan, sekecil apa pun perubahannya. Catat semua yang berubah, termasuk patch yang Anda terapkan, perubahan kebijakan, dan perubahan konfigurasi. Catatan perubahan harus terlihat oleh seluruh tim Anda. Tetapi jangan sertakan data sensitif dalam log ini. Misalnya, catat bahwa kredensial diperbarui, dan siapa yang membuat perubahan, tetapi tidak merekam kredensial yang diperbarui.

Pertimbangkan untuk membuat infrastruktur tidak bisa diubah. Infrastruktur yang tidak dapat diubah didasarkan pada prinsip bahwa Anda tidak boleh memodifikasi infrastruktur setelah Anda menyebarkannya ke produksi. Jika tidak, Anda bisa memasuki keadaan di mana perubahan ad hoc telah diterapkan, sehingga sulit untuk mengetahui dengan tepat apa yang berubah. Infrastruktur yang tidak dapat diubah bekerja dengan mengganti seluruh server sebagai bagian dari penyebaran baru. Dengan pendekatan ini, Anda dapat menguji dan menyebarkan kode dan lingkungan hosting Anda sebagai blok. Setelah penyebaran, Anda tidak memodifikasi komponen infrastruktur hingga siklus build dan penyebaran berikutnya.

Pemantauan

Buat agar sistem dapat diamati. Tim operasi Anda harus selalu memiliki visibilitas yang jelas ke dalam kesehatan dan status sistem atau layanan. Siapkan titik akhir kesehatan eksternal untuk memantau status, dan mengodekan aplikasi ke metrik operasi instrumen. Gunakan skema umum dan konsisten yang membantu Anda menghubungkan peristiwa di seluruh sistem. Metode standar untuk melacak kesehatan dan status sumber daya Azure adalah menggunakan Diagnostik Azure dan Application Insights. Azure Monitor juga menyediakan pemantauan dan manajemen terpusat untuk solusi cloud atau hibrid.

Mengagregasi dan menghubungkan log dan metrik. Sistem telemetri yang diinstrumentasi dengan benar menyediakan sejumlah besar data performa mentah dan log peristiwa. Pastikan sistem Anda memproses dan menghubungkan data telemetri dan log dengan cepat, sehingga staf operasi selalu memiliki gambaran terbaru tentang kesehatan sistem. Atur dan tampilkan data sehingga Anda memiliki tampilan masalah yang kohesif dan dapat melihat kapan peristiwa terkait satu sama lain.

Lihat kebijakan penyimpanan perusahaan Anda untuk persyaratan tentang cara memproses data dan berapa lama untuk menyimpan data.

Implementasikan peringatan dan pemberitahuan otomatis. Siapkan alat pemantauan seperti Monitor untuk mendeteksi pola atau kondisi yang menunjukkan potensi atau masalah saat ini. Kirim pemberitahuan ke anggota tim yang dapat mengatasi masalah. Setel peringatan untuk menghindari positif palsu.

Pantau kedaluwarsa aset dan sumber daya. Beberapa sumber daya dan aset, seperti sertifikat, telah kedaluwarsa. Pastikan untuk melacak aset mana yang kedaluwarsa, kapan kedaluwarsanya, serta layanan atau fitur apa yang bergantung padanya. Gunakan proses otomatis untuk memantau aset ini. Beri tahu tim operasi Anda sebelum aset kedaluwarsa, dan tingkatkan situasi jika kedaluwarsa mengancam akan mengganggu aplikasi.

Manajemen

Otomatiskan tugas operasi. Penanganan proses operasi berulang secara manual rawan kesalahan. Otomatiskan tugas-tugas ini jika memungkinkan untuk memastikan eksekusi dan kualitas yang konsisten. Gunakan kontrol sumber untuk kode versi yang mengimplementasikan otomatisasi. Seperti halnya kode lain, uji alat otomatisasi Anda.

Ambil pendekatan infrastruktur sebagai kode untuk provisi. Minimalkan jumlah konfigurasi manual yang Anda butuhkan untuk memprovisikan sumber daya. Sebagai gantinya, gunakan skrip dan template Azure Resource Manager. Pertahankan skrip dan templat dalam kontrol sumber, seperti kode lain yang Anda pertahankan.

Pertimbangkan untuk menggunakan kontainer. Kontainer menyediakan antarmuka berbasis paket standar untuk menyebarkan aplikasi. Saat menggunakan kontainer, Anda menyebarkan aplikasi dengan menggunakan paket mandiri yang menyertakan perangkat lunak, dependensi, dan file apa pun yang Anda butuhkan untuk menjalankan aplikasi. Praktik ini sangat menyederhanakan proses penyebaran.

Kontainer juga membuat lapisan abstraksi antara aplikasi dan sistem operasi yang mendasar, yang memberikan konsistensi di seluruh lingkungan. Abstraksi ini juga dapat mengisolasi kontainer dari proses atau aplikasi lain yang berjalan pada host.

Implementasikan ketahanan dan penyembuhan diri. Ketahanan adalah kemampuan aplikasi untuk pulih dari kegagalan. Strategi untuk ketahanan termasuk mencoba kembali kegagalan sementara, dan melakukan failover ke instans sekunder atau bahkan ke wilayah lain. Untuk informasi selengkapnya, lihat Mendesain aplikasi Azure yang andal. Instrumen aplikasi Anda untuk segera melaporkan masalah sehingga Anda dapat mengelola pemadaman atau kegagalan sistem lainnya.

Miliki panduan operasi. Manual operasi, atau runbook, mendokumen prosedur dan informasi manajemen yang Anda butuhkan bagi staf operasi untuk memelihara sistem. Dokumentasikan juga skenario operasi dan rencana mitigasi yang mungkin terjadi selama kegagalan atau gangguan lain pada layanan Anda. Buat dokumentasi ini selama proses pengembangan Anda, dan tetap perbarui setelahnya. Perlakukan sumber daya ini sebagai dokumen hidup yang perlu Anda tinjau, uji, dan tingkatkan secara teratur.

Dokumentasi bersama sangat penting. Dorong anggota tim untuk berkontribusi dan berbagi pengetahuan. Seluruh tim Anda harus memiliki akses ke dokumen. Permudah siapa saja dalam tim untuk membantu memperbarui dokumen.

Dokumentasikan prosedur panggilan. Pastikan untuk mendokumen tugas, jadwal, dan prosedur panggilan, dan untuk membagikannya dengan semua anggota tim. Selalu perbarui informasi ini.

Prosedur eskalasi dokumen untuk dependensi pihak ketiga. Jika aplikasi Anda bergantung pada layanan pihak ketiga eksternal yang tidak Anda kontrol secara langsung, Anda memerlukan rencana untuk menangani pemadaman. Buat dokumentasi untuk proses mitigasi yang Anda rencanakan. Sertakan kontak dukungan dan jalur eskalasi.

Gunakan manajemen konfigurasi. Rencanakan perubahan konfigurasi, buat terlihat oleh operasi, dan rekam. Anda dapat menggunakan database manajemen konfigurasi atau pendekatan konfigurasi sebagai kode untuk tujuan ini. Konfigurasi audit secara teratur untuk memastikan bahwa pengaturan yang diharapkan benar-benar ada.

Dapatkan paket dukungan Azure dan pahami proses dukungan. Azure menawarkan banyak paket dukungan. Tentukan rencana yang tepat untuk kebutuhan Anda, dan pastikan seluruh tim Anda tahu cara menggunakan rencana tersebut. Anggota tim harus memahami detail paket, cara kerja proses dukungan, dan cara membuka tiket dukungan dengan Azure. Jika Anda memperkirakan adanya peristiwa berskala tinggi, dukungan Azure dapat membantu Anda meningkatkan batas layanan. Untuk informasi selengkapnya, lihat FAQ paket dukungan Azure.

Ikuti prinsip hak istimewa terkecil saat Anda memberikan akses ke sumber daya. Kelola akses ke sumber daya dengan hati-hati. Tolak akses secara default, kecuali Anda secara eksplisit memberikan akses pengguna ke sumber daya. Hanya beri pengguna akses ke apa yang mereka butuhkan untuk menyelesaikan tugas mereka. Lacak izin pengguna dan lakukan audit keamanan secara rutin.

Gunakan kontrol akses berbasis peran Azure. Penetapan akun pengguna dan akses ke sumber daya tidak boleh menjadi proses manual. Gunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan akses yang didasarkan pada identitas dan grup ID Microsoft Entra.

Gunakan sistem pelacakan bug untuk melacak masalah. Tanpa cara yang baik untuk melacak masalah, Anda dapat melewatkan item, menduplikasi pekerjaan, atau menimbulkan masalah baru begitu saja. Jangan mengandalkan komunikasi orang ke orang informal untuk melacak status bug. Gunakan alat pelacakan bug untuk merekam detail tentang masalah, menetapkan sumber daya untuk mengatasinya, dan menyediakan log audit terkait progres dan status.

Kelola semua sumber daya dalam sistem manajemen perubahan. Jika Anda menyertakan semua aspek proses DevOps Anda dalam sistem manajemen dan penerapan versi, Anda dapat dengan mudah melacak dan mengaudit perubahan. Sertakan kode, infrastruktur, konfigurasi, dokumentasi, dan skrip. Perlakukan semua jenis sumber daya ini sebagai kode sepanjang proses pengujian, pembangunan, dan peninjauan.

Gunakan daftar periksa. Daftar periksa operasi dapat membantu Anda mengikuti proses. Sangat mudah untuk melewatkan sesuatu dalam manual besar, tetapi mengikuti daftar periksa dapat memaksa perhatian pada detail yang mungkin Anda abaikan. Pertahankan daftar periksa, dan terus cari cara untuk mengotomatisasi tugas dan menyederhanakan proses.

Langkah berikutnya