В конце 2004 года в Москву приезжал ведущий специалист по высокопроизводительным вычислениям корпорации Microsoft Кирилл Фаенов, оказавшийся интереснейшим собеседником, готовым к обсуждению самых разных вопросов.
Кирилл, расскажите, пожалуйста, немного о себе.
Я москвич из типичной для 70-80-х годов семьи научных работников. Отец был физиком, мама преподавала в «инязе», а я учился на физфаке МГУ. Потом, что было типично уже для начала 90-х, маму пригласили на стажировку в университет в США, где позже ей предложили постоянную работу. Это дало мне возможность получить там компьютерное образование, что можно считать верхом везения, поскольку я проявлял интерес к компьютерам буквально с детства. Я благодарен родителям, усилиями которых в школьные годы у меня был «Микроша», потом разные «БКашки». В общении с ними я вырос, и неудивительно, что со временем именно программирование стало моим призванием, любовью и средством самовыражения.
В 1991 году в Портленде, после первого семестра в университете, я познакомился с очень интересной работой группы инженеров, и эта встреча определила все мое профессиональное будущее. Тогда это был совсем небольшой коллектив единомышленников — выходцев из Intel, объединенных странной для того времени общей идеей. Они создавали собственное дело, будучи убежденными, что в обозримом будущем «правильные» суперкомпьютеры с неизбежностью уступят место кластерам из обычных серверов. Тогда это казалось утопией, а сейчас стало реальностью.
Примерно год я сотрудничал с ними внештатно, а затем перешел на постоянную должность и несколько лет писал программное обеспечение, совмещая работу с учебой в университете. Созданная компания успешно развивалась, прошла несколько этапов эволюции, и в 1998 году ее «третью версию» приобрела корпорация Microsoft. Почти классический путь успеха для начинающей организации.
Мы привнесли в Microsoft свой опыт разработки оборудования для высокоскоростных сетевых конфигураций и соответствующего программного обеспечения. Среди наших достижений — система распределения запросов, исходящих от пользователей с разными IP-адресами. Она получилась настолько удачной, что многие крупные известные сайты задействовали ее для создания высоконадежных кластеров Web-серверов. Участвуя в создании операционной системы Windows 2000, мы оставались единым коллективом, но позже я перешел в группу, призванную ответить на актуальные в то время вопросы «что представляет собой Linux и как оценить значение методологии открытых кодов?» В последующем я занял должность директора по планированию семейства Windows Server.
Вы упомянули Linux. К каким умозаключениям вы пришли относительно этой операционной системы? Как она «смотрится» изнутри Microsoft?
Однозначного ответа нет и быть не может. Это явление — слишком сложное для скоропалительной оценки, но к определенным выводам мы пришли. Прежде всего, стоит обратить внимание на Linux как феномен организации труда программистов. Разработка этой операционной системы позволила сконцентрировать гигантский творческий потенциал, разнесенный по всему миру. Очевидно, что этот феномен мог реализоваться лишь на определенном уровне развития сетевых технологий. С появлением Internet концепция создания операционных систем стала доступна многим, и неожиданно обнаружилось, что в некоторых нишах неформальные группы талантливых людей, глубоко понимающих свои задачи, в состоянии решать их гораздо быстрее, чем большие корпорации. У такой структуры есть очевидное преимущество в темпе, особенно на уровне исследований. С точки зрения собственно технологий особого новаторства в Linux нет.
Своим местом в мире программного обеспечения ОС Linux обязана, прежде всего, тому, что она позволила быстро «втягивать» в работу намного больше разработчиков, чем при организации коллективов, создающих традиционные операционные системы. Это оказалось для нас чрезвычайно серьезным уроком, и мы стали активнее реагировать на требования партнеров и заказчиков. Мы начали больше привлекать к разработке добровольцев — студентов и специалистов из других отраслей, что позволило снижать стоимость продуктов и делать их более доступными (хорошим примером является Visual Studio). Порой для использования потенциала разработчиков из разных частей мира мы открываем свои коды партнерам. Примерно так работает моя группа в сотрудничестве с Национальной арагонской лабораторией.
Что можно сказать о нынешней «полосе» конвергенции кластеров и grid, о размывании границ grid-систем в «классическом» понимании?
Это — действительно интересная и актуальная тема. Тематикой, близкой к grid, в Microsoft занимаются несколько групп. Мы разрабатываем традиционные кластерные конфигурации, другая группа занимается автоматизированным управлением системами, а еще одна — распределенными базами данных. В нашем понимании идея grid обеспечивает возможность эксплуатации разрозненных ресурсов, в основном процессоров. Ее привлекательность очевидна, ведь всем известна проблема «спящих» мощностей ПК, разбросанных по всему Internet. Я часто встречаюсь с финансистами в Нью-Йорке, и они, как один, говорят что-то вроде этого: «Обидно, у нас 8 тыс. десктопов расположены в Лондоне, а мы находимся в Нью-Йорке. Вот бы ими воспользоваться!»
Допустим, мы хотим создать общую память на географически разнесенных компьютерах. Сначала неизбежно возникнет проблема разницы в скорости доступа к данным, физически размещенным в разных местах. И если даже проблему задержек и синхронизации данных удастся преодолеть с помощью программных уловок, затем, в иной форме, она проявится в неравномерности доступа к процессорам. Чтобы преодолеть этот барьер, нужно знать, где расположены процессоры, где находятся более медленные соединения и т.д. Не исключено, что удастся сконфигурировать сервер специальным образом, но рано или поздно он все равно «распадется». На основе «механистических» принципов объединения построить сложную конфигурацию не удастся.
Разумеется, есть задачи, такие как метеорология или обработка сейсмических данных в геофизике, в отношении которых параллелизм прост и очевиден, а потому grid является отличным решением. Однако и здесь не все просто. Как, например, быть с большими базами данных? Что к чему стоит приближать — процессоры к данным или данные к процессорам? Следует учитывать задержку и стоимость передачи значительных объемов данных. Пока мне кажется, что Grid с большой буквы все еще остается наивной мечтой людей, которые и не пробовали строить такие системы, а вот кластеры — это синица в руках. Здесь могут появиться и уже появляются стандартные пакеты программного обеспечения. Нельзя не учитывать и желание людей сохранять контроль над принадлежащими им ресурсами и получать результаты как можно быстрее. Думаю, соотношение между кластерами и grid прояснится лет через пять, когда будут отработаны стандарты на grid-сервисы.
И все же заглянем в будущее, когда в той или иной форме произойдет конвергенция кластеров, grid и других распределенных вычислений. Это неизбежно, но вот сумеем ли мы управлять таким сложными конфигурациями? Не придется ли компьютингу сначала пройти полосу системного кризиса? Он может быть вызван и усложнением модулей, из которых строятся компьютерные системы. Сначала мы изучали системы на уровне транзисторов и даже физику полупроводниковых переходов, потом появились микропроцессоры, теперешняя волна — многоядерные процессоры, а в недалеком будущем возникнет и тот самый кластер, о котором вы говорили, на кристалле. Системы выходят на новый уровень, совсем не традиционно инженерный. Странно, но мало кто об этом задумывается.
Вы подняли очень важные вопросы, затронули насущную проблему, которая с неизбежностью возникнет. Производители процессоров на десятилетия дали поблажку разработчикам программного обеспечения — спасал закон Мура. К несчастью, перманентный рост производительности приводил к тому, что в большинстве случаев дело ограничивалось простыми решениями, без углубления в конструкцию систем. В результате сформировались целые отрасли программирования, создано множество моделей программного обеспечения, которые за счет избытка оборудования справляются с поставленными задачами, но не отражают реалий окружающего мира.
Посмотрев, как устроен физический мир, мы увидим, что он основывается на связях между параллельными процессами. У меня складывается такое ощущение: опираясь на связи, на те или иные формы сервисов, можно коренным образом изменить представление о программном обеспечении, о том, что является основным при построении программ, и сблизить моделирование с естественными науками.
Мы пришли к необходимости поговорить о проблеме сложности, не так ли?
Действительно, сложность систем, растущая экспоненциально, стала важнейшей проблемой (достаточно сказать, что в создании Windows участвовали 5 тыс. человек). Но до сих пор нет необходимого аппарата моделирования, обеспечивающего отображение этой сложности. Современные языки программирования слабы, они всего лишь оперируют наборами данных в памяти. Пока нет языков, позволяющих собирать модели программ и описывать их как единое целое без создания над этим управляющей системы для объекта программирования, как происходит в реальном самоорганизующемся мире.
Рано или поздно мы найдем модели, с помощью которых сможем описывать взаимодействие независимых объектов. В Microsoft проблеме сложности уделяется большое внимание, и мы сотрудничаем с Институтом Санта-Фэ, который, как известно, является самым «продвинутым» из центров, изучающих эту проблему.
А есть ли в компании интерес к кибернетике и, в частности, к пи-исчислениям?
В Microsoft есть специалисты, разрабатывающие способы применения пи-исчислений, то есть вполне можно говорить о возрождении интереса к кибернетике. В подтверждение этих слов могу сообщить, что мы не просто сотрудничаем с Институтом Санта-Фэ, но и являемся его спонсором. Мне кажется, взаимодействие между элитной группой ученых и софтверной компанией является весьма перспективным.
В последнее время руководство нашей страны, обеспокоенное ее отставанием в области высоких технологий, решило изменить ситуацию за счет создания наукоградов, сибирских, подмосковных и иных «кремниевых долин». На мой взгляд, в постиндустриальном обществе догонять бесполезно, нужно пытаться работать на опережение, и в России еще есть достаточный для этого интеллектуальный потенциал. Что вы думаете по этому поводу?
В западных странах господствует и успешно развивается технократия, которая с неизбежностью заносит в Россию ту же культуру. Развитость технологий способствует господству наивного убеждения — мол, если построим компьютеры, все станет лучше. В какой-то момент у меня возникло ощущение, что рано или поздно подобная «наивность» нам аукнется: мы построим технократический мир и поймем, что это не привело к коренному изменению качества жизни.
В России есть не только серьезное техническое образование, но и, на мой взгляд, более духовное восприятие мира, философский подход к нему. Он поможет, взглянув на реалии последних десяти лет, понять, куда мы шли и к чему пришли. Можно пересмотреть технологические достижения и найти более совершенный подход к использованию технологий — с помощью гораздо более органичных системных методов.
Мне довелось разговаривать с яркими личностями — людьми высочайшего интеллекта, идеологами развития Sun Microsystems, Hewlett-Packard, Oracle, BEA Systems и других крупнейших ИТ-корпораций. Однако при выходе за уровень технологий, переходе к системным темам я немедленно понимал, что это им неинтересно. Может быть, в том, что мы немного иные, и состоит наше определенное преимущество?
Значение национального языка для развития компьютинга — отдельная и чрезвычайно интересная тема. За годы жизни в США я убедился, что самая характерная черта американцев — конкретность мышления. Это не хорошо и не плохо, это просто факт. Американский язык отличается от русского способностью более точно и лаконично передавать информацию. Русской культуре присущи большая образность, сочетание в себе западной и азиатской традиций. Это нельзя не учитывать при адаптации чужих и развитии собственных информационных технологий.
Я в этом неоднократно убеждался. Например, на днях я провел целый вечер с удивительным человеком, историком по образованию, который стал специалистом в области программирования. Голова — золотая, но в его мозгу расставлены какие-то «здешние» заборы и ограничения. Так что слишком увлекаться самобытностью не стоит, и есть прекрасные примеры из американской практики, на которые стоит ориентироваться. Урок номер один — не заниматься самоограничением.
Причина успеха Google состоит в том, что основатели и руководство компании мыслят глобально, хотят и стараются делать все, вырабатывают методики и не ставят перед собой пределов. Точно так же успеху Microsoft способствовало то, что, собрав умнейших людей, Билл Гейтс никогда не возводил для них потолки, а ставил все более отдаленные и, на первый взгляд, невозможные задачи.
Мне кажется, что комбинация традиционной культуры и все еще не утерянного серьезного образования обеспечивают России хороший потенциал. Думаю, психологические потрясения последних полутора десятилетий, перенесенные отдельными людьми и нацией в целом, будут способствовать какому-то иному осмыслению действительности. Может зародиться новый взгляд на мир, а в его контексте появятся новые идеи и цели.