Сначала о меркантильном. Ну что сказать. Дорого. 12000 рублей — это ДОРОГО. Почему пошёл? Ну как бы настроился уже. Сколько должна стоить конференция? Приемлимая стоимость до 6000 рублей — это максимум. Куда ушли деньги я не очень понимаю. У мероприятния спонсоры Microsoft и Яндекс, мало спонсировали? Атрибуты мероприятния на уровне, заведение отличное, кушанье вкусное.
Мероприятие проходило Международном информационно-выставочном Центре ИнфоПространство. Это кафешка с залами для презентаций. Цивильное заведение. Залы можно «настраивать» по-размеру передвижными перегородкам, впервые увидел такую конструкцию. Сама организация выступления проходила в два потока, что меня несколько расстроило когда я увидел программу, ибо нужно было выбирать куда не идти. Но организаторы конференции разрешили моё противоречение сказав, что нужно идти слушать тот материал, тема которого ближе к текущим задачам, более актуален. Те выступления, которые не увидели можно будет посмотреть на видео.
Хочу отметить девушек промо. Девушки очень. Это кстати одна из гипотез куда ушли деньги. :) !!Нужны фото — не нашёл!!
Очень сильное впечатление на меня произвели люди из Яндекса. Анатолий Орлов (руководитель отдела инфраструктуры веб-поиска Яндекс ), Антон Самохвалов (писатель краулеров и http серверов), Максим Лапань (супер системный администратор), Тимур Хайруллин (гуру в области философии тестирования), Анатолий Лебедев(системный администратор), Григорий Бакунов(супер программист C++), Татьяна Бахаревская(руководитель отдела администрирования). В общем вот так и не меньше. Так-же я видел и слышал кого-то из главных технарей Яндекса и человека который концептуально придумал технологию Xscript — тоже весьма приятные ощущения.
Стофакты. Компания Яндекс программирует в основном на C++. У них 6000 серверов. Три датацентра, возможно больше. Они развивают обмен траффиком(пиринг). У них есть механизмы для создания в регионах CDN(content delivery network) что даёт возможность региональным пользователям получать данные быстрее и дешевле или вообще бесплатно.
Анатолий Орлов «Что такое нагрузка?». Очень грамотно что с этого началась конференция. Основы взаимодействия операционной системы с прикладным ПО и железом. Очень полезно было узнать что не стоит покупать SAS диски ибо SATA сильно дешевле, а в производительности не шибко уступает, а то что уступает компенсируется постоением RAID. В общем я понял, что есть всяческие ньюансы с памятью, но в целом пофиг на неё ибо всё равно быстро. LA(load average) — означает сколько процессов претендуют на выполнение в данный момент. Про винты ещё разные чтения — seek и …, read ahead, IOsheduling. Оптимизации доступа к диску — читать много и сразу, нежели много чтение порциями. На заметку взял, что сеть нужно мерять пакетами, а не мегабайтами.
«О проектах, отягощенных производительностью Типовые архитектурные решения высоконагруженных проектов» Филипп Дельгядо. Очень сильное впечатление на меня произвёл человек. Говорил он про разработку в целом. Про важность людей, про технологии, про подходы. Итог был один, если есть команда — всё получиться. Ну и выбранные технология и подходы, так-же зависят в основном от команды.
- Стоимость транзакции. Имеется ввиду финансовая стоимость потери транзакции. Например если к нам не придёт заказ из интернет-магазина. От стоимости зависит сколько и какие усилия нужно приложить что-бы избежать отказов системы.
- Два метода бэкапа. Делать бэкапы двумя разными методами. Например для Oracle — rman и… Для MySQL копирование файлов БД и mysqldump. Был пример восстановления по логам — логи плюс старый бэкап спасли ситуацию.
- Три дата центра. Пример был такой — в одно датацентре плановые работы, в другом авария, случается не часто но… Если стоимость транзакции велика, оно стоит того.
- Архитектурно предусмотреть active/standby конфигурацию системы. Дублирующая система.
- При обновлении программного обеспечения, важно иметь возможность сохранение обратной совместимость. Много было слов о протоколах взаимодействия компонентов систем(RPC, HTTP) и форматах объектов(не важно бинарные они сериализованные). Программа должна поддерживать версии протоколов и объектов на двух предыдущих поколений. Другими словами изменения должны быть обратносовместимы.
- Так-же при обновлении важно иметь возможность отката к предыдущей версии. Мы в Лайтсофт это делаем так — svn update -r [revision number]
- Дубль кэширования. Вот записал себе на заметку, а что-бы это значило?
- Перенос логики на клиента. Дабы использовать мощь его системы. Например сортировку пользовательских данных не на БД или в middleware производить, а средствами програмно-аппаратного обеспечения пользователя. Это скорее актуально для Desktop приложений. Но с приходом Google Gears, возможно что это станет применимо и для вэба.
- БД должна быть простой. Это о том что не нужно логику на сервере делать — триггеры, процедуры. Вернее это можно конечно делать и современные БД много на чём позволяют эту логику делать, но правильное место логики в middleware. К php-вэбостроительству, то как делаем это мы, слабо применимо. У нас клиентская логика и логика middleware одно и то-же. Хотя вот написав эту фразу подумалось что не дурно было чётко разделять между собой эти компоненты системы. (нужна картинка трёхзвёнки)
- Необхдимость классификации ошибок
- Логгирование — вход/выход. Логировать нужно столько информации, сколько нужно разработчику что-бы при получении логов приложения с продукционного сервера, её хватило для понимания причины ошибок.
- X-Script в opensource. Ждём.
- Команда. Смотрите последние слайды презентации.
- Документы которые нужны. Смотрите последние слайды презентации.
Антон Самохвалов «Как писать высокопроизводительные сервера». Когда автор начал свой доклад, он так посматривал на Игоря Сысоева, я подумал — он как на учителя и наставника него смотрит, типа ожидая одобрения и похвалы. На самом деле доклад был в пику технологии метода обработки запросов в nginx(FSM — Finite State Machine – автоматы с конечным числом состояний) и методом нитей(threads), а в серверах Антона это green threads.
В общем мне было интересно послушать, про то как системой это всё обрабатывается, разницу в алгоритмах и производительности. Во время флейма услышал изучаемые мной темы про контексты(в понятии процессора), планировщик(в понятии ОС). Автор сильно не прав, что так построил доклад.
Объективен доклад был-бы если бы автор сравнивал запуск Поиска(это видимо штука которая ходит на многочисленные сервера для формирования результатов поиска) не nginx+fcgi+Поиск vs Специальный http-сервер+Поиск, а например nginx+специальный модуль Поиска vs apache2 специальный модуль Поиска. В общем фигня. Но Антон всё равно молодец — рубит. Для себя я сделал один практически полезный вывод — нужно мигрировать на apache2, а то мы до сих пор на apache 1.3 сидим. :) Ну и я наконец-то понимаю почему это нужно делать.
Сергей Скворцов «Новая архитектура Спайлога. Ничего не вынес из доклада. Понял что они переходят с MySQL на PosgreSQL, почему не понял. Понял что они заготавливают для юзера картинки с цифирками раз в 15 минут, а не выводят их в реальном времени(а вот NetLog выводит в реалтайм :).
Павел Уваров «HCS — система хранения данных в Рамблере». HCS — это типа такая штука — форматируем винт в специальный формат файловой системы. А когда мы данные туда сохраняем они там живут стуктуировано и даже с индексами и даже реляционно. Обращаемся мы к данным как к файлам. Как я себе понял выглядит это так — дай_мне_всё_где_имя=Вася | пофильтровать только то где есть Москва > имя_файла; cat имя_файла, другой_файл_другого источника | сделать что-то эдакое. Источников данных может быть много. А возвращаемый результат ОГРОМЕН. Применение увидел только одно — хранение и обработка БОЛЬШИХ объёмов логов — баннерыая система, счётчик посещений. HCS выйдет в opensource, может быть попробуем.
Илья Космодемьянский «Проблемы работы с большими объемами реляционно слабосвязанных данных в высоконагруженных веб-проектах». Я купился на то что пацан из SUP. Ни о чём вообще доклад… Подумал… Всё-же нечего написать. Схемка у них там красивая была, а такой доклад к ней в общем-то не нужен был.
Сергей Нековаль. «Масштабирование системы баннерной рекламы с централизованной базой данных.» В общем-то доклад на 15 минут, а не на час. Чуваки подумали над архитектурой. Oracle бэкенд — один большой сервер. 25 фронтентов. Тратата, ляляля. 450 миллионов показов в сутки.
В стопядесятмиллионый раз вынес для себя что сложность реализации приложения, должна быть пропорционально его задачам. Если это бета-проект, коцептция которого может измениться через неделю, ненужно делать суперсложное, универсальное решение. Возможность рефакторинга должна быть. Необходимость создания отдела технической эксплуатации.
«DDOS, эволюция ботнетов и атак.» Руслан Стоянов и «Защита хостинг центров и проектов от DDOS и прочих сетевых аномалий.» Виктор Ларин. До этого я вообще слабо представлял себе что такое DDoS. Информация прямо скажем меня напугала.
Оба выступления были рекламой, очень здорово сделанной. На информацию ребята не поскупились, оба были открыты для общения.
Руслан показался нам с коллегами эдаким хакером. Человеком который сам занимался темой заказных DDoS атак, вирусами и чем-то ещё не очень добропорядочным. Теперь же он выступает на стороне добра и предлагают защиту и консалтинг от атак. Продолжение следует…
«Мониторинг Яндекса» Максим Лапань. Ух такого наворотили… С другой стороны, а что делать? Свой мониторинг они строят на базе весьма допилинном Zabbix. Используют в качестве хранилища простую БД, по-моему даже файлы. Как хранилище статистики и настроек используют Oracle RAC и MySQL. MySQL живут на GPFS от IBM, таким образом мониторинг живёт на дублирующих серверах используя одно хранилище по сети. Если один из серверов отваливается, другой его подменят(CARP), и ему доступна вся их общая информация.
«Мониторинг и обслуживание большого парка веб-серверов.» Павел Варнавский. Мало следов оставило выступление. На заметку
- bacula, armada — системы резервного копирования;
- Необходимость политики обновления ПО и ОС;
- IO у процесса можно снизить через nice;
- Бэкап делать с зеркала. это к моему вопросу как делать бэкап 400 сайтов хостинга.
«Контраварийные меры обеспечения работоспособности русурсов при резком росте посещаемости.» Дмитрий Криков. Эх увидел бы я эту презентацию три года назад… Впрочем наверное не понял бы к чему всё это. В общем это была презентация про базовый highload. Вернее даже что может сделать администратор, когда ресурс оказался без разработчика и его архитектура не известна. Быстрое затыкание дырок. В ЛайтСофт это у нас был целый этапа такой, длинной в два года.
В общем-то для людей которые уже в highload ничего нового узнать не удалось. Но зато можно подтвердить правильность понимания.
Путь выглядит примерно так:
- акселератор PHP(APC, eaccelerator)
- установка nginx в качестве фроентенда
- оптимизация запросов БД, постороение недостающих индексов
- кэширование данных на уровне БД
- создание кэширования в приложении, файловый кэшь
- ну и самая крайняя мера — кэширование страниц сайта. mod_accel или nginx if (-f file_exist).
«Методики нагрузочного тестирования.» Тимур Хайруллин. Шедевральное выступление. Нужно что-бы были понятны цели тестирования. Нужны чёткие требования к показателям системы. Кроме того Тимур показал как знание системы и её поведение в прошлом может позволить предсказывать её поведение в будущем. Вся информационная часть докладах на слайдах есть, автор предал этому эмоциональный момент, но в тексте этого не передать.
Тестирование производительности сайта на практике. Сергей Мартыненко. Возможно если бы автор всё-же послужал зал и убрал микрофон ото рта впечатлений от его выступление было-бы больше. А так — негативные воспоминания о неприятных ощущениях в ушах. Запомнилось то, что если за решением стоит вендор типа Microsoft возможно предпочтут именно его, потому что будет с кого спросить.
Решение проблем высоких нагрузок примере проекта Яндекс.Фотки. Анатолий Лебедев и Григорий Бакунов. Ребята так прикольно построили своё выступление. И сами слады — зачот, а главное они друг друга дополняли очень органично.
По сути вывод такой — всё очень просто. Яндекс.Фото — это Си++ и MySQL. Чуть-чуть кэширования. Хорошо продумманная система маштабируемости и отказоутойчивости.
Доставка контента пользователям. Андрей Смирнов. Человек из компании Netstream, делают проект smotri.com. Ну там много слов было. Основное их ноу-хау это развитие пиринга. Как транспорт для таскания данных между серверами используют WebDav. То чего я не знал про smotri.com, впрочем я вообще об этом проекте до конференции не слышал, так это про online трансляции. Имхо открываюстся богатые возможности для интерактивного обучения. Без присутвия.
На этом пожалуй всё. Конференция мне понравилась, обзор я писал полтора месяца. Спасибо WordPress за сохранение ревизий статей. :)
А видео будет?
Спасибо за отчет, очень интересно )
@Cord, У меня есть видео с Highload 2007. Когда с этого будет так-же поделюсь.