Мегого
Megogo — один из крупнейших медиасервисов на территории Украины. Однако популярность и большой наплыв зрителей, как бы это ни казалось странным со стороны, могут принести немало хлопот команде айтишников, а невероятно большой наплыв — даже «положить» сервис. О таких ситуациях и технических решениях рассказал CIO медийной IT-компании Дмитрий Мелков в интервью Highload.
CIO Megogo Дмитрий Мелков
Я в проекте девять лет — пришел в компанию, когда Megogo уже был запущен как стартап. Поскольку первая модель видеосервиса была рекламной, то нужен был большой трафик. Когда ресурс начали накачивать трафиком, возникли и первые трудности с производительностью сайта. В команде тогда было 15 человек, и нужно было создавать из этого количества целую структуру.
Для меня как человека, отвечающего за IT, ключевым был момент, когда мы из стартапа перешли в налаженную структуру и количество специалистов выросло до 40. Раньше мы отделы создавали горизонтально, но когда у тебя в подчинении 15–16 человек, становится сложно так руководить. Ведь это еще один уровень менеджмента, в результате ты еще больше оторван от своих команд.
Когда начинается превращение из стартапа в большую компанию, появляется много согласований, менеджмента, совещаний. Компания растет быстрее. Цели, которые раньше ставили себе на год, теперь реализовываем за неделю. Сейчас у нас в разработке 160 специалистов. Много чего поменялось, стало гораздо больше нагрузки, больше серверов, людей, задач. Эта махина несется, цена ошибки становится все дороже.
Все ошибки дорогие — особенно те, которые происходят в проде. Они случаются даже у мировых гигантов — нет ни одного сервиса в интернете, который бы не падал и не ломался. За период моей работы в компании у нас было три-четыре ситуации, которые прямо ножом по сердцу. Одна из причин — мы используем много заимствованных технологий от больших компаний, хотя у нас написано также много своего кода. Так, однажды была ошибка в продукте Facebook. Как потом оказалось, эта ошибка возникает только в уникальных случаях. При наших нагрузках, комбинациях, которые могут происходить, именно она и возникла.
В результате наш сервис не работал несколько часов. В компании повисло большое напряжение: ты приходишь в офис, а у тебя ничего не работает. Мы, айтишники, сидели днем и ночью, разбирали по частям, по элементам каждую деталь. Только все начинает заводиться — и тут же внезапно останавливается. Все были в жутком стрессе.
К счастью, в нашей компании создана правильная культура. Люди понимают, что не ошибается только тот, кто ничего не делает. Главное — сделать работу над ошибками. Мы поняли, в чем проблема, открыто говорили, что есть разные пути ее решения, но не ясно, какой из них короче. Так, работая днем и ночью, применяя усилия, все починили и запустились, но это был сложный период.
Иллюстрация
Когда происходит какое-то знаковое событие или общенациональный праздник, возникают аномальные нагрузки. Сложно предположить, сколько людей будут пользоваться сервисом и смотреть телевизор, в итоге, как бы ты не готовился, как бы не рассчитывал нагрузку и не увеличивал с большим запасом мощности своей критичной инфраструктуры, все равно нет гарантии, что ты предусмотрел абсолютно всё.
Мы всегда анализируем каждый инцидент, но иногда из-за максимальных нагрузок что-то начинает работать не так, любая мелочь, сотни раз проверенная в работе, может повести себя не типично. Небольшая ошибка в коде или настройках может запустить цепную реакцию, из-за чего у части пользователей появляются проблемы сервисом, а техническая команда вся стоит на ушах и пытается оперативно исправить ситуацию, минимизировать ущерб.
Если пользователь заплатил за услугу, то у тебя нет права на ошибку. Например, мы эксклюзивно транслируем разные спортивные турниры в Украине. Мы сделали своего рода революцию на этом рынке — ранее трансляция таких событий была уделом классического телевидения. И пользователям не важно, что на самом деле, чтобы сигнал дошел до его дома, он проходит миллион разных состояний. Это космические технологии: сигнал идет со спутника, проходит через множество посредников, обрабатывается с помощью разных технологий, обогащается звуком, переводится, накладывается, сжимается. Просто все должно работать.
Как ни странно это признавать, нам помогли пережитые кризисы. Помню, затруднения в работе были, когда у Зеленского с Порошенко был батл на стадионе. Все люди резко включили телевизоры и телефоны, плюс у нас уже была возможность перемотать телевизионную запись назад — те, кто не успел с начала посмотреть, перематывали. У нас произошел коллапс. Никогда за всю историю сервиса люди не перематывали так интенсивно трансляцию телеканалов. Сервера не были к такому готовы, запись шла с проблемами, команда сильно переживала из-за этого.
В итоге, мы нашли для подобных ситуаций клауд-решение: если мы видим, что идет большой рост активности и нашего железа не хватает, мы научились разворачивать Megogo в облаках. Для этого есть Amazon. Такой ход стоит больших денег, но для пользователя это прозрачно. Облако принимает на себя излишек нагрузки и потом, когда она начинает снижаться, мы постепенно возвращаемся к работе со своими собственными структурами, которые сильно дешевле в содержании.
Кроме всего прочего, после каждого инцидента важно сделать работу над ошибками, некую ретроспективу. Разобраться, что и в какой момент пошло нет так, что изменить и поправить, чтобы ситуация не повторялась в будущем. Все это нужно грамотно расписать со всеми командами, участвовавшими в проектировании, спасении и починке.
Офис Megogo, фото: dou.ua
Мы пришли к высокому уровню стабильности и надежности, и последние два года почти не испытываем проблем с «падениями» из-за нагрузок. Но появились угрозы безопасности, когда непонятно, кто — конкуренты или злоумышленники — безуспешно пытаются сломать работу нашего сервиса и нелегальными способами разрушить нашу инфраструктуру. Потому профильные специалисты делают наш периметр максимально защищенным.
Хотя мы не банк, не проводим операции с платежными системами и не храним данных кредитных карт, злоумышленники пытаются использовать данные клиентов. Мы за этим очень внимательно смотрим: когда периметр пытаются нарушить, злоумышленники обычно что-то в процессе ломают. Это их выдает.
В продолжении интервью Дмитрий расскажет о найме сотрудников, работу с токсичными айтишниками и кодинг как проявление креатива. Читайте скоро на Highload.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…