BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Domain-Driven Design (DDD): понятия, контексты и пример » Введение в Domain-Driven Design: цели, термины и контекст применения

Введение в Domain-Driven Design: цели, термины и контекст применения

Domain-Driven Design (DDD) рассматривает разработку как совместную работу между бизнес-экспертами и инженерами над моделью предметной области. Главная идея - выстроить общий язык и структурировать систему вокруг бизнес-дипотребностей, а не вокруг технологий. В этом подходе имеют значение не столько технологические решения, сколько концептуальная ясность, управляемое изменение и устойчивые границы ответственности между частями системы. Цель главы - перейти от абстрактного представления домена к конкретной модели и понять, как стратегическое проектирование, Bounded Context и ubiquitous language помогают управлять сложностью и эволюцией системы.

 

Краткое содержание главы

  • Определение целей DDD, границ и условий применения в современных проектах.
  • Основные термины: домен, модель, язык домена, ограниченный контекст, карта контекстов и интеграционные контракты.
  • Стратегическое проектирование: как выделять контексты, устанавливать границы и управлять изменениями через контекстную карту.
  • Практика формирования ubiquitous language и моделирования предметной области без перегрузки техническими деталями.
  • Интеграционные контракты и анти-уровень для сохранения автономии контекстов и управляемого обмена данными.
  • Управление изменениями и внедрение DDD в организацию: роль команд, процессов и культуры.

     

Что такое Domain-Driven Design и зачем он нужен

DDD - это путь к устойчивому соответствию между тем, как бизнес видит свою область деятельности, и тем, как компьютерная система ее реализует. Его ядро состоит не в применении нового фреймворка, а в создании общего языка и структур, которые позволяют группе экспертов и разработчиков работать синхронно. В условиях изменяющихся бизнес-требований и растущей сложности систем именно стратегическое проектирование позволяет превратить хаотичные требования в управляемые контракты между частями системы.

Причины применения DDD в современных проектах обычно связаны с несколькими аспектами. Во-первых, бизнес-домен представляет собой множество правил, ограничений и событий, которые трудно зафиксировать через чистые CRUD-модели. Во-вторых, масштабируемые архитектуры требуют ясного разделения ответственности, чтобы изменения в одной части не порождали непредсказуемые последствия в другой. В-третьих, эволюция бизнес-процессов требует гибкости: новые правила, новые поддомены и новые интерфейсы должны внедряться без разрыва существующего функционала.

Важно отметить, что DDD не является универсальной панацеей. В проектах с простыми бизнес-правилами и ограниченной объемной изменчивостью можно достичь целей качественно и без формального применения всех практик DDD. Однако при наличии сложности доменной логики, необходимости частого обучения новых членов команды и потребности в устойчивом управлении изменениями DDD приносит существенные преимущества: повышение скорости коммуникации между бизнесом и ИТ, снижение затрат на поддержание согласованности и более предсказуемые траектории развития системы.

 

Основные термины и концепции

  • Домен - область знаний и деятельности, которую система должна поддерживать. Он задаёт цели, правила и ограничители поведения.
  • Модель - упрощённое представление домена, охватывающее его сущности, их свойства и взаимоотношения. Модель должна быть предметной, а не технологической.
  • Язык домена (Ubiquitous Language) - общая лексика, используемая в обсуждениях, моделировании и коде. Этот язык формируется совместными усилиями бизнес-экспертов и разработчиков и становится единым средством коммуникации.
  • Ограниченный контекст (Bounded Context) - граница, внутри которой одна и та же модель имеет смысл и согласована интерпретация. За пределами контекста терминология и правила могут меняться.
  • Контекстная карта (Context Map) - отображение отношений между bounded contexts, их зависимостей и соглашений о взаимодействии.
  • Интеграционные контракты - явные соглашения о том, как контексты обмениваются данными и поведением, включая форматы, события и гарантии.
  • Анти-уровень (Anti-Corruption Layer) - паттерн, который защищает один контекст от влияния другого, переводя между языками и моделями на уровне интерфейсов.
  • Core Domain, Distilled Subdomains - выделение ядра домена, а также поддоменов, которые являются основой конкурентного преимущества, поддерживаемых и обобщённых под конкретные задачи.
  • Стратегическое проектирование - процесс определения границ контекстов, выбора взаимодействий и формулирования контрактов между ними.

     

