Дорога к открытым стандартам вымощена добрыми намерениями

Возникают странные параллели между войнами браузеров начала 90-х и такими технологиями, как Terraform, Serverless, и тремя большими поставщиками облачных услуг: AWS, Google и Microsoft. Все началось с создания прекрасной инфраструктуры в виде языков программирования. AWS создал CloudFormation, Google создал CFT, а Azure создал ARM. Но в пламени горы Terraform HashiCorp втайне выковала главный язык, один язык, чтобы управлять ими всеми, один язык, чтобы поставить мир разработчиков на колени и связать их в темноте. Однако все мы были обмануты тем, что у всех этих инструментов есть одна общая черта: все они делают одно и то же!

Все это выглядит устрашающе похоже на середину 90-х. В то время у Microsoft была власть, и она быстро продвигалась к внедрению новых функций браузера. Netscape поставляла продукт намного лучшего качества с гораздо меньшим количеством пользователей. А потом была AOL, земля большого сада, обнесенного стеной. Он тоже пытался создавать новые функции стремительными темпами и в конце концов решил купить Netscape, чтобы сделать это. И все трое объединились, чтобы превратить жизнь среднего разработчика в настоящий ад. Подобно Великому Оку, везде, где была радость при виде чистой тестовой матрицы, одно из этих зверей нашло ее и уничтожило! Те из нас, кто пережил эти первые годы кошмаров совместимости, могут заверить вас: веб-разработчикам сегодня это легко.

На это ушло 20 лет, но со временем эти продукты стерлись из памяти. Легенда превратилась в миф и в конечном итоге уступила место новому поколению основанных на стандартах браузеров, которые по большей части облегчили жизнь разработчикам. Частично инновации были ускорены за счет принятия разработки на основе стандартов. W3C проделал хорошую, хотя и медленную работу по обеспечению того, чтобы HTML, JavaScript и CSS в основном работали одинаково, независимо от того, какой браузер или ОС вы используете. Но это только часть истории.

Настоящая история Интернета написана не в стандартах, а в библиотеках и инструментах, которые делают дерьмо. Обобщить эту позицию можно одним словом: jQuery. В 2019 году 97,5% всех веб-сайтов используют jQuery. Библиотека, основная цель которой - абстрагироваться от деталей манипуляций с DOM, по-прежнему используется почти на каждом веб-сайте. Почему вы спрашиваете? Может быть, потому что Safari - это новый IE. Или, может быть, дело в том, что как только вы вводите стороннюю зависимость, которая пронизывает всю вашу базу кода, ее практически невозможно удалить без полной перезаписи (AngularJS, я смотрю на вас).

Помимо jQuery, существуют также такие фреймворки, как Angular и React. Эти два фреймворка в основном представляют собой разработку абсолютно новых веб-приложений повсюду. React использует виртуальный DOM. В Angular есть собственный рендерер, который помогает разработчикам безопасно выполнять манипуляции с DOM. Существуют также абстракции для других стандартов, таких как web worker, service worker, и прямые замены таких стандартов, как веб-компоненты. Они также включают множество полифилов, чтобы обеспечить их широкую поддержку даже в современных браузерах. Действительно, если jQuery был Битвой в Хельмовой Пади, то сегодня ведущими фреймворками являются Битва за Минас Тирит.

Иногда даже среди членов рабочих групп в сообществе стандартов возникает откровенное восстание. Речь идет о WHATWG. WHATWG, основанная в 2004 году инженерами Apple Inc., Mozilla Foundation и Opera Software, возникла для представления интересов веб-разработчиков, которым необходимо решать практические задачи. Это подчеркивает, что вера в стандарты органов над властью тех, кто их внедряет, может быть немного неуместной.

Имея это в виду, давайте по-новому взглянем на роль стандартов, которые могут сыграть в грядущих великих облачных войнах. Код инфраструктуры имеет много общего с тем, как мы доставляем контент через Интернет:

  1. Это комбинация конструкций разметки и функционального языка.
  2. Частные компании создают внедрения
  3. Разработчики создают контент
  4. Конечным результатом является набор инструкций, которым должна следовать машина (раскрашивать экран, запускать микровМ, настраивать маршрутизатор и т. Д.)

Неужели это так надумано, что облачные провайдеры подчиняются независимому консорциуму стандартов? Нет, это не так. Фактически, некоторые группы уже действуют (см. Список ниже). Так почему же большинство разработчиков не слышали об этих органах по стандартизации? Потому что рабочая группа - это самый медленный способ исправить отчет об ошибке, увеличить скорость или обеспечить автоматизацию. Вот почему такие инструменты, как Serverless Framework и Terraform, становятся лидерами в мире разработчиков на следующие 20 лет. Чтобы понять, почему давайте погрузимся в миссию Serverless Framework (это мои слова, а не Serverless):

Обфускируйте конкретную реализацию кода инфраструктуры вашего облачного провайдера и замените его более распространенным, более выразительным синтаксисом, с которым можно справиться.

Вот и все. Если все сделано правильно, этот выразительный синтаксис может выйти за рамки таких вещей, как описание шлюза API или облачной функции, он может делать такие вещи, как: Создайте мне поток данных для передачи данных телеметрии в моем мобильном приложении. Следующее поколение инструментов от Serverless, известных как бессерверные компоненты, нацелено именно на это. Это полноценная платформа для создания передовых решений и эталонных архитектур. Это прямая параллель с такими продуктами, как AWS Control Tower (наиболее практичный инструмент, который я видел за последние годы). Control Tower создает полную передовую, безопасную инфраструктуру с несколькими учетными записями с использованием управляемой службы. Когда вы запускаете Control Tower, вы говорите: Создайте передовую, безопасную инфраструктуру с несколькими учетными записями для моей компании. Нет ничего более выразительного, чем это. Serverless пытается сделать то же самое, только поддерживая нескольких облачных провайдеров.

Возможно, через двадцать лет появится орган по стандартизации, который будет столь же активен в облачных вычислениях, как W3C. Но если бы я откладывал деньги, я бы сделал большую ставку на влияние практических инструментов, таких как Serverless Framework и Terraform, на стандарты. Какими бы благими намерениями ни были стандарты и насколько они хороши, их всегда опережает мотивированный разработчик с проблемой, которую нужно решить, и мигающим окном терминала.