Pull to refresh
21
0
Крутов Иван @vaniaPooh

Разработчик

Send message
Неправда, Go нынче модно, а он в статику все собирает.
Когда у вас взорвется под нагрузкой MySQL, расставленный в несколько датацентров, — вы знаете к кому идти. И система оркестрации тут вам не поможет. Системы, использующие БД для хранения сессий, пробовались 3 года назад.
Про Selenoid. Selenium здесь употребляется в широком смысле.
Да, все правильно.
Вот да, по крайней мере в переводе я не увидел информации о том, на какую позицию его взяли. Может в итоге он пошел работать уборщиком?
А почему на бекенде Ruby? Насколько мне известно практика крупных компаний показывает, что для высокой производительности он не очень подходит.
Ну и чтобы не голословно звучало — нормальные чуваки потихоньку пересаживаются на Selenoid.
Несет дистрибутив хрома внутри

Боря, не обманывай людей, он несет внутри ссылки на скачивание Chrome с серверов Google. github.com/GoogleChrome/puppeteer/blob/master/utils/ChromiumDownloader.js#L33-L38 Чуваки наваяли HTTP клиента поверх готового JSON API, а также немного синтаксического сахара и теперь представляют это как панацею для проблем всего веб-тестирования. Вот такой вот очередной шум вокруг тривиального Javascript проекта.
А здесь можно подробности ошибки? Или приходите в наш чатик: https://telegram.me/aerokube
Работа с Safari — это не лучший пример того, почему Selenoid лучше Selenium server, потому что тестирование в Safari до последнего времени работало совсем плохо. Кластер, на котором эксплуатируется Selenoid, по размеру примерно в 50 раз больше, чем ваш, и на таких масштабах экономия даже 100 Мб памяти у одного процесса приводит к существенной экономии в стоимости вычислительных мощностей. В нашем случае под нагрузкой Selenium может потреблять гигабайты памяти, а Selenoid — десятки и сотни мегабайт.

Основное преимущество Selenoid достигается на браузерах, которые можно упаковать в Docker контейнеры (Firefox, Chrome, Opera). В этом случае можно на 1 железной машине или нескольких виртуальных машинах получить облако, по требованию поднимающее вообще любую версию браузера. Selenium без сложных манипуляций с инструментами наливки типа Ansible такого делать не умеет, не говоря уже об автоматическом старте контейнеров под запрос.

Согласен, что некоторые из аргументов, приведенных в этой статье, кому-то могут показаться недостаточно убедительными. Но я все равно советую посмотреть на Selenoid, быть может он где-то облегчит жизнь и вам.
нельзя сделать API вида
Можно, но сторонними библиотеками типа такой: https://github.com/gorilla/mux В стандартной библиотеке, действительно, просто сделать нельзя.
Headless Chrome — только с версии 59. Selenoid умеет запускать в контейнерах headless Chrome, Firefox и Opera как минимум 10 последних версий.
Как реализуется отказоустойчивость в такой схеме? Хочется узнать сколько всего хабов и нод. Если хабов несколько, то как выбирается нужный?
На правах рекламы. Путь с xvfb пройден нами полностью. Готовое решение для запуска браузеров в Docker под запрос выложено на Github: http://github.com/aerokube/selenoid Это если вам нужно не только Хром 59+, а любые версии браузеров и желательно, чтобы не загаживать ими систему. Ставится за 5 минут, также не требует Java. В контейнерах Xvfb, но можно смотреть на браузер во время выполнения сессии через мордочку.
Приходи в Телеграм https://t.me/joinchat/AAAAAAkZ1DfzAv-eYWTlTQ — сделаем тебе сборку. :)
Бинарники: https://github.com/aerokube/ggr/releases
Разницы в потреблении памяти между использованием столов и неиспользованием я не заметил.
Если вы используете Go для написания вашего кода, то можно писать FROM scratch и тогда размер контейнера будет равен размеру вашего бинарника. Это позволяет получать контейнеры размером в 1-2 мегабайта. Пример: https://github.com/aerokube/selenoid-ui/blob/master/Dockerfile#L1 Недостаток такого подхода — в контейнере вообще ничего нет кроме бинарника, т.е. зайти внутри и поотлаживаться не получится.
По п.1 Саша отписал (см. ниже), по этой ссылке и должно отдаваться 404 на GET запрос (клиент Selenium делает POST). По п. 2 — насколько мне известно нельзя запустить Safari под Linux (только Mac и вроде бы Windows). При этом нельзя запустить Mac \ Windows в Docker. Как вы предполагаете запускать Safari? А кроме того мы проверяли — Safari в Selenium поддерживается через установку расширения в браузер (это нужно делать руками) и поддерживаются далеко не все функции API. На мой взгляд Safari — плохой кандидат на использование в Selenium.
А мы их собираем вручную. Automated build предполагает, что собирает сам Docker.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity