Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
REL08-BP04 Terapkan menggunakan infrastruktur yang tidak dapat diubah
Infrastruktur tetap adalah model yang menuntut bahwa tidak ada pembaruan, patch keamanan, atau perubahan konfigurasi yang terjadi di tempat pada beban kerja produksi. Saat perubahan diperlukan, arsitektur dibangun ke infrastruktur baru dan di-deploy ke dalam lingkungan produksi.
Ikuti strategi penerapan infrastruktur tetap untuk meningkatkan keandalan, konsistensi, dan keterulangan (reproducibility) dalam deployment beban kerja Anda.
Hasil yang diinginkan: Dengan infrastruktur yang tidak dapat diubah, tidak ada modifikasi di tempat yang diizinkan untuk menjalankan sumber daya infrastruktur dalam sebuah beban kerja. Sebaliknya, ketika ada sebuah perubahan yang diperlukan, kumpulan sumber daya infrastruktur baru yang sudah diperbarui, yang berisi semua perubahan yang diperlukan, di-deploy secara paralel dengan sumber daya Anda yang ada. Deployment ini divalidasi secara otomatis, dan jika berhasil, lalu lintas akan dialihkan secara bertahap ke kumpulan sumber daya baru.
Strategi deployment ini berlaku di antaranya untuk pembaruan perangkat lunak, patch keamanan, perubahan infrastruktur, pembaruan konfigurasi, dan pembaruan aplikasi.
Anti-pola umum:
-
Menerapkan perubahan di tempat untuk menjalankan sumber daya infrastruktur.
Manfaat menjalankan praktik terbaik ini:
-
Peningkatan konsistensi di seluruh lingkungan: Karena tidak ada perbedaan dalam sumber daya infrastruktur di seluruh lingkungan, maka konsistensi ditingkatkan dan pengujian disederhanakan.
-
Mengurangi penyimpangan konfigurasi: Dengan mengganti sumber daya infrastruktur dengan konfigurasi yang diketahui dan dikontrol versi, infrastruktur tersebut diatur ke status yang diketahui, diuji, dan tepercaya, menghindari penyimpangan konfigurasi.
-
Deployment atom yang andal: Deployment berhasil diselesaikan atau tidak ada yang berubah, meningkatkan konsistensi dan keandalan dalam proses deployment.
-
Deployment disederhanakan: Deployment disederhanakan karena tidak memerlukan pembaruan dukungan. Pembaruan hanyalah berupa deployment baru.
-
Deployment yang lebih aman dengan proses rollback dan pemulihan yang cepat: Deployment lebih aman karena versi sebelumnya yang digunakan tidak diubah. Anda dapat melakukan rollback jika ada kesalahan yang terdeteksi.
-
Postur keamanan yang ditingkatkan: Dengan tidak mengizinkan perubahan infrastruktur, mekanisme akses jarak jauh (sepertiSSH) dapat dinonaktifkan. Hal ini akan mengurangi vektor serangan, sehingga meningkatkan postur keamanan organisasi.
Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan: Sedang
Panduan implementasi
Otomatisasi
Saat menentukan strategi deployment infrastruktur yang tidak dapat diubah, Anda sebaiknya menggunakan otomatisasi
Dengan Infrastruktur sebagai Kode (IaC), langkah-langkah penyediaan infrastruktur, orkestrasi, dan deployment ditentukan dengan cara terprogram, deskriptif, dan deklaratif dan disimpan dalam sistem kontrol sumber. Memanfaatkan infrastruktur sebagai kode akan makin memudahkan otomatisasi deployment infrastruktur dan membantu Anda mewujudkan ketetapan (immutability) infrastruktur.
Pola deployment
Ketika ada perubahan dalam beban kerja yang diperlukan, strategi deployment tetap mengharuskan deployment sumber daya infrastruktur yang baru, termasuk semua perubahan yang diperlukan. Kumpulan sumber daya baru ini harus mengikuti pola rollout yang meminimalkan dampak terhadap pengguna. Ada dua strategi utama untuk deployment ini:
Deployment canary: Praktik ini mengarahkan sejumlah kecil pelanggan kepada versi baru, yang biasanya dijalankan di sebuah instans layanan tunggal (canary). Lalu, Anda meneliti secara mendalam setiap perubahan perilaku atau kesalahan yang dihasilkan. Anda dapat menghapus lalu lintas dari canary jika menemui masalah-masalah kritis dan mengembalikan pengguna ke versi sebelumnya. Jika penerapan berhasil, Anda dapat terus menerapkan pada kecepatan yang Anda inginkan, sambil memantau perubahan untuk kesalahan, hingga Anda sepenuhnya digunakan. AWS CodeDeploy dapat dikonfigurasi dengan konfigurasi penerapan yang memungkinkan penerapan kenari.
Deployment blue/green: Deployment yang bersifat serupa dengan deployment canary, kecuali armada penuh aplikasi di-deploy secara paralel. Anda mengubah deployment Anda di dua tumpukan (blue and green). Sekali lagi, Anda mengirimkan lalu lintas ke versi yang baru, dan kembali ke versi lama jika Anda melihat ada masalah yang terjadi dengan deployment. Umumnya semua lalu lintas diaktifkan sekaligus, namun Anda juga dapat menggunakan sebagian kecil lalu lintas Anda ke setiap versi untuk mengaktifkan adopsi versi baru menggunakan DNS kemampuan perutean tertimbang Amazon Route 53. AWS CodeDeploy dan AWS Elastic Beanstalkdapat dikonfigurasi dengan konfigurasi penerapan yang memungkinkan penerapan biru/hijau.
Deteksi penyimpangan
Penyimpangan didefinisikan sebagai setiap perubahan yang menyebabkan sumber daya infrastruktur memiliki status atau konfigurasi yang berbeda dengan apa yang diharapkan. Setiap jenis perubahan konfigurasi yang tidak terkelola bertentangan dengan gagasan infrastruktur tetap dan tidak bisa diubah (immutable), dan harus dideteksi dan diperbaiki agar infrastruktur tetap berhasil diimplementasikan.
Langkah-langkah implementasi
-
Larang modifikasi di tempat pada sumber daya infrastruktur yang sedang berjalan.
-
Anda dapat menggunakan AWS Identity and Access Management (IAM)
untuk menentukan siapa atau apa yang dapat mengakses layanan dan sumber daya AWS, mengelola izin berbutir halus secara terpusat, dan menganalisis akses untuk menyempurnakan izin di seluruh. AWS
-
-
Lakukan otomatisasi terhadap deployment sumber daya infrastruktur untuk meningkatkan reproduksibilitas dan meminimalkan terjadinya potensi kesalahan manusia.
-
Seperti yang dijelaskan dalam Introduction to DevOps on AWS whitepaper, otomatisasi adalah landasan dengan AWS layanan dan didukung secara internal di semua layanan, fitur, dan penawaran.
-
Memanggang Amazon Machine Image (AMI) Anda dapat mempercepat waktu untuk meluncurkannya. EC2Image Builder
adalah AWS layanan terkelola penuh yang membantu Anda mengotomatiskan pembuatan, pemeliharaan, validasi, berbagi, dan penyebaran kustom up-to-date Linux atau Windows yang disesuaikan, aman, dan. AMI -
Beberapa layanan yang mendukung otomatisasi adalah:
-
AWS Elastic Beanstalk
adalah layanan untuk menyebarkan dan menskalakan aplikasi web dengan cepat yang dikembangkan dengan Java,. NET,PHP, Node.js, Python, Ruby, Go, dan Docker di server yang sudah dikenal seperti Apache,, Passenger, NGINX dan. IIS -
AWS Proton
membantu tim platform menghubungkan dan mengoordinasikan semua alat berbeda yang dibutuhkan tim pengembangan Anda untuk penyediaan infrastruktur, penerapan kode, pemantauan, dan pembaruan. AWS Proton memungkinkan infrastruktur otomatis sebagai penyediaan kode dan penyebaran aplikasi tanpa server dan berbasis kontainer.
-
-
Memanfaatkan infrastruktur sebagai kode memudahkan untuk mengotomatisasi penyebaran infrastruktur, dan membantu mencapai kekekalan infrastruktur. AWS menyediakan layanan yang memungkinkan pembuatan, penyebaran, dan pemeliharaan infrastruktur dengan cara terprogram, deskriptif, dan deklaratif.
-
AWS CloudFormation
membantu pengembang menciptakan AWS sumber daya secara teratur dan dapat diprediksi. Sumber daya ditulis dalam file teks menggunakan JSON atau YAML format. Templat memerlukan sebuah sintaks dan struktur tertentu sesuai dengan jenis sumber daya yang sedang dibuat dan dikelola. Anda menulis sumber daya Anda di JSON atau YAML dengan editor kode apa pun seperti AWS Cloud9, memeriksanya ke dalam sistem kontrol versi, dan kemudian CloudFormation membangun layanan yang ditentukan dengan cara yang aman dan berulang. -
AWS Serverless Application Model (AWS SAM)
adalah kerangka kerja sumber terbuka yang dapat Anda gunakan untuk membangun aplikasi tanpa server. AWS AWS SAM terintegrasi dengan AWS layanan lain, dan merupakan perpanjangan dari. AWS CloudFormation -
AWS Cloud Development Kit (AWS CDK)
adalah sebuah kerangka kerja pengembangan perangkat lunak sumber terbuka untuk membuat model dan menyediakan sumber daya aplikasi cloud Anda menggunakan bahasa pemrograman yang sudah dikenal. Anda dapat menggunakan AWS CDK untuk memodelkan infrastruktur aplikasi menggunakan TypeScript, Python, Java, dan. NET. AWS CDK digunakan AWS CloudFormation di latar belakang untuk menyediakan sumber daya dengan cara yang aman dan berulang. -
AWS Cloud Control API
memperkenalkan kumpulan umum Create, Read, Update, Delete, dan List (CRUDL) APIs untuk membantu pengembang mengelola infrastruktur cloud mereka dengan cara yang mudah dan konsisten. Cloud Control API Common APIs memungkinkan pengembang untuk mengelola siklus hidup dan layanan pihak ketiga secara seragam. AWS
-
-
-
Implementasikan pola deployment yang meminimalkan dampak-dampaknya terhadap pengguna.
-
Deteksi konfigurasi atau penyimpangan status. Untuk informasi selengkapnya, silakan lihat Mendeteksi perubahan konfigurasi yang tidak terkelola pada tumpukan dan sumber daya.
Sumber daya
Praktik-praktik terbaik terkait:
Dokumen terkait:
Video terkait: