У нас есть пример использования EC2, когда мы хотим построить наш код на EC2, но эти сборки нечасты.
Учитывая, что сборка может занять около 5-60 минут, а мы строим что-то 2-5 раз в день, как лучше всего сбалансировать стоимость и удобство?
Следует ли нам использовать более крупный тип инстанса со спотовыми инстансами и EBS и попытаться заставить персонал останавливать инстанс, когда он не нужен? Должны ли мы использовать T2 вместо T3, чтобы использовать стартовые кредиты? Или у нас должен быть меньший экземпляр в безлимитном режиме, который мы продолжаем запускать, чтобы получить кредиты, чтобы прожечь при реальном строительстве?
Есть ли другие подходы, которые следует рассмотреть?
Какой инструмент CI / CD вы используете? Дженкинс? GitLab? Бамбук? GoCD? CodePipeline? Что-то другое?
У большинства инструментов CI / CD есть способ разворачивать хосты сборки только при необходимости, запускать сборку, сохранять созданные артефакты (например, для S3) и останавливать хост сборки. Все автоматически как часть конвейера CI / CD.
Я бы определенно рассмотрел Определять экземпляры - в идеале m5.something или c5.something. Обычно вы можете получить их на месте очень дешево.
Не используйте T2 / T3 - создание кода - это задача с интенсивным использованием ЦП, а T2 / T3 не для этого.
Не полагайтесь на то, что разработчики запускают / останавливают экземпляры вручную. Они этого не сделают.
Если ваша сборка может быть выполнена в контейнере, и если ваш CI / CD поддерживает ее, попробуйте построить в контейнере Fargate - нет хостов для управления, более быстрое развертывание и отключение, а также поддержка спотовых цен.
И, конечно, взгляните на Amazon CodeBuild - управляемый сервис, специально разработанный для сборки пакетов из исходного кода.
Множество опций, но зависит от того, что умеет ваш инструмент CI / CD.
Надеюсь, это поможет :)