Інформаційна система для автоматизованого розгортання веб-додатків з використанням CI/CD процесів

Автор: Карпюк Ігор Віталійович
Кваліфікаційний рівень: магістр
Спеціальність: Інформаційні системи та технології
Інститут: Інститут комп'ютерних наук та інформаційних технологій
Форма навчання: денна
Навчальний рік: 2024-2025 н.р.
Мова захисту: українська
Анотація: У сучасному світі інформаційних технологій швидкість та ефективність розробки програмного забезпечення відіграють ключову роль у конкурентоспроможності компаній. Зростаючі вимоги до якості продуктів та швидкості їхнього впровадження на ринок вимагають від команд розробників впровадження нових методів та інструментів, що підвищують продуктивність та знижують ризики помилок. Традиційні методи розгортання веб-застосунків часто є складними, трудомісткими та схильними до людського фактору, що може призводити до затримок та непередбачуваних проблем у роботі систем. Робота присвячена розробці інформаційної системи для автоматизованого розгортання веб-застосунків з інтеграцією з GitHub та впровадженням практик безперервної інтеграції та розгортання (CI/CD). Метою системи є спрощення та оптимізація процесів розробки, тестування та впровадження програмного забезпечення, що дозволяє підвищити ефективність роботи розробників та забезпечити швидке доставлення нових функціональностей кінцевим користувачам. Система побудована на основі мікросервісної архітектури, що забезпечує гнучкість, масштабованість та незалежність компонентів. Використано сучасні технології та інструменти, такі як Bun.js для високопродуктивного серверного середовища виконання, Go для розробки ефективних системних сервісів, React та Vite.js для створення швидкого та інтуїтивно зрозумілого інтерфейсу користувача. Оркестрація контейнерів здійснюється за допомогою Kubernetes, що дозволяє автоматизувати розгортання, масштабування та управління контейнеризованими застосунками. RabbitMQ використовується як брокер повідомлень для забезпечення асинхронної комунікації між сервісами, а PostgreSQL слугує надійною базою даних для зберігання інформації про користувачів, застосунки та розгортання. Інтеграція з GitHub реалізована через використання GitHub Webhooks та API, що дозволяє автоматично запускати процеси збірки та розгортання при внесенні змін до репозиторію. Це відповідає сучасним практикам DevOps та сприяє покращенню співпраці між розробниками та операційними інженерами, зменшуючи розрив між розробкою та експлуатацією. У ході дослідження були описані основні терміни та технології, що використовуються в системі, проведено аналіз існуючих рішень та обґрунтовано вибір методів та засобів реалізації. Проведено системний аналіз об’єкту дослідження та предметної області, що дозволило чітко визначити вимоги до системи та обрати оптимальні технології для її реалізації. Розроблена система була протестована на контрольному прикладі, що підтвердило її працездатність, ефективність та відповідність поставленим вимогам. Об’єкт дослідження - процеси розробки, тестування та розгортання веб-застосунків у сучасних командах розробників, а також інструменти та технології, що використовуються для автоматизації цих процесів. Предмет дослідження - інформаційна система для автоматизованого розгортання веб-застосунків з інтеграцією з GitHub, побудована на основі мікросервісної архітектури та сучасних технологій. Мета дослідження - розробити та впровадити інформаційну систему, яка автоматизує процеси розгортання веб-застосунків, забезпечує інтеграцію з GitHub та впроваджує практики безперервної інтеграції та розгортання (CI/CD), підвищуючи ефективність та якість розробки програмного забезпечення. • Мікросервісна архітектура: підхід до розробки програмного забезпечення, при якому система складається з невеликих незалежних сервісів, що взаємодіють між собою через добре визначені інтерфейси. • CI/CD (Continuous Integration/Continuous Deployment): практика безперервної інтеграції та розгортання змін у коді, що дозволяє швидко та надійно впроваджувати нові функціональності. • DevOps: культура та набір практик, що об’єднують розробку та операційні команди для покращення співпраці та прискорення впровадження змін. • Kubernetes: система оркестрації контейнерів з відкритим кодом, яка автоматизує розгортання, масштабування та управління контейнеризованими застосунками. Розроблена система успішно автоматизує процеси розгортання веб-застосунків, інтегруючись з GitHub та використовуючи сучасні практики CI/CD. Проведений контрольний приклад продемонстрував, що система: • Забезпечує автоматичну збірку, тестування та розгортання застосунків при внесенні змін до коду. • Підтримує масштабованість та гнучкість завдяки використанню мікросервісної архітектури та Kubernetes. • Забезпечує високу надійність та доступність сервісів. • Інтегрується з популярними інструментами та платформами, що спрощує її впровадження та використання. • Підвищує ефективність роботи команд розробників, зменшуючи час між розробкою та доставкою продукту кінцевим користувачам. Ключові слова: Автоматизоване розгортання, веб-застосунки, мікросервісна архітектура, Kubernetes, GitHub, CI/CD, DevOps, Bun.js, Go, RabbitMQ, PostgreSQL. Перелік використаних літературних джерел: 1. Humble, Jez, and David Farley. "Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation." Addison-Wesley Professional, 2010. 230 с. 2. Kim, Gene, Jez Humble, Patrick Debois, and John Willis. "The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations." IT Revolution Press, 2016. 180 с. 3. Burns, Brendan, Joe Beda, and Kelsey Hightower. "Kubernetes: Up and Running: Dive into the Future of Infrastructure." O’Reilly Media, 2017. 60 с.