backend. - страница 2

SLA как инструмент, а не отчёт

Часть 2. Масштабирование, автоматизация, AI и два компонента надёжностиЭто вторая часть разбора того, как мы выстраивали SLA и инцидент-менеджмент в большом продукте.Меня зовут Дмитрий Химион, я руководитель ML Platform в X5 Digital. В первой части я рассказал, как мы пересобрали инцидент-менеджмент как процесс и внедрили единый алгоритм расчёта потерь, позволивший бизнесу и командам прийти к общему знаменателю.

продолжить чтение

Зачем backend разработчику Python, если он не собирается становиться data scientist

Начал смотреть в сторону Python не потому, что захотел стать data scientist.Мой основной опыт обычный back C#/.NET, банковские системы, REST API, микросервисы, Kafka, PostgreSQL, Docker/OpenShift, CI/CD и сопровождение. Позже добавилась Java/Spring Boot. То есть моя базовая картина мира это не notebooks и не обучение моделей а сервисы, интеграции, продакшен, логи и ответственность за результат.Но когда я начал разбираться с LLM быстро понял, вызвать модель можно почти из любого языка, а вот руками понять RAG, embeddings, локальные модели, чанкинг, evaluation и большинство новых AI инструментов проще всего через Python.

продолжить чтение

Кейс. Zero Bug Policy: как мы снизили бэклог багов в 4 раза за месяц

Баги — неизбежная часть разработки. В этой статье расскажу наш опыт: как мы внедрили Zero Bug Policy в MetaMap (B2B fintech, ~200 человек в IT, распределённая команда, скоринг благонадежности заёмщиков через ML) и за месяц сократили бэклог с 77 до 18 багов. А главное — как это изменило культуру и отношения с клиентами.Проблема: баги по принципу «кто громче»

продолжить чтение

Почему проекты превращаются в спагетти даже у хороших программистов

Когда программист впервые слышит слово «архитектура», он обычно представляет что-то скучное: диаграммы, стрелочки, коробочки, совещания на три часа и человека, который запрещает писать код.А потом проходит несколько лет.И внезапно оказывается, что проект, который «быстро накидали», начинает разваливаться от любого изменения.Добавили одну кнопку — сломался импорт. Поменяли отчёт — умерла авторизация. Обновили библиотеку — перестала открываться половина форм.И начинается археология.Почему так происходит?

продолжить чтение

Федеративное обучение в условиях дефицита памяти на Edge-устройствах. Часть 1

Если ваше устройство думает, что 1 ГБ — это ругательное слово, то этот доклад в двух частях для вас.

продолжить чтение

Возвращение блудного программиста (ч.2)

Предыстория тут. Первые ощущенияПервый шагШаг 2Снова шаг 2ОзарениеПросто ещё один проектЗаключениеПервые ощущения

продолжить чтение

Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы

System prompt — это просьба. Guardrails — это принуждение.1. ВведениеКогда я впервые внедрял LLM в production-сервис, схема безопасности выглядела примерно так: написать хороший system prompt, поставить галочку «мы всё предусмотрели» и жить дальше. Жизнь не дала долго наслаждаться этим спокойствием — первый же тест показал, что пользователи довольно быстро находят способы заставить модель «забыть» всё, что мы написали в системном промпте.Проблема фундаментальная: system prompt — это инструкция, которую LLM старается выполнить, но не обязан

продолжить чтение

AI без Python: как исправить документацию и внедрить RAG в JVM-стеке

Привет, Хабр! Меня зовут Дмитрий Вдовин, я техлид команды Budget Tool. Мы отвечаем за продукт, через который в банке проходят процессы планирования и контроля расходов. Это внутренняя система, в которой формируются бюджеты, согласуются изменения и фиксируются расходы по направлениям. У нас много терминов, правил и нюансов. Например, чем OPEX отличается от CAPEX, зачем нужны кост-центры и группы расходов, что такое аллокация и реаллокация, как заполнять бюджет.

продолжить чтение

Обходим российские блокировки и шлем РКН куда подальше

база? база.

продолжить чтение

Асинхронность в Python для senior interview: от asyncio до выбора правильной реализации под задачу

Каждый Python-разработчик знает базовую формулу: asyncio нужен для I/O, потоки ну тоже иногда, процессы — для CPU-bound. На собеседовании такого ответа хватает ровно до первого уточняющего вопроса.А потом начинаются уже интересные вещи.Почему await не делает код параллельным?Почему асинхронный код всё равно может полностью положить event loop?Чем Task отличается от Future не на уровне "одно ждёт другое", а на уровне устройства рантайма?Что именно делает цикл событий, когда вы пишете await asyncio.sleep(1)?Почему в одном месте нужен create_task, в другом — TaskGroup

продолжить чтение