Стратегическое проектирование: контексты и карта контекстов

Стратегическое проектирование отвечает на вопрос, как разделить домен на управляемые части и какие отношения между ними допустимы. Главная идея - выделение bounded contexts таким образом, чтобы внутри каждого контекста модель была понятной, изменяемой и развиваемой независимо от других контекстов.

Процесс начинается с анализа предметной области и выявления поддоменов: Core Domain, поддерживающие поддомены и общие (Generic) функции. Core Domain - это та часть домена, которая приносит конкурентное преимущество и требует наибольшей глубины моделирования. Поддомены поддержки выполняют вспомогательные задачи, тогда как Generic Subdomains содержат общие паттерны, которые можно вынести в инфраструктуру без привязки к бизнес-логике.

После выявления поддоменов следует определить Boundaries - где одна модель должна жить, какова граница между контекстами, какие правила применяются внутри и при взаимодействии. Типы отношений между контекстами включают:

  • Shared Kernel - общее минимальное ядро, над которым работают несколько команд, где консистентность критична.
  • Customer-Supplier - один контекст предоставляет сервисы другому, контракт между ними четко формулируется.
  • Conformist - один контекст следует за другим без возможности изменить его поведение.
  • Anti-Corruption Layer - между контекстами существует слой перевода, защищающий ценности и язык каждого контекста.

Контекстная карта - основной инструмент визуализации и обсуждения. Она показываeт, какие контексты существуют, какие связи между ними существуют и какие паттерны применяются для взаимодействия. В современных архитектурах карта контекстов часто электризуется по мере эволюции бизнеса и внедрения новых сервисов; она служит дорожной картой изменений и основы для планирования миграций и интеграций.

Применение контекстной карты требует дисциплины: все связи должны быть согласованы, изменения - обсуждаться и документироваться, а новые контексты - внедряться через понятные интеграционные контракты. Такая практика снижает риск «разрушения» модели в одном контексте из-за изменений в другом и облегчает автономное развитие команд.

 

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

Язык домена - один из краеугольных камней DDD. Он должен быть единственным источником истины для обсуждений, требований к функциональности и реализации. Хорошо сформированный язык упрощает коммуникацию между бизнесом и техническими специалистами, сокращает недопонимания и позволяет кодировать знания в модели без «переводов» между мирами.

Чтобы язык развивался грамотно, необходима постоянная практика совместного моделирования. Важные техники включают:

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

Формирование модели внутри bounded context следует держать в рамках конкретной бизнес-логики. Избегать попыток «переписать» весь домен за один раз; предпочтительнее итеративный подход: начальные ядра, затем расширение через новые события и агрегаты. В этом контексте полезны принципы агрегаций, которые позволяют держать сложность локализованной внутри контекста. Аггрегат - это единица консистентности и изменений; внутри него должны соблюдаться инварианты, и доступ к данным лучше осуществлять через репозитории. Такую структуру не следует рассматривать как универсальный шаблон для всей системы, но она обеспечивает предсказуемость и атомарность изменений.

Практические аспекты формирования языка включают:

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

     

Интеграционные контракты и анти-уровень

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

