CTOcast #3: Беседа с Сергеем Чернышевым
Представляем третий выпуск подкаста о технологиях, процессах, инфраструктуре и людях в IT-компаниях. Сегодня в гостях у «CTOcast» — Сергей Чернышев, один из лидеров Web Performance Optimization сообщества (Нью-Йорк).Слушать подкастО нашем собеседнике:
Сергей Чернышев окончил Российский государственный университет нефти и газа имени И.М. Губкина (2000). В первой половине 1990-х занимался сборкой компьютеров, системным администрированием и технической поддержкой. В 1996–1998 — веб-разработчик в компании Unicor, в 1998–2002 — CTO в дизайн-студии Новикова. С 2002 живет и работает в США. В 2002–2003 — системный администратор в SelectMinds. С 2003 работает в truTV (ранее — Court TV), с 2012 занимает пост технического директора веб-систем и приложений.
С 2009 активно вовлечен в сообщество Web Performance Optimization (оптимизация веб-производительности). Организатор New York Web Performance Meetup Group, а также конференции WebPerfDays New York. Входит в правление Web Performance Optimization Foundation.
Текстовая версия подкаста (1-ая часть)О личном и немного об истории российской IT-индустрии Александр Астапенко: Что представлял собой рынок IT в начале и середине 1990-х годов, когда ты только начинал свою карьеру? Как удавалось выживать и какие у тебя были цели на этом этапе? Сергей Чернышев: С самого начала — просто искал работу. Не могу сказать, что я сразу думал о собственном бизнесе или о чем-нибудь подобном. Приятель привел меня в обычную компанию по сбору компьютеров Tower, и как раз таки там я понял, что любой компьютер можно разобрать-собрать и не бояться при этом мифической машины. Также пришло осознание, что бизнес не так уж и страшен и каждый может им заниматься. Вскоре я объединился с парой своих приятелей, и мы организовали сервис-центр, где помогали людям жить с компьютерами: собирали то, что им нужно, продавали железо и так далее.
На тот момент это было достаточно веселое занятие. Несколько основных поставщиков возили контейнерами железо в Москву, а куча мелких компаний их продавала. Естественно, ни о каких гарантиях и качестве речи быть не могло, каждый сам за себя. Приходилось за этим очень следить, и опыт, приобретенный в Tower, помог определять качество компонентов на внешний вид, даже без включения.
Я помню в то время все пользовались таким каталогом в палец толщиной. По-моему, в нем были все виды товаров, но в первую очередь — компьютерные. По тому каталогу можно было купить что угодно. В результате этим и занимались: если был заказ, то уточняли, что человеку нужно, брали деньги и затем покупали и собирали нужное оборудование, доставляли. Главное, чем мы отличались, наш конек — качество услуг. Каждый принтер шел с пачкой бумаги, человек не уезжал пока все не работало.
Павел Павлов: Тем не менее, в какой-то момент ты начал переключаться на веб-разработку?
Сергей Чернышев: Да, да. У этого было несколько причин. Во-первых, бизнес нужно делать по-серьезному, нужны инвестиции, а наш подход был достаточно простым, и долго подобного рода дело не могло существовать. Кроме того, мой отец очень активно мне говорил, что механик по железкам — не карьера, и заниматься нужно бóльшими вещами в жизни. Я, наверное, его не слушал, но думаю, что это все же добавило серьезных мыслей в мою голову.
Я начал пользоваться Интернетом примерно с 1993, или даже 1992, года. На тот момент Веб как такового еще не было. Существовал такой интернет-провайдер «Гласнет», один из первых в Москве, и я активно участвовал в местном сообществе пользователей. Андрей Себрант, известный российский интернет-деятель, был человеком, который показал мне и моим коллегам, что такое Веб.
Я был очень впечатлен этим вопросом и начал свою разработку, как говорится, на коленке еще в году 1994 — тогда, когда TCP/IP только начал появляться, можно было запустить первый браузер и посмотреть на что-то в Интернете. Как сейчас помню, один из первых моих сайтов был журнал Жванецкого, и назывался он «Магазин Жванецкого». Конечно, найти его сейчас в Интернете уже невозможно.
Александр Астапенко: Сергей, а что это за история была с Андреем Себрантом?
Сергей Чернышев: Андрей Себрант на тот момент был, по-моему, руководителем маркетинг-отдела в «Гласнет». Хотя я сомневаюсь, что тогда там были такие четкие разграничения. На одной тусовке этого интернет-сообщества мы были у Андрея дома, и я впервые увидел, что такое Веб, что такое браузеры, увидел GIF-изображения на страничке. Меня просто поразило это. Думаю тогда я и понял, что буду заниматься Веб. И потом Андрей показал несколько инструментов. Был такой редактор HotDog, который позволил мне увидеть, что такое HTML и как это вообще работает, как начать делать первые страницы.
Александр Астапенко: А что представляла собой разработка в конце 1990-х годов? Кто были заказчики, для которых вы тогда делали сайты?
Сергей Чернышев: Поначалу я делал это для друзей и знакомых. Потом, уже учась в «Керосинке», пошел работать веб-разработчиком и системным администратором к интернет-провайдеру, который предоставлял Интернет для всего здания. На тот момент не было разделения в профессиях, все мы назывались веб-мастер. Веб-мастер занимался дизайном, HTML, кодированием на сервере, хостингом и всем остальным.
Позже я вышел на Сергея Новикова, который занимался дизайном и хотел создать студию веб-дизайна, и присоединился к нему как технический сооснователь компании. Мы делали веб-сайты для всех, кто пожелает. Было множество компаний, они приходили зачастую со своим видением того, что им нужно. Основной работой было переубедить их, потому что чаще всего люди тогда слабо себе представляли, что такое веб-сайты. На тот момент еще не было такого WordPress, чтобы взять и на нем что-нибудь построить, все писалось с нуля.
Александр Астапенко: Ясно, такой wild West тогда в Веб был… Приблизительно в 2002 году ты переехал в США. Можешь пару слов про этот период?
Сергей Чернышев: Да. Иммиграция — вопрос сложный, нельзя сказать, что был только какой-то один стимул. Хотелось стать богатым и счастливым, и взгляд за рубеж предвещал подобные перспективы. Ну, и семья, нужно было заботиться.
Александр Астапенко: А с профессиональной точки зрения?
Сергей Чернышев: С профессиональной точки зрения было видно, что в России бизнес очень коррумпированный и было тяжело продолжать этим заниматься. В принципе, движение вперед требовало неразборчивости в том, как ты ведешь дела. Многим удалось это сделать, мне — нет. А в Америке, конечно, было большое желание влиться в интернет-тусовку и увидеть просторы возможностей.
Александр Астапенко: Сергей, 2002 год — самое дно кризиса после краха доткомов. Что тогда представлял собой рынок для российского веб-разработчика, системного администратора с несколькими годами опыта за плечами? Было ли легко найти работу?
Сергей Чернышев: Да, как раз в 2002 году было самое дно, действительно. С точки зрения переезда скажу так: планируешь переезд достаточно долго и тяжело знать о том, что все будет плохо, о том, что реально происходит. Машина начинает двигаться, и переезжаешь тогда, когда все срослось. Поэтому планировать особо не приходилось. Может быть в наше время это легче, но в то время было так.
Приехав сюда, я понял, что рынок достаточно плохой, тем не менее работу удалось найти быстро. Первым принципом было то, что первое место не выбирают. После трех-четырех интервью, может быть пяти, я уже нашел SelectMinds. Правда, с начальника студии в России я перешел просто на системного администратора в маленькой компании. При переезде рабочая история обнулялась, никто не считал зарубежный опыт по разным причинам: бизнес другой, нельзя проверить и довериться, резюме никто не может проверить. И, в общем, только умения, которые ты мог показать, только они влияли.
Александр Астапенко: После работы в SelectMinds в качестве системного администратора ты все же возвращаешься к веб-разработке и переходишь в компанию Court TV. Так?
Сергей Чернышев: Да. На тот момент найти работу стало уже гораздо проще и меня заинтересовала компания Court TV. Первые пару лет было несложно, хотя из-за популярности телеканала и его веб-сайта трафик был существенным. После этого начались более сложные проекты.
Мы были одними из первых, кто начал показывать вещание на Веб. Court TV стал освещать криминальные истории и суды над преступниками. У нас появилось несколько таких судебных дел типа «Суд на Майклом Джексоном», или было такое громкое дело Скотта Петерсона. В момент объявления приговора трафик на наших серверах увеличивался в двадцать раз по сравнению с максимумом в обычный день.
И это заставило меня заняться существенной архитектурой для масштабируемости, понять как строить подобные системы и развивать разработку в данном направлении. Что, в конце концов, и привело меня к веб-производительности (англ. web performance): потому что там, где есть проблемы с масштабируемостью, найдутся проблемы и с производительностью.
Об оптимизации веб-производительности Павел Павлов: Мог бы ты пояснить для тех, кто не совсем знаком с этой темой, что такое оптимизация веб-производительности (англ. web performance optimization)? Как зарождалось это движение? Ты был у истоков, 2009 год — это ведь самое начало? Сергей Чернышев: На самом деле, с 2007 года я начал этим активно заниматься. Я присутствовал на первой презентации Стива Содерса (Steve Souders) — который является основателем WPO (web performance optimization) движения и который в то время работал в Yahoo — по вопросу скорости веб-сайтов. На тот момент термин web performance optimization еще даже не существовал.
Я думаю, что Стив открыл глаза многим. Все понимали, что чем медленнее скорость, тем хуже веб-сайт. Тут далеко ходить не надо. Но большинство людей традиционно связывали скорость сайта со скоростью серверов. Обычной задачей являлась борьба с трафиком: когда приходит много людей и они требуют много ресурсов серверов, масштабируемость является серьезной проблемой и нужно удостовериться, что веб-сайты продолжают работать. Это и было фокусом для разработчиков, то есть это и считалось скоростью.
А Стив показал, что скорость больше зависит от того, как построена веб-страница и что она загружает, фронтенда, а не от нагрузки на систему. Веб-сайт может быть медленным даже для одного пользователя. Поэтому искать проблему нужно в другом месте.
И на тот момент, конечно, никаких инструментов не было, точнее были очень простые инструменты, ими было достаточно сложно пользоваться и о них никто не знал. Поэтому эта непрозрачность веб-стека останавливала людей, они не могли видеть реальную проблему. И Стив показал, что если взглянуть с обратной стороны, со стороны фронтенда, на то, как работает HTTP-протокол, то можно сделать гораздо больше выводов о реальной скорости веб-сайта.
Я достаточно давно уже занимался gzip, компрессией веб-запросов, кэш-контролем и так далее. Для меня было понятно, в чем проблема. А первая презентация, которую Стив Содерс сделал на Web 2.0 Expo в Сан-Франциско, открыла мои глаза, и я прозрел, как говорится.
Павел Павлов: И ты там лично присутствовал?
Сергей Чернышев: Да. Я попал на эту конференцию как посетитель. Стив с коллегой (Tenni Theurer) представили прекрасные исследования, которые они сделали в Yahoo по поводу статистики, анализировали, что реально влияет на скорость сайтов, как влияет фронтенд часть. Те самые первые правила, которые Стив ввел, чтобы ускорять веб-сайты, которые не зависят от серверов, от аппаратного обеспечения.
Павел Павлов: А удалось тогда пообщаться с самим Стивом?
Сергей Чернышев: Да, я с ним пообщался, познакомился именно на этой конференции. Было очень интересно. Думаю, что как раз таки он вдохновил меня на создание митапа. На той же самой конференции, но уже в 2009 году, я спросил его как он относится к такой идее. Конференции были правильным подходом к распространению знаний, но при этом, находясь в Нью-Йорке, было очень тяжело ждать целый год до следующей конференции. Я уже искал способы создать локальные мероприятия. Стив ответил, что было бы интересно увидеть какое-то локальное сообщество. В общем, это подстегнуло мой интерес к созданию первого нью-йоркского митапа.
Павел Павлов: Получается, что митап в Нью-Йорке был одним из первых в истории групповых митапов по веб-производительности?
Сергей Чернышев: Он был первым буквально. Когда я создавал свою группу, то я создал на meetup.com и топик Web Performance, его не существовало до этого. А теперь там уже 100 с лишним групп по этой тематике со всего мира.
Павел Павлов: Кто были первые участники? И какая была реакция у людей, когда ты пытался продвигать все эти темы, рассказывать?
Сергей Чернышев: Прежде чем открыть мой митап я сделал презентацию о производительности на Web Standards Meetup в Нью-Йорке. Это было небольшое сообщество, на той презентации было человек 35–40. И у людей открылись глаза, так же как и у меня, когда я увидел, с чем работает Стив Содерс, его подходы. Люди просто не представляли себе как браузер загружает картинки, скрипты и CSS-файлы. Для них было неочевидно как это все происходит, никто об этом не задумывался. И как только визуализируешь и показываешь первую waterfall-диаграмму, то люди начинают понимать. На тот момент браузеры работали достаточно плохо и несложно представить то, как выглядел этот waterfаll — все было очень медленным. Поэтому было легко показать в чем же проблема производительности.
Максимум 20% скорости зависит от сервера, а в реальности цифра ближе к 10% или даже к 5%. Все остальное зависит от того, как сделана веб-страница, в какой последовательности загружаются ее компоненты. И люди реально были ошеломлены тем, как все происходит в реальности. Это показало мне, что вопрос актуален.
Павел Павлов: Давай вернемся к истокам WPO и к твоей встрече со Стивом. Помимо создания первого WPO-митапа в Нью-Йорке, он также вдохновил тебя на разработку собственных инструментов и решений, которые помогали бы делать сайты быстрее и позволяли бы оценивать их скорость. Так?
Сергей Чернышев: Совершенно верно. Как я уже сказал, одной из первых проблем веб-производительности были отсутствие инструментария и непрозрачность стека. Стив был одним из первых разработчиков инструмента от Yahoo — YSlow, который анализировал веб-сайты на поддержку best practices и просто выдавал какие-то метрики, говоря человеку, что его сайт настолько-то хорош (от 0 до 100) и что можно сделать, чтобы его улучшить.
Проблема с этим инструментом была в том, что он не давал долгосрочный анализ того, как происходят изменения в разработке. Веб-производительность имеет свойство ухудшаться, то есть с разработкой новых частей программ, новых фич качество программ с точки зрения скорости только ухудшается. При одноразовом статическом анализе это очень сложно заметить. Я увидел, что это является проблемой, и поэтому разработал первую версию Show Slow, которая позволяла собирать данные из расширения для Firebug — YSlow. И я создал серверный компонент, который просто принимал эти данные. Ничего сложного программа из себя не представляет, но она собирает данные и позволяет со временем выявить тренд.
Как выяснилось, это существенно помогало показать насколько разработка с учетом скорости важна для бизнеса. Я столкнулся с этим в truTV, когда было очень трудно абстрактно рассказать бизнесу — как техническим людям, так и клиентам — что нужно ускорять веб-сайт. Сказать легко, но никто тебе не верит, людям было непонятно почему этим нужно заниматься, тем более заниматься по-серьезному, уделять много времени. И Show Slow был создан как первый инструмент, который позволит не очень техническим людям увидеть результат без использования сложных для них инструментов вроде YSlow, чтобы показать тренд того, как происходит улучшение или ухудшение скорости.
Естественно, кроме инструментов я также начал заниматься различными методами и способами ускорения веб-сайтов. И кэш был первым способом. Самым простым методом было использование кэш для того, чтобы браузер не ходил обратно на сервер каждый раз за всеми картинками и так далее. И я разработал Аsset Manager, который, грубо говоря, использовал ревизии из системы управления версиями и таким образом манипулировал URL. После этого я создал .htaccess-файл, который очень легко положить в корень веб-сайта, и он магически ускорял весь веб-сайт, что было слегка маркетинговым ходом. Я выбрал этот путь, чтобы убедить тех людей, которые не очень технические, что можно легко решить проблему скорости. И, на мой взгляд, многим понравилось. По-моему, это мой самый популярный проект на данный момент на GitHub. Люди очень хотят быстрое и простое решение.
Продолжение текстовой версии подкаста — в ближайшие дни.