Внутреннее устройство

Когда-то в далеком 2010 году le-francais.ru представлял собой набор HTML-страничек, собранных в нехитрое дерево. В 2017 году мы полностью переделали сайт. Теперь это сложная программа, которая работает на специальном сервере приложений, а большая часть контента хранится в отдельной базе данных.

Мы разрабатывали это приложение шесть лет. Условия жизни за это время изменились сакраментально — и все это отразилось на внутреннем устройстве всего проекта. Сегодня это внушительный конгломерат серверов, связанных в единую работающую систему. Сегодня это выглядит так.

Инфраструктура сайта Инфраструктура сайта

Ремарка

В этих описаниях я не делаю акцента на размере наших расходов, но очень важным, жизненно важным для нас является то, в какой валюте мы их несем. Это так важно, потому что VISA и MasterCard ушли из России. Основной наш доход — в рублях, и оплата основного массива серверов представляет для нас серьезную проблему, потому что ее нужно проводить в валюте. Вот почему мы призываем всех, у кого есть такая возможность, донатить нам и покупать чашечки в валюте.

Сервер приложений, сердце всего сайта. Сегодня это уже не просто набор статических HTML-файлов, а сложное приложение, написанное на языке Python, которое и исполняется на этом сервере. Шесть лет оно проработало на мощностях Heroku в Ашбурне, штат Вирджиния, но английская фирма-владелец, увлекшись санкциями, выгнала нас вон, и с 2023 года мы используем мощности компании Render в штате Орегон. Мы оплачиваем их услуги в долларах.

База данных. В ней хранится весь текстовый контент сайта — и странички с уроками, и статьи, и всё содержимое форума, — а также вся-вся пользовательская информация — сессии пользователей, история работы с карточками, активированные уроки и многое другое. База тоже работает на площадке Рендера, мы ее, соответственно, тоже оплачиваем в долларах.

Файловый сервер. Здесь расположены все медиа-ресурсы сайта (за очень маленьким исключением). Одни только записи трехсот с лишним уроков занимают 10+ Gb дискового пространства. Здесь же хранится вся озвучка карточек со словами и глаголами и сюда переезжает озвучка спрягалки. Все сканы конспектов, конспекты для повторения, видео, картинки на форуме и на страничках уроков — все это тоже хранится на этом сервере. Физически сервер расположен в Новосибирске, мы его оплачиваем в рублях. С одной стороны, это облегчает нам жизнь. С другой — доступ к этому серверу в некоторых регионах мира закрыт из-за санкций. Это отрезает нас от этих рынков (без VPN люди не могут полноценно пользоваться сайтом — он для них выглядит просто неработающим), а пользователям создает неудобства. Мы бы переехали с этим сервером за пределы РФ, но оплата в валюте для нас крайне затруднительна, и мы не хотим рисковать.

Файловый сервер на Амазоне — здесь хранятся статические файлы приложения (например, аватарки пользователей, иллюстрации к статьям), а также озвучка спрягателя, создание которой инициируют пользователи — периодически мы переносим эти файлы на сервер в Новосибирске, чтобы снизить свои расходы по их хранению.

Обратный прокси-сервер на Cloudflare нам пришлось завести, потому что в РФ на сегодня заблокировано около полутора миллионов (миллионов!) сайтов. Ресурсы, находящиеся на смежных площадках, могут «делить» одни и те же IP-адреса. В результате при блокировке таких IP под раздачу попадают ничем не запятнавшие себя сайты — просто потому, что где-то рядом с ним находится заблокированный ресурс с тем же IP'шником. При таком чудовищном числе блокировок рассчитывать, что тебя не заденет рикошетом, нереально. Так с нами и случилось — в какой-то момент мы оказались ошибочно заблокированными в десятках городов. Чтобы уменьшить масштабы этой проблемы, нам пришлось закрываться обратным прокси-сервером. Полностью это проблему не решило (она вообще не решается), но сильно ее уменьшило. Заодно мы перенесли туда же и наш DNS (сервер доменных имен). Все эти услуги Cloudflare предоставляет бесплатно.

⑥ VPN и Web-серверы — мы вынуждены были арендовать виртуальный сервер за пределами РФ, потому что многие ресурсы, необходимые нам для работы, оказались заблокированы, для доступа к ним понадобился VPN-сервер. Кроме того, мы запустили там и несколько web-серверов в домене .eu для реализации плана «B» на случай ввода т. н. «суверенного интернета» — полной изоляции Рунета от всемирной паутины. Физически сервер находится во Франкфурте, мы оплачиваем его в евро.

Фискальный накопитель мы арендуем на «ферме» подобных устройств в Москве, делать это нас обязывает закон. Замечание для тех, кому это важно: в силу небольшого размера нашего дохода и выбранной системы налогообложения мы платим только в Пенсионный фонд и в Фонд медицинского страхования — размер налога в бюджет, который рассчитывается по остаточному принципу, у нас многие годы нулевой, мы его не платим. UPD: Чтобы снизить расходы, мы отказались от аренды выделенного фискального накопителя и пользуемся теперь этой услугой в банке, через который осуществляем интернет-эквайринг.

⑧ Выделенный сервер запущен у нас дома. Он работает круглосуточно, как и положено серверу. На нем работает uptime robot — приложение, которое удаленно следит за работоспособностью сайта и в случае, если тот не откликается, перезапускает его. Кроме того, здесь же работает входящий VPN-сервер для доступа к рабочем компьютерам, всей локальной сети из любой точки мира, а также для доступа к ресурсам в пределах РФ, до которых иначе извне не достучаться. В дополнение к этому здесь запущен чат-сервер chat.le-francais.ru для общения участников разных подпроектов (например, написание словарных статей для спрягателя глаголов или борьбы с санкционным давлением на проект). Здесь локализованы учетные записи пользователей, запущен видеохостинг для будущих проектов и поднят NAS-сервер — файловое хранилище для резервных копий рабочих файлов.

⑨ Различные готовые сервисы, для работы которых не требуется запуск выделенного сервера.

  • Google Cloud TTS и Amazon Polly — Text to Speech сервисы — синтезаторы речи, которые мы используем в спрягателе глаголов и озвучке карточек. Несмотря на то, что сарягалка работает давно, озвучка спряжений происходит до сих пор и в приличном объеме. Они оплачиваются в долларах.
  • Amazon SES — почтовый сервер, который используется для отправки почтовых уведомлений. Услуги Амазона мы оплачиваем в долларах.
  • Яндекс коннект — почта для домена. Это почтовый сервер для адресов e-mail в нашем домене (например, то, куда вы пишете в поддержку). В 2023 году он стал платным, оплачиваем мы его, понятное дело, в рублях.

Оплата фиксированного IP, электричества и доменных имен в зоне .ru мы тоже совершаем в рублях — в отличие от доменов в зоне .eu, которые, как нетрудно догадаться, нужно оплачивать в евро.

Поэтому еще раз просьба к тем, у кого есть возможность:

пожалуйста, поддержите нас пожертвованием или покупкой чашечек/билетиков в валюте — у нас нет другого способа набирать средства для оплаты большей части серверов (как вы, должно быть, знаете, Гугл ушел из России, и наши валютные поступления от рекламы сократились в разы).

Пожалуйста, помогите нам поддерживать сайт в рабочем состоянии!

Требуется для подтверждения комментария