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 на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Dagster с нуля: оркестрация data pipeline » Конфигурации и режимы выполнения: настройка параметров пайплайна

Конфигурации и режимы выполнения: настройка параметров пайплайна

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

Конфигурации в Dagster позволяют отделить параметры исполнения от кода пайплайна. Это обеспечивает повторяемость, тестируемость и управляемость изменений. В Dagster конфигурации применяются на разных уровнях: на уровне операций ( solids/ops), на уровне режима (ModeDefinition) и на уровне окружения для всего пайплайна. В сочетании с run_config они создают единый контекст исполнения, который можно подменять без правки логики обработки. Встроенный механизм валидации конфигураций снижает риск ошибок на проде и упрощает сотрудничество между командами: инженер-данных, инженеры по данным и DevOps.

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

  • Основные концепции: режимы выполнения, environment/config якорение аргументов, правила валидации и безопасность конфигураций, принципы версионирования и тестирования конфигураций, а также интеграции с системами секретов и внешними источниками параметров.

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

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

  • В конце главы представлены ключевые выводы и расширенные ответы на часто задаваемые вопросы.

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

     

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

  • Понимание концепций конфигураций Dagster: что можно параметризовать и зачем.
  • Режимы выполнения и их влияние на архитектуру и операционную практику.
  • Стратегии определения и валидации конфигураций на уровне solids/ops и пайплайна.
  • Управление окружениями: environment files, версия конфигураций, аудит и повторяемость.
  • Практические сценарии внедрения: локальная разработка, тестирование и продакшн-окружения.

     

Основы конфигураций Dagster

Конфигурации - это механизм передачи параметров в пайплайны без изменения кода. Они позволяют задавать входные данные, параметры обработки, параметры подключения к источникам данных и поведенческие настройки компонентов исполнения. В Dagster конфигурации упакованы в структуру environment, которая связывается с конкретным режимом исполнения (ModeDefinition) и с конкретными Solid/Op через config_schema.

  • config_schema на уровне solids/ops обеспечивает валидацию и доступ к параметрам через контекст выполнения. Это снижает риск ошибок, связанных с неверными типами или отсутствием ключей.

  • mode_defs объединяют ресурсы, логгеры и исполнители, которые применяются к конкретному пайплайну. Разделение конфигураций по режимам позволяет адаптировать поведение пайплайна к целям тестирования, локальной разработки и продакшн-окружения без изменений кода.

  • Environment file (env.yaml, env.json) выступает внешним источником параметров. Такой подход облегчает версионирование конфигураций и позволяет держать бизнес-параметры отдельно от технической логики.

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

  • Безопасность параметров: не храните в конфигурациях секреты напрямую; используйте ресурсы доступа к секретам или интеграцию с секрет-менеджерами (например, HashiCorp Vault) через защищённые провайдеры в режиме выполнения.

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

## Пример опростительного оп-витка с конфигурацией
@op(config_schema={"path": str, "retries": int, "format": {"type": str, "compression": str}})
def extract(context):
    cfg = context.op_config
    path = cfg["path"]
    retries = cfg["retries"]
    fmt_type = cfg["format"]["type"]
    compression = cfg["format"]["compression"]
    ## логика чтения данных
    ...

@op(config_schema={"table": str, "batch_size": int})
def transform(context, input_data):
    cfg = context.op_config
    table = cfg["table"]
    batch_size = cfg["batch_size"]
    ## трансформация данных
    ...

@op(config_schema={"destination": str})
def load(context, data):
    cfg = context.op_config
    dest = cfg["destination"]
    ## загрузка данных
    ...

Режимы выполнения: локальная разработка, масштабируемые режимы

Режим выполнения в Dagster определяет набор ресурсов, логгеров и исполнителей, которые применяются к пайплайну при исполнении. Это ключ к адаптации пайплайна под различные окружения: локальная разработка, тестирование, staging и продакшн. Выбор режима влияет на производительность, надёжность и стоимость эксплуатации.

  • LocalExecutor хорош для быстрой разработки: низкая задержка, простая настройка, отсутствие внешних очередей.

  • MultiProcessExecutor позволяет распараллеливать задачи внутри одного процесса Python, улучшая пропускную способность на локальной машине.

  • KubernetesJobExecutor или CeleryExecutor (при наличии инфраструктуры) позволяют масштабировать обработку на кластере, управлять лимитами ресурсов и обеспечивать устойчивость к падениям узлов.

  • В реальном проекте часто применяется сочетание режимов: например, локальная разработка с LocalExecutor для быстрого цикла изменений и KubernetesJobExecutor для продакшн-исполнения.

    from dagster import job, op, ModeDefinition, resource, fs_io_manager
    from dagster_k8s import K8sRunLauncher
    
    @job(
        mode_defs=[
            ModeDefinition(
                name="local",
                resource_defs={"io_manager": fs_io_manager}
            ),
            ModeDefinition(
                name="k8s",
                resource_defs={"io_manager": fs_io_manager},
                executor_defs=[K8sRunLauncher()]
            ),
        ]
    )
    def my_pipeline():
        ...
    
    ## Пример run_config для локального режима
    run_config_local = {
      "loggers": {"console": {"config": {"level": "INFO"}}},
      "resources": {
        "io_manager": {"config": {"base_dir": "/tmp/dagster"}}
      },
      "ops": {
        "extract": {"config": {"path": "/data/in.csv", "retries": 2}}
      }
    }
    
    ## Пример run_config для кластера Kubernetes
    run_config_k8s = {
      "loggers": {"console": {"config": {"level": "INFO"}}},
      "resources": {"io_manager": {"config": {"base_dir": "/mnt/dagster"}}},
      "execution": {"multiprocess": {"config": {"max_concurrent": 4}}}
    }
    
  • Важный момент: режимы следует документировать и хранить отдельно от логики пайплайна. Это обеспечивает предсказуемость поведения пайплайна при переносе в другое окружение и облегчает аудит.

     

