На кафедрі Комп'ютерних наук студенти навчаються розгортанню програмного забезпечення. Це ті дії, які роблять програмну систему готовою до використання. Даний процес є частиною життєвого циклу програмного забезпечення. В цілому процес розгортання складається з декількох взаємопов'язаних дій з можливими переходами між ними.
Після написання нової програми і усунення критичних багів необхідно розгорнути її на сервері і дати доступ кінцевому користувачеві - це процес називається деплой.
Розглянемо способи деплой веб-додатків і познайомимося з актуальними технологіями:
* в будь-якому з варіантів використовується git з актуальною версією сховища на сервері
Найпростіший спосіб, але в той же час схильний до великої кількості помилок і проблем, в силу людського фактора.
Наприклад, запуск web-додатку можна зробити в одну команду.
У більшості випадків, Вам потрібно буде запустити web-додаток і кілька мікросервісов. Якщо реліз заплановано на пізній час або робиться на швидку руку, то дуже легко втратити щось, не врахувати і отримати негативний відгук від своїх клієнтів. Тому цей метод зараз використовується вкрай рідко і є поганою практикою.
Спосіб актуальний для невеликих проектів, команди, які запускали руками записуються в .sh файли. Після цього їм дають доступ (через chmod) і запускають (2-я команда):
Також, ви можете поєднувати запуск декількох bash файлів в один для зручності. Такий напівавтоматичний спосіб деплоя дозволяє знизити вплив людського фактора і прискорити процес.
Docker був розроблений для більш швидкого розгортання додатків. За допомогою docker Ви можете відокремити додаток від вашої інфраструктури і звертатися з інфраструктурою як керованим додатком.
* Установка docker та docker-compose
Найчастіше в docker користуються контейнерами (containers) і образами (images). Docker image - незмінний шаблон, наприклад PostgreSQL, яку Ви можете встановити з DockerHub командою:
Docker container створюється нами, в нього ми можемо "вкласти" всі наші залежності (як бібліотеки, так і БД), front-end частину і її запуск. Для його створення використовується Dockerfile, з яким детальніше можна ознайомитися тут.
Відповідно, ми можемо запустити наші фронт-енд і backend частини, за допомогою 1 або 2х (залежить від Вашої архітектури) docker контейнерів.
Якщо Вам потрібно розгорнути 2 і більше сервісів, то Вам знадобитися docker-compose. Тобто docker застосовується для управління одним контейнером, docker-compose використовується для одночасного управління декількома контейнерами, що входять до складу програми.
Інструкції для запуску пишуться в файлі docker-compose.yml, з познайомитися з реальним прикладом можна тут.
Картинка була взята з цієї статті
Безперервна інтеграція (CI, Continuous Integration) - це практика розробки ПЗ, при якій зміна коду з високою частотою інтегруються в загальний репозитарій і перевіряються за допомогою автозборки. По кроках процес використання системи виглядає наступним чином:
Існує безліч CI систем: Travis CI, Circle CI, Gitlab CI і Jenkins. Більш детально можна прочитати тут.
Якщо ви до цих пір деплоете руками, то як можна швидше переставайте це робити. Якщо у Вас все на bash файлах в невеликому проекті це допустимо але, в разі збільшення проекту bash файли можуть будуть ставати все більш громіздкими і їх буде складніше підтримувати. Тому варто переходити на docker-compose. І по можливості підключати будь-якої CI. Також не забувайте про 12-Factor App, а якщо не знайомі, то категорично рекомендую!
Після впровадження docker-compose і CI сервісу познайомтеся з Kubernetes, який використовується в великих проектах і дозволяє швидко масштабуватися. Для цього рекомендую цю статтю і офіційну документацію.
Михайло Шелег, студент групи КНД-21.
Кафедра Комп'ютерних наук.