Обновить
Сначала показывать
Порог рейтинга
Уровень сложности

Разбор утечки памяти в StackExchange.Utils: как 4 КБ конфигурации съели 2 ГБ RAM

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели4.6K

Привет, Хабр! Я Антон Пронькин, разработчик в команде развития сервисов продаж для юридических лиц в Т-Банке.

Расскажу, как мы переносили конфигурационные данные в файлы и наткнулись на OOM-крэш, вызванный всего одним методом расширения. Добавление YAML-файла на 4 КБ съедало больше 2 ГБ RAM. При этом локально все работало, а падало только при прогоне тестов на пайплайне.

В статье — расследование с профайлингом, экспоненциальный рост памяти, фикс в одну строку и разбор особенности работы библиотеки StackExchange.Utils.

Читать далее

Новости

Особенности SRE в мобильном банкинге: подходы, вызовы и специфика

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели6.7K

Привет, Хабр! Я Степан Аксенов, SRE-инженер в Т-Банке. Эта статья — часть проекта «20 в 20», приуроченного к 20-летию компании: в рамках проекта специалисты из разных городов рассказывают о своей работе, инженерной культуре и о том, как устроены распределенные команды внутри большого бигтеха.

Однажды мы отключили проблемные функции на Android с помощью конфигурационной заглушки. Через 15 минут система зафиксировала резкий рост крашей — но уже на iOS. Оказалось, что решение, безопасное для одной платформы, сломало приложение на другой. 

Этот случай еще раз подтвердил, что mobile SRE не классический SRE и в нем нельзя полагаться на привычные практики. Нет ни отката, ни новых логов задним числом, ни полного контроля над средой. В статье — как мы адаптируем SRE-подходы под мобильный банкинг, где фронт работает на миллионах устройств, которые мы не контролируем.

Читать далее

Масштабирование Zeebe: от каскадных сбоев до 100 процессов в секунду через анализ ресурсов и тюнинг

Уровень сложностиСложный
Время на прочтение16 мин
Охват и читатели6.7K

Привет, Хабр! Мы — команда разработки кредитных продуктов для физических лиц в Т-Банке. Делимся опытом нагрузочного тестирования workflow-движка Zeebe (основы Camunda 8), который проводили, когда искали альтернативу Camunda 7.

Вокруг Zeebe ходит немало стереотипов: медленный, сложный в настройке, нестабильный. Но большинство мнений основаны на данных, актуальных для устаревших версий. Мы приняли во внимание развитие продукта и провели собственное исследование.

Читать далее

Perseus: фреймворк для универсальной персонализации на основе гетерогенных событий

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8.5K

Привет! Я Олег Лашинин, руковожу направлением рекомендательных систем в Т-Банке. Когда в экосистеме десятки сервисов — от покупки продуктов в супермаркетах до оформления ипотеки, хочется, чтобы модель понимала пользователя целиком, а не по кусочкам. Но каждая команда собирает свои данные, у событий разные схемы, а в новых сервисах нет истории. 

Большинство моделей было построено только на данных того сервиса, где они применяются. Мы решили эту проблему, объединив все действия пользователя в единую последовательность, и на ее основе построили фреймворк Perseus.  Он позволяет масштабировать ML персонализацию на разные продукты и сервисы компании, так как является гибким инструментов для работы с экосистемными данными. В разных задачах нам удалось сразу повысить бизнес-метрики от 3% до  17% — даже если у пользователя не было ни одной покупки.

Читать далее

T-Search: как мы обучали агента многошаговому поиску

Уровень сложностиСложный
Время на прочтение24 мин
Охват и читатели11K

Всем привет! На связи Толя Потапов, MLE в Т-Банке. Продолжаем развивать линейку открытых моделей Gen-T. Мы делились русскоязычными семействами моделей T-Lite и T-Pro. Сегодня выпускаем модель другого класса — T-Search. Это открытый агент-ретривер для сложного многошагового поиска.

T-Search Он построен на базе Qwen3.6-35B-A3B и обучен полностью на синтетических данных, которые мы генерировали под собственный харнесс. Важная особенность: T-Search не пишет финальный ответ, а отдает ранжированный список чанков, генерацию можно доверить любой модели под требования конкретного продукта.

Вместе с моделью выкладываем в open source два бенчмарка: TRuST — первый бенчмарк сложного агентского поиска на русском языке и SynthComp — синтетический бенчмарк на русском и английском, с фиксированными индексами.

