Как мы уронили сервис и подняли его с помощью кэша
В одном из наших внутренних сервисов случилась беда: при расчёте проектов он начал падать с ошибкой памяти. Начали разбираться — оказалось, за один расчёт сервис макропараметров дёргался до 3000 раз. И каждый раз он честно ходил в базу, что‑то там искал, отдавал и в какой‑то момент просто не выдерживал.
Нужно было что‑то делать. И желательно без долгих переписываний.
✅ Первая мысль — кэш
Обычно в таких случаях ставят MemoryCache: сохранили данные — при повторном запросе отдали из памяти. Но есть нюанс: логика кэширования ложится на разработчика. Нужно писать код, проверять, сохранять, думать, когда инвалидировать.
И тут мы наткнулись на OutputCache. Штука, которая появилась в .NET 8, и она работает хитрее: кэширует не просто данные, а целиком HTTP-ответ.
Как это выглядит⬇️
Прилетает запрос — OutputCache смотрит: а нет ли у меня уже готового ответа на точно такой же запрос? Если есть — сразу отдаёт, даже не дёргая контроллер и не выполняя бизнес-логику. Если нет — пропускает запрос дальше, а ответ сохраняет.
Звучит просто, но разница колоссальная:
— код не меняется вообще (ну почти),
— путь запроса становится короче,
— сервер меньше грузится.
Но есть подводный камень❤️🩹
OutputCache кэширует ответ целиком. Вместе с заголовками. А значит, если не настроить политики, можно случайно «склеить» разных пользователей и отдать одному — куки другого. Пришлось аккуратно прописать, что именно учитывать при формировании ключа кэша: параметры маршрута, query-параметры, а для POST-запросов — ещё и тело.
Что получили
〰️ До внедрения: тяжёлый метод GetMacroVersionData за 7 минут разогревался до 12 секунд ответа.
〰️ После: стабильные 32 миллисекунды на протяжении 15 минут.
И да, сервис перестал падать.
📎 Кстати, про управление кэшем
Чтобы сбрасывать устаревшие данные, мы повесили теги. В OutputCache есть такой механизм управления кэшем. Можно сбросить всё разом, можно только то, что связано с макропараметрами, можно — конкретные данные внутри. Удобно и гибко.
В одном из наших внутренних сервисов случилась беда: при расчёте проектов он начал падать с ошибкой памяти. Начали разбираться — оказалось, за один расчёт сервис макропараметров дёргался до 3000 раз. И каждый раз он честно ходил в базу, что‑то там искал, отдавал и в какой‑то момент просто не выдерживал.
Нужно было что‑то делать. И желательно без долгих переписываний.
Обычно в таких случаях ставят MemoryCache: сохранили данные — при повторном запросе отдали из памяти. Но есть нюанс: логика кэширования ложится на разработчика. Нужно писать код, проверять, сохранять, думать, когда инвалидировать.
И тут мы наткнулись на OutputCache. Штука, которая появилась в .NET 8, и она работает хитрее: кэширует не просто данные, а целиком HTTP-ответ.
Как это выглядит
Прилетает запрос — OutputCache смотрит: а нет ли у меня уже готового ответа на точно такой же запрос? Если есть — сразу отдаёт, даже не дёргая контроллер и не выполняя бизнес-логику. Если нет — пропускает запрос дальше, а ответ сохраняет.
Звучит просто, но разница колоссальная:
— код не меняется вообще (ну почти),
— путь запроса становится короче,
— сервер меньше грузится.
Но есть подводный камень
OutputCache кэширует ответ целиком. Вместе с заголовками. А значит, если не настроить политики, можно случайно «склеить» разных пользователей и отдать одному — куки другого. Пришлось аккуратно прописать, что именно учитывать при формировании ключа кэша: параметры маршрута, query-параметры, а для POST-запросов — ещё и тело.
Что получили
И да, сервис перестал падать.
Чтобы сбрасывать устаревшие данные, мы повесили теги. В OutputCache есть такой механизм управления кэшем. Можно сбросить всё разом, можно только то, что связано с макропараметрами, можно — конкретные данные внутри. Удобно и гибко.
Please open Telegram to view this post
VIEW IN TELEGRAM
У нас на созвоне
обсуждали, что читают в Simpl
Спросили коллег, что они прочитали за последний месяц, и составили подборку! Все рекомендации в карточках⬆️
↗️ Пополняйте вишлист новыми произведениями! Желаем продуктивной недели.
обсуждали, что читают в Simpl
Спросили коллег, что они прочитали за последний месяц, и составили подборку! Все рекомендации в карточках
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7 7❤3
Как вы думаете, что сейчас помогает стажёрам в IT‑компаниях остаться в штате?
И этот вопрос мы слышим вновь и вновь от наших ребят-практикантов, которые пришли в Simpl попробовать свои силы на проектах. Отвечаем!
Просто «хорошо кодить» уже не хватает. Многие руководители признаются: при одинаковом техническом уровне в команде остается не самый «гений», а тот, с кем комфортно работать. То есть реально совпасть с командой и руководителем в метч!💻
И самое важное — вовлеченность. Когда видно, что человеку действительно интересно: он хочет разобраться, понять, сделать лучше, а не просто «отсидеть практику».😄
Такие студенты быстро становятся частью команды, им начинают доверять задачи, подключать к серьезным задачам и, в итоге, предлагают остаться.
А вы что добавили бы в этот список? 👇
И этот вопрос мы слышим вновь и вновь от наших ребят-практикантов, которые пришли в Simpl попробовать свои силы на проектах. Отвечаем!
Просто «хорошо кодить» уже не хватает. Многие руководители признаются: при одинаковом техническом уровне в команде остается не самый «гений», а тот, с кем комфортно работать. То есть реально совпасть с командой и руководителем в метч!
Что реально помогает:✳️ Инициативность — когда стажёр не ждёт задач «сверху», а сам спрашивает, чем может помочь, и предлагает маленькие улучшения.✳️ Умение задавать вопросы — не молчать неделями, а быстро прояснять, что непонятно, и не стесняться признавать ошибки.✳️ Коммуникация — держать контакт с наставником и командой, умение договориться о сроках и честно сказать, если что-то не получается сделать вовремя.✳️ Обучаемость — видно, что человек впитывает обратную связь и через месяц делает задачи уже заметно лучше.
И самое важное — вовлеченность. Когда видно, что человеку действительно интересно: он хочет разобраться, понять, сделать лучше, а не просто «отсидеть практику».
Такие студенты быстро становятся частью команды, им начинают доверять задачи, подключать к серьезным задачам и, в итоге, предлагают остаться.
А вы что добавили бы в этот список? 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6 6🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
Аналитики мы хотим вам сказать…
Что вы нам очень нужны! Именно те, которые сейчас находятся в поиске работы или хотят ворваться в новый проект! А также мы в поисках крутого ML-разработчика.
Знаете тех, кому актуальны вакансии? Поделитесь с ними этим постом!
🟥 ML-разработчик
🟥 Старший системный аналитик (AI-чат-бот / AI-агент)
🟥 Продуктовый аналитик (проектно)
🟥 Ведущий фуллстек аналитик
🟥 Аналитик (СПб)
👉 Оставляй отклик HR сразу в телеграмм и не забудь прикрепить резюме!
@Yasyreva_N - Наталья
#simpl_вакансии
🗣 Наш созвон | МАХ | VK
Что вы нам очень нужны! Именно те, которые сейчас находятся в поиске работы или хотят ворваться в новый проект! А также мы в поисках крутого ML-разработчика.
Знаете тех, кому актуальны вакансии? Поделитесь с ними этим постом!
@Yasyreva_N - Наталья
#simpl_вакансии
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥11🦄6 5🤩1
Media is too big
VIEW IN TELEGRAM
Как студенту стать частью команды?
Прийти на стажировку или практику в компанию и впервые почувствовать себя частью корпоративной жизни, начать вникать в процессы и понять, как устроен бизнес изнутри — задачка для студентов непростая. Приходится быстро учиться и моментально впитывать информацию, чтобы не отставать от ритма.
😛 Но что дальше? Как из практиканта превратиться в полноценного сотрудника, которого ценят и с которым хотят работать дальше? Об этом мы решили спросить у того, кто сам прошёл этот путь.
↘️ Илья, младший руководитель проектов в Simpl, когда-то тоже был у нас стажёром и видео рассказывает про свой путь и что сейчас входит в его обязанности — смотрим!🫡
🗣 Наш созвон | МАХ | VK
Прийти на стажировку или практику в компанию и впервые почувствовать себя частью корпоративной жизни, начать вникать в процессы и понять, как устроен бизнес изнутри — задачка для студентов непростая. Приходится быстро учиться и моментально впитывать информацию, чтобы не отставать от ритма.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14 9❤8
Коллеги, вас сняла скрытая камера 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from RED CUP | Пермь
This media is not supported in your browser
VIEW IN TELEGRAM
Готовая еда на Морионе уже в RED CUP ❤
Хватит ломать голову над тем, что взять на обед!
Идеально, когда: — нет времени выходить далеко — созвон через 10 минут — хочется поесть по-человечески, а не печеньки с чаем
Отличный план спасения в будни на работе 🙌
Команда Simpl уже давно выбрала RED CUP постоянным местом для обедов❣️
Хватит ломать голову над тем, что взять на обед!
В RED CUP можно просто взять готовую еду с собой: нормальный обед, горячее, салаты — без ожидания.
Идеально, когда: — нет времени выходить далеко — созвон через 10 минут — хочется поесть по-человечески, а не печеньки с чаем
Отличный план спасения в будни на работе 🙌
Команда Simpl уже давно выбрала RED CUP постоянным местом для обедов
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы решили этой весной освоить огород, но привыкли управлять задачами, а не тяпкой, — не переживайте. Дача легко укладывается в знакомую проектную логику. Вот как это выглядит в реальных действиях.👆🏻
Так что берите в руки не только ноутбук, но и секатор. Проектное мышление отлично работает и на грядках. Удачных посадок и стабильных релизов! 🌱
Так что берите в руки не только ноутбук, но и секатор. Проектное мышление отлично работает и на грядках. Удачных посадок и стабильных релизов! 🌱
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13🔥6❤3 3