Борьба с страхами и рисками облачных абстракций

Спонсировал этот пост.

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

И все же многие облачные разработчики и инженерия не решаются охватить эти абстракции. Почему? Часто все сводится к страху потерять контроль и из прошлого опыта с «протекающими» инструментами, заботы о производительности, придерживаясь своей зоны комфорта или не изобретенного здесь (NIH).

Это естественно быть осторожным. В конце концов, мы потратили годы, освоив инфраструктуру как инструменты кода (IAC) (Terraform, Cloudformation, RAW SDK, YAML), чтобы иметь полный контроль. Вручение ключей на слой автоматизации может показаться рискованным скачком.

Часто мы обсуждаем преимущества абстракции, не признавая или не обращаясь к страхам и рискам. Давайте справимся с некоторыми из самых распространенных опасений по поводу облачной абстракции.

1. Страх потерять контроль

«Если я сам не настраиваю каждый ресурс, я действительно контролирую?»

Это является общей проблемой при переходе от необработанной терраформ или облачной информации к инструментам более высокого уровня. Традиционный IAC дает вам контроль (почти) каждую ручку, но с этим приходит гора сложности. Настоящий страх не о контроле, а о прозрачности. Инженеры беспокоятся о том, что абстракция будет скрывать важные детали, что затрудняет доверие инфраструктуры или отладки.

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

Возьмите этот простой пример, используя NICT:

