Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!16.10.2024
Подивитися на задачу з іншого боку
В мене тут з історії про перегляд журналів CodeDeploy розвинувся цілий дешборд про стани розгортувань та, оскільки кожний продукт складається з декількох сервісів, кожен з власним розгортуванням — також і про зведені стани продуктів. Про це й буде мова.
В продукту є перелік “останніх розгортувань” кожного сервісу. В розгортування — статус, час початку та кінця, та ще кілька атрибутів як-от гілка. Але головне, що на рівні CodeDeploy немає сутності “розгортування продукту” - тільки по сервісах — та таку сутність я синтезую, оскільки через неї значно природніше дивитися на стан, ніж через мішанину розгортувань.
Визначити статус групи не так легко. Наприклад, якщо всі розгортування мають час кінця, значить, група зараз “в спокої”. Але чи всі сервіси в ній розгорнуті одночасно? Та що таке одночасно? Чи були помилки? Ще цікавіше, коли є активні розгортування. Якщо всі активні — тут все ясно. А коли не всі? Не всі запустилися? Або деякі вже встигли завершитись? Успішно чи не успішно? І так далі.
На початку я дивився на цю задачу саме як агрегацію станів — відповідно, намагався визначити з різних комбінацій, який груповий статус вони представляють: “однорідний”, “неуспішний”, “неоднорідний” (це коли всі успішні, але в різних ревізіях) тощо. Така задача вибухає комбінаторно. Коли на практиці деяка комбінація агрегується не так, як потрібно — то не зрозуміло, куди додавати розгалуження, щоб не порушити іншу логіку.
Тому придумав ось що: все, що мені потрібно — це вибір між декількома станами для групи. Ба більше, ці стани виконують чітку потребу, тому їх легше зрозуміти, ніж абстрактні комбінації статусів. Залишилось для кожного групового стану виписати ознаки: наприклад, “однорідний” значить, що всі розгортування завершені, успішні та відбулися в один час.
В результаті отримую схожий набір розгалужень як в першому варіанті. Але тепер вони мають справжній зміст. Та доповнювати їх буде легше: бо буду знати, з якого стану потрібно “відрізати” умову, та в який додати.
🚶♂️ Не випадково, щоб до цього дійти, потрібно було відкласти роботу та сходити на прогулянку.