🔥

Тред (@xnimorz)


@jsunderhood Ооо! А какие отличия между сайтами на разных доменах? А как организовано? С какими проблемами столкнулись, какие есть интересные решения вокруг этого?
Нет, про это не рассказывал. Попробую описать фактами: twitter.com/webholt/status…

Кодовая база одна, отличия между сайтами описываются явно в коде (даже до уровня if (domain === DOMAINS.KAZAHSTAN))

Есть необходимость учитывать страновую политику: сервера, определенные законы. Например, была история, когда в одной стране принимали закон и нужно было убрать автоматическую конвертацию валюты as soon as possible.

Лично для меня (я не девопс все же), это главная особенность: в странах отличаются законы, эти законы необходимо учитывать как при разработке задач, так и при рефакторинге

Обычно мониторим все законы в странах и заранее пишем код. В нужный момент просто переключаем рубильник

Страновые сайты отличаются не только логикой в определенных местах, но и, например, кешированием статики, так как статика идет по проксирующим серверам (js, css, интерфейсные картинки).

Домены разруливаются на nginx, почти любой бекенд при необходимости может узнать о том, на каком сайте был вызван (константы, не физический domain.name), но обычно это не нужно, достаточно только на прослойке иметь это знание

Каждому домену соответствует константа, констаны в том числе есть в конфигах yml, чтобы при сборке использовать в разных сервисах (могу ошибаться здесь)

Переводы хранятся в базе, каждый сервис подгружает переводы себе на старте. Используем marisa-trie структуру данных для хранения в сервисе. Раз в N единиц времени сервис идет за обновлениями переводов (если они были). Так поддерживаем актуальность переводов без релиза

Возможно для меня привычно, но это все особенности, на первый взгляд. Возможно есть какие-то определенные вопросы?)