Слабые места между контекстами, как правило, становятся источниками ошибок и технического долга. Чтобы этого избежать, применяют паттерны защиты:

  • Anti-Corruption Layer - прослойка транслитерации между двумя языками и моделями. Этот уровень переводит данные и команды так, чтобы внешний контекст не «просачивал» свои концепты и не ломал внутреннюю логику. В практике это значит наличие границ, адаптеров, переводчиков и контрактов, которые минимизируют влияние внешних зон на ядро контекста.
  • Shared Kernel - если несколько контекстов действительно работают в транспорте общих концептов, создают совместное, минимальное ядро, которое управляется командами и поддерживает согласованность.
  • Conformist и Customer-Supplier отношения - управление зависимостями между контекстами. В некоторых случаях один контекст может «покупать» сервисы у другого, следуя установленным контрактам, в других - один контекст может быть полностью зависим от другого и адаптация осуществляется через определенные правила.

Выбор паттерна зависит от бизнес-ценности и организационной структуры. В качестве практических ориентиров рекомендуется начинать с явного описания контрактов и ограничений, особенно на старте эволюции архитектуры, и переходить к более сложным взаимодействиям по мере роста зрелости проекта.

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

 

Управление изменениями и внедрение DDD

Переход к Domain-Driven Design требует не только технических изменений, но и изменений в организационной культуре и процессах. Важным аспектом является формирование команд, ориентированных на конкретные bounded contexts, что позволяет минимизировать пересечения и ускорить валидацию моделей. В рамках внедрения к ключевым практикам относятся:

  • начало с Core Domain: определение и углубление модели, вокруг которой будет строиться основная ценность продукта.
  • эволюция контекстов постепенно: после стабилизации ядра можно расширять границы на другие поддомены.
  • создание и поддержание ubiquitous language в рамках команд и между контекстами.
  • регулярная рефакторинговая работа по контекстным картам и контрактам, чтобы отражать изменения в бизнес-правилах.
  • развитие организационной структуры вокруг продуктовых команд и контекстов, а не вокруг технических слоев.
  • внедрение практик управления изменениями: согласование приоритизации, документирование контрактов и обеспечение обратной совместимости во времени.

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

Если говорить о практических технологических сигналах, то для поддержки DDD часто используют архитектурные подходы, которые дают возможность автономного изменения контекстов и безопасного обмена данными. Это может включать роль сервисной архитектуры, событийно-ориентированных механизмов, а также практики управления изменениями на уровне контрактов и версионирования. Примечательно, что выбор конкретных инструментов должен оставаться адаптивным к контекстной карте и бизнес-трипам; важно не «перегружать» проект лишними зависимостями и не отвлекаться на избыточные фрагменты, которые не добавляют ценности ядру домена.

 

Key takeaways

  • Domain-Driven Design фокусируется на выравнивании языка, модели и архитектуры с бизнес-реальностью.
  • Ограниченные контексты и контекстная карта - ключевые средства управления сложностью и эволюцией системы.
  • Ubiquitous Language обеспечивает единый язык между бизнесом и разработчиками, уменьшая риск недопонимания требований.
  • Интеграционные контракты и Anti-Corruption Layer позволяют сохранять автономию контекстов и управлять изменениями без разрушения системы.
  • Стратегическое проектирование требует раннего выделения Core Domain и устойчивой поддержки через архитектурные паттерны и процессы.
  • Внедрение DDD - это культурное и организационное изменение, требующее настройки командной структуры, процессов моделирования и обучения.
  • Принятие решений должно основываться на контекстах, а не на монолитной технологии: выбираются только те паттерны и инструменты, которые действительно поддерживают бизнес-цели.

     

FAQ

  1. Что такое DDD и чем он отличается от классических архитектурных подходов?

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

 

  1. Что такое bounded context и зачем он нужен?

Bounded context - это четко ограниченная зона, внутри которой определенная модель имеет смысл и согласована во всей команде. Он сотавляет границу ответственности, упрощает управление изменениями и позволяет независимое развитие контекстов без риска «смежной» миграции.

 

  1. Какую роль играет ubiquitous language в DDD?

Ubiquitous Language обеспечивает единое средство коммуникации между бизнесом и инженерами. Этот язык формирует термины, правила и концепции и затем воплощается в модели и коде. Его поддержание в актуальном состоянии снижает риск противоречий между требованиями и реализацией.

 

  1. Как выбрать стратегию контекстов и карту контекстов?

