Mengotomatiskan deployment Anda

Last reviewed 2023-07-17 UTC

Dokumen di Framework Arsitektur Google Cloud ini memberikan praktik terbaik untuk mengotomatiskan build, pengujian, dan deployment Anda.

Otomatisasi membantu Anda menstandarkan build, pengujian, dan deployment dengan menghilangkan error yang disebabkan oleh manusia untuk proses berulang seperti update kode. Bagian ini menjelaskan cara menggunakan berbagai pemeriksaan dan pengamanan saat Anda melakukan otomatisasi. Proses standar yang dikontrol mesin membantu memastikan deployment Anda diterapkan dengan aman. Solusi ini juga memberikan mekanisme untuk memulihkan deployment sebelumnya sesuai kebutuhan tanpa memengaruhi pengalaman pengguna Anda secara signifikan.

Simpan kode Anda di repositori kode pusat

Simpan kode Anda di repositori kode pusat yang menyertakan sistem kontrol versi dengan pemberian tag dan kemampuan untuk me-roll back perubahan kode. Kontrol versi memungkinkan Anda mengatur file serta mengontrol akses, pembaruan, dan penghapusan di seluruh tim dan organisasi.

Untuk berbagai tahap pengembangan, buat versi dan beri label repositori sesuai kebutuhan. Misalnya, label dapat berupa test, dev, dan prod.

Di Google Cloud, Anda dapat menyimpan kode di Cloud Source Repositories, dan membuat versi serta mengintegrasikannya dengan produk Google Cloud lainnya. Jika Anda mem-build aplikasi dalam container, gunakan Artifact Registry, sebuah registry terkelola untuk container.

Untuk detail selengkapnya tentang kontrol versi, lihat Kontrol versi. Untuk mengetahui detail tentang mengimplementasikan pengembangan berbasis trunk dengan repositori Anda, lihat Pengembangan berbasis trunk.

Gunakan continuous integration dan continuous deployment (CI/CD)

Otomatiskan deployment Anda menggunakan pendekatan continuous integration dan continuous deployment (CI/CD). Pendekatan CI/CD adalah kombinasi pipeline yang Anda konfigurasi dan proses yang diikuti oleh tim pengembangan Anda.

Pendekatan CI/CD meningkatkan kecepatan deployment velocity dengan membuat tim pengembangan software Anda lebih produktif. Pendekatan ini memungkinkan developer membuat perubahan yang lebih kecil dan lebih sering yang diuji secara menyeluruh, sekaligus mengurangi waktu yang diperlukan untuk men-deploy perubahan tersebut.

Sebagai bagian dari pendekatan CI/CD, otomatiskan semua langkah yang merupakan bagian dari pembuatan, pengujian, dan deployment kode Anda. Contoh:

  • Setiap kali kode baru di-commit ke repositori, minta commit untuk otomatis memanggil pipeline build dan pengujian.
  • Mengotomatiskan pengujian integrasi.
  • Otomatiskan deployment Anda agar perubahan di-deploy setelah build memenuhi kriteria pengujian tertentu.

Di Google Cloud, Anda dapat menggunakan Cloud Build dan Cloud Deploy untuk pipeline CI/CD Anda.

Gunakan Cloud Build untuk membantu menentukan dependensi dan versi yang dapat Anda gunakan untuk membuat dan mem-build paket aplikasi. Tetapkan versi konfigurasi build untuk memastikan semua build konsisten, dan untuk memastikan Anda dapat melakukan roll back ke konfigurasi sebelumnya jika diperlukan.

Gunakan Cloud Deploy untuk men-deploy aplikasi Anda ke lingkungan tertentu di Google Cloud, dan untuk mengelola pipeline deployment Anda.

Untuk mengetahui detail selengkapnya tentang cara mengimplementasikan CI/CD, baca Continuous integration dan Otomatisasi deployment.

Sediakan dan kelola infrastruktur menggunakan infrastruktur sebagai kode

Infrastruktur sebagai kode adalah penggunaan model deskriptif untuk mengelola infrastruktur, seperti VM, dan konfigurasi, seperti aturan firewall. Infrastruktur sebagai kode memungkinkan Anda melakukan hal berikut:

  • Buat resource cloud Anda secara otomatis, termasuk lingkungan deployment atau pengujian untuk pipeline CI/CD Anda.
  • Perlakukan perubahan infrastruktur seperti Anda memperlakukan perubahan aplikasi. Misalnya, pastikan perubahan pada konfigurasi ditinjau, diuji, dan dapat diaudit.
  • Siapkan satu versi yang terpercaya untuk infrastruktur cloud Anda.
  • Replikasikan lingkungan cloud Anda sesuai kebutuhan.
  • Melakukan roll back ke konfigurasi sebelumnya jika diperlukan.

