26.02.2024 17:24

Новости

Администратор

Автор:

Администратор

Создание программируемой облачной инфраструктуры для разработчиков

Поскольку с ИИ предстоит еще многое выяснить, имеет смысл упростить процесс с помощью привычных методов разработки, особенно инфраструктуры как кода и Python.


Автор: Мэтт Асей, InfoWorld
 
Большинство разработчиков не используют инфраструктуру как код (IaC), утверждает технический директор AWS Крис Маннс. Но те 10-15% разработчиков, которые внедряют современные технологии разработки, такие как IaC, остаются в выигрыше. Даже если аудитория IaC на данный момент еще относительно небольшая, интерес к Python и искусственному интеллекту ускоряет внедрение, отмечает генеральный директор Pulumi Джо Даффи. На предприятиях, которые рассматривают технологии как конкурентное преимущество, разработчики углубляются в инфраструктуру. IaC — предпочтительный инструмент для успешного выполнения этой задачи.
 
Новая норма ИТ
 
В те дни, когда разработчикам приходилось запрашивать ресурсы у ИТ-отдела, они были в значительной степени изолированы от мира баз данных, хранилищ «ключ-значение», очередей сообщений, сетей и других проблем, связанных с «инфраструктурой». Разработчики владели кодом приложений, корпоративные архитекторы — инфраструктурой приложений, а ИТ-специалисты — серверами, конфигурацией и масштабированием.
 
Затем волна распределенных вычислений, начавшаяся с виртуальных машин, разросшаяся за счет контейнеров, и перешедшая в Kubernetes, подтолкнула разработчиков к глубокому освоению облачной инфраструктуры. Какими бы банальными ни стали фразы «сдвиг влево» и «вы создаете это, вы являетесь владельцем этого», они отражают гораздо более глубокую ответственность, которую несет сегодня среднестатистический разработчик. Разработчики не только пишут приложения, но и делают все остальное, что когда-то было уделом специалистов по инфраструктуре.
 
Поддержка вычислительных ресурсов и фреймворков требует времени и ноу-хау, и это было постоянным испытанием как для разработчиков, так и для платформенных команд, позволяющих найти правильную абстракцию для того, каким именно должен быть интерфейс разработчика к облачным ресурсам. JavaScript сделал веб-браузер программируемым и положил начало ренессансу веб-приложений и мобильных устройств, который продолжается до сих пор. Мы стоим на пороге аналогичного прорыва в создании облачной инфраструктуры, по-настоящему программируемой для разработчиков.
 
Первые волны внедрения инфраструктуры как кода
 
Инфраструктура как код (IaC) сегодня на пике популярности, но на самом деле технология не нова. Концепция существует более 50 лет и описывает основные принципы автоматизации инфраструктуры. Подобно тому, как программно-ориентированная архитектура (SOA) превратила архитектуру приложений из монолитных приложений в шаблоны микросервисов, IaC стала движением медленного развития, которое бросает вызов тому, какими должны быть базовые строительные блоки для того, как мы думаем об облачной инфраструктуре.
 
IaC получила широкое распространение в 2010-х годах, когда Puppet, Chef и Ansible представили методы IaC для настройки виртуальных машин. Chef был популярен за то, что позволял разработчикам использовать языки программирования, такие как Ruby, а также за возможность повторного использования и общий доступ, которые появились благодаря использованию стандартов знакомого языка.
 
В следующем десятилетии движение IaC вступило в новую эру, когда платформы поставщиков общедоступных облачных сервисов стали более зрелыми, а Kubernetes де-факто превратился в облачную операционную модель. Terraform от HashiCorp стал прототипом IaC, представив новые абстракции для настройки облачных ресурсов и представив предметно-ориентированный язык (DSL) под названием HashiCorp Configuration Language (HCL), призванный избавить разработчиков от низкоуровневой работы с облачной инфраструктурой. AWS CloudFormation и Azure Resource Management были двумя другими главными претендентами на победу в этой волне IaC.
 
Были ли языки, зависящие от домена, ошибочным поворотом?
 
Генеральный директор Pulumi Джо Даффи считает, что движение IaC пошло по неверному пути в процессе эволюции к DSLs. «Я провел годы в сообществе языков программирования, и у нас была поговорка, что «каждому предметно-ориентированному языку суждено вырасти в случайно и плохо спроектированный язык программирования общего назначения», — говорит он. «Сложность облака превосходит DSLs, YAML и языки разметки».
 
