From A | Все про IT
Open in Telegram
Привіт. Я Артур — Software Architect, Head of Engineering, Ph.D. Пишу про програмування, тестування, автоматизацію, архітектуру та айтішку. По питанням пишіть @ar2r_s
Show more5 302
Subscribers
-224 hours
+147 days
No data30 days
Posts Archive
5 302
там Playwright бухнув нову версію 1.63
Що цікавого:
• Test Locks - тепер можна блокувати паралельний запуск тестів, які працюють зі спільним ресурсом
•
frameLocator() без selector
• новий locator.visible()
• test.step() отримав subtitle та params
• tracing тепер окремо підтримує DOM, ARIA та screenshots
• typed response.json() для API tests
• новий Perfetto reporter для аналізу test execution timeline
• duration waterfall у HTML report
• нові accessibility options: reducedMotion, forcedColors, contrast
На мій погляд, головна тема цього релізу - керування concurrency + observability тестів.
Особливо варто подивитися на Test Locks для shared resources, якщо ваш regression suite уже великий і повільний.
як доу опублікує - тут чуть більше буде інфи https://dou.ua/forums/topic/61801/5 302
думки про які не питали:
знаєте, з всім цим несущімся поєздом АІшки я вчора вночі помітив одну штуку яка мене дуже сильно засмутила.
стан потоку.
коли останній раз ви відчували себе у саме цьому стані потоку? памʼятаєте оце от? навіть коли АІшка була ще тіки на стадії автокомпліту, ми часто входили в стан-потоку. коли ти настільки сфокусован над задачею, рішенням, думками шо у тебе образується певний корідор зору навіть і ти під улюблену музику робив вальс з клавішами і кайфуешь від процесу...
ось цей стан покинув чат.
останній час це все перетворилось у - дав задачу, описав, чекаєш поки клавдія над нею працює 15-20-30хв і втикаєш в монік в цей час(або переключився на іншу задачу і так само втикаєш), ADHD-розробка якась, бляха. дав таск-переключвся-дав паралельний таск - переключився - дав інший таск - переключився. і в тебе в паралеллі 3-5-7 задач а мозок після 5 годин таке враження шо відпахав три зміни. тіпа сам стан потоку у тебе зараз взагалі не присутній. бо ти по суті дав шось і далі в режимі очікування стаєш. як оргазм який ось ось прийде і тут міняють тем чи зупиняються 😄 короч розробка перетворилась в якесь проксі-простітутсво де ми ублажаєм АІ.
шо з цим робити? понятно шо адаптуватись або здохнеш.
але цікаво чи це тіки в мене так чи ви теж відчуваєєте шо кайфу від такого операторства стає все менше ?
5 302
👀 Linux, RTOS та Bare Metal: де використовуються, як обрати та як тестувати?
9 вересня на єТЕМІ команда SQUAD вже традиційно ділитиметься своїми знаннями та інсайтами, але вперше — офлайн у Львові!
Приєднуйтеся до мітапу, щоб:
— обговорити особливості Linux, RTOS та Bare Metal і сфери їх використання,
— визначити, коли обирати RTOS, а коли Embedded Linux,
— дізнатися, як тестувати обрану систему,
— поставити запитання спікерам і почути відповіді напряму.
📅 9 вересня, 19:00
📍 Львів, безпечний простір SQUAD
💻 Онлайн-трансляція для тих, хто не може долучитися фізично
🙌 Участь безкоштовна
Реєструйтеся на подію 👈🏻
5 302
шановне паньство. маю 2 круті ваки для вас.
контора велика хароша денег дають багато.
• senior python backend
• senior fullstach (python+react)
маякніть в пріваточку ребюзме. мені рефералочка - вам хороша работа 🙂
5 302
Актуальні пропозиції від UPSTARS ⭐️
UPSTARS – продуктова IT-компанія, з якою злітають і люди, і бренди. Запускаємо технологічні рішення та B2B-сервіси для міжнародних клієнтів у сфері iGaming. Бренди, які використовують наші рішення, здобувають топові галузеві премії та найвищі оцінки у профільних міжнародних рейтингах.
↳ Junior Account Farmer
↳ Middle Marketing Data Analyst
↳ Middle Atlassian Cloud Administrator
↳ Senior SEO Specialist
↳ Product Team Lead
Ждем твій відгук. Або зроби репост другу, який ідеально сюди метчиться 😉
Більше відкритих ролей – за посиланням або Career bot
Talent Network | Career | Карʼєрний сайт
5 302
WAWTech повертається!
26-27 листопада DOU організовує другу конференцію для 5000 айтівців у Варшаві!
🔥 50+ спікерів з Netflix, Zendesk, Superhuman, Agoda та ще багато інших!
⚡ 4 сцени, 6 технічних треків
🛠️ Зона воркшопів
🤝 Job Speed Dating
👥 Окремий день мітапів
🎉 Afterparty та багато нетворкінгу
Попереду ще багато гучних анонсів!
📍Варшава, EXPO XXI
Забирайте квиток за найнижчою ціною — від €78: https://dou.ua/goto/wawtech26
ДОРЕЧІ ЗАВТРА (1 вересня) ціна підіймається
Побачимось на конфі <3
5 302
Підписники стало цікаво от. Зараз про АІшку талдичуть з усіх кутків у контексті розробки. Але я шось мало чую про АІшку у машинах.
Уявіть шо у вас є авто вашої мрії. Які б АІ фічі ви б хотіли в ній мати. Цікаво послухати почитати б було. Го в коментарі 🙂
5 302
Простими словами про патерни. Сьогодні про Claim Check.
На вокзалі здаєш важку валізу у сховище а натомість береш крихітний номерок - і гасаєш по місте без вантажу. Claim Check - той самий номерок: важкі дані лежать у сховищі, а листом їде лише малесенький ключ.
Велике тіло повідомлення (файл, зображення, важкий JSON) впирається в ліміти брокера й гальмує його. Тягати таке через чергу - погана ідея.
Рішення: кладемо навантаження в зовнішнє сховище (S3, БД), а в повідомлення лише "квиток", тобто ключ-посилання. Отримувач за потреби "виколупує" дані за ключем. Через брокер їде тільки малий ключ.
• великі дані рухаються повз брокер
• малі повідомлення - вищий throughput
• дані тягнемо лише коли вони справді потрібні
• сховище чистимо за TTL
#мікросервіси #архітектура #systemdesign #microservices #патерни
5 302
З Днем Незалежності України! 🇺🇦
Нехай наша країна має надійну архітектуру, де фундамент - це свобода, гідність і єдність, а кожен українець - важливий компонент великої системи.
Щоб майбутнє України ми програмували власноруч - без багів, чужих залежностей і deprecated-рішень. Щоб усі виклики проходили unit, integration та stress testing, а незалежність завжди мала статус Passed ✅
Нехай наш спільний код буде чистим, архітектура стійкою, тести зеленими, а головний реліз - Перемога та мирна, сильна Україна - успішно вийде в production! 💙💛
Слава Україні! 🇺🇦
5 302
Простими словами про патерни. Сьогодні про Dead Letter Queue (DLQ).
У тебе є дублікат ключа. Намагаєшся відкрити двері а воно все не відкриває - і так і сяк а воно не піддається. Кидаєш цей ключ в коробку "розберуся потім" і спокійно відкриваєш іншим який відкривав до цього, щоб не застрягнути в проході. Dead Letter Queue - та сама коробка для повідомлень, які вперто не обробляються.
«Галіме» (poison) повідомлення - з поганими даними чи стійкою помилкою - падає раз за разом. Воно не має ні блокувати чергу, ні губитися.
Рішення: даємо повідомленню обмежену кількість спроб (retry). Вичерпали - перекладаємо його в окрему чергу, Dead Letter Queue. Основна черга рухається далі, а "мертве" повідомлення збережене для розбору й повторного оброблення.
• обмежені retry, далі - у DLQ
• основна черга не блокується
• проблема лишається видимою для аналізу
• повтор із DLQ має бути ідемпотентним
DLQ без моніторингу - це смітник, тому думаємо про алертінг.
#мікросервіси #архітектура #systemdesign #microservices
5 302
🟣 Цікаві пропозиції від UPSTARS 🟣
UPSTARS – продуктова IT-компанія, з якою злітають і люди, і бренди. Команда створює технологічні рішення та B2B-сервіси для міжнародних клієнтів.
Ваша наступна роль може починатися з цього допису:
🔸 Senior Backend Developer
🔸 Senior Security Engineer (SecOps)
🔸 Senior Ruby Engineer
🔸 SRE Team Lead (GameDev)
🔸 Senior Site Reliability Engineer
Відчуваєш метч? Нумо знайомитися ✨
Talent Network | Career | Карʼєрний сайт
5 302
Простими словами про патерни. Сьогодні про Service Discovery.
В онлайн-грі список кентів показує, хто зараз онлайн - хтось зайшов, вийшов, список оновлюється сам. Service Discovery - такий же живий реєстр: знає, які сервіси працюють і за якою адресою.
У хмарі чи кубіку адреси сервісів(IP/порт) постійно змінюються - сервіси стартують, падають, масштабуються. Статичний список адрес не варік: клієнт має щоразу знайти живий екземпляр.
Робимо реєстр сервісів - живу базу екземплярів та їх адрес. Екземпляри реєструються самі і шлють heartbeat-и; реєстр кікає мертвих. Клієнт питає реєстр і дістає лише здорові екземпляриі і балансує між ними.
Тіки-но з'являються нові репліки, клієнти бачать їх автоматично, без зміни конфігурації. Існує два стилі:
• client-side - клієнт запитує реєстр і балансує;
• server-side - за нього це робить балансувальник або DNS.
Реєстр - критична інфраструктура: без HA(хай евейлабіліті) його падіння зупиняє все виявлення.
5 302
Ітак откриваю нову рубріку : айтішні кошмари. Сьогодні наснилось шо здаю екзамен по структурам даних і жостка фейлю на самих тупих питаннях.
А чи снились вам айтішні кошмари? Цікаво стало
5 302
Простими словами про патерни. Сьогодні про API Gateway.
Заходиш у лікарню - не бігаєш сотнею кабінетів, а йдеш до реєстратури, і вона скеровує куди треба. API Gateway - ті самі єдині двері: клієнт стукає раз, а шлюз розкидає запит по сервісах.
Різні клієнти без АРІ гейтвею вони будуть викликати десятки дрібних сервісів. Клієнт мусить знати їхні адреси, робити купу мережевих ходів і зшивати відповіді сам.
Ставимо перед сервісами API Gateway - єдину точку входу. Він:
• маршрутизує запити до потрібних сервісів;
• агрегує кілька відповідей в одну;
• транслює протоколи (REST → gRPC);
• бере на себе: автентифікацію, TLS, ліміти, логування.
Клієнт робить один виклик - внутрішня декомпозиція лишається невидимою за стабільним контрактом. Варіант BFF: окремий шлюз під кожен тип клієнта.
Не кладемо в шлюз бізнес-логіку - стане новим монолітом. І тримаємо його stateless у N репліках: він на критичному шляху кожного запиту.
#мікросервіси #архітектура #systemdesign #microservices #apigateway #api #патерни
5 302
Мені інколи здається шо люди які пишуть спагетті код, без патернів де треба, з купою дублікатів, без думок про розширення просто таким чином виражають якийсь протест. Фізично больно таке читати прям
5 302
У мене часто вживалось слово - компенсаторна подія
Уявіть, що банк помилково зняв з вашого рахунку 30 грн: у журналі вже є подія ЗНЯТЬ_БАБЛО(30). У звичайній базі ви б просто виправили число або видалили рядок. В event sourcing так робити не можна - журнал append-only, історію не переписують. Тож помилку виправляють так само, як у бухгалтерії - дописують у кінець журналу нову подію, яка скасовує попередню. Наприклад, ПОВЕРНУТИ_БАБЛО(30) (повернення помилково знятих 30 грн). Після згортки баланс знову вірний, але в історії видно і помилку, і її виправлення - хто, коли і чому. Саме це і є компенсаторна подія: "виправлення" записане як ще один факт, а не як редагування минулого.
Це та сама ідея, що й компенсаційні транзакції в Saga - не "відкотити", а "зробити протилежну дію".
5 302
Простими словами про патерни. Сьогодні про Event Sourcing.
Інколи хотілось би відмотати час назад та деякі речі відтворити знову. Наприклад купити біткоїни. Event Sourcing — саме про це: сервіс тримає не «як зараз», а весь список подій і щоразу вираховує стан із них.
Класичне сховище зберігає лише поточний стан і затирає, як ми до нього дійшли. Історія, аудит, "а що було у минулий вівторок?" - усе втрачено назавжди.
Рішення: зберігаємо не стан, а послідовність подій, що його змінюють. Сховище подій - append-only: події незмінні, їх лише дописують. Поточний стан обчислюють, згортаючи (fold) події агрегату; Ну і для оптимізації робимо знімки (snapshots) які пришвидшують відтворення.
Події - це наше єдине джерело істини. Тож будь-яку модель для читання можна перебудувати, просто відтворивши журнал. Бонус - запити по часу: відтворити стан на будь-який момент у минулому.
"Виправлення" - це нова компенсаторна подія, а не редагування старої. І звінсо плануємо еволюцію схеми: старі події треба вміти читати завжди (версіонування/upcasting).
#мікросервіси #архітектура #systemdesign #microservices #data #eventsourcing #патерни