Из nitc.resources import API, ведра из nitce.application import nitc from initc.context import httpcontext main_api = API («main_api») images = bucket («Images»). Разрешить («чтение») @main_api.get («/file/«) aSync def get_file (ctx: httt -welettext aw_file (ctx: httt -awt. Images.file (ctx.req.params[«name»]) .download_url (Expiry = 3600) ctx.res.json ({«download_url»: url}) nitcrun () 12345678910111213 от nitcor.resources import API, bucketfrom nitric.application import nitrom.context httpcon nitic.Applica API («main_api») images = bucket («Images»). Allow («Reading») @main_api.get («/file/«) async def get_file (ctx: httpcontext): url = await images.file (ctx.req.params[«name»]) .download_url (oxpiry = 3600) ctx.res.json ({«download_url»: url}) nitce.run ()

У этого небольшого фрагмента достаточно информации, чтобы узнать, как настроить конечную точку API, ведро для хранения, разрешения, маршрутизацию и вычисление. Несмотря на скрытую, контроль все еще существует, потому что вы можете переопределить терраформ, используемый для создания полученного IAC, не касаясь кода вашего приложения.

Например, допустим, вы смотрите на этот код, и ваш первый вопрос: «Как мне установить тайм -ауты API Gateway?» Мой ответ на ответ был бы: «Как часто вы меняете эту настройку на проект?» Если ответ: «Многое», то абстракция должна быть в состоянии поднять эту конфигурацию в конфигурации вашего приложения или конфигурации. Однако, если ответ: «Редко/никогда», тогда будет более подходящим, если он живет в качестве настройки по умолчанию в модуле.

Это то, на что выглядит «настоящий» управление: принятие высокоэффективных решений при автоматизации шаблона и позволяет вам настраивать основную инфраструктуру только при необходимости.

2. Прошлый опыт с протекающими абстракциями

Многие из нас несут шрамы из прошлых попыток абстракции, которые не прошли так гладко. Возможно, вы попробовали PaaS или причудливую новую структуру, которая обещала справиться со всем, но когда что -то пошло не так, вам все равно пришлось копать слои сложности. Это классическая проблема «протекающая абстракция».

«Все нетривиальные абстракции в некоторой степени протекают».
-Джоэл Сполски, генеральный директор и соучредитель Stack Overflow

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

Тем не менее, важно понять, почему просочились более ранние абстракции и как современные подходы касаются этого. Многие облачные абстракции первого поколения (подумайте о ранних без серверных фреймворков или чрезмерно упрощенных облачных строителей на основе графических интерфейсов) были по существу тонкими обертками по сравнению с облачными API. В тот момент, когда вы вышли за пределы счастливого пути, вы попали в стену.

Современные платформы-разработчика, первые платформы, выучились из этих уроков. Они, как правило, являются открытым исходным кодом и прозрачны. Обычно вы можете проверить, что абстракция делает под капюшоном. Например, NITIC будет генерировать конфигурацию Terraform (через Terraform CDK), которую вы можете экспортировать и просмотреть при необходимости. Это означает, что если что -то не ведет себя, как и ожидалось, вы не отлаживаете черный ящик; На самом деле вы можете увидеть промежуточный IAC, который создал структура. Это огромное улучшение доверия.

Хорошие абстракции предоставляют люки и точки расширения (как мы видели выше с переосмысленными модулями). Цель состоит в том, что когда абстракция не поддерживает крайний случай, вы можете расширить его, а не отказаться от него. Сравните это с протекающей абстракцией, которая заставляет вас полностью разрушить абстракцию (например, вручную исправлять что -то вне инструмента). С возможностью расширения или инъекции пользовательской логики сама абстракция не «нарушена» по новым требованиям; Это изгибается, чтобы разместить их.

3. не изобретен здесь (NIH) синдром

Синдром не изобретенный здесь не технический страх, как культурный. Инженерные команды, особенно очень способные, часто считают, что их потребности уникальны и что они могут создавать превосходное решение, а не использовать внешнюю абстракцию или платформу. Вы можете услышать такие настроения, как: «Зачем использовать эту структуру? Мы можем просто скрепить все это сами и отлично адаптировать к нашей окружающей среде». Или: «Мы не хотим зависеть от внешнего инструмента; давайте создадим нашу собственную легкую версию». Это инстинкт, чтобы бросить свой собственный, вытекающий из гордости, контроля или иногда скептицизма, который общий инструмент может соответствовать вашему особому случаю.

«Многие компании страдают от не изобретенного здесь синдрома, предлагая пользовательские решения вместо выбора стороннего инструмента».
— Mykyta Protsenko, Netflix

Хотя подход DIY может быть полезен в некоторых действительно уникальных сценариях, чаще это приводит к переосмыслению колеса и тратям времени решения решающих задач. Эта тенденция может улавливать команды в бесконечном техническом обслуживании внутренних инструментов, которые никогда не будут завершены или задокументированы. Если ваши разработчики тратят месяцы, создавая внутреннюю структуру развертывания, то месяцы они не предоставляли бизнес -функции.

«Прекратите тратить деньги (и время) на недифференцированную тяжелую работу».
— Werner Vogels, Amazon

Когда дело доходит до облачной инфраструктуры, подумайте о основной компетенции вашей команды. Является ли написание и поддержание внутренней облачной платформы действительно отличителем для вашего бизнеса? Если вы являетесь облачным поставщиком или продаете инструменты разработчика, может быть,? В противном случае, вероятно, нет. Для большинства компаний -продуктов дифференциатор — это приложение или услуга, которую они предлагают, а не на заказ сценарии, которые его развертывают.

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

Чтобы быть ясным, «не изобретено здесь» не о том, чтобы слепо принять какой-либо готовый инструмент. Вы все равно должны оценить зрелость и сообщество решения. Когда абстракция соответствует от 80% до 90% ваших потребностей, обычно размышляет на ней, чем создавать свои собственные с нуля.

«Я предпочитаю, чтобы другие люди решали мои проблемы для меня»
— Линус Торвальдс, создатель и ведущий разработчик ядра Linux

Заключение: принять абстракцию, чтобы получить рычаг

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

Когда вам больше не нужно беспокоиться о том, какую ручку обратится, чтобы включить интеграцию или как форматировать политику IAM, вы можете посвятить эту умственную энергию для инноваций в своей области. В результате команды движутся быстрее, развертывают более уверенно и страдают меньше головных болей «он работает на моей машине», потому что платформа заботится о последовательности в окружающей среде.

NICE-это облачная структура, которая повышает производительность разработчиков и уверенность в OPS, объединение бэкэнд и кода инфраструктуры для быстрого создания и поставки облачных приложений. Devs создают ваше приложение, платформа определяет правильную инфраструктуру, а NILIC автоматизирует обеспечение, которое работает для обоих. Узнайте больше последних из Nitic Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Рак Шива, вице -президент по технике инженерии в команде NITIC, глубоко привержен повышению опыта для разработчиков программного обеспечения. С богатым 15-летним пребыванием в индустрии программного обеспечения он начал свое инженерное путешествие, погруженное в волнующие вызовы … Подробнее от Rak Siva

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *