Проектный анализ docker и k8s на основе предметной области

Проектный анализ docker и k8s на основе предметной области

createBy lln
createTime 2023-04-10
createInfo 以下问答均来自与ChatGpt,基于docker和k8s的相关设计,快速了解领域驱动设计的实际运用。

Ключевые слова: доменно-ориентированный дизайн DDD docker Kubernetes

В чем разница между дизайном, управляемым доменом, и обычным дизайном?

  • Domain-Driven Design (сокращенно DDD) — это методология разработки программного обеспечения, которая делает упор на разделение программных систем на разные домены, а также описывает и решает проблемы предметной области с помощью моделей предметной области. DDD подчеркивает, что проблемы предметной области являются отправной точкой разработки программного обеспечения, а не традиционное функциональное программирование (FP) или объектно-ориентированное программирование (ООП).
  • По сравнению с обычным дизайном доменно-ориентированный дизайн имеет следующие отличия:
  • Акцент на модели предметной области: дизайн, ориентированный на предметную область, делает упор на преобразование проблем предметной области в модели предметной области, а также описывает и решает проблемы предметной области с помощью моделей предметной области. В основе программной системы лежит модель предметной области, а не традиционные функции или структуры данных.
  • Подчеркните специфичность предметной области: проектирование, ориентированное на предметную область, делит проблемы предметной области на разные области и подчеркивает специфичность предметной области. Это означает, что при разработке программного обеспечения оно должно основываться на модели предметной области, а не на традиционном общем дизайне.
  • Акцент на историях предметной области: дизайн, ориентированный на предметную область, делает упор на преобразование проблем предметной области в модели предметной области, а также описывает и решает проблемы предметной области с помощью моделей предметной области. Модели предметной области должны быть переведены в истории предметной области, чтобы разработчики и эксперты предметной области могли понимать и общаться.
  • Подчеркните согласованность предметной области. Дизайн, ориентированный на предметную область, подчеркивает, что модели предметной области должны поддерживать согласованность предметной области. Это означает, что при разработке программного обеспечения для согласования различий между различными моделями предметной области следует использовать модель предметной области, а не традиционный интерфейс или преобразование данных.
    Короче говоря, проектирование, ориентированное на предметную область, рассматривает проблемы предметной области как отправную точку разработки программного обеспечения, подчеркивает модели предметной области как ядро ​​программных систем, подчеркивает специфичность предметной области и истории предметной области, а также подчеркивает согласованность предметной области. Эти характеристики заставляют предметно-ориентированное проектирование уделять больше внимания проблемам предметной области программных систем, чем обычное проектирование, и может лучше удовлетворять потребности экспертов в предметной области.

быстрая расческа