Даффи отмечает, что общая проблема предметно-ориентированных языков заключается в том, что они уводят разработчиков и команды инженеров платформ от управления облачной инфраструктурой с помощью привычных соглашений о языках программирования. «Конечно, если вы посмотрите на IaC, то увидите, что он медленно воссоздает колесо, — утверждает Даффи, — начиная с языкового богатства, абстракции и повторного использования, менеджеров пакетов, инструментов тестирования, статического анализа, редакторов и их возможностей, таких как завершение утверждений, интерактивная проверка ошибок и документация, рефакторинг и многое другое. Все эти атрибуты представляют собой огород, который активно мешает разработчикам использовать возможности облака, одновременно снижая производительность команды разработчиков инфраструктуры».
 
Использование знакомых языков в облачной инфраструктуре
 
«Бережно и аккуратно относиться к разработчикам, когда речь заходит об облаке, — ошибка, с которой я сталкиваюсь постоянно», — говорит Даффи. «IaC интересна тем, что превращает все облако в программируемый, компонуемый набор строительных блоков, которые можно использовать для создания более богатых и мощных приложений». Как отрасль, мы перешли от одномашинных серверов приложений и операционных систем к распределенным вычислениям в облаке, управляемым Kubernetes. Но если DSL-подходы к IaC пытаются скрыть от разработчиков сложность инфраструктуры, то Pulumi позволяет разработчикам использовать встроенные соглашения на языках программирования, которые они уже используют в качестве основного интерфейса к облаку.
 
«Я твердо убежден в том, что мы должны вставать на плечи гигантов, когда это возможно», — подчеркивает Даффи. «Существует достаточно сложных проблем, которые нужно решать. Нам не нужно создавать искусственные проблемы просто ради забавы».
 
Подход Pulumi к IaC — многоязычная инфраструктура с поддержкой Node.js (JavaScript, TypesScript), Python, Go, .Net (C#, F#, VB) и Java. Каталог поддерживаемых Pulumi провайдеров охватывает более 150 различных поставщиков инфраструктуры — и это не только крупные облака, но и такие компании, как Cloudflare, Snowflake, MongoDB, Confluent и многие другие.
 
«Использование языков, которые разработчики уже знают, устраняет огромное психологическое препятствие при создании IaC», — говорит Даффи. «Это превращает облачные ресурсы в программируемые строительные блоки, которые можно сшивать вместе точно так же, как любые другие объекты на их любимом языке». В чем подвох? «Самой непростой частью становится изучение этих конкретных строительных блоков, которые, возможно, и являются неотъемлемой «реальной сложностью» предметной области. По сути, использование знакомого языка устраняет всю случайную сложность, рассеивает туман и позволяет людям просто сосредоточиться на решении реальных проблем».
 
Подход к инфраструктуре, ориентированный на язык
 
Когда мы думаем о доменах инфраструктуры приложений в зрелых языках, таких как Java с J2EE, и обширных возможностях Java для обработки параллелизма и многопоточного кода, разработчики имеют многолетний опыт использования примитивов своих любимых языков. По словам Даффи, это базовое желание разработчиков и платформенных команд использовать языковые соглашения, с которыми они уже знакомы, особенно сильно в Python и AI. Там, где DSL приходится гнуть и крутить, чтобы справиться со сложностью, зрелые языки, такие как Python, решают эти проблемы масштаба «из коробки».
 
«Облако — гигантский суперкомпьютер, а искусственный интеллект — крупнейший потребитель этого суперкомпьютера, который мы когда-либо видели», — заявляет Даффи. «В этом мире возможность гибко программировать суперкомпьютер и справляться со сложностями, возникающими при таком масштабе, — это именно то, зачем мы изначально создавали потрясающие языки программирования». Разработчики на самом деле не хотят возиться с инфраструктурой. «Хотя инфраструктура обеспечивает все эти новые возможности ИИ, это не то, о чем думает большинство ИИ-инженеров, вставая утром с постели», — утверждает Даффи. «Использование Python превращает неряшливую, затертую до дыр идею в красивую и элегантно программируемую вещь, как и любое другое программное обеспечение».
 
Эта битва между DSL и общими языками программирования в пространстве IaC не нова. В 2020 году я писал о новых моделях декларативных языков программирования и о том, как они контрастируют с императивными языками в этой области IaC. Новое в этой битве декларативных языков IaC и языков общего назначения — золотая лихорадка искусственного интеллекта. Python — это инструмент, которым пользуются десятки миллионов разработчиков, и в данный момент есть особый стимул иметь возможность рассуждать об инфраструктуре через призму вашего основного языка.
 
Ссылка на источник


0


Нет комментариев. Ваш будет первым!
Загрузка...