JavaRush /Курси /Frontend SELF UA /Деплой коду на сервер

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

Frontend SELF UA
Рівень 48 , Лекція 2
Відкрита

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 або «continuous integration».

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

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

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

А як думаєте, ваш код потрапить на сервер? Хтось його туди завантажить? Чи може, ви підключитесь по SSH до віддаленого сервера, заллєте туди кілька файлів і будете все налаштовувати? Розслабтеся: так більше ніхто не робить. Тепер є Docker.

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

Docker дозволяє упакувати ваш проєкт або проєкти в Docker-контейнер. Це щось на кшталт віртуальної машини, тільки набагато легший і ефективніший у використанні.

І хоча на будь-якому форумі про Docker, якщо ви назвете його віртуальною машиною, вас закидають капцями, але якщо ви знаєте, що таке віртуальна машина, то можете думати про Docker-контейнер як про віртуальну машину. Тільки дуже легковажну.

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

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

Це позбавляє від проблем, пов'язаних з відмінностями в серверних середовищах, і дозволяє легко масштабувати додаток, додаючи чи видаляючи контейнери відповідно до навантаження. Всі перейшли на Docker — це дуже зручно і дуже просто.

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