Аналитикс 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