19 июля 2025

eur = 90.97 0.41 (0.45 %)

btc = 118 217.00$ 413.80 (0.35 %)

eth = 3 555.99$ 8.48 (0.24 %)

ton = 3.17$ -0.05 (-1.69 %)

usd = 78.19 0.23 (0.29 %)

eur = 90.97 0.41 (0.45 %)

btc = 118 217.00$ 413.80 (0.35 %)

История о том, как «Код Дурова» учился летать на Яндекс.Облако

5 минут на чтение
История о том, как «Код Дурова» учился летать на Яндекс.Облако

Всем привет! Меня зовут Гайк Даллакян, я один из основателей «Кода Дурова» и курирую сразу несколько проектов в нашем издании. Один из них, наша боль и одновременно наша гордость — сайт kod.ru. Мы запустили его полтора года назад и за это время столкнулись с огромным количеством проблем. Об одной из них я расскажу вам в этом материале.

История о том, как «Код Дурова» учился летать на Яндекс.Облако

Запуская наш сайт в 2018 году, мы никак не думали, что он может получить такой большой трафик. В нашей команде нет системных администраторов или разработчиков, а сайт хотелось развернуть быстро и безболезненно. Мы создали аккаунт на DigitalOcean и запустили самую простую виртуальную машину — на ней и крутился сайт. Она стабильно справлялась с теми нагрузками в первый год, но потом начались проблемы.

  • Во-первых, за прошедшие несколько месяцев мы увеличили аудиторию сайта более чем в два раза, в ноябре 2019 года мы показали рекордные для нас 500 000 просмотров;
  • Во-вторых, наш сайт начал подвергаться DDoS-атакам. К серверу одновременно поступали порядка 300-500 запросов в секунду в течении пары часов, и он стабильно падал и оставался недоступен до 4,5 часов.

И конечно, мы приняли решение справиться с нашим проблемами самостоятельно.

  • В первую очередь, мы обновили нашу виртуальную машину на DigitalOcean — увеличили количество ядер и оперативную память в двое, это должно было помочь справляться с нагрузкой на сайт.
  • Далее мы создали специальные правила для Firewall в CloudFlare. Всех пользователей не из основных стран, посещающих kod.ru, мы переводили на сайт с капчей — это должно было предотвратить DDoS-атаки. Ну и конечно, во время самой атаки мы включали режим Under Attack Mode.

Спойлер: это всё нам не помогло, а лишь усугубило ситуацию.

История о том, как «Код Дурова» учился летать на Яндекс.Облако

В первое время мы смогли таким образом защищаться от атак, но потом обнаружилась новая проблема. Посещаемость сайта упала на 10-15% и на это есть свои причины.

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


DDoS-атаки не прекратились, нас атаковали по ночам, когда вся редакция видела сладкие сны. А на утро мы судорожно смотрели на ошибку 520 и пытались сами всё починить, перезагружая CMS и изменяя настройки CloudFlare.

Долго продолжаться это не могло. Нам нужно было переезжать на новые сервера с улучшенной защитой от DDoS и более высокой производительностью и, если честно, мы даже не знали к кому обратиться.

Что было дальше?!

Решение на самом деле было совсем рядом. После посещения первой большой конференции Яндекс.Облака и анализа тех предложений, что есть на российском рынке, мы всё же решились переехать на сервера Яндекса.

Яндекс.Облако представило 6 новых сервисов, среди которых собственное serverless-решение
Российский IT-гигант провел 1 октября большое мероприятие Yandex Scale,посвященное новым продуктам Яндекс.Облака. Редакция «Кода Дурова» посетила«облачную» конференцию, прошедшую в московском конгресс-парке Radisson Royal, испешит поделиться с вами информацией об одном из самых интересных продукт…

Нам предстояло мигрировать с DigitalOcean на Яндекс.Облако, и мы, наученные горьким опытом, понимали, что решить задачку миграции без даунтайма с проработанной защитой от DDoS-атак и устойчивостью к большому трафику самостоятельно уже не удастся.

Мы решили привлечь каких-нибудь специалистов по облачным инфраструктурам. У всех облачных провайдеров такие люди есть — они представляют компании-интеграторы, у которых есть практический опыт миграции, разработки и поддержки веб-приложений в облаке. У Яндекс.Облака такие партнёры тоже есть — их 115.

