Проект #3

Инфраструктура как код

DevOps для программистов

Автоматизация создания инфраструктуры проекта через Terraform и Ansible

2-4
недели

Цель

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

Terraform - это мощный инструмент, который позволяет описывать инфраструктуру с помощью кода. Он отслеживает изменения, которые произошли в конфигурации и актуализирует инфраструктуру (удаляет или создаёт ресурсы - сервера, сеть, базы данных и т.п.). Если какие-то ресурсы не могут быть изменены, то они пересоздаются. Terraform может работать не только со множеством облачных провайдеров, но и с другими технологиями, например с сервисами логирования, мониторинга и VCS.

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

Само приложение запускается в контейнере Docker. Он позволяет упаковать всё необходимое для работы приложения (процесса) в образ и запускать изолированно от основной системы. Таким образом избегаются конфликты между разными версиями приложений и упрощается деплой. Docker стал стандартом в индустрии для деплоя приложений. Существуют разные подходы и схемы деплоя, но мало какие из них обходятся без Docker контейнеров.

Описание

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

Инфраструктура типового приложения, которое развернёт студент, может выглядеть следующим образом:

  • Два веб-сервера с приложением (в этом проекте используется готовое приложение), которое работает внутри Docker
  • Балансировщик нагрузки, который принимает запросы по HTTPS и перенаправляет их веб-серверам
  • База данных как сервис

Наставники

Аватар наставника Maksim Fominov
Maksim Fominov
Аватар наставника Дмитрий Круглов
Дмитрий Круглов
Аватар наставника Михаил Иванов
Михаил Иванов
DevOps Engineer, Star
Сколько стоят проекты?

Проекты входят в стоимость обучения в любом формате: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.

Зачем проходить проекты?

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

Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.

Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».

Что делать, если возникли трудности во время выполнения проекта?

Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться. Попросите о помощи в нашем Slack-чате в канале #hexlet-projects.

Кто проверяет проекты?

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

У меня другой вопрос

Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.