Konsep infrastruktur sebagai kode ini juga berlaku untuk project di Google Cloud. Anda dapat menggunakan pendekatan ini untuk menentukan resource seperti konektivitas VPC Bersama atau akses Identity and Access Management (IAM) dalam project Anda. Untuk contoh pendekatan ini, lihat Modul Terraform Factory Project Google Cloud.

Alat pihak ketiga, seperti Terraform, membantu Anda membuat infrastruktur di Google Cloud secara otomatis. Untuk informasi selengkapnya, baca artikel Mengelola infrastruktur sebagai kode dengan Terraform, Cloud Build, dan GitOps.

Pertimbangkan untuk menggunakan fitur Google Cloud, seperti lien project .Kebijakan retensi Cloud Storage , dan Cloud Storagepenguncian bucket , untuk melindungi resource penting agar tidak terhapus secara tidak sengaja atau berbahaya.

Hadirkan pengujian di seluruh siklus proses penyediaan software

Pengujian sangat penting untuk keberhasilan peluncuran software. Pengujian berkelanjutan membantu tim membuat software berkualitas tinggi dengan lebih cepat dan meningkatkan stabilitas software.

Jenis pengujian:

  • Pengujian unit. Pengujian unit cepat dan membantu Anda melakukan deployment dengan cepat. Perlakukan pengujian unit sebagai bagian dari codebase dan sertakan sebagai bagian dari proses build.
  • Pengujian integrasi Pengujian integrasi itu penting, terutama untuk workload yang dirancang untuk penskalaan dan bergantung pada lebih dari satu layanan. Pengujian ini dapat menjadi kompleks saat Anda menguji integrasi dengan layanan yang saling terhubung.
  • Pengujian sistem. Pengujian sistem memakan waktu dan kompleks, tetapi membantu Anda mengidentifikasi kasus ekstrem dan memperbaiki masalah sebelum deployment.
  • Pengujian lainnya. Ada pengujian lain yang harus Anda jalankan, termasuk pengujian statis, pengujian beban, pengujian keamanan, pengujian validasi kebijakan, dan lainnya. Jalankan pengujian ini sebelum men-deploy aplikasi Anda dalam produksi.

Untuk menerapkan pengujian:

  • Melakukan semua jenis pengujian secara terus-menerus selama siklus proses pengiriman software.
  • Otomatiskan pengujian ini dan sertakan dalam pipeline CI/CD. Buat pipeline Anda gagal jika salah satu pengujian gagal.
  • Mengupdate dan menambahkan pengujian baru secara terus-menerus untuk meningkatkan dan mempertahankan kondisi operasional deployment Anda.

Untuk lingkungan pengujian Anda:

  • Gunakan project Google Cloud yang terpisah untuk setiap lingkungan pengujian yang Anda miliki. Untuk setiap aplikasi, gunakan lingkungan project yang terpisah. Pemisahan ini memberikan demarkasi yang jelas antara resource lingkungan produksi dan resource lingkungan Anda yang lebih rendah. Pemisahan ini membantu memastikan bahwa perubahan apa pun di satu lingkungan tidak akan memengaruhi lingkungan lain secara tidak sengaja.
  • Mengotomatiskan pembuatan lingkungan pengujian. Salah satu cara untuk melakukan otomatisasi ini adalah menggunakan infrastruktur sebagai kode.
  • Gunakan lingkungan produksi sintetis untuk menguji perubahan. Lingkungan ini menyediakan lingkungan seperti produksi untuk menguji aplikasi Anda dan menjalankan berbagai jenis pengujian pada workload Anda, termasuk pengujian menyeluruh dan pengujian performa.

Untuk informasi selengkapnya tentang menerapkan pengujian berkelanjutan, lihat Otomatisasi pengujian.

Luncurkan deployment secara bertahap

Pilih strategi deployment Anda berdasarkan parameter penting, seperti gangguan minimum terhadap pengguna akhir, update berkelanjutan, strategi rollback, dan strategi pengujian A/B. Untuk setiap workload, evaluasi persyaratan ini dan pilih strategi deployment dari teknik yang telah terbukti, seperti update berkelanjutan, blue-green deployment, dan deployment canary.

