Ответ tefalika в «Как отрезал)»5
Картинка из оригинального псто:
15 лет назад работал я в одном стартапе, который занимался ad-media trading. Так вот, в качестве базы для наших серверов использовался исходный код тогдашнего nginx.
Что вообще такое ad-media trading?
Представьте любой крупный новостной сайт, на который вы заходите. Обычно там сверху и по бокам находятся рекламные баннеры. Если сравнивать один день с другим, то баннеры меняются. Иногда в течение дня. Иногда несколько раз. Как это работает?
Существуют электронные биржи рекламы. Крупнейшими являются Google Ads, Yahoo7 и AppNexus/Xandr, принадлежащая Microsoft.
Размер электронной рекламной биржи определяется количеством сайтов с большим потоком посетителей в сутки, с которыми у этой биржи есть договор на размещение её рекламы. Если на главной странице такого сайта было 3 баннера, то в HTML странице на их месте вставлялись ссылки на сервер электронной биржи с информацией о геометрии баннера.
Далее media trading агентство, типа того стартапа, в котором работал я, заключает контракт с такой биржей, на показ своей рекламы. Оно, в свою очередь, заключает контракты уже с рекламодателями. Например крупными банками или производителями товаров. Агентство получает от рекламодателей собственно баннеры для показа, деньги на рекламную кампанию и описание целевой аудитории, на которую эта рекламная кампания рассчитана.
Далее media trading агентство загружает свои баннеры в систему электронной рекламной биржи и та подтверждает, что баннеры не содержат 18+ контента и подходят под описание рекламируемого продукта или услуги.
Когда Вы заходите на вебсайт, на котором есть подобные рекламные места для баннеров, то, при начале загрузки страницы в Вашем браузере, сработают те самые ссылки на месте баннеров, которые отправят запросы на сервер биржи. Кроме зашитой геометрии баннера сервер извлечёт из запроса:
Ваш IP-адрес
Язык браузера по умолчанию
Если это Google Ads, то также Ваш возраст и пол
Всю собранную информацию + название исходного веб-сайта биржа рассылает в виде запроса всем своим ad-media trading агентствам - делайте ставки! С этого момента включился таймер!
Со стороны ad-media trading агентства находится сервер. В нашем случае он был сделан на основе nginx. Инженеры, в числе которых был и я, писали на C++ код к nginx, который выполнял распаковку запроса, вычисление местоположения по IP-адресу, заполнение запроса к внутренней базе данных, прогонку входной информации о зашедшем на сайт пользователе через цепочку фильтров рекламодателя, проверку бюджета рекламной кампании и вычисление размера bid - ставки, которую мы готовы сделать и заплатить в случае выигрыша торгов за рекламный баннер. В итоге мы подготавливаем ответ бирже - сумма ставки и идентификатор баннера для показа. Ответ должен быть отправлен в течение 10 миллисекунд с момента отправки запроса биржей!!! Отправлять ответ "pass"/пропускаю нет никакого смысла - достаточно не отвечать 10 мс!
Дальше биржа сравнивает полученные ставки, выбирает победителя, извлекает его баннер из своей базы и отправляет его на веб-страницу, на которую Вы зашли.
По своему опыту скажу, что средний размер ставки за показ одного баннера колеблется в районе 1-2 цента. Процент выигранных нами бидов на Yahoo7 и AppNexus/Xandr был в районе 25%, а на Google Ads - 10%. На Google Ads конкуренция гораздо выше из-за того, что у них было гораздо больше биддеров вроде нас. Средний бюджет от рекламодателя на рекламную кампанию - 2 миллиона долларов.
Некоторые популярные веб-страницы, на которые Вы заходите, собираются из примерно 15 источников перед тем как быть Вам показанными...
Наши сервера располагались в облачных датацентрах в Европе, Азии и США, чтобы быть как можно ближе к серверам электронных рекламных бирж и иметь минимальную задержку на коммуникацию.
nginx позволял на своей базе сделать быстрый, масштабируемый сервер с расширяемым функционалом.
P.S.: После работы в этом стартапе мне довелось поработать ещё и c другим легковесным веб-сервером - Lighttpd. Это было уже в проекте разработки firmware для семейства Интернет-маршрутизаторов. Как-нибудь расскажу, если кому будет интересно.
