наиболее здравым балансом между монорепностью и мультирепностью является держать все лямбды одного сервиса в одной репе.
при таком подходе у меня вопрос - а как решаются вопросы с CI/CD при таком подходе? Интересует деплой только изменившихся функций, а не всех сразу. Как такое принято разруливать?
Если важен тулинг, то смотрю в сторону GitHub Actions + Terraform, но готов посмотреть и на CodeBuild + CodeDeploy, если там сильно легче будет
Принцип такой, что сравнивается контрольная сумма архива. Если изменилась - делается новая версия.
это уже на этапе деплоя, правильно? Потому что архивы являются артефактами после сборки лямбд. А собирать неизменившееся лямбды не хотелось бы (лишняя трата ресурсов)
Посмотрите в сторону serverless
Да. Это при деплое. Иначе сложно понять, что менялось, так как лямбда может состоять из нескольких файлов. Может разве что какая то тулза быть, чтобы хранила чексуммы
Я активно ее использую как раз. Пакует все в архив
Да, но все через cloudformation У нас просто весь проект на sls
из того, что я нагуглил - костылеподобные вещи на CI путем git-diff + парсим с помощью sed/awk изменившееся пути лямбд + запускаем билд только поменявшихся лямбд ну и далее уже понятно. Заниматься таким самому конечно не хотелось бы
а что конкретно там посмотреть - их организацию CI/CD?
В целом можете организовать набор своих лямбд как серверлесс приложение и деплоить через него. Но да, можно и только процесс ci/cd посмотреть.
У меня два стартапа также. Там нюанс в том, что он также запакует все в архив и будет сравнивать чек суммы архивов
а какой смысл, если можно в докер паковать?
Ну это не ко мне вопрос ) Я не топикстартер В моём проекте я вообще все в expressjs лямбду запаковал и уехало. Полноценный бэкенд в одной лямбде
Обсуждают сегодня