В статье расскажу, как устроен харнесс, как мы построили фабрику синтетических поисковых задач с состязательным циклом проверок, какие решения принимали на SFT- и RL-стадиях и как мерили качество.

Читать далее

Как мы внедрили модель зрелости QA в 200 командах: от оценки до автоматизации

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.7K

Доброго времени, Хабр! Меня зовут Эдвард Аджей, я QA Head в Т-Банке. Год назад в одном из управлений было 17 команд с нулевым уровнем зрелости QA. Возникали сложности с автоматизацией, не велась работа с метриками качества и не было роадмапа развития процессов, накапливался техдолг по тестированию. Бесконтрольно формировался бэклог дефектов. 

За три квартала мы внедрили внутреннюю модель зрелости QMM — живой инструмент, который помог снизить количество пропущенных дефектов в проде в разы, поднять автоматизацию на 30—40% и сэкономить до 15% времени QA-инженеров. Работа функции по обеспечению качества стала управляемой и прозрачной.

Но самое неожиданное — не метрики. А то, как модель изменила культуру: команды перестали ждать указаний и сами начали проводить оценку по QMM, активно формировать планы развития.

В статье рассказываю, как мы строили модель, почему отказались от готовых решений, как автоматизировали оценку и какие подходы оказались ненужными продуктовым командам. А еще есть рабочий прототип, который можно запустить у себя.

Читать далее

Система растет там, где можно ошибаться. История из минского ИТ-хаба

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.8K

Привет, Хабр! Я Артем, групп-лид в Т-Банке. Я пришел в Т почти пять лет назад и с тех пор так или иначе всегда работал в домене «Кэшбэки» — одной из важных фич нашей экосистемы. А сегодня руковожу тремя стримами: кэшбэк-платформой, обработкой чеков для начисления кэшбэка и платформой доступности бонусных спецпредложений клиентам.

Моя статья — пятая в проекте «20 в 20» к 20-летию Т-Банка, в котором мы рассказываем об ИТ-хабах в разных городах и о людях в них. Сегодня — о минском ИТ-хабе, которому в этом году уже пять лет!

Начав в инфраструктурной команде, я прошел путь через роль SRE-лида на 20 команд, перешел в тимлидство команды разработки и дошел до руководителя нескольких команд. С каждым шагом менялся характер задач: от настройки конкретных сервисов — к выстраиванию процессов, от процессов — к работе с людьми, от работы с людьми — к работе с бизнес-результатом. 

В статье делюсь тем, как менялся мой взгляд на вопрос обеспечения надежности, с чем столкнулся, чему научился и что общего между работой инженера и менеджера.

Читать далее

Java Digest #37: что нового в JDK 27, Spring Boot 4.1 и Hibernate 8.0

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели11K

Всем привет! 👋👋👋👋👋Мы — Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске о том, что Java наконец-то делает шаг в будущее: value-классы впервые выходят в preview, а в JDK 27 по умолчанию включаются компактные заголовки объектов и G1. Наблюдаем сдвиг платформы в сторону производительности, безопасности и удобства.

Читать далее

Scala Digest. Выпуск 42

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели7.4K

Привет, Хабр! Мы НастяЭвелина и Михаил — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Timesблог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные материалы и собственные комментарии. Мотивацию черпаем из желания развиваться и делиться полученными знаниями.

Читать сорок второй выпуск

Лента роликов на iOS: опыт работы с AVPlayer

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.7K

Привет, Хабр! На связи Дмитрий Андриянов, iOS-разработчик команды Медиа Платформы в Т-Банке. Одна из наших ключевых задач — разработка видеоплеера для стриминговых видео, в том числе для приложения T-Инвестиций, где есть лента тематических роликов и обучающие видео в Академии.

В T-Инвестициях на iOS лента коротких роликов — это 90% трафика, именно ее оптимизации мы уделяем больше всего внимания. В первой версии пользователи могли ждать старта видео больше 15 секунд. Мы разобрались в ограничениях AVPlayer, оптимизировали буферизацию и снизили задержки на 12% в хвосте распределения. Рассказываю, как мы улучшали пользовательский опыт и почему AVPlayer не лучшее решение для ленты роликов.

Читать далее

Как мы строили команду Sage Observability: от хаоса к доменным командам

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.1K

Привет, Хабр! Я Максим, руковожу разработкой систем наблюдаемости и надежности в ижевском ИТ-хабе Т-Банка. Моя статья — часть проекта «20 в 20», в котором мы рассказываем о региональных ИТ-хабах и о том, как в них растут команды и инженерные практики.

