О сервисе
Аннотация
Специализация
О сервисе
mutagen.ru
Соцсети:
Год основания: 2010
Трафик по данным SimilarWeb: 86.8к/мес.
Аннотация
Mutagen – сервис для анализа и подбора ключевых слов. Удобный инструмент для подбора ключей, фраз, тематик рекламных объявлений. Высокая скорость и точность парсинга и сбора ключей позволит эффективно продвигаться по трафику, выбирая фразы с наименьшей конкуренцией.
Специализации
SEO
Кому будет полезен
Mutagen выявляет ключи, недооцененные и перегретые тематики для эффективного продвижения. 30 видов отчетов по 9 региональным базам помогут составить эффективное семантическое ядро. С помощью инструментов сервиса можно максимально быстро вывести сайт в ТОП по органическому трафику.
Клиент | Бренд | Услуги |
---|
CRM системы, работа с клиентами
Data-driven маркетинг (маркетинг, основанный на данных), аналитические системы
SEO
Автоматизация бизнес процессов
Агрегаторы и медиа
Анализ конкурентов
Аналитика маркетплейсов
Банковские онлайн сервисы
Изучение иностранных языков
Коллтрекинг, сквозная аналитика
Конструкторы интернет — магазинов
Конструкторы лендингов, сайтов
Краудфандинг
Маркетинг в социальных сетях (SMM)
Маркетинг и реклама
Маркетинговые исследования и онлайн опросы
Онлайн сервисы бронирования
Онлайн сервисы медицинских услуг
Онлайн сервисы подбора персонала
Онлайн сервисы управления проектами
Охрана интеллектуальной собственности
Платежные сервисы (системы, шлюзы)
Платформы интеграции онлайн сервисов
Повышение эффективности работы
Продвижение мобильных приложений (ASO)
Прототипирование интерфейсов
Сервисы IP телефонии
Сервисы push уведомлений
Сервисы SMS — рассылок
Сервисы автоматических звонков
Сервисы анкетирования клиентов
Сервисы видеоконференций
Сервисы виртуальной АТС
Сервисы для вебинаров
Сервисы для онлайн записи клиентов
Сервисы для управления Agile проектами
Сервисы доставки
Сервисы колл-центра
Сервисы контекстной рекламы
Сервисы контроля задач (таск менеджеры)
Сервисы мониторинга цен
Сервисы обратного звонка
Сервисы онлайн — касс
Сервисы онлайн консультанта, коммуникаций с клиентами
Сервисы онлайн-обучения
Сервисы онлайн-чатов
Сервисы оценки эффективности персонала
Сервисы проверки контрагентов
Сервисы программ лояльности
Сервисы рассылок, email маркетинг и мессенджер маркетинг
Сервисы создания квизов
Сервисы создания логотипов
Сервисы создания тестов и проверки знаний
Сервисы создания чат-ботов
Сервисы страхования
Сервисы тендеров (тендерные площадки)
Сервисы техподдержки (helpdesk)
Сервисы удаленного доступа (поддержки)
Сервисы управления персоналом (HRM системы)
Сервисы управления рекламой
Системы управления бизнес-процессами (BPM)
Системы управления контентом (CMS)
Системы управления ресурсами предприятия (ERP)
Совместная работа
Создание баз знаний
Создание инфографики
Создание корпоративного портала
Создание медицинских информационных систем
Создание презентаций
Управление мобильными сотрудникамиУправление репутацией (ORM, SERM), мониторинг упоминаний бренда
Учет рабочего времени
Финансовый учет, онлайн бухгалтерия, налоги
Электронный документооборот
Если вы работали на macos в docker окружении, то наверняка сталкивались с проблемой в производительности при volume mount, например, при работе над php проектом, операции с файловой системой хоста (обновление пакетов composer, ребилд контейнеров symfony, etc. ) занимают просто неадекватное количество времени. Об особенностях работы docker’а на macos написано уже множество статей, а также workaround’ов как заставить его работать быстрее. В этой небольшой статье покажу как в решении этой проблемы Mutagen помог мне с php проектом и быть может поможет вам.
Mutagen — мощный инструмент для файловой синхронизации и сетевой переадресации, он является быстрой альтернативой стандартного volume mount средствами docker и при этом субъективно более удобной в сравнении с Docker Sync или NFS Mount и может быть легко добавлен в конечном проекте.
Описание гласит:
Mutagen’s file synchronization uses a novel algorithm that combines the performance of the rsync algorithm with bidirectionality and low-latency filesystem watching.
Хорошо, low-latency filesystem watching это как раз то, что нам нужно.
В первую очередь необходимо установить mutagen (логично). В примере покажу установку с помощью brew, она тривиальна за исключением необходимости tap’нуть нужное хранилище:
$ brew tap mutagen-io/mutagen $ brew update $ brew install mutagen
После установки рекомендую создать скрипт автокомплита, потому что мы же все любим автокомплит)
Делается это единожды, с помощью встроенного генератора нужного shell скрипта:С недавних пор, при установке через brew, вместе с mutagen’ом создается файл автокомплита в /opt/homebrew/share/zsh/site-functions
, что удобно и не вынуждает дописывать что-то в .
# ZDOTDIR="${HOME}/.zsh" $ mutagen completion zsh > "${ZDOTDIR}/compoteion/mutagen.sh" echo 'source "${ZDOTDIR}/completion/mutagen.sh"' >> .zshrc
В качестве оболочки для которой генерируется скрипт, помимо zsh возможны bash, fish и даже powershell — удобненько).
На хостовой машине mutagen работает как демон, запускаемый командой:
$ mutagen daemon start
а чтобы не делать этого постоянно, он умеет добавлять (и удалять) себя в автозапуск через
$ mutage daemon register # unregister
После всех этих манипуляций можно получить список sync’ов, чтобы проверить что все установилось без проблем:
$ mutagen sync list -------------------------------------------------------------------------------- No synchronization sessions found --------------------------------------------------------------------------------
Часто для создания рабочего окружения мы пользуемся docker-compose — им удобно собирать всю инфраструктуру, которая может пригодиться.
$ diff --git a/docker-compose.yml b/docker-compose.yml index 124dfb9..d94338e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,3 +2,15 @@ version: "3.8" # Add new services, volumes, networks or # override declared in .environment/docker-compose.yml services # if it's necessary version: "3.8" + +volumes: + storage-php: + storage-nginx: + services: nginx: depends_on: - php image: nginx:1.21.1 env_file: .env ports: - ${PUBLISHED_NGINX_PORT}:8080 volumes: - - ../public:/var/www/app/public + - storage-nginx:/var/www/app/public php: image: php:8.1 working_dir: /var/www/app env_file: .env volumes: - - ../:/var/www/app + - storage-php:/var/www/app + - storage-nginx:/var/www/app/public ports: - ${PUBLISHED_FPM_PORT}:8080 user: root extra_hosts: - "host.docker.internal:host-gateway"
и перезапустим окружение. В моем случае поднятие проекта сделано через команду в makefile’е и включает в себя composer install как последний этап, из-за чего при первом запуске увидел такое сообщение:
Composer could not find a composer.json file in /var/www/app To initialize a project, please create a composer.json file. See https://getcomposer.org/basic-usage make: *** [docker-start] Error 1
Что логично — выполняемый composer install
не может найти файл composer.json в созданных volume’ах т.к. файлы еще не перенесены в контейнер, поэтому добавим такое действие в makefile:
DOCKER=docker-compose --env-file=./.env --file=./docker-compose.yml .PHONY: mutagen-sync # Sync app volume with mutagen mutagen-sync: ${DOCKER} images php | awk '{ if (NR!=1) { print $$1 } }' | ( read container; \ mutagen sync create \ --name=${COMPOSE_PROJECT_NAME} \ --default-file-mode-beta=0644 \ --default-directory-mode-beta=0755 \ --sync-mode=two-way-resolved \ --ignore=.git/,.idea/,.DS_Store \ . docker://root@$$container/var/www/app )
Что действие делает: оно создает новый sync в mutagen между volume’мом с именем из переменной окружения COMPOSE_PROJECT_NAME, задаст права для файлов и директорий которые будут синхронизированы в volume, установит режим синхронизации и добавит в игнор то, что нет смысла синхронизировать.
Важно то, что mutagen подключается прямо к контейнеру по его имени, но при запуске docker-compose сам создает контейнерам имена по собственному шаблону, поэтому чтобы точно сказать mutagen’у куда подключаться, мы просто awk’аем список контейнеров по имени сервиса из docker-compose.yml.
Максимально просто — после всех манипуляций описанных выше, достаточно после поднятия docker-compose выполнить make mutagen-sync
, и увидеть в консоли
$ make mutagen-sync Created session sync_ka1nSJCfLPlOnLxiXyPe4ScFQ0WtyOmikqlAPaGnxos
Это значит что сессия синхронизации успешно создана. Для дальнейшего мониторинга статуса синхронизации и ее остановки добавим в makefile пару действий:
.PHONY: mutagen-terminate # Terminate mutagen app sync mutagen-terminate: mutagen sync terminate ${COMPOSE_PROJECT_NAME} .PHONY: mutagen-monitor # Stats of mutagen syncing mutagen-monitor: mutagen sync monitor ${COMPOSE_PROJECT_NAME} --long
Теперь make mutagen-monitor
покажет подробное real-time состояние sync’а проекта:
$ make mutagen-monitor Name: php-project Identifier: sync_ka1nSJCfLPlOnLxiXyPe4ScFQ0WtyOmikqlAPaGnxos Labels: None Configuration: Synchronization mode: Default (Two Way resolved) Maximum allowed entry count: Default (2⁶⁴−1) Maximum staging file size: Default (18 EB) Symbolic link mode: Default (Portable) Ignore VCS mode: Default (Propagate) Ignores: None Alpha configuration: URL: /Users/tonysol/Projects/php-project Watch mode: Default (Portable) Watch polling interval: Default (10 seconds) Probe mode: Default (Probe) Scan mode: Default (Accelerated) Stage mode: Default (Mutagen Data Directory) File mode: Default (0600) Directory mode: Default (0700) Default file/directory owner: Default Default file/directory group: Default Beta configuration: URL: docker://root@php-project_php_1/var/www/app Watch mode: Default (Portable) Watch polling interval: Default (10 seconds) Probe mode: Default (Probe) Scan mode: Default (Accelerated) Stage mode: Default (Mutagen Data Directory) File mode: Default (0644) Directory mode: Default (0755) Default file/directory owner: Default Default file/directory group: Default Status: Watching for changes
а make mutagen-terminate
остановит созданный sync по его имени — безопасно если есть несколько параллельно живущих проектов docker-compose.
И вот пример списка sync’ов после запуска:
$ mutagen sync list -------------------------------------------------------------------------------- Name: php-project Identifier: sync_ka1nSJCfLPlOnLxiXyPe4ScFQ0WtyOmikqlAPaGnxos Labels: None Alpha: URL: /Users/tonysol/Projects/php-project Connection state: Connected Beta: URL: docker://root@php-project_php_1/var/www/app Connection state: Connected Status: Watching for changes
Статус Watching for changes
говорит о том что файлы успешно синхронизированы. Убедиться в этом можно, перейдя в консоль контейнера и запустив composer install
.
Самое интересное — а насколько быстрее стала работа.
Использование mutagen’а обкатывалось на тестовом проекте основанном на Symfony. При этом для docker включены опции:
✔ Use gRPC FUSE for file sharing (используется macFUSE 4.2.4)
✔ Use Docker Compose V2
✔ Use the new Virtualization framework
Содержание ~/.
: docker/daemon.json
{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "features": { "buildkit": true } }
Выделенные docker’у ресурсы:
CPUs: 4 | Memory: 6.00 GB | Swap: 2 GB | Disk image size: 59.6 GB
Перед каждым замером времени в консоли, полностью удалялись директории vendor/
и var/cache/dev/
root@22d281c05041:/var/www/app# time composer install --quiet real 6m50.509s user 2m26.838s sys 1m27.755s root@22d281c05041:/var/www/app# time bin/console cache:clear // Celearing the chae for the dev environment with debug true [OK] Cache for the "dev" environment (debug=true) was successfully created. real 0m35.079s user 0m6.226s sys 0m3.308s root@22d281c05041:/var/www/app#
root@9a6d7a272f38:/var/www/app# time composer install --quiet real 0m25.678s user 0m18.139s sys 0m10.999s root@9a6d7a272f38:/var/www/app# time bin/console cache:clear // Celearing the chae for the dev environment with debug true [OK] Cache for the "dev" environment (debug=true) was successfully created. real 0m9.664s user 0m7.445s sys 0m2.211s root@9a6d7a272f38:/var/www/app#
Несмотря на то что все описание было в контексте php, все эти манипуляции применимы не только для обхода проблемы с docker volume в целом, но и, например, для real-time файловой синхронизации с выделенным сервером по ssh+scp.
Файловые операции внутри контейнера выполняются со скоростью нативного окружения, например rm -Rf vendor/
в случае mutagen выполнялся практически мгновенно, в то время как при volume mount это занимало ощутимое время.
Несмотря на то что замеры проводились по 4 раза, такой разбег при выполнении composer install
сохраняется (разумеется с определенной долей погрешности), но учитывая что для cache:clear
разница не настолько значительная, тяжело предположить причины такого провала скорости.
Задержки между синхронизацией, даже если они случаются, не ощущаются:
Судя по системному монитору ресурсов (и htop’у), увеличение нагрузки при работе с mutagen если и есть, то не заметное.
У mutagen есть свои инструменты орекстрации — Compose (заменяющий docker-compose, конфигурируемый прямо в docker-compose.yml) и Projects, но это для меня заклинания следующего уровня, поэтому здесь я их не рассматривал.
Реализация Compose основана на Docker Compose V2, поэтому рекомендуется включить использование V2 в настройках Docker Desktop, и имеет определенные ограничения.
Mutagen обеспечивает синхронизацию файлов в реальном времени и гибкую сетевая переадресация для разработчиков, расширяющая охват локальные инструменты разработки в облачные контейнеры и инфраструктура.
Подробнее →
Ознакомьтесь с новинкой Расширение Mutagen для Docker Desktop для легкой интеграции и улучшения производительности файловой системы!
Подписываясь, вы соглашаетесь с нашей Политикой конфиденциальности и Условиями обслуживания.Мутаген работает локально, на сервере и в контейнере инфраструктуры, включая контейнеры Docker ® .
Транспорт →
Mutagen поддерживает широкий спектр платформ, обрабатывая их идиосинкразии автоматически, предлагая пользователям полный контроль.
Установить →
Mutagen — это инструмент с открытым исходным кодом, который дает вам полный контроль над вашими данными, как они передаются и где хранятся.
Исходный код →
Запускать контейнеры в облаке легко, но редактировать код и доступ к приложениям там затруднен. Мутагенные мосты разрыв между вашими локальными инструментами разработки и кодом в облако.
Mutagen синхронизирует файлы между произвольными местоположениями, используя
собственный алгоритм, разработанный специально для кода и сборки
продукты.
Подробнее →
Отслеживание файловой системы с малой задержкой и дифференциальная передача файлов распространяет код меняется практически мгновенно.
Настройки двунаправленности, разрешения, игнорирует, символические ссылки, и многое другое доступно для разработчиков.
Mutagen поддерживает пересылку TCP-трафика, домен Unix сокеты и именованные каналы Windows между произвольными конечные точки.
Подробнее →
Архитектура Mutagen допускает произвольный трафик потоки, в том числе удаленные-удаленные.
Mutagen может смешивать и сопоставлять протоколы транспортного уровня, упрощает подключение разрозненных компонентов.
Благодаря Mutagen вы можете перенести рабочую нагрузку с ноутбука на
облачные серверы и контейнеры.
Подробнее →
Мутаген может подключаться напрямую к Контейнеры Docker® или работать с проектами Compose через его Составьте интеграцию.
Просто аннотируйте свой Compose YAML или использовать функциональность проекта Mutagen для легкой интеграции.
Дополнительную информацию об установке и использовании см. Мутаген в документации.
Документация →
Contents
Mutagen — это утилита разработки, позволяющая использовать существующие локальные инструменты
(например, ваш текстовый редактор/IDE, браузер и терминал) для удаленной работы.
среды, такие как облачные серверы и контейнеры. Он делает это, предоставляя
высокопроизводительная синхронизация файлов и гибкая переадресация по сети, что позволяет
вам разрабатывать приложения таким образом, чтобы выглядело как локально, но работало удаленно
аппаратное обеспечение. Mutagen полностью бесплатен и имеет открытый исходный код.
и работает напрямую между вашей локальной системой и удаленной инфраструктурой, которая
вам нужно получить доступ.
В отличие от большинства других решений для удаленной разработки, Mutagen не является подключаемым модулем или
обертка, поэтому он работает практически с любым инструментом. Это также не требует ручного
установка на удаленных конечных точках вместо использования механизмов копирования, таких как scp
и docker cp
для внедрения небольших двоичных файлов «агента» в удаленные среды и
такие команды, как ssh
или docker exec
в качестве транспорта для связи.
Синхронизация мутагена и
экспедиторские средства спроектированы так, чтобы быть чрезвычайно
гибкий, работает между произвольными парами конечных точек, используя любую комбинацию
транспортов. Сюда входят случаи, когда оба
конечные точки удалены, что позволяет легко синхронизировать и пересылать
проксируется через вашу локальную систему.
Помимо ручного и скриптового управления синхронизацией и переадресацией, инструменты доступны, чтобы помочь автоматизировать и интегрировать эту функциональность с вашим существующие рабочие процессы разработки. Мутаген предлагает расширение Docker Desktop, а также реализация Compose с поддержкой мутагенов. Для проектов, не связанных с Docker, Mutagen предлагает общий формат проекта для автоматизации.
Синхронизация файлов Mutagen предназначена для облегчения удаленного кода в реальном времени.
редактирование с помощью существующего текстового редактора или IDE, что позволяет быстро тестировать код
изменения в удаленной среде без необходимости повторного развертывания. Он похож на rsync
производительность в сочетании с просмотром файловой системы с малой задержкой и возможностью
работают как в однонаправленном, так и в двунаправленном режимах. Помимо кода, это
может легко обрабатывать артефакты сборки, результаты анализа или даже музыку для кодирования
коллекция.
Об авторе