Привет.
Я буду периодически делиться соображениями о том как разрабатываю jscourse.com. Соображения будут разного плана: от выбора шрифта и отступов в тексте до описания процесса деплоя. Писать код в одиночестве и не обсуждать результаты и не слышать альтернативное мнение - скучно. Кому-то мой опыт и мнение может быть полезным, а мне будет интересно ответить на вопросы и поучаствовать в дискуссии.
Года 3 назад я написал на meteorjs первую версию jscourse.com. Сегодня я закрываю ее. И открываю новую версию https://a.jscourse.com. a
означает альфа: функционал и содержание будет меняться. Все задания и статьи с предыдущей версии сохранены и перенесены. Отзывы (которые я так ценю) сохранены, но пока не вывешены.
Под капотом проект переделан с нуля. Ряд проблем, которые я решал переписыванием, приходились на ограничения метеора, часть на принятые мои решения при разработке.
Проблема с индексированием поисковиками метеор приложений (потому что все метеор приложения SPA по определению). Решение есть этому вопросу, но оно костыльное, и не понятно на сколько снижается качество индексирования.
Проблема с деплоем. Особенно для динамически изменяемого проекта. Деплой приложения + миграция бд - нетривиальная задача для приложений, которые работают с бд. Писать и поддерживать код миграций БД я не хочу, а менять структуру данных я планирую часто. Опенсорсные решения для деплоя метеор приложений сильно менялись, ломались и переставали существоать за эти 3 года. Пользоваться облаком от метеора я не хочу из соображений экономии + хочется большего контроля.
Метеор пакеты не написаны так чтобы существовать годами. Я планирую писать проект не один год, поэтому последнее что я хочу, это очутиться среди deprecated пакетов экосистемы meteor. Решение - брать проверенные nodejs пакеты или использовать настолько маленькие и простые пакеты, которые в случае чего можно реализовать самостоятельно. Провернуть такой же трюк с метеор пакетами сложнее, ибо нужно знать и уметь работать с внутрестями метеора, в чем я не вижу ценности.
Писать и поддерживать админку для метеора не хотелось бы, а работать с файлами метеор умеет плохо. Оставаться на метеоре означало необходимость поддерживать админку. Но зачем если без нее можно обойтись.
В новой версии я отказался от админки (данные храню в файлах, аккаунты пока не заводил), добавил локализацию, деплой с помощью pm2
, и деплою данные сразу с кодом. Такой подход к деплою дает гибкость откатиться на предыдущую версию, плюс некоторую экономию денег: проект можно разместить на VPS вместе с пачкой других проектов.
На сегодня все. Последующие посты буду писать тут же в meta
. Буду рад твоим комментариям и вопросам.