Когда в 2019 году у нас внезапно исчез Splunk, мы столкнулись не только с технической, но и с организационной задачей. Нужно было за короткий срок построить собственную платформу наблюдаемости, которая выдержит нагрузку, не упрется в вендорский замок и сможет развиваться вместе с бизнесом.

Так появился Sage Observability — платформа, через которую мы видим состояние всего ИТ-стека: от инфраструктуры до бизнес-метрик, клиентских приложений и инцидентов.

Но сам продукт — только половина истории. Вторая половина — то, как мы строили команду вокруг него: как делили зоны ответственности, меняли процессы, внедряли архитектурный комитет, перераспределяли дежурства и учились работать распределенной командой без потери контекста.

Рассказываю свою историю, добро пожаловать под кат!

Читать далее

Как мы внедряли SLO в платформу, которая отвечает за наблюдаемость в банке

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели7.1K

Привет, Хабр! Я Руслан Боярский, SRE-инженер в Т-Банке, где мы строим и поддерживаем Sage — внутреннюю платформу наблюдаемости для 7 000+ инженеров. У нас собираются миллионы метрик в секунду, работают десятки тысяч алертов, и на нас завязаны решения о стабильности критически важных сервисов.

В какой-то момент мы задались вопросом: насколько на самом деле надежна наша платформа? У нас были SLA, но не было уверенности, что они отражают реальные ожидания пользователей.

В статье по мотивам моего доклада на DevOpsConf 2025 — наш путь от гипотез и «галлюцинаций» до рабочих SLO: как мы с помощью глубинных интервью с клиентами перестали гадать о надежности и начали измерять ее по-настоящему.

Читать далее

Как Angular v22 решил проблему дублирующихся host directives

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.7K

Привет, Хабр! Я Святослав Зайцев, занимаюсь разработкой Angular-приложений и внутренних библиотек компонентов в Т-Банке.

Недавно в Angular v22 появилось изменение, которое прошло почти незаметно на фоне более громких новинок. Тем не менее оно снимает одно из ключевых ограничений Directive Composition API.

Если вы используете hostDirectives для переиспользования поведения между директивами и компонентами, то могли сталкиваться с ситуациями, когда вполне логичная композиция внезапно заканчивалась ошибкой NG0309.

В статье разберем, почему так происходило раньше, что изменилось в Angular v22 и как новый механизм дедупликации host directives влияет на архитектуру компонентов и дизайн-систем.

Читать далее

Ближайшие события

Что делать, когда твои системы становятся legacy

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели9.4K

Всем привет. На связи Дмитрий Немчин из Т-Банка. Снова буду говорить про Greenplum, но в необычном контексте.

С 2015 года занимаюсь Greenplum: развитием, эксплуатацией, автоматизацией и всем, что обычно появляется вокруг большой аналитической платформы. Когда я пришел, у нас было два production-кластера Greenplum и десятки терабайтов данных. Сейчас production-кластеров около 20 и объемы данных измеряются петабайтами. За это время Greenplum прошел путь от небольшого DWH до центра крупной Дата Платформы. И сейчас это система, которая все еще держит большую часть нагрузки, но постепенно перестает быть точкой будущих инвестиций. 

Переход к такому состоянию системы часто воспринимается болезненно. Особенно если технология долго была центральной для команды и бизнеса. Но сам факт перехода в legacy не означает, что система была плохой или что работа команды обесценилась. Чаще наоборот: legacy становятся решения, которые долго работали, выдержали рост и успели стать частью критичной инфраструктуры. 

В статье хочу разобрать переход на примере Greenplum: что я называю legacy, почему технология начала ограничивать следующий этап роста, какие варианты были у команды и что происходит с людьми, когда привычная система постепенно уходит из фокуса развития. 

Читать далее

Как я стал Scala-разработчиком в Иннополисе

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели7.6K

Привет, Хабр! Я Иван Лягаев, Staff Scala Developer в Т-Банке. Живу и работаю в Иннополисе — самом молодом городе России, — рядом с Казанью.

Моя статья — часть проекта к 20-летию Т-Банка «20 в 20», в котором мы рассказываем об ИТ-хабах в разных городах и о людях, которые живут в этих инженерных сообществах.

Казань и Иннополис для нас — важная точка на ИТ-карте. В регионе сильная образовательная база: Университет Иннополис, КФУ, ИТИС, ИВМиИТ и другие технические школы. Здесь сформировался конкурентный рынок, работают крупные ИТ-компании, а вокруг развивается активное профессиональное сообщество.