Нам лично решили помочь ребята из Opsguru — это международная компания-разработчик с представительствами в Израиле, Канаде, Румынии, США и России. Они знают специфику работы как с DigitalOcean, так и с Яндекс.Облаком.

В течении нескольких минут мы уже создали план миграции:

  • Настройка идентичной архитектуры на новой площадке — в Яндекс.Облаке;
  • «Бесшовная» миграция;
  • Поддержка и создание архитектуры, которая способна выдержать скачки нагрузок.

Миграция

Мы обсуждали процесс миграции буквально несколько дней, ещё не успели ни подписать договор с Opsguru, ни создать аккаунт в Яндекс.Облаке, как в пятницу, 20 декабря в 16:35 виртуальная машина в Digital Ocean снова упала. Сайт «Кода Дурова» был недоступен 58 минут. Произошёл сбой на стороне хостинга.

Ночью в пятницу мы подписали договор, а в воскресенье сайт «Кода Дурова» мигрировал с DigitalOcean на Яндекс.Облако. Важно заметить, что у ребят был отпуск, в теории всю миграцию можно было провести вообще за 24 часа!

История о том, как «Код Дурова» учился летать на Яндекс.Облако

Сначала Opsguru создали в Яндекс.Облаке идентичную инфраструктуру и настройки сети — виртуальную машину с Ghost CMS, бэкап базы данных MySQL. Затем ребята проверили, что ничего не потерялось, и переключили рабочую нагрузку с сервера DigitalOcean на инфраструктуру в Яндекс.Облаке — всё это время сайт «Кода Дурова» оставался доступен.

В качестве защиты от DDoS в Opsguru решили использовать встроенное решение Яндекс.Облака — теперь весь трафик до виртуальной машины проходит через фильтры Qrator Labs.

Более 80% всех читателей сайта «Кода Дурова» — жители России, поэтому из-за перемещения продакшн-контура в ДЦ Яндекс.Облака в Центральном федеральном округе уменьшилась скорость загрузки страниц.

После нескольких дней работы оказалось, что текущую нагрузку на сайт в Яндекс.Облаке способна выдержать виртуальная машина с такой же конфигурацией, что и в DigitalOcean — 2 vCPU, 4GB RAM с гарантированной долей ядра 50%. Но лишь с проработанной защитой от DDoS-атак.

Планы на 2020 год и общее мнение:

Но на этом изменение архитектуры проекта не заканчивается — дальше ребята из Opsguru планируют увеличить количество виртуальных машин до трёх, а перед ними установить балансировщик нагрузки. Такая вариация архитектуры поможет выдерживать скачки нагрузок (стандартная нагрузка на сайт — 6-8 запросов в секунду, в пиковое время это 17-20 запросов в секунду).

Сейчас база данных и CMS сайта «живут» на одной виртуальной машине, но в дальнейшем база переедет в отдельный кластер управляемых баз данных MySQL из 2 нод. Эти базы администрируются Яндекс.Облаком — бэкапы делаются автоматически, а благодаря настройкам логов можно восстанавливать данные, которые не успели попасть в последний бэкап.

Так что работа продолжается. Представляете, сколько всего происходит на бэкенде, чтобы наш сайт оставался доступным для читателей?

Читать первым в Telegram-канале «Код Дурова»

Важные новости коротко — от GigaChat Max 
1-bg-изображение-0
img-content-1-изображение-0

GigaChat Max: коротко о главном

Как изменился Код Дурова вместе с GigaChat Max?

Узнай о всех возможностях в FAQ-статье 
ИИ от OpenAI занял второе место на чемпионате по программированиюИИ от OpenAI занял второе место на чемпионате по программированиюИИ от OpenAI занял второе место на чемпионате по программированию

GigaChat Max: коротко о главном

ИИ от OpenAI занял второе место на чемпионате по программированию

Полная версия 
Геймерам могут запретить передавать аккаунты из-за нового закона

GigaChat Max: коротко о главном

Геймерам могут запретить передавать аккаунты из-за нового закона

Полная версия 

Реализовано через GigaChat Max 

Сейчас читают
Карьера
Блоги 379
OTP Bank
Газпромбанк
Сбер
Т-Банк
X5 Tech
билайн
МТС
Яндекс Практикум
Ozon Tech
Циан

Пользуясь сайтом, вы соглашаетесь с политикой конфиденциальности
и тем, что мы используем cookie-файлы