SEC11-BP06 Lakukan deployment perangkat lunak secara terprogram - AWS Kerangka Well-Architected

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

SEC11-BP06 Lakukan deployment perangkat lunak secara terprogram

Lakukan deployment perangkat lunak secara terprogram jika memungkinkan. Pendekatan ini mengurangi kemungkinan terjadinya kegagalan deployment atau masalah tak terduga karena kesalahan manusia.

Hasil yang diinginkan: Versi beban kerja yang Anda uji adalah versi yang Anda deploy, dan deployment dilakukan secara konsisten setiap saat. Anda mengeksternalisasi konfigurasi beban kerja Anda, yang membantu Anda melakukan deployment ke lingkungan yang berbeda-beda tanpa perubahan. Anda menerapkan penandatanganan kriptografis terhadap paket perangkat lunak untuk memastikan bahwa tidak ada yang berubah di antara lingkungan.

Anti-pola umum:

  • Men-deploy perangkat lunak secara manual ke tahap produksi.

  • Melakukan perubahan secara manual ke perangkat lunak agar dapat menyesuaikan dengan lingkungan yang berbeda.

Manfaat menjalankan praktik terbaik ini:

  • Peningkatan kredibilitas dalam proses rilis perangkat lunak.

  • Penurunan risiko kegagalan perubahan yang berdampak pada fungsionalitas bisnis.

  • Peningkatan jadwal rilis karena risiko terhadap perubahan lebih rendah.

  • Kemampuan rollback otomatis untuk peristiwa tidak terduga selama deployment.

  • Kemampuan untuk membuktikan secara kriptografis bahwa perangkat lunak yang diuji adalah perangkat lunak yang di-deploy.

Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan: Tinggi

Panduan implementasi

Untuk mempertahankan infrastruktur aplikasi yang efektif dan andal, terapkan praktik deployment yang aman dan otomatis. Praktik ini mencakup penghapusan akses manusia yang persisten dari lingkungan produksi, dengan menggunakan alat CI/CD untuk deployment, dan mengeksternalisasi data konfigurasi khusus lingkungan. Dengan mengikuti pendekatan ini, Anda dapat meningkatkan keamanan, mengurangi risiko kesalahan manusia, dan menyederhanakan proses deployment.

Anda dapat membangun struktur Akun AWS Anda untuk menghapus akses manusia yang persisten dari lingkungan produksi. Praktik ini meminimalkan risiko perubahan yang tidak sah atau modifikasi yang tidak disengaja, yang meningkatkan integritas sistem produksi Anda. Alih-alih akses manusia langsung, Anda dapat menggunakan alat CI/CD seperti AWS CodeBuild dan AWS CodePipeline untuk melakukan deployment. Anda dapat menggunakan layanan ini untuk mengotomatiskan proses pembuatan, pengujian, dan deployment, yang mengurangi intervensi manual dan meningkatkan konsistensi.

Untuk lebih meningkatkan keamanan dan keterlacakan, Anda dapat menandatangani paket aplikasi setelah diuji dan memvalidasi tanda tangan ini selama deployment. Untuk melakukannya, gunakan alat kriptografi seperti AWS Signer atau AWS Key Management Service (AWS KMS). Dengan menandatangani dan memverifikasi paket, Anda dapat memastikan bahwa Anda hanya melakukan deployment kode yang telah diotorisasi dan divalidasi ke lingkungan Anda.

Selain itu, tim Anda dapat merancang beban kerja Anda untuk mendapatkan data konfigurasi khusus lingkungan dari sumber eksternal, seperti Penyimpanan Parameter AWS Systems Manager. Praktik ini memisahkan kode aplikasi dari data konfigurasi, yang membantu Anda mengelola dan memperbarui konfigurasi secara independen tanpa memodifikasi kode aplikasi itu sendiri.

Untuk menyederhanakan penyediaan dan manajemen infrastruktur, pertimbangkan untuk menggunakan alat infrastruktur sebagai kode (IaC) seperti AWS CloudFormation atau AWS CDK. Anda dapat menggunakan alat ini untuk mendefinisikan infrastruktur sebagai kode Anda, yang meningkatkan konsistensi dan kemampuan pengulangan deployment di berbagai lingkungan.

Pertimbangkan deployment canary untuk memvalidasi keberhasilan deployment perangkat lunak Anda. Deployment canary mencakup peluncuran perubahan ke subset instans atau pengguna sebelum melakukan deployment ke seluruh lingkungan produksi. Anda kemudian dapat memantau dampak perubahan dan melakukan rollback jika perlu, yang meminimalkan risiko masalah yang meluas.

