![Page 1: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/1.jpg)
Интересно? Заходи на http://job.fotostrana.ru 1 из 50
Архитектура проекта на 30М пользователей
![Page 2: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/2.jpg)
Интересно? Заходи на http://job.fotostrana.ru 2 из 50
Фотострана?Не, не слышал.
![Page 3: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/3.jpg)
Интересно? Заходи на http://job.fotostrana.ru 3 из 50
— 35 000 000 зарегистрированных пользователей
— 1 500 000 уникальных посетителей в день.
— Больше 150 человек в команде
— Входим в ТОП-20 сайтов рунета
![Page 4: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/4.jpg)
Интересно? Заходи на http://job.fotostrana.ru 4 из 50
О чем расскажу?
• Общая архитектура и платформа• Используемые технологии• Обработка запросов• Отдача статики• Хранение данных• Мониторинг
![Page 5: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/5.jpg)
Интересно? Заходи на http://job.fotostrana.ru 5 из 50
Общие цифры
• Один дата-центр• Более 200 физических серверов• В пике суммарный трафик больше 3 Гбит/c• 70 Мб PHP кода• 3 Гб статики
![Page 6: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/6.jpg)
Интересно? Заходи на http://job.fotostrana.ru 6 из 50
Разработка
• PHP, в основе лежал Zend Framework• C(++) демоны и модули для PHP• SVN (есть проблемы, хотим Git)• Google Docs• Redmine• Fisheye• Asana
![Page 7: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/7.jpg)
Интересно? Заходи на http://job.fotostrana.ru 7 из 50
Платформа
• FreeBSD (местами Debian Linux)• nginx• Apache + mod_php + APC• Memcached• Percona server• Собственные демоны
![Page 8: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/8.jpg)
Интересно? Заходи на http://job.fotostrana.ru 8 из 50
Железо
• Средний сервер: 2 Xeon 16Gb RAM• Сеть на Juniper• 300 Гб кластер memcached• 650 Гб базы данных MySQL• 750 Гб данных в памяти демонов • 50 Тб для хранения фотографий• SSD где необходимо• Сервера узкоспециализированные
![Page 9: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/9.jpg)
Интересно? Заходи на http://job.fotostrana.ru 9 из 50
Релизы
• Деплой раз в час (~30 секунд на 130 серверов)
• Есть QA отдел, но фактически тестирования практически нет
• Новый функционал выкатываем на часть пользователей
• PHP ошибки приходят в skype их автору
![Page 10: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/10.jpg)
Интересно? Заходи на http://job.fotostrana.ru 10 из 50
Мониторинг
• Nagios + Cacti• Самописные модули мониторинга• Самописная система профилирования кода
и запросов• Много смс уведомлений• Бизнес статистика/аналитика для
менеджеров сервисов
![Page 11: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/11.jpg)
Интересно? Заходи на http://job.fotostrana.ru 11 из 50
Резервное копирование
• БД 3 раза в день• Демоны каждые 2 часа• Пользовательские фотографии раз в сутки
![Page 12: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/12.jpg)
Интересно? Заходи на http://job.fotostrana.ru 12 из 50
Обработка запросов
![Page 13: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/13.jpg)
Интересно? Заходи на http://job.fotostrana.ru 13 из 50
![Page 14: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/14.jpg)
Интересно? Заходи на http://job.fotostrana.ru 14 из 50
Нет разбиения на группы
Питомцы, профили, поиск…
![Page 15: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/15.jpg)
Интересно? Заходи на http://job.fotostrana.ru 15 из 50
Есть разбиение на группы
Питомцы Профили Поиск
![Page 16: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/16.jpg)
Интересно? Заходи на http://job.fotostrana.ru 16 из 50
• 130 PHP серверов• 2.500 req/s• Среднее время
ответа 0.06 сек
![Page 17: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/17.jpg)
Интересно? Заходи на http://job.fotostrana.ru 17 из 50
Управление серверами
![Page 18: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/18.jpg)
Интересно? Заходи на http://job.fotostrana.ru 18 из 50
Отдача статики
• Наша статика (css, js, swf, jpg…) из svn
• Пользовательский контент (аватарки, фотки, превьюшки) – “Фотосхема”
![Page 19: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/19.jpg)
Интересно? Заходи на http://job.fotostrana.ru 19 из 50
Содержимое статики:• 800 css• 750 js• 3200 swf• 48000 image
• 5000 req/s• >1 Гбит/сек трафика в пике
} 3 Гигабайта
![Page 20: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/20.jpg)
Интересно? Заходи на http://job.fotostrana.ru 20 из 50
Сервер определяется
на стороне PHP кода
по IP клиента
![Page 21: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/21.jpg)
Интересно? Заходи на http://job.fotostrana.ru 21 из 50
![Page 22: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/22.jpg)
Интересно? Заходи на http://job.fotostrana.ru 22 из 50
![Page 23: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/23.jpg)
Интересно? Заходи на http://job.fotostrana.ru 23 из 50
Интересное
• Контроль версий статический файлов• Пробовали привязывать пользователей по
географическому признаку• Lazyloader для динамической подгрузки js и
css• 5 виртуальных субдоменов на каждый
сервер
![Page 24: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/24.jpg)
Интересно? Заходи на http://job.fotostrana.ru 24 из 50
Фотосхема
• 14 Тб - объем пользовательских фотографий• +60 Гб (или 250.000) фотографий в сутки
• 4000 req/s• >850 Мбит/сек трафика в пике
![Page 25: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/25.jpg)
Интересно? Заходи на http://job.fotostrana.ru
Фотосхема
25 из 50
![Page 26: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/26.jpg)
Интересно? Заходи на http://job.fotostrana.ru 26 из 50
Интересное
• Проблема холодного старта• Файлы реально удаляются с диска
![Page 27: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/27.jpg)
Интересно? Заходи на http://job.fotostrana.ru 27 из 50
Хранение данных
• MySQL• Memcached• Lemon – самописное key-value хранилище• Демоны на C++
![Page 28: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/28.jpg)
Интересно? Заходи на http://job.fotostrana.ru 28 из 50
картинка про alter таблички на 30кк записей (15Гбайт)
• 14 серверов• 100.000 / мин SELECT• 40.000 / мин UPDATE
MySQL
![Page 29: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/29.jpg)
Интересно? Заходи на http://job.fotostrana.ru 29 из 50
Интересное
• Можем на живую менять схему БД• Используем pconnect• Не используем транзакции• Не используем JOIN и вторичные ключи• Нет шардинга• Особое внимание индексам и адекватности
запросов
![Page 30: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/30.jpg)
Интересно? Заходи на http://job.fotostrana.ru 30 из 50
Управление репликами
![Page 31: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/31.jpg)
Интересно? Заходи на http://job.fotostrana.ru 31 из 50
• 5 серверов• 300 Гбайт RAM• 32.000 req/s
Memcached
![Page 32: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/32.jpg)
Интересно? Заходи на http://job.fotostrana.ru 32 из 50
Интересное
• Это не хранилище данных!• 90% данных – кэш выборок из базы как есть• Использовали ketama, отказались• Рестарт сервера раз в несколько месяцев• Локи на memcached::add
![Page 33: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/33.jpg)
Интересно? Заходи на http://job.fotostrana.ru 33 из 50
MySQL плохо делает 3 вещи:
• Удаление большого количества данных
• Очень частые изменения данных
• Частые выборки
Подходим к NoSQL
![Page 34: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/34.jpg)
Интересно? Заходи на http://job.fotostrana.ru 34 из 50
Решение – NoSQL.
Lemon
Lemon:• Простое key-value хранилище• Все данные в памяти• Периодический дамп данных на диск• key = (string namespace, int64 key)• Шардинг как запуск нескольких независимых инстансов, namespace привязан к серверу.
![Page 35: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/35.jpg)
Интересно? Заходи на http://job.fotostrana.ru 35 из 50
Время обработки запроса
![Page 36: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/36.jpg)
Интересно? Заходи на http://job.fotostrana.ru 36 из 50
Демоны
Что сделали:• Модуль PHP для взаимодействия с демонами• Разработали протокол взаимодействия• Своя бинарная сериализация данных
Всего разных демонов больше 30:• Гости, контакты, мессенджер, питомцы, поиск,
встречи, голосвание, нотификации…
![Page 37: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/37.jpg)
Интересно? Заходи на http://job.fotostrana.ru 37 из 50
Пример: демон гостей<?$guests->call(‘add_guest’, array(
$toUserId,$guestId,$source,
));$list = $guests->call(‘get_guest_list’, array(
$forUserId, $limit,
$offset,)); // $list = array(array(guestId, time, source), …)
![Page 38: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/38.jpg)
Интересно? Заходи на http://job.fotostrana.ru 38 из 50
HTTP демоны-серверы
/chat/?userId=123/user/123
![Page 39: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/39.jpg)
Интересно? Заходи на http://job.fotostrana.ru 39 из 50
• Быстрее PHP, в 10 раз!• > 50% запросов на балансер попадают к
демонам• Всего 7 серверов
HTTP демоны
![Page 40: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/40.jpg)
Интересно? Заходи на http://job.fotostrana.ru 40 из 50
Мониторинг
• Профилирование PHP кода, запросов в БД, memcache и других источников данных
• Единая система бизнес статистики для менеджеров сервисов
![Page 41: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/41.jpg)
Интересно? Заходи на http://job.fotostrana.ru 41 из 50
Профилирование - CStat• Модуль для PHP• Все данные в разделяемой памяти• Сбор данных со всех серверов (по крону) и сохранение в БД• Похожа на pinba и XHprof
Пример: <?CStatStartUrl($requestUrl);// some codeCStatStopUrl($isError);
CStatStartDB($mode, $dbName, $_method, $table);// execute mysql_queryCStatStopDB($isError, $rowCount);
![Page 42: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/42.jpg)
Интересно? Заходи на http://job.fotostrana.ru 42 из 50
Статистика по URL
![Page 43: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/43.jpg)
Интересно? Заходи на http://job.fotostrana.ru 43 из 50
Кол-во запросов по URL
![Page 44: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/44.jpg)
Интересно? Заходи на http://job.fotostrana.ru 44 из 50
Профайлер для разработчика
![Page 45: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/45.jpg)
Интересно? Заходи на http://job.fotostrana.ru 45 из 50
Статистика• Реализована на очередях в разделяемой памяти (на каждом PHP
сервере)• Сбор данных из очереди со всех серверов (по крону) и их обработка• Минимальное влияние на производительность скрипта• История значений хранится в базе в нескольких таблицах, где они
сгруппированы по периоду (час, день, месяц).• Есть возможность считать уников (например кол-во уникальных
пользователей загрузивших сегодня фотографии)
С точки зрения разработчика: <?Statistics::increment($statsType, $userId, $field, $value);
// Statistics::increment(MAIN_STATS, 2407325, ‘photos_upload_count’, 18);
![Page 46: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/46.jpg)
Интересно? Заходи на http://job.fotostrana.ru 46 из 50
SharedQueue серверРеализация очереди сообщений в оперативной памяти.
• Демон на скриптовом сервере• Модуль для PHP• На данный момент 200 очередей
Методы <?$result = SharedQueue::push($queueIndex, $data);
$allData = SharedQueue::popAll($queueIndex, $serverList);
![Page 47: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/47.jpg)
Интересно? Заходи на http://job.fotostrana.ru 47 из 50
Интерфейс статистики
![Page 48: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/48.jpg)
Интересно? Заходи на http://job.fotostrana.ru 48 из 50
Интерфейс статистики
![Page 49: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/49.jpg)
Интересно? Заходи на http://job.fotostrana.ru 49 из 50
Подводя итоги
• Нет преждевременной оптимизации• Нет трендам, да цифрам• Не бойтесь экспериментировать• Проверяйте все сами• Включайте мозг
![Page 50: 13 октября, DEV {web} - конференция о Highload веб-разработке. "Архитектура проекта на 30 млн. пользователей", Дмитрий](https://reader034.vdocuments.us/reader034/viewer/2022042513/555e1c29d8b42a6a4c8b4624/html5/thumbnails/50.jpg)
Интересно? Заходи на http://job.fotostrana.ru 50 из 50
Вопросы
Спасибо за внимание!