Выбор начинается с анализа домена и выделения Core Domain, поддоменов поддержки и общих функций. Контекстная карта позволяет визуализировать связи и выбрать подходящие паттерны взаимодействий - Anti-Corruption Layer, Shared Kernel, Customer-Supplier и т. д. Важно учитывать организационные ограничения и возможности автономного развития команд.

 

  1. Что такое интеграционные контракты и почему они критичны?

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

 

  1. Что такое Anti-Corruption Layer и как его применять на практике?

Anti-Corruption Layer - механизм защиты одного контекста от влияния другого. Практически он строится как адаптеры, translators и шлюзы, которые перекладывают коммуникацию между языками и моделями, минимизируя риск переноса нежелательных концептов в ядро контекста.

 

  1. Когда целесообразно начинать внедрение DDD в проект?

Начинать целесообразно при наличии сложности доменной логики, необходимости эволюции бизнес-процессов и требовании устойчивости к изменениям. Вначале можно сфокусироваться на Core Domain и создать базовую контекстную карту, затем постепенно расширять применение.

 

  1. Какие organizational изменения ускоряют внедрение DDD?

Эффективное внедрение требует перераспределения ролей и ответственности по контекстам, поддержки product-тем с автономией, создания постоянного пространства для совместного моделирования и регулярного обновления контекстной карты и контрактов.

 

  1. Как соотносятся DDD и микроархитектура?

DDD и микроархитектура часто дополняют друг друга: bounded contexts хорошо согласуются с сервисами и доменными сервисами, а контекстная карта помогает определить границы сервисов и их взаимодействия. В то же время микроархитектура не означает автоматического применения DDD - выбор должен опираться на характер домена и требования к управлению изменениями.

 

  1. Какие примеры инструментов и практик поддерживают DDD?

Практики моделирования, такие как Event Storming, и инструменты для управления контрактами, версии API и визуализации контекстной карты часто используются в сочетании с технологическими решениями, которые поддерживают событийно-ориентированные подходы и устойчивую интеграцию между контекстами. Примеры технологий и фреймворков следует подбирать в соответствии с конкретными задачами и архитектурными целями проекта.

 

Следующая статья →
Термины DDD: сущности, значения объектов, агрегаты и доменные сервисы

 

Узнать стоимость решенияЗапросить видео презентацию

Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • Русклимат
    Русклимат — международный торгово-производственный холдинг, концентрирующий опыт ведущих мировых производителей индустрии климата, мощный потенциал конструкторских бюро и лабораторий индустриального дизайна.
     
    Компания образована в 1996 году. За более чем двадцатилетнюю историю Русклимат прошел путь от локальной компании до мощной вертикально-интегрированной многопрофильной структуры.
     
  • ПАО АНК «Башнефть» — российская вертикально-интегрированная нефтяная компания, с 2016 года входит в ПАО НК «Роснефть». Главный офис расположен в городе Уфе (Башкортостан). Добыча углеводородов – более 21 млн тонн нефти в год. Объем переработки – более 18 млн тонн нефти в год. Число сотрудников – более 33 тыс. человек.

  • Ситилинк

    Электронный дискаунтер «Ситилинк» — один из крупнейших онлайн‑ритейлеров России (3‑е место по объему онлайн‑продаж в рейтинге Data Insight и Ruward 2016 года E‑commerce Index TOP‑100, 8 место в рейтинге Forbes «20 самых дорогих компаний Рунета — 2017»). На рынке работает 9 лет.

    В ассортименте дискаунтера более 50 000 наименований компьютерной цифровой, бытовой и садовой техники, офисной мебели и других товарных категорий. Более 700 мировых брендов в портфеле. Около 4 000 сотрудников по всей России

  • MoneyCare — кредитная платформа и сервис для ПОС-кредитования в магазинах, установленная в более чем 18 тысячах трейдинговых точек и сотрудничающая с 11 главными банками России.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.