@oywemy

БД и Микросервис в одном pod, но разных контейнерах — хорошо или нет?

Является ли хорошей практикой в каждый pod вместе с микросервисом добавлять еще и контейнер базы данных к нему?
Ранее читал на просторах интернета, что база данных в контейнере - это вообще плохо, но как иначе изолировать базы данных для микросервисов?

K8S( WorkingNode( Pod( Container(Логика), Container(База данных) ) ) )
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
Обычно подразумевается что микросервис/под - это одноразовая рыбка без памяти. В любой момент экземпляр микросервиса может быть убит и трафик будет передан другому экземпляру например в другом месте (нода, локация и т.п.). Грубо следует ориентироваться что сервис обслуживает один запрос и мрёт.

А вот база данных - долговременное (постоянное, надёжное) хранение данных. Если говорить о популярных реляционных СУБД, то на сегодня это с большой вероятностью - postgress
То что касается "изоляции" данных разных микросервисов - у него уже всё есть. К примеру в его терминах "каждому микросервису по базе данных" - это "каждому микросервису по схеме" (ибо БД растяжимое понятие и database в терминах pg - это чуть иное) притом естественно к каждой схеме отдельная УЗ (роль)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Для постоянных вещей типа СУБД придумали statefulset - его и нужно использовать. И отдельно от приложения.
Ответ написан
Комментировать
@lotary
Звучит как костыль)) почему нельзя базу данных запустить отдельно? Так получается, что при обновлении пода перезапускается и база данных. Да и вообще можно использовать один инстанс базы, с разными схемами для различных микросервисов. Если же нужны разные базы для разных микросервисов, то изолировать можно через Network Policies.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы