Назад | Перейти на главную страницу

Подходит ли контейнер Docker для приложения, которое работает круглосуточно и без выходных?

У меня есть консольное приложение .Net Core, которое мне нужно запускать круглосуточно и без выходных. Я пытаюсь решить, как разместить это приложение. Я склоняюсь к размещению этого в контейнере Docker, поскольку в будущем я могу использовать Kubernetes для масштабирования до нескольких экземпляров этого приложения.

Созданы ли контейнеры для приложений, которым необходимо оставаться активными в течение длительного времени, или они предназначены для краткосрочных рабочих задач?

Наиболее частый ответ, который вы получите, - «да» (и они «должны» быть), но, как системный администратор, мне приходилось слишком много раз восстанавливать сломанные докеры, например, после обновлений APT. Это не ответ как таковой, но я могу поделиться некоторым опытом.

Кроме того, вы можете подумать о том, кто отвечает за установку обновлений безопасности и исправлений безопасности обратного порта. Многие контейнеры создаются, а затем забываются, в результате чего остаются всевозможные уязвимые демоны, библиотеки и т. Д. Если вы работаете на Ubuntu LTS, вы больше уверены в постоянных обновлениях безопасности.

Также, когда дело касается масштабирования; не зная своей ситуации, это часто воспринимается как требование слишком рано в процессе. Сначала найдите пользователей. Вы можете масштабировать один сервер до десятков ядер, вероятно, легко обслуживая сотни одновременных пользователей. Я слишком часто вижу ошибку: «Я делаю приложение и уже знаю, что у меня будет миллион пользователей».

Наборы с отслеживанием состояния в Kubernetes предназначены для использования - как следует из названия - контейнерных приложений с отслеживанием состояния, таких как, например, Rocket.Chat (https://rocket.chat/docs/installation/helm-chart/) или других производственных приложений, которые могут иметь, например, строгие целевые значения времени восстановления (https://portworx.com/kubernetes-data-management-perspective-understanding-rto-rpo/). Поэтому я говорю, что да! Судя по всему, использование Kubernetes для высокодоступного приложения производственного уровня является современным. Я пишу по этому поводу свою бакалаврскую диссертацию, и мы делаем это на работе.