Распределенные Бэкенды Для Видеорекламы 2Гис На .Net Core И Kubernetes

Привет! Продолжаем рассказывать о компаниях-разработчиках, использующих технологии Microsoft в своих проектах.

В сегодняшнем выпуске - компания 2 ГИС , главный офис которой находится в холодном Новосибирске и к которому автор статьи испытывает самые теплые чувства.

Недавно 2ГИС завершила крупный проект с использованием основного функционала.

.

NET Core, Kubernetes и много Linux .

Я часто получаю вопросы о том, можно ли использовать .

NET Core в продакшене, каков наш опыт его использования в среде с полностью открытым исходным кодом.

Я попросил ребят рассказать мне, что и как.

Подробнее читайте под катом, оно того стоит — это один из первых публичных и крупных проектов, которые построены на .

NET Core, да ещё и на полном Open Source.

Распределенные бэкенды для видеорекламы 2ГИС на .
</p><p>
NET Core и Kubernetes

От имени архитектора проекта Дениса Иванова (на хабе ДенисИванов ), Microsoft MVP для .

NET, бэкэнд-менеджер знаменитой конференции КодФест .

Инна Савчкова (на хабе ИннаСавчкова ), технический пиар-менеджер 2ГИС, обеспечил наш разговор красивым и понятным языком и, конечно же, тире вместо дефиса.

Задаваемые вопросы Ариман .

Привет! Что такое 2ГИС? 2 ГИС — компания, предоставляющая полную и точную информацию о 330+ городах в 9 странах.

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

Теперь 2ГИС «знает» все обо всех 2,3 млн компаний России с точностью 95%.

В компании есть отдельная продуктовая команда, которая постоянно анализирует то, что нам говорят пользователи, проверяя применимость новых идей, некоторые из которых впоследствии становятся основой новых возможностей продуктов 2ГИС.



Распределенные бэкенды для видеорекламы 2ГИС на .
</p><p>
NET Core и Kubernetes

2ГИС использует широкий спектр технологий для создания своих систем и продуктов.

Однако в основном это открытый исходный код. Все просто – работает на всех платформах (а еще у 2ГИС есть куча проектов на GitHub — https://github.com/2gis .

ок.

автор) В RnD-отделе компании работают более 20 команд, которые создают инструменты для сбора и систематизации информации, картографические системы и сервисы, инструменты для продаж и рекламы онлайн, оффлайн и приложения для мобильных устройств.

Microsoft недавно выпустила официальный пресс-релиз о вашем проекте .

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

NET Core, Kubernetes и Linux. Кто решил использовать такую связку? Почему? За что? Какие преимущества вы увидели? Каковы потенциальные проблемы? 2ГИС получает прибыль от продажи рекламных возможностей компаниям, которые хотят быть более заметными для пользователей продуктов 2ГИС.

Одной из идей, которую необходимо было проверить, была гипотеза о том, что рекламодателям будет интересно размещать видеоролики.

До этого в 2ГИС можно было размещать только текстовую или графическую рекламу.

Основной целью было максимально быстро вывести на рынок инструменты для продажи и размещения видеорекламы.

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

Серверные системы реализованы в .

NET Framework и используют для развертывания платформу Windows. Однако требования к высокой доступности, отказоустойчивости и производительности сервисов видеорекламы подтолкнули нас к использованию той же инфраструктуры и операционных систем, что и онлайн-продукты 2ГИС.

К счастью, на момент начала разработки кроссплатформенный .

NET Core уже был выпущен для широкого использования в течение шести месяцев, и после тестирования и создания прототипа было решено использовать комбинацию .

NET Core, Kubernetes & Linux для реализации сервисов видеорекламы.

Это позволило двум программистам и аналитику выполнить задачу всего за 2 месяца.

В это время вошли все работы: от детальной разработки требований до выпуска в боевую инфраструктуру.

Кроме того, стало возможным использовать любые удобные инструменты разработки и операционные системы, включая Windows и macOS.

Распределенные бэкенды для видеорекламы 2ГИС на .
</p><p>
NET Core и Kubernetes

Команда проекта – слева направо инженеры и руководитель проекта Где находится «сердце» проекта? Как вы можете гарантировать, что глобальные клиенты получают одинаковый уровень обслуживания в такой структуре? Кластер Kubernetes используется 2ГИС как платформа, на которой запускаются многие сервисы компании.

На самом деле таких кластеров три — два в России и один в Европе.

Это хорошо управляемая инфраструктура со всеми необходимыми свойствами: балансировка, многоуровневая отказоустойчивость, детальный мониторинг и возможность получать и анализировать любые логи и кастомную телеметрию от приложений.