Ikuti rekomendasi yang diuraikan dalam laporan resmi Mengatur Lingkungan AWS Anda dengan Menggunakan Beberapa Akun. Laporan resmi ini memberikan panduan tentang memisahkan lingkungan (seperti pengembangan, staging, dan produksi) ke dalam Akun AWS yang berbeda, sehingga lebih meningkatkan keamanan dan isolasi.

Langkah-langkah implementasi

  1. Siapkan struktur Akun AWS:

    • Ikuti panduan dalam laporan resmi Menyusun Lingkungan AWS Anda Menggunakan Beberapa Akun guna membuat Akun AWS terpisah untuk lingkungan yang berbeda (misalnya, pengembangan, staging, dan produksi).

    • Konfigurasikan kontrol akses dan izin yang sesuai untuk setiap akun guna membatasi akses manusia langsung ke lingkungan produksi.

  2. Terapkan pipeline CI/CD:

    • Siapkan pipeline CI/CD menggunakan layanan seperti AWS CodeBuild dan AWS CodePipeline.

    • Konfigurasikan pipeline untuk membangun, menguji, dan melakukan deployment kode aplikasi Anda secara otomatis ke lingkungan masing-masing.

    • Integrasikan repositori kode dengan pipeline CI/CD untuk kontrol versi dan manajemen kode.

  3. Tanda tangani dan verifikasi paket aplikasi:

    • Gunakan AWS Signer atau AWS Key Management Service (AWS KMS) untuk menandatangani paket aplikasi Anda setelah diuji dan divalidasi.

    • Konfigurasikan proses deployment untuk memverifikasi tanda tangan paket aplikasi sebelum Anda melakukan deployment-nya ke lingkungan target.

  4. Eksternalisasi data konfigurasi:

    • Simpan data konfigurasi khusus lingkungan di Penyimpanan Parameter AWSSystems Manager.

    • Ubah kode aplikasi Anda untuk mengambil data konfigurasi dari Penyimpanan Parameter selama deployment atau runtime.

  5. Terapkan infrastruktur sebagai kode (IaC):

    • Gunakan alat IaC seperti AWS CloudFormation atau AWS CDK untuk mendefinisikan dan mengelola infrastruktur sebagai kode Anda.

    • Buat templat CloudFormation atau skrip CDK untuk menyediakan dan mengonfigurasi sumber daya AWS yang diperlukan untuk aplikasi Anda.

    • Integrasikan IaC dengan pipeline CI/CD Anda untuk melakukan deployment perubahan infrastruktur secara otomatis bersamaan dengan perubahan kode aplikasi.

  6. Terapkan deployment canary:

    • Konfigurasikan proses deployment Anda untuk mendukung deployment canary, di mana perubahan diluncurkan ke subset instans atau pengguna sebelum Anda melakukan deployment-nya ke seluruh lingkungan produksi.

    • Gunakan layanan seperti AWS CodeDeploy atau AWS ECS untuk mengelola deployment canary dan memantau dampak perubahan.

    • Terapkan mekanisme rollback untuk kembali ke versi stabil sebelumnya jika masalah terdeteksi selama deployment canary.

  7. Pantau dan audit:

    • Siapkan mekanisme pemantauan dan pencatatan log untuk melacak deployment, kinerja aplikasi, dan perubahan infrastruktur.

    • Gunakan layanan seperti Amazon CloudWatch dan AWS CloudTrail untuk mengumpulkan serta menganalisis log dan metrik.

    • Terapkan pemeriksaan audit dan kepatuhan untuk memverifikasi kepatuhan terhadap praktik terbaik keamanan dan persyaratan peraturan.

  8. Terus tingkatkan:

    • Tinjau dan perbarui praktik deployment Anda secara berkala, serta terapkan umpan balik dan pelajaran yang diperoleh dari deployment sebelumnya.

    • Otomatiskan sebanyak mungkin proses deployment untuk mengurangi intervensi manual dan potensi kesalahan manusia.

    • Berkolaborasilah dengan tim lintas fungsi (misalnya, operasi atau keamanan) untuk menyelaraskan dan terus meningkatkan praktik deployment.

Dengan mengikuti langkah-langkah ini, Anda dapat menerapkan praktik deployment yang aman dan otomatis di lingkungan AWS Anda, yang meningkatkan keamanan, mengurangi risiko kesalahan manusia, dan menyederhanakan proses deployment.

Sumber daya

Praktik-praktik terbaik terkait:

Dokumen terkait:

Video terkait:

Contoh terkait: