Андрей Друченко
Обзор UAWEB 2008, день второй — завершение.
Программа второго дня оказалась более насыщенной и интересной, в первую очередь из-за лучшего качества и тематики докладов. На второй день у меня было запланировано посещение следующих докладов:- Как разрабатывать системы массового обслуживания (Егор Егоров, Telme)
- Теория и практика CAPTCHA-защиты интерфейсов(Алексей Колупаев)
- Многоязычные сайты (Андрей Шитов, ex-CTO студии Лебедева)
- Подходы гибкого управления требованиями в бизнес-ориентированных проектах. (Алексей Кривицкий)
- Бизнес процессы в веб-разработке (Владислав Флакс owox.com)
- Тестирование юзабилити в реальном окружении (Paul Gokin)
- Тестирование уязвимости веб-сайтов и веб-приложений (Алла Кучмар и Юрий Козлов)
- Привлечение капитала в Start-Up (Юрий Бойко)
- Тестирование и оценка времени (Марина Дидковская)
На последние доклады в обоих секциях у меня не было никакого желания идти, т.к. и SilverLight (читай Flash от Microsoft) и некие «Технологии будущего» — мне были не интересны в принципе. Но на последнем докладе про технологии будущего и инновации в области самомотивации мне пришлось остаться, т.к. надо было дописать и запостить материал по первому дню конференции :)
Итак, пробежимся по каждому из докладов в этот день.
Безусловно, лучшим по лаконичности, информативности и практической полезности был доклад
Как разрабатывать системы массового обслуживания
Как разрабатывать системы массового обслуживания — Егор Егоров
Работая в компании Telme, Егор на практике имеет дело с высонагрузочными системами уже много лет, и его доклад(или даже скорее тренинг) был посвящен основным моментам в разработке таких систем.
В частности
- Использование nginx в качестве балансировщика для раскидывания входящих запросов на application сервера
- Масштабирование СУБД – серверов посредством репликации и ораганизации Master / Slave серверов (в первые идет только запись, во вторые — чтение)
- Разделение данных в СУБД по характеру их использования (классический пример с сессиями — к которым нужно часто и быстро обращаться)
Озвучены были также принципы, соблюдая которые ваша система действительно сможет считаться высоконагрузочной:
- No single point of failure (Одна задача = 2+ сервера, Данные = 2+ хранилища, cronjob запускаются везде)
- Self healing (Полный автопилот, Минимум процедур, Автоматическая коррекция ошибок)
- Кеширование (Кеширование должно быть максимально простым, следовать принципу KISS)
Самые интересные вещи из своей практики Егор начал рассказывать в секции вопросов из зала :) Например, каким образом накатывать апдейты на уже работающую в продакшне систему и как устраивать синхронизацию всего кода вашего веб-приложения.
Очень интересным был вопрос из зала по поводу целесообразности использования ORM в подобных системах — из ответа Егора, я почему-то сделал вывод что он был против ORM, т.к. стоимость сервера дешевле чем стоимость времени программистов на изучение и использование ORM. Поскольку меня это очень удивило, я подошел к Егору в перерыве и выяснилось, что все-таки ORM — это хорошо, и благодаря ему можно сэкономить время на разработку, а это главное.
Показательным также является мнение Егора по поводу использования в высоконагрузочных системах не сильно распространненых платформ на языках типа Python, Ruby, etc. Здесь мне очень понравилась идейная мысль о том, что раз уж вы делаете попсу, то будьте добры также ее и любить, что на практике означает, что вам придется иметь дело с проверенными решениями на базе того же PHP.
В общем, Егору огромное спасибо за отличный доклад и за общение в кулуарах (я приставал с вопросом на тему реализации очередей и межсервисного общения в таких больших системах. Кому интересно, одна из известных реализаций — Amazon SQS)
Теория и практика CAPTCHA-защиты интерфейсов
Очень классным докладом порадовал Алексей Колупаев, который мог позволить себе выйти в дурацкой розовой майке поскольку не представлял ни одну компанию, а только самого себя:) Алексей методично пробежался по типам капч и способам их распознавания.Теория и практика CAPTCHA-защиты интерфейсов — Алексей Колупаев
Реально, почти что единственный доклад из которого я действительно узнал что-то для себя новое. И с умилением вспомнил спец-курс по раcпознаванию образов на 6 курсе киевского физтеха проф. Шлезингера :)
Алексей рассказал о нескольких типах реализации капч
Алексей рассказал о нескольких типах реализации капч:
- Цветовая капча (используется, например на ICQ)
- Шрифтовая (по заверениям Алексея довольно просто ламается нейронной сетью если можно разделить ее на буквы)
- Текст (улучшение капчи в этом случае рекомендуется путем варьирования длины текста и увеличения мощности алфавита, т.к. чем больше длина алфавита, тем дольше учить нейронную сеть)
Соответственно, среди методов распознавания капч были озвучены
- Трафаретный подход
- Нейронные сети
- Структурный (выделение на входе каких-то элементов, например треугольников, скелетизация, etc.)
- Если вы используете буквы, то они должны быть нелинейно искажены (пример таких — на сервисах Google)
- Хороший шум — всегда похож на сигнал (это утверждение на самом деле приводит к тому, что даже человек иногда перестает местами распознавать шум/сигнал)
Версию капчи обладающей вышеперечисленными характеристиками Алексей разработал и назвал teabag_3D
Многоязычные сайты
Доклад был представлен Андреем Шитовым — ныне организатора московской группы Perl-программистов Moscow.pm 2.0, а в прошлом техническим директором студии Лебедева.Многоязычные сайты — Андрей Шитов
Андрей докладывался по теме интернационализации и локализации веб-сайтов. Порадовало, что хоть докладчик и говорил по-русски, но заглавия тезисов были на украинском языке. (наверное, это были единственные фразы на украинском которые проскочили на конференции). Шитов прилетел специально из Москвы в Киев на пару часов для доклада на UAWEB. Собственно, доклад порадовал интересными примерами решения проблем локализации(i10n) и интернационализации(i18n), эти две вещи не стоит путать.
Единственное, что не понравилось — это немного сумбурности в изложении и отсутствии четкой структуры. Хотелось бы также услышать побольше о инструментах решения указанных проблем окроме стандартного GNU gettext.
А вообще, Андрей ведет замечательнейший блог о языках
Подходы гибкого управления требованиями в бизнес-ориентированных проектах
Алексей Кривицкий конечно же, собрал аншлаг своим часовым тренингом на тему использвания SCRUM, Agile, XP-методик по гибкой разработке. Тема эта очень сейчас популярна и многие в своих компаниях пытаются внедрить то о чем писал Кент Бек, например. Тут же можно упомянуть TDD, Continuous Integration, Pair Programming, Daily Standup meeting и прочие интересные слова :)Подходы гибкого управления требованиями в бизнес-ориентированных проектах — Алексей Кривицкий
Алексей рассказал как на практике проводится создание пользовательских историй (User Stories), каким образом производится оценка историй, и на какие вещи следуюет обратить внимание в Agile практике.
В частности, речь шла о
- Традиционных подходах управления требованиями.
- Сложность управления требованиями.
- Истории (user stories) как механизм гибкого управления требованиями.
- Применение историй в SCRUM проектах.
- Приоритезация требований.
- Визуализация управления требованиями.
Никому не секрет, что основная проблема при разработке — это постоянно меняющиеся требования заказчика, рынка, etc., поэтому старый подход заключавшийся в длительной детализации и описании всех требований в толстое ТЗ — перестал хорошо работать на большинстве проектов. Собственно, отсюда и берут свое начало почти все Agile практики, они предлагают свое решение проблемы, налагая определенные условия на требования:
- Требования должны описывать нужду конечного пользователя.
- Не должны быть перегружены деталями.
- Описаны в виде приоритезированного списка.
- Их не должно быть слишком много (!)
Из этих предпосылок логически вытекает понятие пользовательской истории
As a <user>, I can <do> so that <value>.
Тут же были приведены примеры пользовательских историй для сайта UAWEB2008:
- Как посетитель, я могу ознакомиться с темами докладов, чтобы решить какие посетить.
- Как посетитель, я могу зарегистрироваться, чтобы оплатить участие в конференции.
- Как гость, я могу посмотреть прямую трансляцию докладов.
Алексей сразу же по ходу дела отвечал на многочисленные вопросы аудитории, которые касались весьма щекотливых тем типа доверия заказчика и разработчика в процессе применения предложенных практик, к планированию итераций(в терминологии SCRUM — спринты) и прочих весьма нетривиальных вещей процесса разработки.
Когда время уже истекло, докладчика обступили со всех сторон, и мне так и не удалось задать парочку волновавших меня вопросов на тему Agile. А именно, как происходит планирование пользовательских историй, каким образом они разделяются на конкретные задачи для разработчиков, и каким образом Алексею приходилось решать проблемы, связанные с уходом одного из разработчиков в середине проекта. В общем, тема очень интересная и обширная, и я думаю ближайшее время постараюсь посещать собрания участников движения AgileUkraine. Кстати, у них скоро конференция — Agile Gathering IV темы и регистрация
Бизнес процессы в веб-разработке
Владислав Флакс со своим докладом оставил у меня лично какое-то неоднозначное впечатление, с одной стороны, вроде бы и хорошо выступил, с другой — что такое бизнес процесс в веб-разработке я так и не услышал.Бизнес процессы в веб-разработке — Владислав Флакс
Даже банального определения бизнес-процесса не было озвучено. Единственное, что мне удалось резюмировать из доклада это то что бывает разработка двух видов:
- на заказ (заморачиваемся каждый раз с новыми проблемами нового заказчика)
- производство продукта и продажа коробки сразу многим пользователям (преимущества очевидны)
После обеда я передвинулся в секцию ABCD, где Пол Гокин (Paul Gokin) собирался рассказывать о юзабилити. Мне было страшно интересно попасть на этот доклад, т.к. это был единственный доклад на всей конференции посвященный тематике взаимодействия с пользователем. В будущем, хотелось бы побольше таких услышать.
Тестирование юзабилити в реальном окружении
Пол начал с того, что он вообще-то американец, так что если вдруг начнет забывать русские слова то «тупо» перейдет на английский =)Paul Gokin — Тестирование юзабилити в реальном окружении
Доклад Пола очень порадовал. Речь шла о том, что представляет собой процесс юзабилити-тестирования:
- Пользователю дается набор заданий с программным продуктом (web site, application, etc.)
- Пользователь «думает вслух» выполняя задания
- Исследователь наблюдает, слушает, задает вопросы о чем думает и куда смотрит пользователь и т.д.
- То, что происходит обычно записывается (экран, лицо+голос пользователя)
- На основе наблюдений делаются выводы
Как это все выглядит на практике: в качестве жертвы был выбран сайт известной сети ресторанов «Козырная Карта» (2k.ua) Перед пользователем стояло довольно таки реальное задание. А именно — сегодня вечером вам нужно пригласить девушку в ресторан, недалеко от вашей работы(Львовская площадь), причем такой чтобы он предоставлял скидку в 20%(у вас есть клубная карта) и там готовили вегетарианскую кухню.
Показательная порка полной неюзабельности сайта 2k.ua конечно вызвала бурную реакцию аудитории, т.к. в конечном итоге бедный пользователь так и не решил поставленную задачу, даже после подсказки. Еще показательным моментом стало то, что пользователь ушел на другой сайт, т.к. он решал его проблему (типичная ситуация, как комментировал Пол) — в нашем конкретном случае им стал Yandex.Карты — но в демо-записи он почему-то не открывался, на что сразу же последовала незамедлительная реакция представителей Яндекса из зала :) Обещали разобраться что это за непорядки такие :)
В конце были озвучены преимущества Usability Testing:
- Поведение пользователя наблюдается; это не опрос пользователей о их поведении и не опрос бизнес-аналитиков о поведении пользователей
- Наглядно дает представление о проблемах продукта; можно показать руководителям
- Сам метод можно применить на нескольких этапах разработки
- Метод не требует длительного обучения или больших затрат времени и денег для получения удовлетворительных результатов
Кстати, вначале Пол привел очень забавный пример касающийся юзабилити — когда в одной американской авиакомпании стюардессы массово отказывались летать определенным рейсом, а все потому, что на борту самолета стояла entertainment-система которой было невозможно пользоваться. Я сразу же вспомнил одну замечательную книгу, из которой этот пример и был скорее всего взят — речь о Алан Купер «Психбольница в руках пациентов»
Огромное спасибо Полу за интереснейший доклад! В будущем, хотелось бы услышать подетальней о том, в чем собственно и заключается работа юзабилити-аналитика — а именно, как определять проблемы в продукте, и как придумывать проблемы их решения по проведенным юзабилити тестам.
Тестирование уязвимости веб-сайтов и веб-приложений
Алла Кучмар и Юрий Козлов представляли доклад на очень важную тему уязвимости веб-приложений.Тестирование уязвимости веб-сайтов и веб-приложений — Алла Кучмар
Были озвучены следующие тезисы:
- Web-приложение — это сложная система использующая несколько платформ и протоколов
- Web-приложение по определению выходит за периметр защищенной сети
- Рост числа Web-приложений увеличивает обьем работ по устранению уязвимостей
- Разработчики ПО не являются экспертами по безопасности
- Большинство уязвимостей — результат ошибок программирования.
Тестирование уязвимости веб-сайтов и веб-приложений — Юрий Козлов
Юрий Козлов сделал упор на возросшие проблемы безопасности с появлением технологий AJAX.
- Часть логики приложения выполняется вне защищенного сервера — большая поверхность для атаки
- Дизайн AJAX имеет встроенные уязвимости (Позволяет cross-scripting и repudiation запросов, Bridging — стартовая площадка для анонимной атаки)
- Модная технология используется уместно и неуместно
- Запросы на сервер с помощью XmlHttpRequest идентичны запросам браузера
- Сервер не может определить обращается пользователь или скрипт
- Вы не можете контролировать запросы посылаемые из скрипта
- AJAX способствует XSS ( Кросс-сайт может инициировать запросы произвольной сложности, все запросы происходят от имени пользователя)
Упомянуты были такие известные вещи как
- SQL injection
- XPath injection (пример — вставка зловредного яваскрипт кода в CSS стили)
Доклад был в целом хорошим, но все-же, всем известно, что безопасность — это целый комплекс мероприятий а не отдельно взятые проблемы. В этом свете, я ожидал услыхать о том какие практики используются, например, для написания более безопасного кода. Но, увы, доклад закончился презентацией проприетарного продукта — сканера уязвимостей на вашем веб-сайте.
Привлечение капитала в Start-Up
Юрий Бойко конечно же сорвал полную аудиторию своим докладом. После завершения, вокруг Юрия образовался приличный круг людей желающих пообщаться на такую актуальную и популярную сегодня тему.Привлечение капитала в Start-Up — Юрий Бойко
Надо сказать, отличный доклад, что называется, от инсайдера. Насколько я понял, Юрий непосредственно работает в Силиконовой долине и имеет дело с венчурными фирмами, по этой причине все было очень грамотно и толково подано и расписано.
Речь шла о таких базовых вещах как начальное финансирование стартапа, о том кто такие ангелы, что такое венчурный капитал и каким образом оценивается успешный стартап.
Тестирование и оценка времени
Марина Дидковская очень живо рассказывала о том как рассчитать время требуемое на оценку тестирования. Видно было, что она знает тему непонаслышке, но мне как неспециалисту было трудно понять о чем формулы показанные на слайдах, и кто такой Маерс. А упоминания о классах эквивалетности вызвали у меня содрогания и ассоциации с функциональным анализом :)Тестирование и оценка времени — Марина Дидковская
Но самые важные вещи, которые я для себя резюмировал были
- In God we trust — the rest we test
- Тестирование должно быть интегрировано в процесс разработки, и начинаться задолго до того как разработка продукта уже завершена
Доклад Марины изьявил желание дополнить представитель Яндекса
Материалы по теме
UaWeb 2008 — первая украинская конференция веб-разработчиков. День 2UA WEB 2008 состоялся
UA WEB 2008 done!
UA WEB 2008 — впечатления, часть вторая
Последние комментарии:
Спасибо | Alex Kolupaev |
---|---|
Рад, что мой доклад был полезен. Всем привет :) |
|
Слава | |
Доклад Егорова действительно был лучшим (хотя master-slave не всегда лучшее решение, что наглядно показал Петр Зайцев на РИТе). А Флакс про определение бизнес-процессов не сказал имхо потому, что это не лекция ВУЗе – если кто даже не знаком с данными понятием, то определение и 20-ти минутный доклад не помогут. | |
@krivitsky | Автор |
Алексей, ссылку поправил — еще раз спасибо за классный доклад! | |
agileukraine | krivitsky |
просьба исправить ссылки на agileukraine вместо agileukraine.org.ua -> agileukraine.org.ua спасибо за отчёт! |
|
@Oleg Seryogin | Автор |
Спасибо! | |
Обсудить (комментариев: 6)