JavaRush /Курсы /Модуль 1: Web Core /Деплой кода на сервер

Деплой кода на сервер

Модуль 1: Web Core
1 уровень , 11 лекция
Открыта

12.1 Вносим изменения в код

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

Во-первых, для хранения кода есть специальная программа — Git. Git — это распределённая система управления версиями, используемая для отслеживания изменений в коде и координации работы программистов над совместными проектами.

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

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

Если все прошло хорошо, то ваши изменения вливаются в ветку dev, запускается автоматическая сборка проекта и тесты. Много тестов.

12.2 Собираем проект

Прежде чем проект тестировать или загружать на сервер, его нужно собрать.

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

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

Сборщики могут быть низкоуровневые:

Maven и Gradle — широко используются в проектах на Java для управления зависимостями и сборкой проектов.

Apache Ant — еще один инструмент для сборки проектов на Java, предоставляет большую гибкость в написании сценариев сборки.

MSBuild — используется для сборки проектов, созданных с использованием Microsoft Visual Studio.

Make — классический инструмент сборки, использующий Makefile для определения правил сборки, особенно популярен в проектах на C и C++.

Webpack — часто применяется для сборки JavaScript-приложений, управляя зависимостями и модулями.

Gulp и Grunt — инструменты, которые помогают автоматизировать часто выполняемые задачи в разработке веб-приложений, такие как минификация файлов и компиляция SCSS в CSS.

Сборщики могут быть и высокоуровневые. О них — ниже.

12.3 CI/CD

CI/CD (Continuous Integration/Continuous Delivery) — методология, которая предполагает непрерывный мерджинг (слияние) изменений из всех веток разработки в основную ветку и автоматическое тестирование и развертывание этих изменений. Это позволяет быстро выявлять и исправлять ошибки, повышая эффективность и скорость разработки.

Одна из самых распространенных, хоть и немного устаревших CI/CD систем — это Jenkins. Если вы работаете в небольшой компании, ее будут использовать с вероятностью 80%.

Jenkins — популярная автоматизированная система, используемая для непрерывной интеграции и доставки (CI/CD). Jenkins позволяет автоматизировать различные стадии разработки программного обеспечения, включая сборку, тестирование и развертывание, что улучшает качество кода и ускоряет процесс разработки.

Если вы попадете в крупную компанию, там может быть на выбор еще 5 вариантов:

TeamCity — мощная коммерческая система от JetBrains, предлагает глубокую интеграцию с различными средами разработки и тестирования.

GitLab CI — встроенная часть GitLab, обеспечивает непрерывную интеграцию и доставку с возможностью настройки через YAML-файлы.

CircleCI — облачный сервис CI/CD, поддерживает автоматизацию тестирования и развертывания для множества проектов.

Travis CI — один из первых облачных CI-сервисов, используемый во множестве открытых проектов, хорошо интегрируется с GitHub.

Bamboo — продукт от Atlassian, тесно интегрируется с другими инструментами этой компании, такими как Jira и Bitbucket.

Знать их и уметь с ними работать вам не нужно: обычно в компании есть DevOps специалист, который настраивает все эти процессы сборок. Вам просто нужно знать, что они есть, и понимать, о чем идет речь, если в разговоре упоминается Jenkins, CI/CD или «континиес интегрейшн».

12.4 Доставляем проект на сервер

Мало проект написать, он еще должен оказаться на вашем сервере. Вообще деплой (deploy) проекта на сервер — это процесс размещения и активации веб-приложения на сервере таким образом, чтобы оно было доступно пользователям через интернет.

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

А как думаете ваш код попадет на сервер? Кто-нибудь его туда зальет? Или может, вы подключитесь по SSH к удаленному серверу, зальете туда пару файлов и будете все настраивать? Расслабьтесь: так больше никто не делает. Теперь есть Docker.

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

Doker позволяет упаковать ваш проект или проекты в Doker-контейнер. Это что-то типа виртуальной машины, только очень легковесной.

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

По сути, Doker-контейнер и есть виртуальная «виртуальная машина». Виртуальные машины включают полную копию операционной системы, ядра ОС, и виртуальное аппаратное обеспечение, в то время как Docker контейнеры разделяют ядро хоста и могут быть более легкими и быстрыми.

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

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

Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Gans Electro Уровень 4
16 декабря 2025
+ лекция в Docker