- Контейнер [Container] -
🟣это приложение или хранилище данных, которые необходимы программной системе для функционирования
Часто в русскоязычных источниках только этим определением и довольствуются. Иногда еще переводят список примеров контейнеров, который Саймон приводит тут.
Однако только этот пункт + список создают интересные интерпретации контейнеров аналитиками (посмотрим позже, вместе с диаграммами). Поэтому добавим еще граничное условие:
🟣это то, что может быть развернуто или запущено самостоятельно (является самостоятельной единицей развертывания)
Вот тут мы и приплыли. Редко когда аналитики, даже сеньорного уровня, сталкиваются с понятием "развертывание"... И уж тем более, на этапе создания системы аналитику определить, что же будет этой самой самостоятельной единицей, зачастую затруднительно.
Моя позиция тут проста - при необходимости лучше проконсультироваться с программистами/девопсами/эксплуатацией.
ИИшечка, кстати, предлагает дать такое определение: то, что может функционировать независимо от остальных частей системы. Может, такое действительно проще :)
Но есть еще условие для выделения контейнера, которое должно быть очень понятно аналитикам:
🟣зачастую для коммуникации контейнерам требуются удаленные интерфейсы (RESTful API, SOAP, обмен сообщениями через брокеры, etc)
И last, but not least:
🟣под контейнером в C4 не имеется в виду Docker-контейнер!
Шутки шутками, а для Саймона это важно :) Фактически в каждом своем материале он упоминает, что он не имел в виду Docker. И вообще, он начал использовать термин раньше, чем Docker проник повсеместно (с) 🙃
Конечно, если вы используете платформу контейнеризации, то, весьма вероятно, у вас будет некоторое равенство между этими терминами.
На деле же модель C4 под контейнером понимает кусок вашей системы, обеспечивающий ее работоспособность. Docker - это же техническая реализация развертывания, вы вообще можете не использовать контейнеризацию в своей системе. Но если у вас нет в системе docker-контейнеров, это не значит, что у вас нет контейнеров для отрисовки на диаграммах C4 :)