Валидация режимов и конфигураций

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

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

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

  • Упростите повторное использование: определяйте общие параметры в одном месте и переиспользуйте их в нескольких шагах пайплайна, избегая дублирования.

     

Управление конфигурациями на уровне окружений

  • Разделяйте параметры бизнес-логики и инфраструктурные настройки: это упрощает перенастройку пайплайна без изменения кода.

  • Используйте environment files для хранения параметров окружения: такие файлы можно версионировать и распространять через систему контроля версий.

  • Придерживайтесь политики безопасности: никогда не храните секреты в чистом виде внутри env-файлов; применяйте интеграцию с секрет-менеджерами или защищённые ресурсы Dagster.

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

     

Конфигурации схем и валидирование

Конфигурационные схемы опорны на типизации и декларативности: они позволяют явно описать формы входных данных, валидировать типы и обеспечивать раннее обнаружение ошибок. В Dagster config_schema на уровне solids/ops представляет собой контракт между пайплайном и входными данными. При этом environment/ModeDefinition соединяют этот контракт с конкретными ресурсами, исполнителями и логгерами.

  • Принципы проектирования конфигураций:

    • Ясная граница между бизнес-логикой и параметрами исполнения.
    • Чёткое разделение по окружениям: локальный, тестовый, продакшн.
    • Верифицируемые структуры: каждый параметр должен иметь ожидаемый тип и допустимый диапазон значений.
    • Переиспользуемость: повторное использование общих конфигураций через вложенные блоки (например, общие параметры подключения к источнику данных).
      @op(
        config_schema={
           "path": str,
           "format": {"type": str, "compression": str},
           "retry": {"count": int, "delay": int}
        }
      )
      def extract(context):
          cfg = context.op_config
          path = cfg["path"]
          ## логика извлечения
          ...
      
      @op(config_schema={"target_table": str, "mode": {"type": str, "default": "append"}})
      def load(context, data):
          cfg = context.op_config
          target = cfg["target_table"]
          mode = cfg["mode"]
          ## загрузка в целевую таблицу
          ...
      
  • Валидирование конфигураций может быть реализовано через тесты, которые перед запуском пайплайна проверяют соответствие реальным данным и окружению. Это позволяет выявлять проблемы ещё на этапе CI/CD.

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

     

Привязка конфигураций к пайплайну и зависимостям

  • Связывание параметров с пайплайном осуществляется через run_config и config_schema на уровне опов. Контекст исполнения обеспечивает доступ к параметрам внутри Solid/Op, а режим определяет ресурсы и исполнители, которые будут использовать эти параметры.

  • Принципы:

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

    • Определение модов (ModeDefinition) с ресурсами и исполнителями, которые принимают параметры из run_config.
    • Установка дефолтов в режимах исполнения, чтобы локальная разработка была удобной, а продакшн-окружение - контролируемым.
  • Управление зависимостями между параметрами: используйте зависимости между Solid/Op через аргументы конфигурации и контекст исполнения, чтобы один параметр не зависел напрямую от другого с целью минимизации связности.

     

Практические сценарии внедрения: локальные окружения, staging и prod

  • Локальная разработка:

    • Простейшая конфигурация, fast feedback, минимальные требования к инфраструктуре.
    • Используйте LocalExecutor и локальные файловые хранилища.
    • Валидируйте базовые параметры и параметры взаимосвязи между операциями.
  • Тестирование и staging:

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

    • Надёжность, автоматизация обновлений конфигураций и аудит.
    • Масштабируемые исполнители (Kubernetes, Celery) и надёжное управление ресурсами.
    • Интеграция с секрет-менеджерами, контроль доступа к конфигурациям и аудит изменений.

       

Key takeaways

  • Конфигурации Dagster позволяют параметризовать пайплайны без изменения кода, обеспечивая повторяемость и управляемость.
  • Режимы выполнения определяют окружение, ресурсы и исполнителей, что критично для перехода от локальной разработки к продакшну.
  • Валидация конфигураций на уровне solids/ops и режимов исполнения снижает риск ошибок и упрощает тестирование.
  • Разделяйте бизнес-параметры и инфраструктурные настройки, используйте environment files и версионирование конфигураций.
  • Безопасность важна: держите секреты отдельно и используйте интеграцию с секрет-менеджерами.
  • Используйте тесты конфигураций и CI/CD для раннего обнаружения несоответствий между окружениями.
  • Документируйте каждую конфигурацию и режим, чтобы упрощать переходы между командами и поддерживать аудит.

     

