Когда приложение создается и развернуто в качестве контейнера, есть несколько соображений, которые необходимо сделать с точки зрения опыта разработчика. В частности, необходимо принять решение о том, насколько разработчики собираются создать приложение, как это действительно построено, и если они собираются запустить его так, как будто оно действительно работает на своих машинах.
Почему это важно?
Наличие местного развития более похоже на то, как построено и развернуто фактическое приложение, имеет много преимуществ. Чем больше, что может быть достигнуто на машине разработки, обеспечит более быструю обратную связь в отношении статуса сборки и состояния приложения после тестирования. Это также означает, что должно быть меньше различий или сюрпризов, когда приложение выходит за рамки машины разработчика.
Каковы проблемы?
Многие среды разработки предоставляются разработчикам в виде виртуального изображения рабочего стола. Некоторые варианты виртуализации затрудняют, а иногда и невозможным, чтобы запустить Docker внутри них. Существует также влияние на время, необходимое для разработчиков, чтобы проверить изменения в приложении. Запуск сборки Docker, а затем остановка и запуск приложения иногда могут занять много времени. Очень важно попытаться уменьшить количество времени, необходимого для изменения кода, чтобы быть в состоянии протестировать.
Есть ли компромисс?
Хорошим средним уровнем является предоставление инструментов и документации, чтобы разрешить тестирование кода в разработчике IDE, а также из работающего контейнера в качестве отображенного тома. Расположение скомпилированного кода может быть отображено в качестве тома в местоположение, которое он находится в контейнере. Это позволяет использовать код, созданный из разработчика IDE, будет использоваться в работающем контейнере. Однако в контейнерах, таких как контейнеры на основе Java, для применения изменений кода все еще необходимо перезапуск.
Краткое изложение различных маршрутов к изменениям тестирования следующим образом:
Полностью тестирование в IDE
- Плюсы:
- Быстрое применение и тестирование изменений
- Нет проблем, если в виртуальном изображении рабочего стола (VDI)
- Минусы:
- Не известно, сломали ли изменения сборка Docker
- Не известно, необходимы ли изменения конфигурации для запуска контейнера
- Плюсы:
Запуск последнего изображения приложения в качестве контейнера с Mounts Volume
- Плюсы:
- Код работает в контейнере
- Изменения конфигурации известны
- Не требуется сборка Docker
- Минусы:
- Не известно, сломали ли изменения сборка Docker
- Контейнер может потребоваться возобновить после изменений.
- Плюсы:
Запуск сборки Docker и запуск полученного изображения в качестве контейнера
- Плюсы:
- Нет разницы между местной и реальной средой
- Минусы:
- Запуск сборки Docker и запуск изображения в качестве контейнера после каждого изменения кода может занять очень долгое время
- Плюсы:
Вывод
Для всех нет правильного ответа. Плюсы и минусы должны рассматриваться на основе потребностей разработчиков и конкретных требований приложения. Предоставление разработчикам способности создавать и запускать приложение в качестве контейнера, когда им необходимо, в большинстве случаев достаточна для отладки и решения любых проблем, которые могут возникнуть в результате различной среды разработки.
Оригинал: «https://dev.to/leading-edje/development-environment-considerations-for-containerized-applications-2okm»