Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!28.12.2022
Покращення для gRPC сервера на Ruby - Gruf
🎄🎅🎁 Сьогодні день покращення нашого gRPC сервера. Саме те, чим варто займатися в новорічний сезон — дрібна задача, на яку зазвичай не вистачає пріоритету.
gRPC сервер, як я вже писав, на gruf. Перше, що бісило — це кепська робота перезавантаження коду у режимі розробки. Причина — відсутність засобів безпеки при паралелізації. Якщо клієнт робив паралельно декілька запитів, то кожний запит окремо викликав перезавантаження, та це призводило до помилок на кшталт “Невизначений клас”. При чому якийсь мьютекс у коді був присутній. Тільки він не покривав весь код, що перезавантажується. Я взяв інструкцію по конкуренції Zeitwerk (Zeitwerk - то гем, що забезпечує перезавантаження коду як для Gruf, так і для Rails.) та зробив по неї. Вийшов отакий святковий PR.
Далі, оснастив сервер інтеграцією з Sentry. Ми її втратили при переході з самописного сервера на Gruf. Та якось далі жили без неї, бо помилки все одно реєструвались з клієнта. Але це було незручно — помилки втрачали свій стектрейс та контекст. Нарешті, приєднав офіційну інтеграцію gruf-sentry.
І третє — увімкнув також моніторинг швидкодії також від Sentry. Чому не New Relic? Тому, що у нас він на власному сервері, тож це виходить “безплатно”. New Relic на наших обсягах виходить дорого. Та й моніторинг потрібен суто базовий.