FAQ

  1. Что такое run_config и зачем он нужен?
  • Run_config - это набор параметров, которые передаются пайплайну во время исполнения. Он определяет параметры окружения, конфигурации solids/ops, ресурсы, логгеры и режим исполнения. Он отделяет параметры исполнения от кода пайплайна, что обеспечивает повторяемость, упрощает тестирование и позволяет быстро адаптировать пайплайн под различные окружения без изменения логики обработки.

 

  1. Как выбрать режим выполнения для Dagster в конкретном проекте?
  • Выбор режима зависит от целей: для быстрой разработки и отладки удобен LocalExecutor; для локального тестирования большого объема данных - MultiProcessExecutor; для продакшн-окружений - KubernetesJobExecutor или другие внешние исполнители. Рекомендуется начать с локального режима и постепенно добавлять поддерживаемые режимы для продакшн-окружения, сохраняя совместимость конфигураций.

 

  1. Как валидировать конфигурации конфигураций конфигураций?
  • Валидируйте через config_schema на уровне Solid/Op и через проверки окружения, чтобы исключить некорректные структуры данных. Используйте unit-тесты на уровне конфигураций, эмулируя реальный run_config и удостоверяясь, что контекст выполнения корректно работает.

 

  1. Как параметризовать пайплайн без перекодирования?
  • Используйте run_config и environment files. Не закодируйте значения внутри функций. Определяйте необходимые параметры через config_schema и заполняйте их в env.yaml. Это позволяет менять параметры независимо от кода пайплайна и упрощает сопровождение.

 

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

 

  1. Как работать с несколькими окружениями (local, staging, prod) без дублирования?
  • Создавайте отдельные env-файлы для каждого окружения и используйте режимы исполнения, которые соответствуют каждому окружению. Резервируйте общие параметры в базовом наборе и перекрывайте их в конкретном окружении через environment files.

 

  1. Как тестировать конфигурации в CI/CD?
  • В CI/CD на каждой сборке выполняйте тесты конфигураций: валидируйте схемы, прогоняйте наборы тестовых данных через пайплайн, проверяйте соответствие ожидаемым результатам. Автоматизируйте проверку переходов между окружениями и регрессионные тесты на стейджинге.

 

  1. Как обеспечить безопасность при работе с конфигурациями?
  • Не храните секреты в открытом виде в env-файлах. Используйте интеграцию с секрет-менеджерами и предоставляйте конфигурациям доступ к секретам через защищённые ресурсы. Контролируйте доступ к конфигурациям на уровне RBAC и храните историю изменений.

 

  1. Как управлять изменениями конфигураций в продакшне без простоя?
  • Применяйте миграцию конфигураций с версионированием, тестируйте новую конфигурацию в staging, применяйте миграции поэтапно, под контролем. В Dagster можно планировать обновления и тестировать их на отдельных пайплайнах, минимизируя риск простоя.

 

  1. Какие инструменты помогают работать с конфигурациями Dagster на практике?
  • Инструменты контроля версий, CI/CD и secret-management интегрируются с Dagster для эффективной работы с конфигурациями. Рекомендуется использовать environ-менеджеры и подходы к версии, чтобы обеспечить предсказуемость и повторяемость в процессе обработки данных.

 

← Предыдущая статья
Хранилища данных и источники: интеграции через Dagster
Следующая статья →
Управление ресурсами: подключение к БД, API, файловым системам

 

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

Решения

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

Клиенты
  • Группа компаний «Галакс» ведет свою деятельность с 2005 года, являясь в те годы дистрибьютором известных международных марок в ряде крупнейших торговых сетей России в сегменте аудио и видео аксессуаров. Активно работая в этом направлении и приобретая ценный опыт, начали создавать собственные торговые марки «GAL» и «VIXTER»

  • ЭГИС - международная фармацевтическая компания, основанная в 1907 году в Венгрии. Компания имеет представительства более чем в 60 странах мира, в том числе в России. Компания ЭГИС является одним из ведущих производителей дженерических лекарственных средств в Центральной и Восточной Европе. Её деятельность охватывает все звенья производственно-сбытовой фармацевтической цепочки.

  • АО «Новосибирскэнергосбыт» является единственным гарантирующим поставщиком электроэнергии на территории г. Новосибирска и Новосибирской области. Предприятие отвечает за электроснабжение клиентов, закупая электроэнергию на оптовом рынке, регулируя поставку электроэнергии через договорные отношения с сетевыми организациями.

  • Розничный и интернет-магазин 12 Storeez один из лидеров на рынке женской одежды. С географией рынка не только на территории России, своя продукция представлена еще и в таких странах как Казахстан и Дубай.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • 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 и политикой конфиденциальности.