JavaRush /Курси /C# SELF /Розгортання коду на сервері

Розгортання коду на сервері

C# SELF
Рівень 10 , Лекція 6
Відкрита

1. Вносимо зміни у код

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

Для зберігання коду є спеціальна програма — Git. Git — це розподілена система керування версіями. Вона не просто зберігає код, а відстежує всі зміни у ньому та допомагає програмістам працювати над проєктами разом, не заважаючи одне одному 🤝.

За допомогою Git розробники можуть створювати різні версії проєкту (гілки), зберігати повну історію змін і навіть повертатися до будь-якого моменту в минулому. Це як машина часу для коду! Git допомагає об’єднувати зміни та розв’язувати конфлікти, тому він став головним інструментом для командної роботи в сучасній розробці. 👩‍💻

2. Збираємо проєкт

Перш ніж тестувати проєкт або завантажувати його на сервер, його слід зібрати.

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

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

Існують низькорівневі інструменти збірки, зокрема:

  • Maven і Gradle — широко використовуються в проєктах на Java для керування залежностями та збіркою проєктів.
  • 🐜 Apache Ant — ще один інструмент для збірки проєктів на Java, надає велику гнучкість у написанні сценаріїв збірки.
  • 🖥️ MSBuild — використовується для збірки проєктів, створених у середовищі Microsoft Visual Studio.
  • ⚙️ Make — класичний інструмент збірки, використовує Makefile для визначення правил збірки, особливо популярний у проєктах мовами C та C++.
  • 🌐 Webpack — часто застосовується для збірки JavaScript‑застосунків, керуючи залежностями та модулями.
  • 📜 Gulp і Grunt — інструменти, що допомагають автоматизувати часто виконувані завдання у розробці вебзастосунків, зокрема мінімізацію файлів і компіляцію SCSS у CSS.

Є й високорівневі інструменти збірки. Про них — нижче.

3. CI/CD

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

Одна з найпоширеніших, хоч і трохи застарілих, CI/CD‑систем — це Jenkins. Якщо ви працюєте у невеликій компанії, то з імовірністю 80 % використовуватимуть саме її.

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

Якщо ви працюватимете у великій компанії, там можете зустріти ще п’ять варіантів:

  • 🚦 TeamCity — потужна комерційна система від JetBrains. Пропонує глибоку інтеграцію з різними середовищами розробки та тестування.
  • 📝 GitLab CI — вбудована частина GitLab, забезпечує безперервну інтеграцію й доставку з можливістю налаштування через YAML‑файли.
  • ☁️ CircleCI — хмарний сервіс CI/CD, що підтримує автоматизацію тестування та розгортання для багатьох проєктів.
  • 🦑 Travis CI — один із перших хмарних CI‑сервісів, використовується у багатьох відкритих проєктах. Добре інтегрується з GitHub.
  • 🎍 Bamboo — продукт від Atlassian, тісно інтегрується з іншими інструментами цієї компанії, такими як Jira та Bitbucket.

Знати їх і вміти з ними працювати вам не потрібно — зазвичай у компанії є DevOps‑фахівці, які й налаштовують усі ці процеси. Вам достатньо знати, що вони існують, і розуміти, про що йдеться, якщо в розмові згадується Jenkins, CI/CD або «безперервна інтеграція».

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

Недостатньо просто написати проєкт — він ще має опинитися на вашому сервері. Загалом, розгортання (deployment) проєкту на сервері — це процес розміщення та активації вебзастосунку на сервері так, щоб він був доступний користувачам через інтернет 🚚.

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

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

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

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

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

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

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

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

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