За время работы с backend‑разработкой я реализовал достаточно REST API и TODO‑подобных приложений. На них удобно отрабатывать HTTP, взаимодействие с базой данных, разделение приложения на слои и обработку ошибок. Однако в какой‑то момент задачи начинают повторяться и сводиться к одному сценарию:принять данные → сохранить в базе → вернуть ответ;принять запрос → получить данные из базы → вернуть ответ.Такой опыт создаёт необходимую основу, но почти не затрагивает долгоживущее состояние, конкурент…
Все сейчас пилят ИИ-агентов, но когда их становится больше трех, начинается ад. Протокол MCP (Model Context Protocol) частично решает проблему, но готовых инструментов для глобальной оркестрации, настройки прав (RBAC) и визуального контроля логики на рынке просто нет. Мы задолбались собирать костыли и решили написать свой кастомный хабПочему я выбрал для бекенда именно GoКогда мы говорим об оркестрации ИИ агентов важным становится конкурентность, предсказуемое потребление памяти и скорость сете…
Мой первый KitRover: попытка сделать машинку с управлением по сети (часть 1)Мой первый KitRover: попытка сделать машинку с управлением по сети (часть 2)ВступлениеВ предыдущей статье рассказал, как сделал управление с телефона. Теперь можно управлять машинкой в пределах комнаты, но для выезда за её пределы, хотелось видеть, куда движется устройство на экране. Чем я и начал заниматься дальше.LiveKitНастраивая звонки для одного из сервисов, я познакомился с проектом LiveKit. Несложно поднять в Doc…
telEgo - шустрый Telegram прокси на Go, в последней версии которого появилась поддержка всех четырёх WEB протоколов.Telegram Desktop теперь умеет подключаться через WEB proxy. Снаружи такое соединение выглядит как работа обычного сайта: клиент открывает HTTPS-страницу в браузере, а она становится транспортом между Telegram Desktop и прокси.У тех, кто уже держит свой MTProxy, сразу возникает практический вопрос: что делать с портом 443? Его нельзя одновременно отдать MTProxy и Nginx. Переносить …
Продолжение первой и второй частей. В первой мы развернули двухуровневую инфраструктуру: Root CA и три промежуточных центра — Person, Server и Code. Во второй научились отзывать сертификаты, раздавать CRL и подняли OCSP-responder. В самом начале первой части я обещал «беспарольный вход в админку». Пришло время его получить.Как и предыдущие части, статья задумана как подробное пособие: по каждой директиве и каждой переменной приведён расширенный справочник — синтаксис, допустимые значения, умолч…
Сейчас неконтролируемые вызовы go func() встречаются уже не так часто, как на заре Go.Наверняка многие знают о принципе: «Никогда не запускайте горутину, если не знаете, как она завершится». И всё же мне до сих пор время от времени попадаются несинхронизированные вызовы go func(), которые запускают задачи без ожидания результата.Я не говорю о заданиях, переданных в специализированную очередь задач вроде Asynq. В таком случае система управления задачами сама отвечает за жизненный цикл запущенных…
Меня зовут Вера Касьяненко, я разработчик из команды DevRails AI в MTS Web Services. Сейчас мы создаем агента-разработчика — сервис, в котором языковая модель сама пишет код, запускает тесты, делает ревью и создает коммиты.Когда прикручиваешь модель к сервису и выдаешь ей инструменты, довольно быстро обнаруживается неудобный факт: команды, которые она генерирует, где-то выполняются. И от ответа на вопрос, где именно — и кто этим местом управляет, — зависит вся остальная архитектура.В статье рас…
Мой первый KitRover: попытка сделать машинку с управлением по сети (часть 1)ВступлениеРаботать с большой машинкой, о которой рассказал в предыдущей статье, куда интереснее, но писать под неё баги было волнительно. При резкой подаче команды вращать колёса на 100%, ровер едва не срывался с подставки, намереваясь влететь в стену, поэтому нужно было собрать что‑то поменьше.Сборка настольной версии ровера (Rover Mini)У меня уже была пара наборов для сборки, но удобно разместить блок аккумулятора (на…
У меня в управлении и разработке сервис, который обрабатывает большой поток PDF файлов, собранных различными генераторами. В начале июня произошел инцидент, в котором поды поднялись в пик количества по HPA и наглухо зависли на 30 минут. 100% CPU, обработка стоит, очередь копится, алерты летят пачками спустя 30 минут зависания.Тогда было принято решение чинить не проблему, а симптом. Как по мне, лучшее решение в ситуации с инцидентом. Но недавно руки дошли выявить корень проблемы, и крылся он в …