Возьмем в качестве примера дизайн программной архитектуры, такой как docker и k8s.

  • область применения

    • И Docker, и Kubernetes — это системы развертывания и управления приложениями для контейнеризации, и обе они относятся к области приложений. И Docker, и Kubernetes предназначены для моделирования домена приложения, что делает развертывание приложений и управление ими проще и эффективнее.

      • Та же точка

        • Упаковка приложений: и Docker, и Kubernetes поддерживают упаковку приложений, то есть упаковку приложения и его зависимостей в один образ. Такой дизайн может обеспечить согласованность и переносимость приложения в различных средах, тем самым повышая надежность и стабильность приложения.
        • Оркестрация контейнеров: и Docker, и Kubernetes поддерживают оркестрацию контейнеров, то есть можно легко управлять несколькими контейнерами и развертывать их. Инструменты оркестрации контейнеров могут автоматизировать развертывание, масштабирование и управление контейнерами, тем самым повышая эффективность и надежность контейнерных приложений.
        • Дизайн образа: и Docker, и Kubernetes поддерживают дизайн образа, то есть приложение и его зависимости могут быть упакованы в один образ. Зеркалирование может обеспечить согласованность и переносимость приложения в различных средах, тем самым повышая надежность и стабильность приложения.
        • Сетевой дизайн: и Docker, и Kubernetes поддерживают сетевой дизайн, то есть сетевые соединения между контейнерами можно настроить. Сетевой дизайн позволяет контейнерам взаимодействовать друг с другом, тем самым повышая гибкость и масштабируемость контейнерных приложений.
        • Мониторинг приложений: и Docker, и Kubernetes поддерживают мониторинг приложений, то есть можно отслеживать показатели работоспособности и производительности контейнеров. Мониторинг приложений может помочь разработчикам и операторам лучше понять производительность и стабильность приложений, чтобы они могли своевременно принимать меры для решения проблем.
      • разница

        • Метод оркестровки: Docker основан на оркестровке контейнеров, которая поддерживает автоматическое развертывание, расширение и управление контейнерами. Kubernetes, с другой стороны, основан на управлении кластером, который поддерживает автоматическое развертывание, расширение и управление контейнерами, а также может управлять несколькими инструментами оркестрации контейнеров.
        • Модель управления: модель управления Docker основана на образах, которые поддерживают настройку образов и управление ими. Модель управления Kubernetes основана на кластере, который поддерживает настройку и управление кластером.
        • Дизайн сети: Docker поддерживает сетевое соединение по умолчанию между контейнерами, а такие функции, как Cgroups, NetworkMode и Docker Network, можно использовать для реализации связи между контейнерами. Kubernetes поддерживает использование сетевых подключений по умолчанию между контейнерами, а также поддерживает использование сетевых подключаемых модулей Kubernetes для связи между контейнерами.
        • Метод развертывания: метод развертывания Docker может быть частным складом, общедоступным складом или локальным каталогом. А Kubernetes можно развернуть в инструменте оркестрации частного контейнера, инструменте оркестровки общедоступного контейнера или в локальном каталоге.
        • Сценарии приложений: Docker подходит для одноконтейнерных приложений и может использоваться в таких сценариях, как разработка, тестирование, развертывание, эксплуатация и обслуживание. Kubernetes подходит для крупномасштабных контейнерных приложений и может использоваться в таких сценариях, как производственные среды, облачные платформы и DevOps.
  • Поле контейнера:

    • И Docker, и Kubernetes — это технологии, используемые для контейнеризации, и обе они относятся к области контейнеров. И Docker, и Kubernetes предназначены для моделирования домена контейнеров, что упрощает и повышает эффективность развертывания, управления и масштабирования контейнеров.

      • Та же точка

        • Оба основаны на контейнерах: и Docker, и Kubernetes основаны на контейнерах, и оба являются системами развертывания и управления приложениями для контейнеризации.
        • Оба поддерживают оркестрацию контейнеров: и Docker, и Kubernetes поддерживают оркестрацию контейнеров, то есть развертывание, расширение и управление контейнерами можно автоматизировать.
        • Оба поддерживают взаимодействие между контейнерами: и Docker, и Kubernetes поддерживают взаимодействие между контейнерами, что позволяет контейнерам взаимодействовать друг с другом.
        • Оба поддерживают сетевое проектирование: и Docker, и Kubernetes поддерживают сетевое проектирование, то есть можно настроить сетевые соединения между контейнерами.
        • Оба поддерживают управление ресурсами: и Docker, и Kubernetes поддерживают управление ресурсами, то есть можно управлять использованием ресурсов контейнерных приложений.
        • Оба поддерживают мультитенантный дизайн: и Docker, и Kubernetes поддерживают мультитенантный дизайн, то есть они могут поддерживать несколько арендаторов для одновременного использования одного и того же ресурса.
        • Оба поддерживают автоматическое развертывание: и Docker, и Kubernetes поддерживают автоматическое развертывание, то есть для автоматического развертывания контейнерных приложений можно использовать автоматизированные инструменты.
      • разница

        • Модель управления: модель управления Docker основана на образах, которые поддерживают настройку образов и управление ими. Модель управления Kubernetes основана на кластере, который поддерживает настройку и управление кластером.
        • Метод развертывания: метод развертывания Docker может быть частным складом, общедоступным складом или локальным каталогом. А Kubernetes можно развернуть в инструменте оркестрации частного контейнера, инструменте оркестровки общедоступного контейнера или в локальном каталоге.
        • Дизайн сети: Docker поддерживает сетевое соединение по умолчанию между контейнерами, а такие функции, как Cgroups, NetworkMode и Docker Network, можно использовать для реализации связи между контейнерами. Kubernetes поддерживает использование сетевых подключений по умолчанию между контейнерами, а также поддерживает использование сетевых подключаемых модулей Kubernetes для связи между контейнерами.
        • Сценарии приложений: Docker подходит для одноконтейнерных приложений и может использоваться в таких сценариях, как разработка, тестирование, развертывание, эксплуатация и обслуживание. Kubernetes подходит для крупномасштабных контейнерных приложений и может использоваться в таких сценариях, как производственные среды, облачные платформы и DevOps.
        • Дизайн компонентов: Docker в основном состоит из трех компонентов: Docker Engine, Docker Client и Docker Store. Kubernetes в основном включает шесть компонентов: Kubernetes Controller, Kubernetes Deployment, Kubernetes Service, Kubernetes Ingress и Kubernetes ConfigMap.
        • Безопасность по дизайну: и Docker, и Kubernetes поддерживают безопасность по дизайну, но их идеи дизайна отличаются. Docker обеспечивает безопасность в первую очередь за счет изоляции контейнера и настроек безопасности по умолчанию. Kubernetes, с другой стороны, реализует безопасность с помощью таких функций, как мультиарендность, контроль разрешений и оркестрация контейнеров.
  • Поле сети:

    • И Docker, и Kubernetes поддерживают сетевое проектирование, и оба они относятся к области сетей. И Docker, и Kubernetes разработаны на основе моделирования сетевого домена, что делает связь между контейнерами проще и эффективнее.

      • Та же точка

        • Поддержка контейнерной сети: и Docker, и Kubernetes поддерживают контейнерную сеть, которая позволяет контейнерам взаимодействовать друг с другом. Docker использует контейнерную сеть по умолчанию, а Kubernetes предоставляет множество сетевых подключаемых модулей, таких как Calico, Flannel и Weave Net, которые могут поддерживать контейнерные сети.
        • Поддержка сетевой изоляции: и Docker, и Kubernetes поддерживают сетевую изоляцию, что позволяет изолировать контейнеры на сетевом уровне. Docker использует пространство имен хоста и технологию изоляции сети, в то время как Kubernetes использует изоляцию Pod и технологию пространства имен.
        • Поддержка балансировки нагрузки: и Docker, и Kubernetes поддерживают балансировку нагрузки, что позволяет распределять нагрузку между контейнерами. Docker использует файлы конфигурации Compose и Service для балансировки нагрузки, а Kubernetes предоставляет подключаемые модули Ingress и Load Balancer для балансировки нагрузки.
        • Поддержка управления сетевыми потоками: и Docker, и Kubernetes поддерживают управление сетевыми потоками, что позволяет управлять потоками между контейнерами. Docker использует Cgroups и NetworkMode для реализации управления потоком, а Kubernetes использует QoS и Resource Quota для реализации управления потоком.
      • разница

        • Различные сетевые модели: Docker использует контейнерную сеть по умолчанию, которая представляет собой простую сетевую модель, основанную на сетевом стеке Linux, в то время как Kubernetes предоставляет различные сетевые подключаемые модули, такие как Calico, Flannel и Weave Net, которые могут поддерживать более сложные сетевые модели.
        • Различные методы сетевого подключения: контейнеры Docker по умолчанию напрямую подключены друг к другу, в то время как контейнеры Kubernetes необходимо подключать через сеть контейнеров по умолчанию или сетевые подключаемые модули.
        • Управление сетевым потоком отличается: Docker использует Cgroups и NetworkMode для реализации управления потоком, а Kubernetes использует QoS и Resource Quota для реализации управления потоком.
        • Изоляция контейнерной сети отличается: Docker использует пространство имен хоста и технологию изоляции сети для достижения изоляции сети контейнера, в то время как Kubernetes использует изоляцию Pod и технологию пространства имен для достижения изоляции сети контейнера.
        • Подключаемые модули сети контейнеров различаются: Docker по умолчанию использует сеть контейнеров по умолчанию, тогда как Kubernetes предоставляет различные сетевые подключаемые модули, такие как Calico, Flannel и Weave Net, которые могут поддерживать сети контейнеров.
  • Области оркестрации контейнеров:

    • И Docker, и Kubernetes являются инструментами для оркестровки контейнеров, и оба они относятся к области оркестровки контейнеров. И Docker, и Kubernetes разработаны на основе моделирования области оркестрации контейнеров, что делает оркестрацию контейнеров проще, эффективнее и надежнее.

      • Та же точка

        • Контейнеризация приложений: и Docker, и Kubernetes являются инструментами для контейнеризации приложений. Они помогают пользователям упаковывать приложения в контейнеры для развертывания и управления в распределенных средах.
        • Распределенная архитектура. И Docker, и Kubernetes разработаны на основе распределенной архитектуры, и оба они поддерживают развертывание и расширение контейнеров на нескольких узлах.
        • Автоматическое развертывание: и Docker, и Kubernetes предоставляют функцию автоматического развертывания, которая может помочь пользователям автоматизировать развертывание приложений и управление ими.
        • Оркестрация контейнеров: и Docker, и Kubernetes — это инструменты для оркестровки контейнеров, которые позволяют пользователям легко управлять контейнерными приложениями и развертывать их.
        • Управление ресурсами: и Docker, и Kubernetes предоставляют функции управления ресурсами контейнера, включая создание, уничтожение, настройку и управление контейнерами.
        • Автоматическое масштабирование: и Docker, и Kubernetes могут автоматически масштабировать приложения и управлять ими, включая такие функции, как балансировка нагрузки, отказоустойчивость и расширение емкости.
        • Плоскость управления: и Docker, и Kubernetes предоставляют функцию плоскости управления, которая может помочь пользователям легко управлять жизненным циклом и конфигурацией контейнерных приложений.
        • Визуальный мониторинг: и Docker, и Kubernetes предоставляют функции визуального мониторинга, которые могут помочь пользователям легко отслеживать состояние и производительность контейнерных приложений.
      • разница

        • Различные концепции: цель дизайна Docker — позволить пользователям легко управлять контейнерными приложениями и развертывать их, а цель дизайна Kubernetes — предоставить масштабируемую, надежную и эффективную систему оркестрации контейнеров для создания контейнерных приложений и управления ими.
        • Подход к оркестровке контейнеров: Docker и Kubernetes по-разному подходят к оркестровке контейнеров. Docker в основном основан на односторонних зависимостях между образами и контейнерами, то есть все зависимости и библиотеки приложения упаковываются в один образ, а затем образ прогоняется через контейнер. Kubernetes — это распределенная система оркестрации контейнеров, основанная на Kubernetes rnetes, которая может управлять несколькими контейнерами и развертывать их, а также предоставляет некоторые механизмы расширения и отказоустойчивости для лучшей поддержки контейнерных приложений.
        • Уровни оркестрации контейнеров: Docker и Kubernetes различаются уровнями оркестровки контейнеров. Docker фокусируется в первую очередь на оркестровке контейнеров, то есть на том, как контейнеризованные приложения управляются и развертываются. Kubernetes, с другой стороны, уделяет больше внимания управлению кластерами контейнеров, то есть тому, как управлять несколькими контейнерами и развертывать их, и предоставляет некоторые механизмы расширения и отказоустойчивости для лучшей поддержки контейнерных приложений.
        • Плоскость управления: Docker и Kubernetes различаются плоскостью управления. Docker в основном управляет плоскостью управления контейнера через образ Docker, то есть как управлять жизненным циклом и конфигурацией контейнера. Kubernetes, с другой стороны, управляет плоскостью управления кластерами контейнеров через плоскость управления Kubernetes, включая такие функции, как жизненный цикл, конфигурация и управление контейнерами.
        • Как взаимодействуют контейнеры: Docker и Kubernetes различаются тем, как взаимодействуют контейнеры. Docker в основном обменивается данными между контейнерами на основе stdin/stdout и сетевых интерфейсов Docker, в то время как Kubernetes использует Kubernetes API и объекты ресурсов Kubernetes для связи между контейнерами.

