Не вся инфраструктура, поскольку код рождается равным. Некоторые стили инфраструктуры в качестве кода дают нам большие преимущества — тогда как другие виды могут вызвать большую головную боль.
Написание хорошего Инфраструктура как код Не означает просто объединение кода, который создает инфраструктуру в хранилище и уходит. Знание декларативной и императивной инфраструктуры как кода может означать разницу между простым жизнью или полным кошмаром.
К концу этой статьи вы узнаете, в чем разница между декларативной и императивной инфраструктурой в качестве кода, почему она имеет значение и когда вам следует использовать каждый.
Декларатив против императива: Какая разница?
Чтобы начать все, давайте начнем с обсуждения того, что означает декларативные и императивные термины.
Декларативная инструкция может быть .. » Могу я выпить кофе на столе в 9 утра в понедельник утром ? «В то время как императивная версия команды может быть…» Перейдите к этой машине, затем получите стеклянную банку, заполните ее водой, затем положите ее обратно в машину «… Вы поняли идею.
Итак, один пример кажется более длинным и более словесным, но каковы реальные последствия использования одного стиля инструкций над другим?
В императивном примере (чем дольше), если бы была проблема на полпути — скажем, что стеклянная банка была не с машиной, как вы думаете, что произойдет? Если бы вы были компьютерной программой — вы бы сбой. Почему? Потому что вы будете пытаться выполнить действие, которого не было или даже не было возможно.
Явность императивного примера делает его хрупким. В то время как декларативный лист оставляет область прицела для места и вывода.
Теперь я знаю, о чем вы думаете… «Это очень абстрактно — как это применимо в реальном мире»? Итак, позвольте мне привести вам несколько реальных примеров с использованием инфраструктуры.
Декларатив против императива: пример кода
Теперь я знаю, что иногда трудно понять концепции в реферате. Ниже у нас есть два примера способа создания одной и той же инфраструктуры. В этом случае мы создаем ведро S3, сначала с Terraform , декларативная инфраструктура как инструмент кода. И во -вторых, со сценарием. После того, как мы прошли через эти примеры, мы рассмотрим ключевые различия между стилями и когда использовать каждый.
Во -первых, пример Terraform.
Как вы можете видеть, мы объявляем целевое конечное состояние нашей инфраструктуры. Мы не знаем, существует ли это в настоящее время или нет — если у нас есть, мы хотим его. Если у нас есть, нам ничего не нужно делать.
Как бы это выглядело, если бы это было необходимо, хотя?
Вот пример создания ведра S3 с использованием AWS CLI.
Разница между декларативной и императивом заключается в том, что декларатив должен знать текущее состояние, оно должно знать, существует ли уже инфраструктура, чтобы узнать, создать ли его или нет. Императив, однако, понятия не имеет, существует ли инфраструктура. Императивный пример также не может быть легко повторно и не включает в себя возможность обновления или удаления.
Теперь, когда мы видели, как эти кусочки кода выглядят в реальной жизни, нам нужно понять, почему чертов различие так важно, поэтому давайте посмотрим на ключевые различия между этими стилями.
Ключевые различия в декларативном и императивном стилях?
Итак, теперь мы знаем, что декларативные и императивные стили программирования разные, и каковы эти различия. Но как эти идеи связаны с инженерией и инфраструктурой как кодом?
Работа с «конфигурационным дрифом» — Дрейф конфигурации — это когда инфраструктура медленно меняется с течением времени. Императивные стили инфраструктуры как кода будут бороться за адаптацию к дрейфу на конфигурации, поскольку они кодируются обычно для одного типа жизненного цикла: обновление, создание, удаление и т. Д. Принимая во внимание, что декларативная инфраструктура в качестве кода сможет легче адаптироваться к изменениям, сообщая о различиях и оставляя вам решать, как продолжить.
Простота повторяемости — Мы используем инфраструктуру в качестве кода для аспектов повторяемости. Когда мы запустили сценарий в тестовой среде, мы хотим убедиться, что изменение будет применяться в производственной среде. С помощью императивного стиля программирования инфраструктура может охватить разные состояния в разных средах, а преимущества повторяемости уменьшаются.
Управление сложностью — Прясим ли мы декларативную или императивную инфраструктуру как код, нам необходимо учитывать контекст. Если сценарий требует простого сценария обновления, который написан, императивно, преимущество скорости и простоты может стоить потенциальных сторон.
Idempothency — Idempatency — это возможность запускать одну и ту же команду и достичь того же результата. Декларативная инфраструктура как код может быть выполнена неоднократно, и она создаст тот же результат, тогда как императивная инфраструктура, как код, может запустить только одно время, если бы она не была закодирована, чтобы включить логику типа IF-Already-Dont-Perform.
Государственное управление — Императивные сценарии не заботятся о текущем состоянии нашей инфраструктуры. Это делает их в некотором смысле более упрощенными. Декларативный инструмент должен управлять текущим состоянием. И управление состоянием не всегда легко. Вполне возможно, что декларативная инфраструктура как картина кода текущего состояния может отличаться от реальности нашего государства.
Декларатив против Императив: Что использовать?
Нет строгого правильного или неправильного стиля для использования — как всегда, это зависит. Это зависит от того, пишете ли вы большое количество кода, нужно ли вам обновить инфраструктуру в будущем и т. Д. Иногда быстрый императивный сценарий — это все, что требуется, но если вы создаете более сложную инфраструктуру, декларативный стиль определенно предпочтительнее.
И на самом деле это теперь завершает эту статью! Надеемся, что это должно прояснить немного больше, что эти два термина декларативные и императивные значения — по крайней мере в контексте инфраструктуры в качестве кода. Неважно, если концепция кажется немного абстрактной. Теперь, когда вы знаете различия высокого уровня между стилями, когда вы приходите, чтобы написать свою инфраструктуру, как код, надеюсь, вы на мгновение остановитесь и подумаете, какой стиль вы хотите, прежде чем погрузиться.
Пост Декларатив и императивная инфраструктура как код появился первым на Dev Coach Анкет
Присоединяйтесь к сообществу инженеров -программных программных технологий Cloud, как и вы. Будьте в курсе последних в облачных технологиях и изучайте фундаментальные навыки по основным темам облачной инженерии, таких как: Docker. Без сервера и Linux, и многое другое.
Присоединяйтесь к нам И иди вперед!
Оригинал: «https://dev.to/loujaybee/declarative-vs-imperative-infrastructure-as-code-2p8»