Мыслить контейнерами — это перестроить приложения. Например:— Пароли, ключи API, токены и другие конфигурационные данные не должны быть вшиты в код или лежать в локальных файлах конфигурации рядом с бинарником (типа config.ini). Приложение должно быть способно читать конфигурацию из переменных окружения, из выделенного хранилища, а пароли — из хранилища секретов.— Вместо записи логов в файлы на локальной файловой системе приложение должно писать все логи в стандартный вывод и стандартный вывод ошибок. Желательно, чтобы логи были структурированными.— Надо стремиться стать stateless. Любое состояние (сессии, данные пользователя, кеш) должно храниться во внешних системах: базах данных, кеш-серверах (Redis), распределённых хранилищах (тот же Ceph через Persistent Volumes).— Не надо использовать локальные диски ноды для хранения важных данных, которые должны пережить перезапуск пода.— Хорошо бы быстро запускаться, чтобы ускорить масштабирование и восстановление после сбоев.— Надо уметь корректно обрабатывать сигнал SIGTERM для завершения работы: завершить текущие транзакции, закрыть соединения, сохранить временные данные перед остановкой.— Приложение должно предоставлять HTTP-эндпоинты (или другие механизмы) для проверки его «здоровья» (liveness probe — жив ли ещё процесс) и готовности принимать трафик (readiness probe — готово ли приложение к работе).— Приложение должно само отдавать метрики о своей работе (количество запросов, время ответа, размер очереди, ошибки, бизнес-метрики).— Приложение должно учитывать, что оно работает в «эфемерной» среде, где экземпляры могут появляться и исчезать. Принципы The Twelve-Factor App — хорошее руководство.И это только начало.
Оставить комментарий/отзыв