Для меня этот регион стал не просто местом работы. Здесь я поступил в университет, выбрал Scala, пришел в Т-Банк, поучаствовал в переписывании сложной банковской системы с нуля и перешел в техническую команду, которая делает инструменты для разработчиков внутри Т-Бизнеса.

В статье рассказываю, как так получилось.

Читать далее

Как мы сломали модель данных из-за TTL в Cassandra

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.2K

Привет! Я Павел Кокошников, главный разработчик в контактных политиках Т-Банка. Расскажу про кейс с Cassandra. Базу мы выбрали неслучайно: под наш профиль нагрузки, модель доступа и требования к TTL она подходила хорошо. Уже в работе обнаружилась одна особенность TTL, которую мы упустили на этапе проектирования. Из-за нее в полностью исправной базе появлялись логически битые строки.

В статье разберу, как была устроена модель данных, в чем оказалась проблема, какие варианты решения мы рассматривали и какое выбрали в итоге.

Читать далее

Java Digest # 36: график выхода JDK 27, Spring Framework 7 в деталях и постмортем OOMKill после миграции на JDK 17

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели8.5K

Всем привет! 👋👋👋👋👋 Мы — Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске разбираем, почему G1 в JDK 27 окончательно прописывается дефолтным сборщиком мусора, и смотрим, что там с очередным, двенадцатым по счету инкубатором Vector API (спойлер: все по-прежнему ждем Valhalla). Заглянем в Netflix, посмотрим, как раскатили AOT из Project Leyden в прод и срезали время старта сервисов на 15—20%. Поговорим про то, как снимать heap-дампы с прода и не получить по шапке от безопасников, а заодно разберемся, зачем вообще были нужны гибкие конструкторы из Java 25. Посмотрим обзор фич Java 26 от Николая Парлога. Из любопытного — статья, где автор 18 месяцев гонял на проде два одинаковых сервиса на Spring Boot и Node.js и в итоге насчитал разницу в 24 тысячи долларов. Ну и пробежимся по свежим релизам: Micronaut 5.0, Quarkus 3.35 и 3.36, Spring AI и не только. Поехали!

Читать далее

Scala Digest. Выпуск 41

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.3K

Привет, Хабр! Мы Настя, Эвелина и Михаил — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные материалы и собственные комментарии. Мотивацию черпаем из желания развиваться и делиться полученными знаниями.

Поздравляем читателей с первым днем лета, желаем кайфовой разработки, интересных материалов и комфортных перерывов под летним солнцем!

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать сорок первый выпуск

Велосипед для жрицы Трои, или как мы переизобретали Outbox для нетранзакционной базы данных

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.6K

Привет, Хабр! На связи системный аналитик Илья Глазунов и разработчик Захар Корсаков. Мы работаем с платформой карточного хранилища Т-Банка.

Когда данных становится много, а архитектура обязана оставаться простой, классические решения начинают упираться в ограничения стека. В нашем случае нужно было организовать асинхронную доставку событий из Cassandra, но без CDC, без отдельного брокера и без разрастания зоопарка технологий. Так мы пришли к Non-transactional Outbox — схеме, которая по духу напоминает Kafka Inside the Database, но живет в рамках наших ограничений и требований к отказоустойчивости.

В статье покажем, что такое Outbox, с чем его едят и как готовят. Расскажем допущения по реализации в нашем случае, вытекающие из отличий от классического паттерна Outbox. Обрисуем ту реализацию, которую сделали своими руками, и покажем бенчмарки нагрузочного тестирования. В конце поделимся списком вопросов, которые возникали чаще всего при обсуждении решения внутри банковского сообщества Apache Cassandra.

Читать далее

Как мы четыре раза переписали Outbox

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели9K

Привет! Я Ильдус Тукаев, разработчик в команде образовательной платформы Т-Банка. Мы помогаем школьникам, студентам, молодым специалистам и сотрудникам получать знания и качать свои софт и хард навыки. Основной язык у нас Go, но сегодня расскажу больше про архитектурную тему: как у нас в команде использовался паттерн Outbox и как он эволюционировал.

За полтора года реализация Outbox прошла четыре итерации. По пути мы ловили VACUUM, который останавливал сервис на три часа, теряли 5% событий за полтора дня и заваливали поддержку обращениями. Расскажу, какие реализации мы пробовали, на какие грабли наступали и почему остановились на варианте, который сами же не считаем идеальным.

Читать далее
1
23 ...