Інформаційна система для автоматизованого розгортання веб-додатків з використанням CI/CD процесів - Карпюк, Ігор Віталійович; Karpiuk, Ihor Vitaliiovych (Національний університет "Львівська політехніка", 2024)
У сучасному світі інформаційних технологій швидкість та ефективність розробки програмного забезпечення відіграють ключову роль у конкурентоспроможності компаній. Зростаючі вимоги до якості продуктів та швидкості їхнього впровадження на ринок вимагають від команд розробників впровадження нових методів та інструментів, що підвищують продуктивність та знижують ризики помилок. Традиційні методи розгортання веб-застосунків часто є складними, трудомісткими та схильними до людського фактору, що може призводити до затримок та непередбачуваних проблем у роботі систем. Робота присвячена розробці інформаційної системи для автоматизованого розгортання веб-застосунків з інтеграцією з 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. • Забезпечує високу надійність та доступність сервісів. • Інтегрується з популярними інструментами та платформами, що спрощує її впровадження та використання. • Підвищує ефективність роботи команд розробників, зменшуючи час між розробкою та доставкою продукту кінцевим користувачам.

In the modern world of information technology, the speed and efficiency of software development play a key role in the competitiveness of companies. Growing demands on product quality and speed to market require development teams to adopt new methods and tools that increase productivity and reduce the risk of errors. Traditional methods of deploying web applications are often complex, time-consuming, and prone to human error, which can lead to delays and unpredictable problems in the systems' operation. This work is devoted to the development of an information system for automated deployment of web applications with integration with GitHub and implementation of continuous integration and deployment (CI/CD) practices. The system aims to simplify and optimize the processes of software development, testing, and deployment, which allows to increase the efficiency of developers and ensure the rapid delivery of new functionality to end users. The system is based on a microservice architecture that provides flexibility, scalability, and independence of components. Modern technologies and tools are used, such as Bun.js for a high-performance server-side runtime environment, Go for developing efficient system services, React and Vite.js for creating a fast and intuitive user interface. Containers are orchestrated using Kubernetes, which allows you to automate the deployment, scaling, and management of containerized applications. RabbitMQ is used as a message broker to provide asynchronous communication between services, and PostgreSQL serves as a reliable database for storing information about users, applications, and deployments. Integration with GitHub is implemented through the use of GitHub Webhooks and APIs, which allows you to automatically launch build and deployment processes when changes are made to the repository. This is in line with modern DevOps practices and improves collaboration between developers and operations engineers, reducing the gap between development and operations. The study describes the main terms and technologies used in the system, analyzes existing solutions, and justifies the choice of methods and means of implementation. A systematic analysis of the research object and subject area was carried out, which made it possible to clearly define the requirements for the system and select the optimal technologies for its implementation. The developed system was tested on a control example, which confirmed its efficiency, effectiveness and compliance with the requirements. Study object is the processes of developing, testing and deploying web applications in modern development teams, as well as the tools and technologies used to automate these processes. Scope ofresearch is an information system for automated deployment of web applications with integration with GitHub, built on the basis of microservice architecture and modern technologies. Goal of research is to develop and implement an information system that automates the processes of deploying web applications, provides integration with GitHub and implements continuous integration and deployment (CI/CD) practices, increasing the efficiency and quality of software development. • Microservice architecture: an approach to software development in which a system consists of small independent services that interact with each other through well-defined interfaces. • CI/CD (Continuous Integration/Continuous Deployment): the practice of continuously integrating and deploying code changes, which allows for the rapid and reliable implementation of new functionality. • DevOps: a culture and set of practices that bring together development and operations teams to improve collaboration and accelerate change. • Kubernetes: an open source container orchestration system that automates the deployment, scaling, and management of containerized applications. The developed system successfully automates web application deployment processes by integrating with GitHub and using modern CI/CD practices. A benchmark example demonstrated that the system: • Provides automatic build, testing, and deployment of applications when changes are made to the code. • Supports scalability and flexibility through the use of microservice architecture and Kubernetes. • Ensures high reliability and availability of services. • Integrates with popular tools and platforms, making it easy to implement and use. • Increases the efficiency of development teams by reducing the time between development and delivery to end users.
Information System for Automated Deployment of Web Applications Using CI/CD Processes
Keywords: 8.126.00.01; Автоматизоване розгортання; веб-застосунки; мікросервісна архітектура; Kubernetes; GitHub; CI/CD; DevOps; Bun.js; Go; RabbitMQ; PostgreSQL; Automated deployment; web applications; microservice architecture; Kubernetes; GitHub; CI/CD; DevOps; Bun.js; Go; RabbitMQ; PostgreSQL