практическое использование

  • (1) разделить бизнес-домен на несколько бизнес-поддоменов (соответствующих нескольким микросервисам) в соответствии с границами бизнеса;
  • (2) Разложите бизнес-поддомен на несколько объектов домена (соответствующих нескольким Сервисам в рамках определенного микросервиса):
  • (3) Определить несколько действий предметной области объекта предметной области, охватывающих бизнес-деятельности, связанные с объектом предметной области (деятельность предметной области соответствует методу в сервисе:
  • (4) Определите агрегаты, сущности и объекты-значения, участвующие в деятельности предметной области (соответствующие объектам-сущностям и объектам данных микросервисов).
  • (5) Сравните различные поддомены. Анализировать похожие объекты предметной области, действия предметной области, агрегаты, сущности и объекты-значения, а также объединять и дедуплицировать их в соответствии с определенным порогом сходства.
  • (6) Проанализируйте один и тот же поддомен.Если нет взаимодействия между разными сервисами, его можно дополнительно разделить на разные микросервисы.
  • (7) Организуйте деловых и технических экспертов, последовательно выполняйте шаги 1-6 и постоянно повышайте рациональность разделения.

Пример:

  • (1) На основе результатов вертикального разделения микросервисов провести дальнейшее горизонтальное разделение.
  • (2) Взаимодействие человека с компьютером относится к бизнес-приложениям.
  • (3) Изменяемая транзакционная логика обработки и хранения данных, принадлежащая бизнес-приложениям.
  • (4) Стабильная и базовая логическая обработка и хранение данных, которые относятся к поддержке бизнеса

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42559985/article/details/130086413
conseillé
Classement