= Минимальное восстановление Аналитикса = Поскольку полный план [[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 бирж на "минимальном" фреймворке, новые биржи в [source:collector/lib/exchange], старые не менялись - из вышеперечисленных 7 бирж сделаны за деньги Алексом на винде в Visual Studio на тайпскрипте в приватной репе [https://github.com/bitcoin-analytics/btcanalytics-collector/tree/master/legacy/collector/lib/exchange 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.