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 – це дуже зручно і дуже просто.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