Hanya biarkan proses CI/CD membuat dan mengirim perubahan di lingkungan produksi Anda.

Pertimbangkan untuk menggunakan infrastruktur yang tidak dapat diubah. Infrastruktur yang tidak dapat diubah adalah infrastruktur yang tidak berubah atau diperbarui. Jika perlu men-deploy kode baru atau mengubah konfigurasi lain di lingkungan, Anda mengganti seluruh lingkungan (misalnya, kumpulan VM, atau Pod) dengan lingkungan baru. Blue/green deployment adalah contoh infrastruktur yang tidak dapat diubah.

Sebaiknya lakukan pengujian terbatas dan amati sistem untuk menemukan error saat men-deploy perubahan. Jenis pengamatan ini lebih mudah jika Anda memiliki sistem pemantauan dan pemberitahuan yang canggih. Untuk melakukan pengujian A/B atau pengujian canary, Anda dapat menggunakan grup instance terkelola Google Cloud. Kemudian, Anda dapat melakukan peluncuran lambat, atau pemulihan jika perlu.

Pertimbangkan untuk menggunakan Cloud Deploy untuk mengotomatiskan deployment dan mengelola pipeline deployment Anda. Anda juga dapat menggunakan banyak alat pihak ketiga, seperti Spinnaker dan Tekton, di Google Cloud untuk deployment otomatis dan untuk membuat pipeline deployment singkat ini.

Pulihkan rilis sebelumnya dengan lancar

Tentukan strategi pemulihan Anda sebagai bagian dari strategi deployment. Pastikan Anda dapat melakukan roll back deployment, atau konfigurasi infrastruktur, ke versi kode sumber sebelumnya. Memulihkan deployment yang stabil sebelumnya merupakan langkah penting dalam manajemen insiden untuk keandalan dan insiden keamanan.

Selain itu, pastikan Anda dapat memulihkan lingkungan ke keadaan semula sebelum proses deployment dimulai. Hal ini dapat mencakup:

  • Kemampuan untuk mengembalikan perubahan kode apa pun di aplikasi Anda.
  • Kemampuan untuk mengembalikan perubahan konfigurasi apa pun yang dilakukan pada lingkungan.
  • Menggunakan infrastruktur yang tidak dapat diubah dan memastikan bahwa deployment tidak mengubah lingkungan. Praktik ini mempermudah pengembalian perubahan konfigurasi.

Memantau pipeline CI/CD

Agar proses build, pengujian, dan deployment otomatis Anda berjalan lancar, pantau pipeline CI/CD Anda. Tetapkan pemberitahuan yang menunjukkan ketika ada yang gagal di pipeline. Setiap langkah pipeline Anda harus menulis laporan log yang sesuai sehingga tim Anda dapat melakukan analisis akar masalah jika pipeline gagal.

Di Google Cloud, semua layanan CI/CD terintegrasi dengan Kemampuan Observabilitas Google Cloud. Contoh:

Untuk mengetahui detail tentang pemantauan dan logging, lihat Menyiapkan pemantauan, pemberitahuan, dan logging.

Deploy aplikasi secara aman

Tinjau bagian Men-deploy aplikasi dengan aman dari kategori keamanan, kepatuhan, dan privasi Framework Arsitektur.

Tetapkan panduan pengelolaan untuk rilis versi

Untuk membantu engineer Anda menghindari kesalahan, dan untuk memungkinkan pengiriman software velocity tinggi, pastikan pedoman pengelolaan Anda untuk merilis versi software baru didokumentasikan dengan jelas.

Engineer rilis mengawasi cara pembuatan dan pengiriman software. Sistem engineering rilis dipandu oleh empat praktik:

  • Mode layanan mandiri. Tetapkan pedoman untuk membantu software engineer menghindari kesalahan umum. Pedoman ini umumnya dikodifikasi dalam proses otomatis.

  • Rilis rutin. Kecepatan tinggi membantu pemecahan masalah dan mempermudah penyelesaian masalah. Rilis rutin bergantung pada pengujian unit otomatis.

  • Build hermetis. Pastikan konsistensi dengan alat build Anda. Versi compiler build yang Anda gunakan untuk mem-build versi saat ini dan satu bulan lalu.

  • Penerapan kebijakan. Semua perubahan memerlukan peninjauan kode, idealnya termasuk serangkaian pedoman dan kebijakan untuk menerapkan keamanan. Penerapan kebijakan meningkatkan peninjauan kode, pemecahan masalah, dan pengujian rilis baru.

Langkah selanjutnya