XS
SM
MD
LG
Державний університет інформаційно-комунікаційних технологій

(Державний університет телекомунікацій)


Адреса:
03110, Україна
м. Київ, вул. Солом'янська, 7
Контактна інформація:
Державний університет інформаційно-комунікаційних технологій

(Державний університет телекомунікацій)

Особливості розгортання коду на сервері (deploy)

12:02, 20-05-2020

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

Після написання нової програми і усунення критичних багів необхідно розгорнути її на сервері і дати доступ кінцевому користувачеві - це процес називається деплой.

Розглянемо способи деплой веб-додатків і познайомимося з актуальними технологіями:

  • вручну;
  • за допомогою bash файлів;
  • за допомогою Docker;
  • docker-compose;
  • c використанням CI / CD.

* в будь-якому з варіантів використовується git з актуальною версією сховища на сервері

 

Вручну

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

Наприклад, запуск web-додатку можна зробити в одну команду.

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

 

За допомогою bash файлів

Спосіб актуальний для невеликих проектів, команди, які запускали руками записуються в .sh файли. Після цього їм дають доступ (через chmod) і запускають (2-я команда):

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

 

За допомогою Docker

 

Docker був розроблений для більш швидкого розгортання додатків. За допомогою docker Ви можете відокремити додаток від вашої інфраструктури і звертатися з інфраструктурою як керованим додатком.

* Установка docker та docker-compose

Найчастіше в docker користуються контейнерами (containers) і образами (images). Docker image - незмінний шаблон, наприклад PostgreSQL, яку Ви можете встановити з DockerHub командою:

Docker container створюється нами, в нього ми можемо "вкласти" всі наші залежності (як бібліотеки, так і БД), front-end частину і її запуск. Для його створення використовується Dockerfile, з яким детальніше можна ознайомитися тут.

Відповідно, ми можемо запустити наші фронт-енд і backend частини, за допомогою 1 або 2х (залежить від Вашої архітектури) docker контейнерів.

 

З допомогою docker-compose

Якщо Вам потрібно розгорнути 2 і більше сервісів, то Вам знадобитися docker-compose. Тобто docker застосовується для управління одним контейнером, docker-compose використовується для одночасного управління декількома контейнерами, що входять до складу програми.

Інструкції для запуску пишуться в файлі docker-compose.yml, з познайомитися з реальним прикладом можна тут.

 

Використання CI / CD сервісів

Картинка була взята з цієї  статті 

Безперервна інтеграція (CI, Continuous Integration) - це практика розробки ПЗ, при якій зміна коду з високою частотою інтегруються в загальний репозитарій і перевіряються за допомогою автозборки. По кроках процес використання системи виглядає наступним чином:

  •  розробники перевіряють код локально (на своїх комп'ютерах);
  •  зміни відправляються до загального репозитарію;
  •  репозитарій відправляє запит (webhook) системі CI;
  •  CI-сервер запускає завдання (тести, покриття, перевірку синтаксису і т.д.);
  •  CI-сервер зберігає артефакти і випускає реліз для тестування;
  •  у разі виникнення помилок збірки або тестування CI-сервер сповіщає команду;
  •  команда виправляє проблему.

Існує безліч CI систем: Travis CI, Circle CI, Gitlab CI і Jenkins. Більш детально можна прочитати тут.

 

Висновки

Якщо ви до цих пір деплоете руками, то як можна швидше переставайте це робити. Якщо у Вас все на bash файлах в невеликому проекті це допустимо але, в разі збільшення проекту bash файли можуть будуть ставати все більш громіздкими і їх буде складніше підтримувати. Тому варто переходити на docker-compose. І по можливості підключати будь-якої CI. Також не забувайте про 12-Factor App, а якщо не знайомі, то категорично рекомендую!

Після впровадження docker-compose і CI сервісу познайомтеся з Kubernetes, який використовується в великих проектах і дозволяє швидко масштабуватися. Для цього рекомендую цю статтю і офіційну документацію.

Михайло Шелег, студент групи КНД-21.
Кафедра Комп'ютерних наук.

Бажаєте дізнаватись про особливості вступу у 2024 році?
Підписуйтесь на спільноти спеціальності "122 Комп’ютерні науки" кафедри Комп’ютерних наук та першим отримуйте новини, сповіщення про важливі події, підготовчі курси, дні відкритих дверей та багато цікавого.
Читайте також

Про кафедру

Кафедра Комп'ютерних наук

Отримати консультацію

Ваш запит на зворотній дзвінок отримає завідуючий кафедрою
Надіслати запит

Абітурієнту

Освітня програма: Комп’ютерні науки

За освітньою програмою Комп’ютерні науки, спеціальність 122 Комп’ютерні науки (англ. Computer Science, CS) готуються фахівці, що здатні виконувати функції розробника-програміста, спеціаліста по мережах, адміністратора баз даних, системного адміністратора, DevOps Engineer, спеціаліста по тестуванню програм, IT-архітектора. Вони володіють навичками алгоритмічного мислення, уявлення інформації, програмування і проектування комп’ютерних систем. Основні розділи: алгоритми і структури даних, мови програмування, архітектура комп'ютерів, операційні системи і комп'ютерні мережі, розробка програмного забезпечення, сервери і бази даних, штучний інтелект та робототехніка, комп'ютерна графіка, взаємодія людини і комп'ютера та ін.

Освітня програма: Комп’ютерні науки

За освітньою програмою Комп’ютерні науки, спеціальність 122 Комп’ютерні науки (англ. Computer Science, CS) готуються фахівці, що здатні виконувати функції розробника-програміста, спеціаліста по мережах, адміністратора баз даних, системного адміністратора, DevOps Engineer, спеціаліста по тестуванню програм, IT-архітектора. Вони володіють навичками алгоритмічного мислення, уявлення інформації, програмування і проектування комп’ютерних систем. Основні розділи: алгоритми і структури даних, мови програмування, архітектура комп'ютерів, операційні системи і комп'ютерні мережі, розробка програмного забезпечення, сервери і бази даних, штучний інтелект та робототехніка, комп'ютерна графіка, взаємодія людини і комп'ютера та ін.

Переглядів: 8 585