Чи є спосіб пришвидшити AWS CodeDeploy


15

Я використовую AWS CodeDeploy для розгортання своїх сайтів, і я помітив, що він не дуже відповідає швидкості; іноді це досить швидко, але в інших випадках кожен крок розгортання може зайняти кілька хвилин. Це дуже дратує, коли розгортання слід виконувати швидко, у разі помилок або відключень.

Я не можу знайти жодної документації щодо швидкості CodeDeploy, а також, здається, не можу знайти жодної логіки, коли це повільно або коли це швидко. Чи є якийсь спосіб прискорити це і чи є спосіб дізнатися, що займає так довго?

Відповіді:


10

CodeDeploy робить дуже мало за замовчуванням - він захоплює код з S3 або Github, а потім запускає ваші сценарії відповідно до appspec.ymlвказівок файлу.

Якщо ваші розгортання захоплюють гігабайти даних із S3, ви переконаєтесь, що потрібен певний час для передачі даних (особливо для менших випадків EC2 з обмеженою пропускною здатністю), але окрім затримок розгортання набагато більше шансів на те, що ви робиш у своїх сценаріях розгортання.

Крок розгортання CodeDeploy:

  • ApplicationStop - ви керуєте цим гаком
  • DownloadBundle - CodeDeploy захоплює код від S3 / Github
  • Перед встановленням - ви керуєте цим гаком
  • Встановити - CodeDeploy копіює код з тимчасового місця до кінцевого пункту призначення
  • AfterInstall - ви керуєте цим гаком
  • ApplicationStart - ви керуєте цим гаком
  • ValidateService - ви керуєте цим гаком

Сміливі кольори залежать від CodeDeploy, інші - від вас. Якщо ви помітили різну затримку у напівжирних шрифтах, зверніться до служби підтримки AWS, але в іншому випадку, можливо, вам доведеться дослідити свої гачки.


Так, мої власні сценарії прості та швидкі. Це крок завантаження пакета, який часто займає кілька хвилин, і мій проект не такий великий; так само часто це займає лише секунди. У мене немає плану підтримки розробників через це, і я не готовий платити за це лише за це, тому я просто дозволю це зробити зараз.
Джаспер Кенніс

Перевіривши це ще раз, проблема повинна полягати в пропускній здатності; ми використовуємо невеликий тип екземпляра для нашого сервера інсценізації та більший один раз для виробництва, і це завжди відбувається повільно.
Джаспер Кенніс

@JasperKennis Так, менші типи примірників можуть бути досить обмеженими пропускною здатністю, особливо якщо ви перебуваєте в хості з галасливими сусідами. Це мало б сенс.
ceejayoz

21

BlockTraffic і AllowTraffic

Просте налаштування параметрів перевірки здоров’я вашої цільової групи може погіршитись за пару хвилин.

До цього

введіть тут опис зображення введіть тут опис зображення

Після

введіть тут опис зображення введіть тут опис зображення

Пояснення

Це працює , тому що BlockTrafficі AllowTrafficяк очікування успішних перевірок здоров'я. Інтервал перевірки стану за замовчуванням - 1 перевірка кожні 30 секунд, а для успішної перевірки здоров'я потрібно 5 послідовних 200 відповідей. Таким чином, за замовчуванням потрібно більше 2 хв 30 секунд. І це для кожного екземпляра EC2. Скорочення інтервалу перевірки стану здоров'я та обмеження кількості необхідних успішних перевірок покращать час розгортання.


Після внесення цієї зміни я отримую Script at specified location: ... failed to complete in 5 seconds. (він встановлений у appspec.yml-> гачки: -> BeforeInstall :) (будь ласка, скажіть мені чому)
Євген Афанасьєв

Чи встановлений тайм-аут у конфігурації BeforeInstall? docs.aws.amazon.com/codedeploy/latest/userguide/…
Пітер Тао

Дякую, зараз я бачу, що це не пов'язане, а скоріше збіг.
Євген Афанасьєв

2

Інший параметр, який слід перевірити, - це "затримка зреєстрації" цільової групи. Мої налаштування перевірки здоров’я вже були низькими, і це було вузьким місцем у моєму випадку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.