Резюме:
В 15five Мы мигрировали в Terraform за 8 месяцев с командой из 3 человек. Это прошло гладко и дало нам больше уверенности в нашей инфраструктуре AWS. Когда дело дошло до настройки нового VPC для клиента, часы, которые мы инвестировали, вернулись к нам в скорой и простой настройке, процесс, который был бы огромной болью, если бы мы сделали это вручную.
Статистика:
- Строки кода: ~ 16 000
- Количество коммитов: 903
- PR: 514
- Команда: Пол (главный инженер), Джеймс (менеджер Devops), Калеб (SRE)
Временная шкала:
2019.09 — Я впервые играл с Terraform в хакатоне компании. 2019.09 — Я использовал Terraform, чтобы сделать свои первые изменения AWS. 2019.11 — Джеймс присоединяется к команде и начинает работать над Terraform. Repo разделен на основную репо и Terraform Repo для наших различных модулей. На этом этапе у нас есть только два модуля. CI настроен. 2020.01 — Мы перенесли в нашу первую среду 2020.04.28 — Попытка миграции среды предварительного просмотра 1 2020.04.29 — Попытка миграции предварительного просмотра 2 ✔ 2020.05 — Постановка миграции 2020.06 — Одиночная клиентская миграция 2020.06 — Производственная миграция 2020.06
Вынос:
Калеб:
Болевые точки:
- Наличие двух разных репо всего немного неловко. Я чувствую, что наличие монорепо или более CI было бы лучше, так как отсутствие обратной связи CI при изменении кода в модулях репо замедлило ситуацию. Мы, вероятно, переедем в Monorepo в будущем.
Что прошло хорошо:
- Хакатоны хороши для вдохновляющих изменений.
- Контрольные списки великолепны. Просто приятно проверить вещи, например. Это также заставляет вас думать обо всех предметах, которые можно сделать заранее, и убедится, что вы ничего не забываете. Больницы использовали контрольные списки для массового снижения уровня инфекции, Хотя результаты зависят от того, насколько эффективно они используются Анкет
- Terraform отлично подходит для глубокого понимания всех услуг, связанных с вашей инфраструктурой. Описывая свою инфраструктуру в коде, вы разрабатываете ментальную модель всех задействованных компонентов, и у вас есть письменная запись о крошечных настройках, которые обычно могут быть скрыты за некоторыми неинтуитивными значками пользовательского интерфейса.
- Мигрирование производства прошло довольно гладко, это стоит своего веса.
Джеймс:
Болевые точки:
- Монолитная структура модулей Terraform приводит к очень большим артефактам — она предпочтительнее разбить его на несколько репозиториев GIT, один репо для каждого модуля.
Что прошло хорошо:
- Мы смогли обновить Terraform без инцидента.
- Мы смогли развиться на 30-40% быстрее из-за небольшой гибкой команды без чрезмерно ограничительной бюрократии.
Павел:
Болевые точки
- Мы должны были прикрепить версию Terraform в контроле версий, чтобы предотвратить случайное обновление и держать всех в одной и той же версии (в итоге мы сделали это позже с TFENV и
.Terraform-версия
- Ни одно из решений для обращения с несколькими условиями не казалось идеальным, но Джеймс в итоге решил это с Terragrunt, как только он пришел на борт.
Что прошло хорошо?
- Это было сильным облегчением, чтобы терраформ обрабатывал настройку окружающей среды. Вам просто нужно было нажать кнопку, уйти, и к тому времени, когда вы вернетесь, инфраструктура будет готова.
- Использование Terragrunt было очень чистым способом настройки инфраструктуры во многих средах.
- Он проверил множество коробок для соблюдения и аварийного восстановления.
Что мы могли сделать лучше?
- Оглядываясь назад, я мог бы сдать больше работы продукта другим людям, чтобы иметь больше времени, чтобы написать Terraform и обеспечить передовую практику.
- У нас могли быть ночные тестовые пробежки — раскручивать и разорвать инфраструктуру в другом регионе, чтобы быть уверенным, что всегда будет работать. Метрики, такие как время и деньги, потраченные на настройку, были бы полезны. Чем больше метрик, тем лучше.
Есть другие мысли?
- Хотел бы я знать, что обертки Terraform, такие как Палуми были вариантом. Тем не менее, это, вероятно, было бы излишним в то время.
- Я обнаружил, что это экономит больше времени для сначала настройки облачной службы с Terraform, а затем проверяет пользовательский интерфейс. Сначала делать это в пользовательском интерфейсе, а затем перевести это на Terraform, медленнее.
Оригинал: «https://dev.to/15five/migrating-to-terraform-a-retrospective-4cko»