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

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

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

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

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

Для хранения кода есть специальная программа – Git. Git – это распределённая система управления версиями. Она не просто хранит код, а отслеживает все изменения в нём и помогает программистам работать над проектами вместе, не мешая друг другу.

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

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

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

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

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

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

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

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

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

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

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

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

Также есть и высокоуровневые сборщики. О них – ниже.

3.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 или «континиес интегрейшн».

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

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

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

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

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

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

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

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

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

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

Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
21 декабря 2024
Если пайплайн в облаке, то Bitbucket без Bamboo отлично справляется. Бамбук нужен для он-прем.