From A | Все про IT
前往频道在 Telegram
Привіт. Я Артур — Software Architect, Head of Engineering, Ph.D. Пишу про програмування, тестування, автоматизацію, архітектуру та айтішку. По питанням пишіть @ar2r_s
显示更多5 306
订阅者
-124 小时
+357 天
+4230 天
帖子存档
5 308
Простими словами про патерни. Сьогодні про сагу.
Уяви: ти зібрав відпустку по кусочках - квиток, готель, авто напрокат. Готель зірвався і ти не летиш "в нікуди", а скасовуєш квиток і повертаєш гроші за авто. Saga - це операція з кроків, де для кожного заздалегідь відомо, як його скасувати, якщо далі щось зламалось.
Більш технічно:
Нехай бізнес-операція охоплює кілька сервісів- наприклад, оформлення замовленні в якому приймають участь Orders, Payments та Inventory сервіси. У кожного власна база, спільної ACID-транзакції немає(бо бази рінзі), а 2PC(двофазний коміт) блокує ресурси й погано масштабується.
Рішення: реалізуємо транзакцію як послідовність локальних. Кожен крок оновлює один сервіс і запускає наступний. Якщо крок падає - сага виконує компенсаторні транзакції у зворотному порядку: не "прибрати списання", а зробити refund.
Є два стилі координації:
- хореографія - аналогія балет - сервіси реагують на події одне одного;
- оркестрація - аналогія дирижер - існує центральний оркестратор який шле команди й стежить за відповідями.
Сага завжди завершується в узгодженому стані: або всі кроки пройшли, або виконані скасовано компенсаціями.
(!) У саги немає ізоляції - інші операції бачать проміжні стани. Кроки і компенсації мають бути ідемпотентними (Inbox) і надійно публікуватися (Outbox).
#мікросервіси #архітектура #systemdesign #microservices #distributedsystems #патерни
5 308
https://x.com/unclebobmartin/status/2080257779395154409 ну всьо. дядя боб трошки того.. перегрелся. дідууу, таблетки пий давай!
5 308
Claude Code on desktop now works with the iOS simulator.
Build and run your iOS app, and the simulator opens in a panel right next to your conversation. Available today in public beta
5 308
Простими словами про патерни. Сьогодні про inbox.
Буває, телефон через глюк надсилає те саме повідомлення двічі. Друг просить перекинути за піцу - повідомлення прийшло двічі, але платиш ти один раз, бо помітив шо «це ж вже було!».
Inbox - це коли сервіс так само запам'ятовує ID повідомлення й на дубль більше не ведеться, як ти на манупуляції колишньої.
Inbox (Idempotent Consumer)
Брокери гарантують at-least-once: одне й те саме повідомлення може прийти повторно (relay перепублікував, споживач упав до ack, перебалансування партицій). Наївний споживач "отримав - виконав" надішле другий лист, а якийсь Payments сервіс спише гроші двічі.
Рішення
Робимо споживача idempotent.
Два шляхи:
1) природна ідемпотентність: UPSERT замість INSERT, "встановити стан" замість інкремента. Тут окреме сховище не потрібне. Прикладами можуть бути оновлення статусу замовлення.
2) таблиця inbox: перед обробкою пишемо стабільний message_id у тій самій транзакції, що й бізнес-зміну. Тоді дублікат порушить унікальне обмеження й тихо відсіється. Тут приклади це списання коштів, зміни у зовнішніх системах, і т.д.
Найкращий ID для дедуплікації - це id рядка outbox-у. Тоді Outbox + Inbox дають ефект «exactly-once» без розподілених транзакцій.
Ну і як в outbox-і, не забувайте про очистку бази.
#мікросервіси #архітектура #systemdesign #microservices #data #messaging #патерни
5 308
🔥 Добірка крутих можливостей для QA джунів
Продуктова компанія Quarks (роблять high-load продукти у сфері social discovery & relationsip wellness) має одразу три вакансії для початківців. А робота в продукті — це завжди +100 до скілів, бо завдання різноманітні, а результати твоїх тестів впливають на мільйони реальних юзерів
• Junior QA Engineer https://cutt.ly/Oyr7Zjfp
• Junior Manual QA https://cutt.ly/1yr7ZHku
• Junior QA Engineer https://cutt.ly/Kyr7Z5V7
💰 Бонус для тих, хто не шукає роботу:
якщо у вас є талановитий знайомий джун, рекомендуйте та отримаєте $300 за успішний найм: https://cutt.ly/pyr7XsXz
5 308
Смаріте краще документалку про джаву в ріалтаймі
https://youtu.be/ZqGSg4b_cZA?is=dzuKoCWbazoj1xoC
5 308
Простими словами про патерни. Сьогодні про outbox.
уяви: пообіцяв другові скинути рілсік, але телефон сів, тасок накидали - і забув. відосік не дійшов, друг у сумнівах щодо твоєї орієнтації.
На технічній:
сервіс зберіг замовлення в базі і має надіслати івент у брокер. якщо процес упаде між commit і publish, дані є, а івенту немає (або навпаки) - це проблема подвійного запису.
Рішення: пишемо подію в ту саму транзакцію - в окрему таблицю outbox. замовлення і подія фіксуються атомарно: або обидва, або жоден.
далі relay (полінг або CDC) читає нові рядки, публікує в брокер і позначає надісланими. івент переживе недоступність брокера - бо чекає у таблиці.
головне: outbox дає at-least-once, не exactly-once. relay може опублікувати івент і впасти до того, як позначив рядок - після рестарту опублікує вдруге. тому консюмери мають бути ідемпотентними.
порядок гарантується лише якщо relay публікує послідовно чи партиціонує по aggregate_id.
і чисть надіслані рядки, інакше таблиця росте як твій беклог.
#патерни
5 308
бляха я начінаю уже гореть із цього оверрелайансу на аішку. люди почали її ЗАНАДТО абьюзити уже.
3-и роки назад всі такі "не, хуйня ваша ця аішка, я краще , бла-бла-бла". люди зараз — не читають, блять, тред в слаку і просто тупо проксірують відповідь клоду шоб він за них УЖЕ БЛЯТЬ В СЛАКУ ВІДПОВІВ.
це якийсь закат інженерії уже почався?
ріл. якшо ваша робота зводиться до копіювання з одного місця і вставляння в інше - блять ви не інженер а кусок гамна який надо змити в унітаз.
прастіті.
нада було виговоріться.
всім терпіння та розуму.
5 308
в моєму словнику появилось нове слово. якшо ви працюєте у корпорат-ворлд і хочете матюкнутись але не можна — маю для вас слово-виручалку:
increDEBIL
це як incredible але трошки з акцентом.
🙂
5 308
как понять шо бліжайші два дня придется робити багато handjob роботи :D
так сказать, молотіть руками
5 308
Якщо людина, з якою ти працюєш, раз за разом виконує задачу неправильно — це вже не лише її проблема. Це і твоя відповідальність.
У філософії Toyota є принцип:
人を責めるな、仕組みを責めよ
Hito o semeru na, shikumi o semeyo
«Не звинувачуй людину — вдосконалюй систему».
Можливо, ти недостатньо чітко поставив ціль.
Можливо, очікування були озвучені лише у твоїй голові.
Можливо, не було прикладів, критеріїв якості або своєчасного зворотного зв’язку.
А можливо, ця людина просто не підходить для цієї ролі — і це теж управлінське рішення.
Добрий менеджер не питає:
«Чому вони знову зробили не так?»
Він спочатку питає:
«Що в моїй системі дозволило цьому повторитися?»
Повторювані помилки рідко говорять лише про співробітника. Частіше вони говорять про процес, комунікацію або управління.
Лідерство — це не контроль. Лідерство — це створення умов, у яких правильний результат стає передбачуваним.
5 308
Втомилися від гамняного Terraform-коду? Хочете зробити інфраструктуру у знайомому SQL-лайк стилі?
Подивіться, що я знайшов: https://orbitalventures.org/products/orbi
Дуже крута штука для створення, аналізу та керування інфраструктурою у форматі SQL-коду. Виглядає справді цікаво. Рекомендасьйон.
5 308
Помітили, що інформації навколо стає дедалі більше: книги, курси, відео, AI... Але навчатися геть не стає легше — часом вже за кілька тижнів більшість нового забувається, наче й не було витрачено купу часу і зусиль🫣
Бо виклик зараз не у поглинанні інформації, а у її засвоєнні та перетворенні на реальні навички. Саме цьому буде присвячений новий воркшоп від Certufied Unicorns — Smart Learning with AI tools.
На воркшопі ви дізнаєтеся:
💡 про принципи ефективного навчання та механізми, через які мозок забуває інформацію;
💡 як використовувати AI для посилення власного навчання, а не замість нього;
💡 як швидше освоювати нові технології, інструменти, фреймворки, продукти, іноземні мови тощо;
💡 як побудувати систему нотаток, повторення й практики, яка допомагає зберігати знання надовго;
💡 як перетворювати книги, статті, документацію та відео на практичний досвід.
👨🏫 Воркшоп проводить Олександр Романов — Senior Software Engineer in Test, який дослідив найдієвіші практики і перевірив їх у власній практиці: від підготовки до IELTS за місяць до швидкого опанування нових технологій та професійних навичок.
📅 Старт — 6 липня 2026 року.
Формат: 2 онлайн-заняття наживо, записи назавжди, PDF-конспект з ключовими концепціями та добірка корисних інструментів і ресурсів.
⚠️ З 29 червня вартість участі зросте, тож встишніть забронювати місце за нижчою ціною.
🔗 ДЕТАЛІ ТА РЕЄСТРАЦІЯ
5 308
Всім доброго ранку! Я тут відкрив дружню банку для підтримки збору DOU на «Хартію».
Моя ціль — 30 000 ₴. Долучайтеся до збору за посиланням та беріть участь у розіграші призів не тільки від DOU (за кожні 300 ₴ — шанс виграти айфон, макбук та інше),
а й у розіграші призів від мене:
• топ-приз бет-мотоцикл із лего,
• 2 книжки "мистецтво війни",
• "Як пасти котів",
• і ще 2 мотоцикли із лего (всі лего-іграшки у зібраному стані)
Розіграш проведемо, як закриємо збір. Всім дякі!
https://send.monobank.ua/jar/AD4sq9LtPo
5 308
і ще одна думка про те як змінюється розробка під впливом АІшки. знаєте, багато років тому (ЗА ЧАСІВ ДАВНІХ БОГІВ ТА ЦАРІВ) ми йшли програміровать потому шо нам подобалось програміровать. знаєте, оцей самий кайф від написання класів, методів, використання красівих патернів та як елегантно код потім працює. Подобалось думати над проблемою та її вирішенням. В цей час ти уявляв себе якимось магом якийсь шото там колдує а потім ВІОЛА і появляється магія запуску та робочого коду. Дуже цікаво було це робити і люди йшли в програмірованіе в першу чергу за цим. ну а потім канешно уже гроші, тьолки, яхти та спорт-кари.
Але була одна найтупіша та найнеприємніша частина роботи — це розбиратись у чужомі гамні. Дивитись на нього, читати, пробувати на смак, нюхати а потім писати полайт коменти шо та як виправити. Не думаю шо комусь взагалі це колись подобалось як частина процесу( ізвращенци каншно є але не всі).
і от в чому найбільший мінус-вайб зараз так в тому шо тепер 90% твоєї роботи — це читання чужого аішного гамна. Так, інколи АІшка генерить досить хороший код, якшо надати весь контекст, правила, архітектуру, гарно описати що хочеш та надати всі конвенції коду.
АЛЕ БЛЯХА ПРОПАЛА МАГІЯ СТВОРЕННЯ КОДУ.
тепер ми по суті нічим не відрізняємось від рабочих на заводі. Магія коду пропала, залишивши лиш звичайну механіку дій.
і це сумно...
5 308
короче я хз шо там далі буде але АІшка настіки уже інтеграувалась у життя і всі процеси під це адаптувались шо становиться ДУЖЕ СТРАШНО навіть.
сьогодні у мене була простїо єбейше-велика задача. треба було заінтродьюсити нове розширення для дужеееееее великої фічі з мільйоном бізнес правил і купи складної логіки, змінами в архітектурі, в апі контарктах, і відслідкувати це дуже обережно шоб був план змін шооб легенько це потім представити девам і запланувати роадмапу імплементації.
по ітогу цей бласт-радіус зайняв близько 30 файлів які треба було апдейтити(апдейти там не 2-3 рядки помінять а прям нормально так переписувати), і ще 10 юзер сторей які треба було створити нових, плюс заапдейтити громаднку ерд. вопщім - це все заняло у мене сьогдні майже весь день. токен-юзедж просто улетів в космос АЛЕ я от тепер це оцінюю уже весь той обсяг роботи шо я зробив (відсотків 80 писала саме текст АІшка а я гайдив її шо мені треба та ревьював) АЛЕ АЛЕ АЛЕ - оцінюючи обсяг роботи — я б без неї цю херню робив не десь тиждень блять мені здається мінімум і стопудов десь би лажанув у завісімостях.
короче гайз та герлс - стає страшно наскіки уже голка АІшки в нашому мозгу стирчить.
5 308
ну всьо. ілончик купив курсор за 60 мільярдів зелених. бувай курсор, ти був мені як брат... чи правильніше казати буде уже Xursor?
https://x.com/SpaceX/status/2066873915717136548
Шо думаєте? стане всратіше чи стане краще?
5 308
AI-meetup від Бетельгейзе вже 20 червня!
Це подія, де експерти обговорюють різні теми про "ШІ", серед яких як практика застосування, так й інноваційні підходи.
🥸Унікальний формат!
Доповідь + експертне обговорення. Після кожної доповіді експертна група долучається до етеру, щоб поговорити на тему.
Заявлені учасники:
Володимир Куренков, QA Engineer в AlphaGrail_ai
Віталій Оборський, Head of Delivery & Ops в Developex
Олег Дмитренко, Software Engineer, Test в Lyft
Олекса Мащиць, Засновник в QA Україна, Бетельгейзе
Деталі події та реєстрація: https://betelgeuse.qaukraine.online/ai-meetup
5 308
Playwright отримав кілька корисних оновлень.
WebAuthn passkeys
Тепер можна тестувати passkeys без реального hardware key: через
browserContext.credentials тести можуть створювати й використовувати віртуальні credentials для navigator.credentials.create() та navigator.credentials.get().
Web Storage API
Зʼявився зручний доступ до localStorage і sessionStorage напряму з тестів:
await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token');
Network updates
apiResponse.securityDetails() та apiResponse.serverAddr() тепер доступні і для API responses.
Browser / Screencast
Додали нові опції для CDP artifacts, cursor decoration у screencast та timestamp для frames.
Test Runner
Оновили режими для video, додали expect.soft.poll(...), fullConfig.argv, fullConfig.failOnFlakyTests, покращили обробку AggregateError і ввели короткий CLI-прапорець -G для --grep-invert.
деталі тут: https://github.com/microsoft/playwright/releases/tag/v1.61.0