Apakah ada cara untuk mempercepat AWS CodeDeploy

15

Saya menggunakan AWS CodeDeploy untuk menyebarkan situs saya, dan saya perhatikan itu tidak terlalu konsisten dalam kecepatan; kadang-kadang itu cukup cepat, tetapi di lain waktu setiap langkah penyebaran bisa memakan waktu beberapa menit. Ini cukup menjengkelkan ketika penyebaran harus dilakukan dengan cepat, jika ada bug atau pemadaman.

Saya tidak dapat menemukan dokumentasi apa pun tentang kecepatan CodeDeploy, dan juga saya tidak bisa menemukan logika apa pun ketika lambat atau ketika sedang cepat. Apakah ada cara untuk mempercepatnya dan apakah ada cara untuk mengetahui apa yang memakan waktu begitu lama?

Jasper Kennis
sumber

Jawaban:

10

CodeDeploy melakukan sangat sedikit secara default - itu mengambil kode dari S3 atau Github, kemudian menjalankan skrip Anda sesuai appspec.ymlinstruksi file.

Jika penyebaran Anda meraih gigabytes data dari S3, Anda akan menemukan bahwa memerlukan waktu untuk transfer data (terutama pada instance EC2 yang lebih kecil dengan bandwidth terbatas), tetapi selain itu keterlambatan penyebaran lebih mungkin terjadi karena apa pun yang Anda Sedang dilakukan dalam skrip penerapan Anda.

Langkah-langkah dalam penyebaran CodeDeploy adalah:

  • ApplicationStop - Anda mengontrol pengait ini
  • UnduhBundle - CodeDeploy mengambil kode dari S3 / Github
  • BeforeInstall - Anda mengontrol kait ini
  • Instal - CodeDeploy menyalin kode dari lokasi temp ke tujuan akhir
  • AfterInstall - Anda mengontrol pengait ini
  • ApplicationStart - Anda mengontrol kait ini
  • ValidateService - Anda mengontrol kait ini

Yang tebal terserah CodeDeploy, yang lain terserah Anda. Jika Anda melihat berbagai penundaan dalam cetak tebal, hubungi dukungan AWS, tetapi jika tidak, Anda perlu menyelidiki kait Anda.

ceejayoz
sumber
Ya, skrip saya sendiri sederhana dan cepat. Ini adalah langkah Unduh bundel yang sering membutuhkan waktu beberapa menit untuk berjalan, dan proyek saya tidak sebesar itu; sama seringnya hanya butuh beberapa detik. Saya tidak punya rencana dukungan dev tho, dan saya tidak mau membayar hanya untuk ini, jadi saya akan membiarkannya untuk sekarang.
Jasper Kennis
Dicek lagi, masalahnya harus bandwidth; kami menggunakan jenis instance kecil untuk server staging kami dan lebih besar satu kali untuk produksi, dan itu selalu staging yang lambat.
Jasper Kennis
@JasperKennis Ya, tipe instance yang lebih kecil dapat dibatasi bandwidth, terutama jika Anda menggunakan host dengan tetangga yang berisik. Itu masuk akal.
ceejayoz
21

BlockTraffic dan AllowTraffic

Cukup dengan menyesuaikan pengaturan pemeriksaan kesehatan kelompok target Anda dapat mengurangi beberapa menit.

Sebelum

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Setelah

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Penjelasan

Ini berhasil karena BlockTrafficdan AllowTraffickeduanya menunggu pemeriksaan kesehatan yang berhasil. Interval pemeriksaan kesehatan default adalah 1 pemeriksaan setiap 30 detik, dan pemeriksaan kesehatan yang berhasil membutuhkan 5 200 tanggapan berurutan. Dengan demikian, diperlukan lebih dari 2 menit 30 detik secara default. Dan itu untuk setiap instance EC2. Mengurangi interval pemeriksaan kesehatan dan membatasi jumlah pemeriksaan yang berhasil diperlukan akan meningkatkan waktu penempatan.

Peter Tao
sumber
Setelah melakukan perubahan ini saya mendapatkan Script at specified location: ... failed to complete in 5 seconds. (sudah diatur di appspec.yml-> kait: -> BeforeInstall :) (tolong beri tahu saya alasannya)
Yevgeniy Afanasyev
Apakah ada batas waktu yang diatur dalam konfigurasi BeforeInstall? docs.aws.amazon.com/codedeploy/latest/userguide/...
Peter Tao
Terima kasih, sekarang saya melihat itu tidak berhubungan, tetapi lebih merupakan kebetulan.
Yevgeniy Afanasyev
2

Pengaturan lain yang perlu diperiksa adalah "Delegasi Penundaan Pendaftaran" dari Grup Target. Pengaturan pemeriksaan kesehatan saya sudah rendah dan ini adalah hambatan dalam kasus saya.

Harun
sumber