CodeDeploy part 2 Flashcards
CodeDeploy
Какие сервисы нужны для реализации Alerting’а?
- Как организовать Alerting в email?
- Как организовать Alerting в Slack?
После выполнения Deployment’а
можно автоматически отправить сообщение в SNS или запустить Lambda.
- Событие (deployment’а) можно отловить в сервисе
CloudWatch Events
- Тогда
CloudWatch Events
триггернётSNS
илиLambda
-
SNS
может отправить email -
Lambda
может написать в Slack
-
CodeDeploy
Для EC2 / On-premise
Какие есть стратегии деплоймента?
Что можно в них настроить?
Через какие сервисы они реализованы?
Что такое Deployment Configuration?
-
IN_PLACE
(с Load Balancer’ом или без него)- Все за раз
AllAtOnce
- По одному
OneAtATime
- Половину из них
HalfAtATime
- Все за раз
-
BLUE_GREEN
(обязательно с Load Balancer’ом)- Используем
Load Balancer
- Переключаемся между старой
AutoScaling Group
и новой
- Используем
Последовательность CodeDeploy Hooks для EC2 instance (IN_PLACE)?
-
App Stop
→Download Bundle
→Install
→App Start
→ValidateService
-
BlockTraffic
иAllowTraffic
появляются до и после, если есть LoadBalancer
Последовательность CodeDeploy Hooks для EC2 instance (BLUE_GREEN)?
- Хуки у тела те же, что и для
EC2 (IN_PLACE)
- Сначала тело, затем
AllowTraffic
дляv2
, затемBlockTraffic
дляv1
В форме чего технически реализуют CodeDeploy хуки?
Для EC2, Lambda, ECS
- для
EC2
(и On-Premise) реализуют в форме скриптов - для
ECS
иLambda
реализуют в форме Лямбда функций
CodeDeploy
для EC2 => BLUE_GREEN deployment может быть
- manual
- automatic
В чём разница? Как устроен каждый вариант?
При этом можно указать BlueInstanceTermination Option
- Action Terminate
- Action Keep Alive
В чём разница? Как устроен каждый вариант?
-
Manual Mode
(вручную повесить тэги на EC2 instance’ы, чтобыELB
мог отличать новые от старых) -
Automatic Mode
(ELB
будет иметь новую и старуюASG
) -
Action Terminate
(1h
по-умолчанию,2 days
максимум) -
Action Keep Alive
(дерегистрировать синие EC2 instance’ы, но НЕ удалять - дорогая опция)
Какие стратегии деплоймента есть для Lambda / ECS?
Как они устроены?
- Linear - постепенно смещать трафик по 10% в минуту
- Canary - сместить 10% трафика на 5 минут, а затем - оставшиеся 90%
- AllAtOnce - самый быстрый и опасный
Как поэтапно происходит Ci/CD для Лямбда функции.
Начиная от “разработчик пушит изменения в CodeCommit с исходным кодом” до “новая версия Лямбды доставлена”
Использовать
- appspec.yaml
- CodeCommit
- EventBridge
- CodeDeploy
- CodeBuild
- S3
- Lambda version 1, version 2
1) разработчик пушит изменения в CodeCommit с исходным кодом Лямбда функции
2) CodeBuild автоматически запускается через EventBridge
CodeBuild создаёт новую версию Lambda функции
CodeBuild ГЕНЕРИРУЕТ файл appspec.yaml
в файле appspec.yaml указана стратегия деплоймента и номер новой версии Лямбды
CodeBuild отправляет сгенерированный appspec.yaml в S3
3) CodeDeploy забирает appspec.yaml из S3
CodeDeploy использует appspec.yaml, чтобы выполнить traffic-shift Лямбда функции от v1 к v2
Последовательность CodeDeploy Hooks для Lambda?
AllowTraffic - до и после можно выполнить свои Hooks
Что делает CodeDeploy с новой версией приложения?
CodeDeploy
НЕ создаёт новую версию Лямбда-функции (или ECS-таски).
Подготовить новую версию приложения должен разработчик.
CodeDeploy
лишь предлагает варианты переключения от старой версии к новой.