wiki:Analytics_2019

Аналитикс 2019

Эти работы предлагались и раньше, под соусом "закрытия", "консервации" или "предпродажной подготовки" Аналитикса.

План работ подразумевает отсутствие новых фич, приведение существующих фич в нестыдный вид и опенсорс бОльшей части аналитикса (за исключением рассчётов, коллектора и фреймов)

Решаемые проблемы:

  • замедление разработки из-за
    • глупых ошибок (необходимость ручного прогона и заглядывания в лог на предмет cannot find property 'foo' of bar)
    • отсутствия тестов и инфраструктуры CI/CD
    • ручного редактирования в "ноутпаде" вместо IDE
    • морально устаревшей инфраструктуры (jQuery, Socketstream, Socket.io и т п)
    • неподдерживаемой инфраструктуры (jQuery, everyauth, jQuery Templates, Socketstream)
  • перфоманс
    • медленные клиентские чарты
  • хрупкость кода
    • инкрементальные рассчёты
    • коллектор падает целиком при отказах бирж
    • поломки при обновлении системного ПО
    • старый JS до yield и await
  • наколенные постоянно ломающиеся самоделки
    • персистенс
    • канал между коллектором и бэкендом
  • проблемы UI
    • самодельная модель
    • устаревшие и некрасивые виджеты jQuery UI

Предлагаемые технические решения

  • новый кол на TypeScript и C# (лечит глупые ошибки)
  • Azure Pipelines (CI)
  • VS2019+ (лечит ручное редактирование)
  • meteor, React, RxJS (лечит устаревшее и неподдерживаемое)
  • svg-charts (лечит перфоманс)
  • ES2019 с даунгрейдом через TypeScript по необходимости (лечит старый JS)
  • Akka.net, Sentry.io и circuit breaker pattern для коллектора
  • Gearman и MQTT (лечит наколенные протоколы)
  • RxJS вместо моделей
  • React вместо ручного изменения DOM в jQuery (TSX поддерживается студией!)
  • leveldb для персистенса фрейма и qdb
  • react-компоненты вместо jQuery UI
  • LTS-версии ноды для увеличения стабильности
  • переход на CentOS 8 (когда он выйдет и появится поддержка в Студии) для увеличения стабильности

Восстановление старой инфраструктуры

Было утрачено:

  • стейджинг-сервер на bugdetvm
  • девелоперские мини-стейджинги vmng/vmnim. Они сначала перешли в стадию "редактирование/разработка прямо на стейджинге", а затем погнили вместе с продакшеном
  • "неубиваемый" сервер zorro на рекспейсе (сейчас он временно на vultr а на рекспейсе мы платим за неиспользуемый сервер и за DNS)
  • актуальные API бирж в коллекторе (сейчас часть отключена из-за тупых ошибок типа изменения формата данных, часть работает с ошибками)
  • нотификации от трака через псевдоаккаунт zorro-daemons@…
  • обратная связь с пользователями через форум bitcointalk и Discus
  • аналитика поведения пользователей со статистикой использования фич через google analytics
  • актуальные версии ОС и зависимостей
  • обстановка непрерывного ежедневного хуячения :)
  • вера в проект :)

Возведение новой инфраструктуры

  • CI/CD
  • более "живой" девелопмент в приватной репе гитхаба (PR/ревьювы/CI)
  • миниколлектор на дотнете, акке и гирмане
  • более устойчивый к ломающим обновлениям zorro на CentOS 7 x64
  • перевод сорцов на TS
  • изоляция линукс-специфики с целью разработки на винде локально в Студии
  • построение проектов Студии
  • вынесение частей текущего кода в опенсорс
  • минимальный перевод коммуникаций и персистенса на gearman и leveldb
  • использование нового JS в новом коде, минимальное причёсывание ада в старом
  • мониторинг через sentry.io и реимплементацию RealtimeMonitor на гирмане
  • оценка потребления памяти с целью перехода на 64-битный Арч (ввиду отсутствия 32-битного дотнета как такового, маргинальности archlinux32 и массовой депрекации 32-битного линукса, наряду с удешевлением памяти)

План

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

Метаплан - приоритеты:

  • лучше сделать что-то низкоприоритетное, чем ничего
  • максимальный приоритет у поддержания старого продакшена в рабочем состоянии
  • затем идёт разблокировка других участников (сделать что-то чтобы другой мог продолжить работу после выхода из запоя)
  • Балабол
  • инкрементальные улучшения старого продакшена:
    • переход на новый
    • мелкие доработки нового
  • будущий продакшен meteor-ts

План (пока в беспорядке):

  • zorro на CentOS 7

План по репам

Технически "по деревьям сорцов, разбросанным по репам и веткам". Cм. Repos

Старый продакшен production-2018

  • поддержание работоспособности (удаление бирж по мере поломки)
  • бэкпорты из нового продакшена
    • добавление бирж
    • починка авторизации
    • починка мелких фич типа Yahoo API
    • снижение цены подписки
  • создание клона на оушене для отладки режима гостевого ядра
  • перевод vmng в режим гостевого ядра
  • снос после того, как новый продакшен проработает ~полгода

Новый продакшен mttrade-trunk

  • восстановление работоспособности до уровня старого продакшена
  • восстановление-добавление бирж в старый код
  • интеграция btca-collector
  • перенос обновленного продакшена с vultr на оушен вторым сервером

btca-collector

Доводка прототипа на Akka/Gearman/C#:

  • идиоматичная Акка
  • простейший коллектор
  • полнофункциональный коллектор
  • дополнительные биржи

svg-time-series

  • обновление зависимостей
  • доведение до feature complete

keyword-parser

Last modified 2 years ago Last modified on May 27, 2019, 5:20:10 PM
Note: See TracWiki for help on using the wiki.