Минимальное восстановление Аналитикса
Поскольку полный план 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.