Блог

Повернутися до всіх статей

Branching strategy при реалізації масштабних Qlik-проєктів

||

Швидкість та гнучкість розробки ПЗ відіграють важливу роль. Однак, за одночасної роботи великої команди розробників код розгалуження та злиття може стати безладним. Такі команди необхідно забезпечити процесом одночасного впровадження змін. Ефективна стратегія розгалуження (branching strategy) є пріоритетом у вирішенні цього питання.

Branching strategy є набором правил, яким слідують розробники при написанні, злитті та розгортанні коду при використанні контролю версій. У ситуаціях, коли працюють кілька розробників і вони одночасно додають зміни, стратегія розгалуження структурує репозиторій та дозволяє уникнути плутанини злиття. Конфлікти злиття перешкоджають швидкій доставці коду, заважають створенню та підтримці ефективного процесу DevOps.

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

Стратегія розгалуження дозволяє:

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

Гілки в Git представлені тегами чи покажчиками. Усі зміни відстежуються у вигляді спрямованого ациклічного графа, кожен вузол якого є набором змін, зроблених одночасно. Гілки Git надають розробникам можливість відхилятися від основної гілки та створювати окремі гілки для ізоляції змін коду. Гілкою за замовчуванням у Git є «main branch»”. Головною перевагою гілки Git є її «незначна вага». Тобто, дані складаються із серії знімків і при кожній фіксації змін Git робить знімок поточного стану файлів і зберігає посилання на нього. Такі гілки є не просто копіями, а й покажчиком на останній коміт.

Основні стратегії розгалуження Git:

Приклад мердж-конфлікту та його вирішення

Розглянемо приклад виникнення мердж-конфлікту та можливі способи його вирішення з використанням QOps для контролю версій програми Qlik Sense. Для цього візьмемо Qlik Sense додаток і за допомогою QOps створимо репозиторій вихідних кодів та 2 гілки dev1 та dev2 для окремих розробників. Уявимо ситуацію, коли кожен із розробників змінив якийсь загальний елемент (наприклад, колір фону об’єктів з виведенням KPI значень).

Оскільки на рівні вихідних кодів зміни відбулися в тих самих рядках, при виконанні злиття dev1 -> master і dev2 -> master, в останньому виникає мердж-конфлікт. Вирішення мердж-конфлікту вимагає прийняття рішення, який саме з варіантів повинен бути присутнім у зведеному варіанті. Засіб розробки VSCode дозволяє в інтерактивному режимі ухвалити це рішення. Однак, це накладає додаткову відповідальність на IT-фахівця, який виконає це злиття.

Існує ризик отримати від обох розробників частини коду для загального елемента в кінцевому додатку, які можуть бути несумісними. Наприклад, після злиття можна отримати наступний результат, коли для першого об’єкта було обрано рішення Accept Incoming, а для другого – Accept Current.

Зручно проводити злиття вихідних кодів, використовуючи веб-інтерфейс систем контролю версій. Нижче наведено хід виконання Pull Request у GitHub при безконфліктному злитті.

Наявність конфліктних змін призводить до виводу відповідного попередження та додаткової інформації.

Інтерфейс GitHub дозволяє виконати дозвіл мердж-конфліктів у невеликих файлах, при цьому користувачеві потрібно вручну відредагувати вихідний код, позначений конфліктним і підтвердити зміни. У разі неможливості виконання цієї операції через веб-інтерфейс GitHub запросить виконати вирішення конфліктів локально.

Розв’яжемо наявний конфлікт протилежно описаному вище. У результаті отримуємо очікуваний результат із протилежним кольоровим розфарбуванням загальних елементів.

Детальная інформація пhо QOps тут

Попереднiй Пост Наступний Пост

Недавні пости

Матриця Рамсфелда як ефективний інструмент в процесі приняття рішень

Під час брифінгу, присвяченого війні в Іраку, Дональд Рамсфелд поділив інформацію на 4 категорії: відоме знане, відоме незнане, невідоме знане, невідо...

Читати далі

Вплив ШІ та машинного навчання на науку про дані

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

Читати далі

Штучний Інтелект у сфері аналізу даних

Штучний Інтелект широко використовується у багатьох додатках, зокрема й для аналітики даних. В основному ШІ застосовується для аналізу великих наборів...

Читати далі
GoUp Chat