Рой Филдинг: Архитектор современного веба
Где-то между 1994 и 2000 годами аспирант из Ирвина, штат Калифорния, совершил два действия, которые почти никогда не происходят вместе. Он помог создать программное обеспечение, на котором работало большинство веб-серверов в мире, и написал теорию, объясняющую, почему вообще работает веб. Первое сделало его одним из основателей Apache Software Foundation. Второе было докторской диссертацией, пятая глава которой дала название архитектурному стилю REST — четырем буквам, которые сегодня встречаются в описаниях вакансий чаще, чем любая другая идея, возникшая на факультетах компьютерных наук за последние тридцать лет, и которые почти никто из тех, кто их печатает, не читал.
Лагуна-Бич
Рой Томас Филдинг (Roy Thomas Fielding) родился в сентябре 1965 года в Лагуна-Бич, Калифорния. Он описал себя формулировкой, подходящей человеку, который посвятил карьеру функциональной совместимости, как «отчасти маори, новозеландец, американец, ирландец, шотландец, британец и калифорнийский пляжный бездельник». Он никогда не покидал родной университет: все три его степени в области информатики и вычислительной техники он получил в Калифорнийском университете в Ирвине (University of California, Irvine) — степень бакалавра в 1988 году, магистра в 1993 году и докторскую степень в 2000 году.
На этом двенадцатилетнем отрезке стоит остановиться. Большая часть того, что сделало Филдинга значимой фигурой, произошло в этот период параллельно с учебой, а не после неё. Он не был ученым, который позже ушел в индустрию, и не был инженером, который позже занялся наукой. Он делал и то, и другое одновременно над одним и тем же объектом, именно в те годы, когда этот объект изобретался.
Сервер, который поглотил Интернет
Филдинг стал соучредителем проекта Apache HTTP Server, веб-сервера с открытым исходным кодом, который стал стандартной инфраструктурой раннего коммерческого Интернета. Затем он выполнил неблагодарную институциональную работу, которой избегают большинство технических основателей: он работал вице-президентом проекта HTTP Server, директором Apache Software Foundation с 1999 по 2003 год и её председателем в течение первых трех лет, с 1999 по 2002 год, оставаясь в совете директоров до мая 2014 года. Модель фонда, которую он помог создать — юридическая и управленческая оболочка, позволяющая конкурирующим компаниям вносить вклад в общий код, не владея им — с тех пор копируется по всей отрасли.
Признание пришло быстро. В 1999 году Apache HTTP Server получил премию ACM Software System Award. В том же году MIT Technology Review включил его в список TR100, состоящий из сотни лучших инноваторов в возрасте до 35 лет, а в 2000 году компания O'Reilly вручила ему премию Open Source Appaloosa Award за вклад в развитие индустрии.
Двадцать вопросов, восемь минут на часах и процентиль, измеренный по всем, кто его проходил. Без регистрации.
Пройти тест IQ →Написание протокола
Более глубокий вклад заключался в спецификациях. Филдинг был основным автором спецификации HTTP, и его имя стоит на документах, определяющих, как обменивается данными практически каждое сетевое приложение. Он написал или стал соавтором RFC 1808 об относительных URL, RFC 1945 об HTTP/1.0, RFC 2068 и затем RFC 2616 об HTTP/1.1, а также RFC 2396 и RFC 3986 об общем синтаксисе универсальных идентификаторов ресурсов (URI). Он также принимал активное участие в разработке HTML.
В частности, RFC 2616 управлял вебом более десяти лет, а RFC 3986 остается документом, который дает ответ на вопрос, чем на самом деле является URL. Написание спецификации такого рода — странная дисциплина: это скорее законодательство, чем изобретение, описывающее нечто уже существующее в мире достаточно точно, чтобы тысячи независимых реализаций могли быть совместимы друг с другом. Филдинг сделал это для самого используемого протокола из когда-либо развернутых.
REST
Диссертация 2000 года «Архитектурные стили и проектирование сетевых программных архитектур» (Architectural Styles and the Design of Network-based Software Architectures) является теоретическим обоснованием всего этого. Её аргументация движется в обратном направлении от обычного проектирования программного обеспечения. Вместо предложения системы Филдинг предложил словарь архитектурных стилей — наборов ограничений — и задался вопросом, какой набор ограничений порождает свойства, необходимые глобальной, децентрализованной, развивающейся сети. Ответ, который он вывел и назвал, — Representational State Transfer (передача репрезентативного состояния) или REST: стиль, основанный на модели «клиент-сервер», не сохраняющий состояние, кэшируемый, с унифицированным интерфейсом и многослойный, в котором элементы являются ресурсами, а клиенты перемещаются по приложению, следуя гипермедиа, предоставляемым сервером. В 2000 году он придумал термин HATEOAS (гипермедиа как движок состояния приложения) для этого последнего ограничения.
Диссертация была, по сути, ретроспективным объяснением того, почему веб пережил свой взрывной рост, в то время как лучше спроектированные распределенные системы — нет. Она стала самым цитируемым архитектурным документом в отрасли.
Waka
Он также пытался двигаться дальше. С 2001 по 2006 год Филдинг работал над Waka, бинарной, основанной на токенах заменой HTTP, предназначенной для более эффективного соответствия стилю REST, чем текстовый протокол, который он сам специфицировал. Работа так и не была закончена и развернута. Веб продолжал работать на HTTP.
Почему Роя называют гением
Специфический навык здесь — архитектурная абстракция: способность взглянуть на работающую, запутанную, исторически случайную систему и извлечь из неё небольшой набор ограничений, которые на самом деле отвечают за её свойства. Филдинг выяснил, почему веб работает — почему отсутствие состояния обеспечивает масштабируемость, почему унифицированный интерфейс обеспечивает независимую эволюцию, почему кэширование и многослойность позволяют вставлять посредников сторонами, о которых первоначальные проектировщики даже не подозревали. Выведя это, он затем использовал это как дисциплину проектирования, направляя HTTP/1.1 и стандарты URI так, чтобы рост веба не разрушил свойства, которые, как показал его анализ, являются несущими. Одновременная работа над теорией, написание стандартов и эталонная реализация на инфраструктуре, используемой миллионами людей, — это по-настоящему необычная часть его деятельности.
Контраргумент справедлив. Его репутация во многом держится на одной идее и документах, которые её кодифицируют. Его главная награда, премия ACM Software System Award 1999 года, была вручена серверу Apache — коллективному продукту — и ни один из изученных источников не зафиксировал авторитетного мнения, называющего его гением. Его попытка выйти за рамки собственного протокола, Waka, длилась пять лет и ни к чему не привела. А судьба REST сама по себе является своего рода обвинением ясности: идея, название которой теперь без разбора применяется к любому интерфейсу, возвращающему JSON поверх HTTP, причем большинство из них игнорируют ограничение гипермедиа, которое он считал необходимым. Это влияние, но это не то же самое, что быть понятым.
Наследие
Филдинг двигался по индустрии, никогда не покидая свою тему: главный научный сотрудник eBuilt с 1999 по 2002 год, главный научный сотрудник Day Software, а затем Adobe с 2002 по 2010 год, и с тех пор — старший главный научный сотрудник Adobe в Сан-Хосе. Он четко перечисляет свои научные интересы — Всемирная паутина, архитектура программного обеспечения для сетевых приложений, сетевые протоколы прикладного уровня, методы совместной разработки программного обеспечения и глобальные среды разработки программного обеспечения — и потратил тридцать лет именно на них.
Мерило его работы в том, что она невидима. Каждый веб-запрос подчиняется правилам, которые он записал; каждый URL является законным, потому что документ с его именем определяет, что означает законность; каждый инженер, который говорит «REST API», ссылается, как правило, неточно, на главу диссертации из Ирвина. Инфраструктура — это единственная форма авторства, которая преуспевает благодаря тому, что её забывают, и Филдинга забыли более основательно, чем большинство других.

