TGViewer
DocOps DocOps @docops · 4.27K subscribers
Post #622 5.99K
Пора рассказать, что у нас получилось с воркшопом.

Мы предполагали, что на воркшопе случатся все возможные технические проблемы: люди придут с ноутбуками на самых разных ОС, заранее точно никто ничего не скачает и не настроит, а интернет на конференции будет отвратительный. Так обычно бывает, когда сотни человек собираются в одном помещении. Ещё мы рассчитывали, что все будут немного уставшие на третий день, что яркость экрана может быть плохой, что будет шумно. А еще совершенно точно мы будем в последний момент находить баги, исправлять их, релизить, и участники должны будут использовать последний релиз.

В общем, было понятно, что надо подстраховать участников всеми возможными способами. Вот что у нас получилось.

Последовательность действий разбили на шаги. Каждый шаг — длинная команда в консоли или пара команд. Всё это мы завернули в один скрипт, чтобы каждый шаг в первый раз выполнять одной командой, вроде run.sh compile. Это должно было застраховать участников от ошибок, когда они невнимательно переписали команду или что-то пропустили. А потом, когда в перый раз всё получилось, можно развернуть подробную инструкцию, где объясняется каждый параметр в длинной команде, и выполнить еще разок.

Завернули всё в докер, чтобы не заморачиваться с настройкой окружения. Получилось два образа: в одном наш компилятор, в другом тулзы для работы с веб-сервисом. Буквально в последний день добавился третий, в котором локально поднимается нода Ethereum и на ней смарт-контракт выполняет завершающий шаг вокршопа.

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

Чтобы не тратить время и интернет на подготовку окружения, мы сделали готовые виртуальные машины в AWS. На них сразу был клонирован репозиторий с кодом для воркшопа, установлен Docker, и скачана пара нужных образов. Так мы защитились от плохого интернета, неработающего докера и неподдерживаемых архитектур проца. У меня был готовый inventory, так что с помощью Ansible я мог быстро обновлять код и образы на машинках. И еще был плейбук для того чтобы раскидать по машинкам ключи, чтобы люди могли зайти по SSH. Соединение по SSH — штука нетребовательная и довольно живучая. Даже с плохим каналом можно зайти и работать. Рассчитывали на 15-30 участников, поэтому заранее подняли 30 машинок.

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

Подготовились в целом отлично. Не учли только один риск, и как раз он и случился. Как вы думаете, что это было?
Telegram DocOps Мы (=nil;) едем на большую конференцию и готовим воркшоп. На нем участники пройдут по всему процессу разработки с нашим тулчейном: скомпилируют код в специальное представление — circuit, отправят его на маркетплейс, потом закажут на этом маркетплейсе криптографический…
  • 🔥 32
  • 👍 4
  • 👎 1
More from @docops
  1. Nov 12, 2024Чему я научился: софт-скиллы, пост 2/N. Прошел первый модуль курса по софт-скиллам и у мен…
  2. Nov 5, 2024Встретил замечательную фразу. Человек спрашивает, можно ли использовать OneDrive в качеств…
  3. Sep 26, 2024Чему я научился: софт-скиллы, пост 1/N. Есть такое довольно универсальное правило: чтобы ч…
  4. Sep 26, 2024Чему я научился в этом году Год выдался очень насыщенным: я делал совершенно новые для мен…
  5. Aug 19, 2024Как я выгорел У меня долгое время было ощущение, что надо сжать булки, ещё немного поработ…
  6. Jun 26, 2024Ну и где бездушная машина неправа?
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →