= Аналитикс 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@bitcoin-analytics.com - обратная связь с пользователями через форум 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