Инфраструктура как код
Автоматизация создания инфраструктуры проекта через Terraform и Ansible
Цель
Создавать инфраструктуру для веб приложений можно разными способами. Самый очевидный и простой - зайти напрямую на облачный сервис, купить сервер, зайти на сервер и установить все необходимое для работы приложения. Такой подход не позволяет масштабироваться и быстро восстановить инфраструктуру после сбоев. Другой путь - использовать подход инфраструктура как код. Описывать все задачи по созданию и настройки всей инфраструктуры с помощью специальных инструментов. При этом вводится полный запрет на внесение изменений в инфраструктуру без этих инструментов. Такой подход позволяет быть уверенным в том, что при любой внештатной ситуации, инженеры восстановят работу приложения в кратчайшие сроки, т.к. им не придется вспоминать каким образом создавалась и настраивалась инфраструктура. Так же уже написанный код позволяет легко добавлять или убирать сервера и прочие ресурсы, что сильно облегчает масштабирование при возрастающих нагрузках.
Terraform - это мощный инструмент, который позволяет описывать инфраструктуру с помощью кода. Он отслеживает изменения, которые произошли в конфигурации и актуализирует инфраструктуру (удаляет или создаёт ресурсы - сервера, сеть, базы данных и т.п.). Если какие-то ресурсы не могут быть изменены, то они пересоздаются. Terraform может работать не только со множеством облачных провайдеров, но и с другими технологиями, например с сервисами логирования, мониторинга и VCS.
Установка необходимых приложений на готовые сервера осуществляется с помощью Ansible. Он позволяет автоматизировать действия на серверах - начиная от установки приложений и заканчивая точечной настройкой конфигурационных файлов. Так же есть возможность использовать готовые роли, которые хранятся в Ansible Galaxy. Это помогает значительно ускорить разворачивание инфраструктуры.
Само приложение запускается в контейнере Docker. Он позволяет упаковать всё необходимое для работы приложения (процесса) в образ и запускать изолированно от основной системы. Таким образом избегаются конфликты между разными версиями приложений и упрощается деплой. Docker стал стандартом в индустрии для деплоя приложений. Существуют разные подходы и схемы деплоя, но мало какие из них обходятся без Docker контейнеров.
Описание
Для выполнения проекта студенты проходят полный цикл разворачивания веб приложения в облаке. Создают инфраструктуру, деплоят приложение и настраивают мониторинг серверов.
Инфраструктура типового приложения, которое развернёт студент, может выглядеть следующим образом:
- Два веб-сервера с приложением (в этом проекте используется готовое приложение), которое работает внутри Docker
- Балансировщик нагрузки, который принимает запросы по HTTPS и перенаправляет их веб-серверам
- База данных как сервис
Наставники



Проекты входят в стоимость обучения на любом плане: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.
Проекты дают опыт разработки в реальной среде. Проходите каждый проект сразу после изучения курсов, которые стоят в учебном плане перед ним, — это отличный способ глубже разобраться в материале.
Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.
Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».
Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться.
Автоматизированные тесты и линтер. В групповом и индивидуальном форматах наставник дополнительно проверит то, что тестами проверить невозможно (архитектуру проекта, правильность именования, удачность решений), и проведёт код-ревью, чтобы сделать проект ещё качественнее.
Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.