Поэтому выбора, где развернуть серверные сервисы видеорекламы, по сути не было.



Распределенные бэкенды для видеорекламы 2ГИС на .
</p><p>
NET Core и Kubernetes

Архитектура проекта С точки зрения хранения, перекодирования и обслуживания видеофайлов все немного иначе.

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

С точки зрения классической 3-х уровневой архитектуры созданный нами сервис видеорекламы в 2ГИС — бизнес-логика, API для хранения, перекодирования и обслуживания видеофайлов (CDN) — представляет собой хранилище данных, а все продукты 2ГИС — фронтенд. В этой схеме все наши бэкенды географически распределены, поэтому все клиенты получают примерно одинаковый уровень обслуживания.

Возвращаясь к общим деталям проекта — расскажите о текущих показателях (пользователи, нагрузка).

Проект уже в производстве или еще тестируется? Сервис работает с апреля 2017 года, и сейчас у нас около 20 000 запросов на видеорекламу в день.

Более чем на 80% из них мы отвечаем из кэша.

Это дает нам возможность поддерживать достаточно высокие нагрузки, хотя на текущем этапе в пике мы имеем не более 100 RPS. Какие архитектурные решения были использованы в проекте? Если это глобальный проект, то архитектура должна быть рассчитана на высокие нагрузки из различных локаций.

Каковы, по вашему мнению, обязательные архитектурные шаблоны/подходы для такого проекта? Какие инструменты вы используете для отслеживания происходящего? Испытывали ли вы какие-либо трудности? ДДОС? По используемым архитектурным решениям и подходам сервис видеорекламы мало чем отличается от других распределенных приложений, рассчитанных на бесперебойную работу с большой аудиторией пользователей.

Существует целый набор лучших практик по созданию распределенных приложений, например, стоит обратить внимание на Курс Джеффри Рихтера .

Самое первое, что следует учитывать, это правильное использование ресурсов сервера .

Используемые потоки не должны блокироваться на длительное время; это достигается путем написания асинхронного кода.

Если часто запрашиваются одни и те же данные, необходимо использовать кэш.

Если таких данных немного, то хватит даже кэша в памяти.

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

Здесь помогают довольно простые в использовании шаблоны, такие как Timeout, Retry, Fallback и их комбинации.

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

Конечно, есть трудности.

Они происходят, когда какая-либо инфраструктура или партнерские сервисы выходят на техническое обслуживание или когда происходят перебои в работе сети провайдера.

Несмотря на «молодость» .

NET Core и относительно небольшое количество использований этой платформы для построения аналогичных решений, опыт у нас сугубо положительный — никаких «спецэффектов» или странного поведения приложений из-за JIT-компилятора мы не столкнулись, сборщик мусора или другие компоненты CLR. Мы очень надеемся, что эта тенденция сохранится.

Несколько слов о DDoS и подобных атаках.

Т.

к.

мы используем общую инфраструктуру компании, нам не пришлось решать все эти вопросы.

Здесь мы полностью полагаемся на опыт наших инженеров по инфраструктуре и применяемые ими решения для мониторинга и защиты.

Каковы ваши планы роста? Сейчас видеореклама становится одним из основных инструментов привлечения внимания пользователей к рекламодателям наряду с текстовой и графической рекламой.

Уже есть несколько рекламных позиций, использующих видеорекламу.

Мы рассматриваем возможность использования собственной инфраструктуры для хранения исходных видео, чтобы в первую очередь снизить юридические риски.

Мы также продолжаем совершенствовать внутренние процессы и системы управления и продажи рекламы в целом и видеорекламы в частности.

Все это обеспечивает повышение эффективности работы в 2ГИС.

Рост связан с опасностью отказа сервиса при большой нагрузке.

Как дела? В 2ГИС создана вся необходимая инфраструктура для нагрузочного тестирования сервисов на базе Gatling. Все, что вам нужно для его использования, — это развернуть приложение на специальных «аппаратных» серверах под управлением Kubernetes и написать сценарии нагрузочного тестирования на Scala. Все необходимые метрики, сравнения результатов между прогонами, отчеты и графики предоставляются платформой нагрузочного тестирования.

Спасибо! Узнайте больше о технологиях, используемых в 2 ГИС можно прочитать в корпоративном блоге компании.

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

Теги: #linux #microsoft #Kubernetes #Высокая производительность #.

NET #Распределенные системы #.

net core #2ГИС #с новым годом! ##isvcloudstory

Вместе с данным постом часто просматривают: