wiki:Analytics_2019/Restoration

Минимальное восстановление Аналитикса

Поскольку полный план Analytics_2019 затянулся, необходимо избежать умирания новых реп

  • кода на vultr
  • репы nponeccop/btcanalytics-collector
  • репы bitcoin-analytics/btca-frontend

подобно тому как это получилось с последними 3 начинаниями:

  • агрегатором
  • фикс-коллектором
  • коллектором на процессах

Для этого надо остановить новые работы и заняться переносом продакшена на vultr.

Для этого надо выполнить 3 больших задачи:

  • Починить работу Google Oauth (по необходимости для этого починить everyauth, analytics и socketstream)
  • Зарегистрировать идентификаторы OAuth-клиента для 4 основных провайдеров (Twitter, LinkedIn, Facebook, Vkontakte)
  • Проверить работоспоспособность everyauth c ними и починить everyauth

и 5 малых:

  • Проверить работоспособность биллинга
  • Проверить работоспособность репликации
  • Подключить Gearman-коллектор в текущий коллектор аналитикса
  • Выложить в опенсорс авторизацию
  • Выложить в опенсорс биллинг
  • Синхронизировать опенсорс с vultr

Обновление от ноября 2019

Поскольку план тоже провалился, есть уменьшенная версия плана с 4 большими задачами (5 малых остаются как раньше):

  • запустить старую ноду на полностью обновлённом Арче
  • запустить старые node_modules на полностью обновлённом арче
  • Зарегистрировать идентификаторы OAuth-клиента для 4 основных провайдеров (Twitter, LinkedIn, Facebook, Vkontakte)
  • Проверить работоспоспособность старого everyauth c ними

То есть мы пытаемся избежать починки everyauth и socketstream, которая затянулась так как они оба погнили основательно.

Обновление от апреля 2020

В связи с COVID-19 нечего делать, так что я немного продвинулся:

  • Ноябрьский миниплан оказался труднее в реализации, так что вернулся к версии в начале страницы
  • Everyauth портирован на Express 4 и запушен в мой гитхаб
  • зарегистрированы идентификаторы OAuth-клиента для Google и Twitter, чтобы можно было отлаживать авторизацию. Google OAuth и Twitter рабочие в тестовом примере everyauth
  • запущен аналитикс на vultr. Он периодически ломается в связи с работами, но в целом работоспособен.
  • в аналитикс установлен новый everyauth из гитхаба
  • выяснилось, что эвриаус на продакшене непатченный
  • восстановлена работоспособность логина
    • восстановил старый код налепливания middleware "снаружи" сокетстрима
    • отключен механизм отключения куки-заголовков, который нужен был для улучшения кеширования

Осталось сделать:

  • проверить работоспособность биллинга
  • в сокетстриме 2 патча:
    • для рейс-кондишена при записи сессий
    • для отказа от ручного паршения куки

После чего у нас будет работоспособная future-proof версия продакшена. Её можно будет заморозить и переключить на неё продакшен с оушена.

Опциональные работы:

  • восстановить кеширование в варнише
    • рубить заголовки Cookie: и Set-Cookie:, как это было сделано раньше
    • проверить работоспособность вебсокет-транспорта
    • портировать синтаксис .vcl на Varnish 6
  • обновить список социальных логинов
  • снизить тарифы
  • Выложить в опенсорс авторизацию
  • Выложить в опенсорс биллинг
  • Синхронизировать опенсорс с vultr

Обновление от августа 2020

По старому плану сделан только 1 пункт:

  • .vcl портирован на 6-й варниш, что позволяет обновлять варниш в штатном режиме вместо заморозки на старой версии. Однако, старая схема кеширования по-прежнему нуждается в обновлении

В основном же были проделаны работы по восстановлению Аналитикса, не предусмотренные предыдущими планами по причине недосмотра.

Мейнтенанс коллектора:

  • в коллектор добавлено 15 бирж на "минимальном" фреймворке, новые биржи в collector/lib/exchange, старые не менялись
  • из вышеперечисленных 7 бирж сделаны за деньги Алексом на винде в Visual Studio на тайпскрипте в приватной репе github.com/bitcoin-analytics/btcanalytics-collector, синхронизация в ручном режиме - копирую *.js результат компиляции в нашу меркуриал-репу
  • в новых биржах не делались перевёрнутые тикеры, т.е. X/BTC делались, а BTC/X нет.

Починка багов, которые есть на текущем ("старом") продакшене:

  • yahooapis заменен на https://exchangeratesapi.io/, в результате частично заработал XArbitrage
  • осталось сделать поддержку левых валют - в старом XArbitrage были захардкожены SLL, LTC и XRP, cейчас же у нас 8 таких валют разной степени левизны: USDT, USDN, BUSD, СUSD, TUSD, GUSD, PAX и XRP.

Восстановление старого окружения:

  • vmgen создан на DigitalOcean в новом future proof режиме "ядро Арча внутри VPS"
  • На vmgen подняты самба и OpenVPN для обеспечения работы в старом ключе
  • Помимо этого vmgen проверяет работоспособность продакшена на оушене без необходимости покупки двухъядерной конфигурации
  • Поскольку фактически разработка на vmgen не ведётся, он выполняет роль стейджинга, т.е. бадгета.

Обновление от октября 2020

  • закрыта проблема c вебсокетом #608
  • решено оставить "дебильную" систему с 2 куки - одно от engine.io, одно от connect.session - поскольку она встроена в "новый" сокетстрим 0.4.5 и не настолько дебильная, как старая.
  • обнаружено, что использовались "все" системы социального логина, что затрудняет релиз так как сейчас работоспособны только google и twitter:
    google|twitter|facebook|vkontakte|linkedin|yahoo
    
  • Однако не исключено, что остальные системы заработают со старыми ключами основного домена bitcoin-analytics.com

Обновление от февраля 2022

  • оказалось, что всё работает с нодой v12, cамым старым на сегодняшний день поддерживаемым LTS-релизом.
  • vultr перевёл на v12, правда с кастомным билдом semistatic, более устойчивым к поломкам вследствие обновлений арча
  • из того, что не работало под v12, sd-daemon оказался починен в апстриме, так что отказался от использования нашего форка в package.json, удалил его и позакрывал ставшие ненужными PR и багрепорты
  • перевёл логирование со stacktrace на callsites, благодаря чему упростилась установка на винде, так как больше не требуется компилятор С++
  • массовое обновление зависимостей. Сыграло на руку, что ExpressJS 4 до сих пор актуален.
  • Апстримный socketstream принял PR ещё давно, так что удалил её (но не репу, так как там возможно ещё будут работы), и перевёл package.json на github:socketstream/socketstream#master
  • началось прикручивание auth0 вместо everyauth. Преимущества - поддерживаемая технология и регистрация IdP-провайдеров на стороне сервиса без обновления кода
  • auth0 PoC заработал на вултре, теперь Алекс будет опенсорсный вариант допиливать
  • нашёл менее хаковый способ подменять сервер на Express.
Last modified 4 months ago Last modified on Feb 18, 2022, 6:21:08 PM
Note: See TracWiki for help on using the wiki.