×Закрыть
Chief Architect в Parimatch Tech
  • .NET Core: как работают микросервисы в контейнерах

    Боюсь эта переписка уходит в не конструктивную плоскость. Все же, постараюсь ответить на ваши вопросы:

    кто писать будет?

    Тот же человек, который бы писал любой другой скрипт по упаковке решения в артефакт для деплоймента. В одних компаниях это девопс, в других — девелопер, в третьих — человек-сорокоручка. В статье описывается, что время билда образа может значительно ускоряться за счет кеширования слоев. И сравнение с cookbook не совсем корректно, поскольку Dockerfile выполняется в момент подготовки артефакта, а не развертывания

    а что значит небольшой? как и в чем ее оценить?

    Это так же описано в статье, смотрите пример с Redis. Конечно, если у вас есть, скажем, требования PCI DSS, то надо будет отдельно прорабатывать защиту соответствующих микросервисов. Но если утрировать до «потери бизнеса» — то тогда и VM не являются полноценной изоляцией, как показал Meltdown и Spectre.

    это высказывание абсолютно голословно, пока не подтверждено хоть какими-то конкретными цифрами

    При этом вы не привели опровергающих фактов :). Как я и упоминал, всегда надо понимать преимущества и недостатки технологий. Негативные стороны VM по сравнению с контейнерами — потребление ресурсов: размер виртуалки, RAM, время старта. По CPU у виртуалок оверхед минимальный, но если придираться — то преимущество в пару процентов на стороне контейнеров. Из преимуществ VM — более стабильное/отточенное решение, привычное для бизнеса.

    Если говорить о производительности — есть немного устаревшая статья (2014 год) по сравнению KVM с Docker domino.research.ibm.com/...​0681E7B/$File/rc25482.pdf. Вывод, который они сделали:

    Both VMs and containers are mature technology that have benefited from a decade of incremental hardware and software optimizations. In general, Docker equals or exceeds KVM performance in every case we tested. Our results show that both KVM and Docker introduce negligible overhead for CPU and memory performance (except in extreme cases). For I/O intensive workloads, both forms of virtualization should be used carefully.
  • .NET Core: как работают микросервисы в контейнерах

    а сколько времени нужно, чтобы приготовить контейнеры?

    Если имеете в виду процесс билда docker build — то непосредственно время выполнения указанных операций (и которых нет в кеше) в Dockerfile + относительно небольшой оверхед на поднятие контейнеров во время билда
    Если же имеете в виду запуск контейнера docker run, то при наличие всех слоев на машине время запуска сравнимо c запуском непосредственно самого решения вне контейнера. Если всех слоев нет — то к этому времени добавляется загрузка недостающих слоев из докер-репозитория.

    одного конкретного ресурса — RAM (и сугубо в случае с микросервисами

    По сравнению с виртуалками — по всем ресурсам выигрышь на стороне контейнера (за исключением небольшой потери изоляции, которую сервисы бизнес-логики не заметят). RAM, дисковое пространство, CPU наверное в меньшей степени (хотя если сравнивать старт VM со стартом контейнера...)

    а вот при локальном хранении контейнеров (на хосте) — расход дискового пространства сумасшедший

    Вот тут не совсем понял что с чем сравнивается... если хранить локально такое же количество виртуальных машин будет меньше расход дискового пространства?
    Если имеете в виду оставшиеся закешированные образы и выключенные контейнеры — то при наличие оркестратора контейнеров подчищать лишнее будет его обязаностью.

  • .NET Core: как работают микросервисы в контейнерах

    Более полный ответ:
    по сравнению с развертыванием напрямую на хост-машине — у контейнеров профит в изоляции (каждый контейнер живет в своем мире, не зная про соседей), повторяемости (всегда _почти_ одинаковая среда независимо от хоста) и универсальности (решение позволяет разворачивать однообразно самые различные сервисы).
    по сравнению с развертыванием в виртуальных машинах — значительно более быстрое развертывание и значительная экономия ресурсов