wiki:Analytics_2019

Version 7 (modified by andy, 6 years ago) ( diff )

--

Аналитикс 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-битного линукса, наряду с удешевлением памяти)
Note: See TracWiki for help on using the wiki.