Blog

A collection of 210 posts
Дилемма пользовательского интерфейса: между правилами и гибкостью
blog

Дилемма пользовательского интерфейса: между правилами и гибкостью

При проектировании мы часто сталкиваемся с ситуациями, когда трудно принять решение, поскольку не существует единственно правильного ответа. «Стоит ли использовать для этого фиксированное значение?» «Стоит ли сделать его гибким в зависимости от содержимого?» На первый взгляд это может показаться простым решением, но когда действительно приступаешь к работе, выбрать один из
7 min read
12 принципов Agile и как применять их в SI-проектах
blog

12 принципов Agile и как применять их в SI-проектах

-Agile — это не просто «способ быстро разрабатывать»- Термин «Agile» часто используется в среде разработки программного обеспечения. Однако если понимать Agile лишь как «быструю разработку» «проведение спринтов в двухнедельных циклах» «проведение ежедневного утреннего собрания» легко упустить суть Agile. Agile возник благодаря Манифесту гибкой разработки программного обеспечения, опубликованному в 2001 году. Манифест
8 min read
Когда ролей недостаточно: ReBAC и SpiceDB
blog

Когда ролей недостаточно: ReBAC и SpiceDB

1. Введение: когда одних ролей недостаточно В DevRime авторизация начинается так. @AuthorizedRole(roles = { ScrumRoles.ROLE_PROJECT_MANAGER, ScrumRoles.ROLE_PROJECT_MEMBER }) public class FindProductProjFetch extends FetchRequest<ProductRdo> { «Только руководители проектов и участники проектов могут вызывать этот API». Это понятно, легко читается и в большинстве случаев вполне достаточно. Мы
7 min read
Сравнение пользовательского опыта при использовании Vue.js и React.js
blog

Сравнение пользовательского опыта при использовании Vue.js и React.js

1. React и Vue: два основных фронтенд-фреймворка После более чем года разработки в среде React мне недавно представилась возможность поработать над проектом с использованием Vue и узнать больше о Vue как о фронтенд-фреймворке. Я часто слышал, что Vue проще React, поэтому не думаю, что при его изучении столкнулся
11 min read
Почему MCP-серверы и хосты агентов были разделены на два компонента?
blog

Почему MCP-серверы и хосты агентов были разделены на два компонента?

С того момента, как я подумал: «Если объединить их в один проект, проектов станет на один меньше», процесс решения самой задачи уже начался. Мы решили добавить в нашу внутреннюю платформу ИИ-агента, чтобы сервисами можно было управлять с помощью естественного языка. Но первым вопросом было не «Что нам следует создать?
9 min read
Получение статуса подов по сервису с помощью Fabric8
blog

Получение статуса подов по сервису с помощью Fabric8

-Spring Boot 4.1.0 · Java 25 · Fabric8 Kubernetes Client 7.1.0- Многие современные серверные системы работают в Kubernetes, и запросы к Pod для проверки состояния сервисов выполняются очень часто. До сих пор операторы (или ответственные разработчики) решали эту задачу, подключаясь к серверу и напрямую вводя команды kubectl, однако
7 min read
Nexus Repository
blog

Nexus Repository

Введение Одним предложением, Nexus Repository — это общий внутренний склад компонентов для разработки. Это сервер, который собирает и управляет библиотеками, пакетами, образами Docker и аналогичными ресурсами, используемыми в разработке, в одном месте, чтобы их можно было получить в любой момент. В настоящее время каждый разработчик самостоятельно скачивает необходимые ресурсы из Интернета.
6 min read
AX на всех этапах жизненного цикла разработки — от генерации кода
blog

AX на всех этапах жизненного цикла разработки — от генерации кода

—От написания кода с помощью ИИ до тестирования и эксплуатации: как должен измениться процесс разработки?— 1. Изменился способ, которым мы поручаем написание кода ИИ Всего через несколько месяцев после того, как я начал всерьёз использовать ИИ в разработке, я почти перестал писать код непосредственно сам. Сначала я объяснял нужную мне
7 min read
Концепции драйвера Modbus-RTU и руководство по виртуальному тестированию
blog

Концепции драйвера Modbus-RTU и руководство по виртуальному тестированию

Modbus-RTU — это метод связи, который уже давно используется на заводах и промышленных объектах, поэтому существует множество документации и на практике он встречается очень часто. Однако для непосредственного подключения линий и наблюдения за обменом необходим преобразователь RS-485 или реальное оборудование, поэтому разобраться в нем на практике зачастую бывает сложно.
7 min read
Заметки по разработке MCP-сервера
blog

Заметки по разработке MCP-сервера

Введение Когда началась работа над проектом по добавлению функциональности чат-бота с ИИ, мне поручили часть, связанную с «предоставлением LLM возможности запрашивать данные системы». Чтобы LLM могла отвечать на вопросы пользователей, ей в конечном итоге необходимо видеть данные нашей системы в режиме реального времени, и моей задачей было выяснить, как
9 min read
Эталонная архитектура общего домена Devlime / домена Inter-MS
blog

Эталонная архитектура общего домена Devlime / домена Inter-MS

1. Предпосылки Возникла необходимость установить связь между двумя доменами, чтобы отображать в Prism компании Devlime информацию об AgileProject Scrum (единице выполнения спринта) вместе с Project компании Crewit (управление контрактами и трудозатратами). Кроме того, информацию о трудозатратах Crewit требовалось отображать на экране для установления связи между двумя доменами. В связи с
7 min read
Прежде чем доверять LLM, я начал с того, что стал их ставить под сомнение
blog

Прежде чем доверять LLM, я начал с того, что стал их ставить под сомнение

Введение В ходе реализации проекта мне понадобилось организовать рабочие документы, написанные людьми, в структурированные данные, которые можно было бы использовать в последующих процессах. В документах на естественном языке описывались бизнес-цели, ответственные лица, процедуры обработки, правила и исключения. Люди могут прочитать документы и понять их контекст, но для использования документов
13 min read
Проектирование агентного рабочего процесса
blog

Проектирование агентного рабочего процесса

Граница между циклом, взаимодействием и подтверждением —Разделение ответственности за принятие решений и выполнение перед повышением автономности LLM— Когда мы объединили несколько функций LLM, работавших последовательно, в единый поток, сначала мы думали, что для создания Agentic Workflow будет достаточно автоматически вызывать следующую функцию. Однако на практике требуемая структура включала не только
8 min read
Почему мы перешли с Logstash на Debezium CDC
blog

Почему мы перешли с Logstash на Debezium CDC

1. Предпосылки перехода поиска на Elasticsearch Проект, над которым я работал, представлял собой платформу с туристическими направлениями и связанным с ними контентом на нескольких языках. Поскольку основной функцией сервиса был поиск подходящих направлений и материалов, когда пользователи вводили название региона или направления, качество поиска фактически определяло качество всего сервиса. У
11 min read
Практический пример: повышение безопасности упрощённого входа
blog

Практический пример: повышение безопасности упрощённого входа

—Когда последние четыре цифры номера телефона становятся паролем— 1. Предпосылки: удобство входа по ссылке и скрытый риск Проект, над которым я работал, представлял собой систему электронных анкет для пациентов крупной многопрофильной больницы. Перед приёмом пациенты заполняют на мобильных устройствах анкету, отправленную больницей, а медицинский персонал использует результаты во время консультаций.
8 min read
Единая аутентификация на основе Spring Cloud Gateway
blog

Единая аутентификация на основе Spring Cloud Gateway

Инфраструктура динамической маршрутизации и предстоящие вызовы В предыдущей статье я описал процесс отказа от жёсткой статической структуры конфигурации YAML с использованием Spring Cloud Gateway (далее — SCG) и построения управляемой базой данных архитектуры динамической маршрутизации без простоя. Перенеся ключевые элементы конфигурации инфраструктуры в домен бизнес-данных приложения, мы обеспечили возможность изменять
6 min read
От маршрутизации на основе ролей к разделению эпизодов
blog

От маршрутизации на основе ролей к разделению эпизодов

-Ретроспектива рефакторинга веб-фронтенда Banjang: переопределение единиц развёртывания вокруг функций- 1. Введение — приложение, объединённое в одно целое Веб-фронтенд Banjang долгое время работал как единое приложение под названием episode-banjang. В него входили различные функции — главная страница, вакансии, команда, мой профиль, уведомления, аутентификация, биллинг и другие — в рамках одного артефакта
8 min read
Стратегии встраивания Python в процессы JVM
blog

Стратегии встраивания Python в процессы JVM

-Jep, JNI и GIL- 1. Введение: проблемы интеграции разнородных сред выполнения В современных серверных архитектурах сервисная логика всё реже реализуется на одном языке. Хотя экосистема Python, представленная в первую очередь Numpy и Scipy, стала фактическим стандартом для численного анализа и инференса моделей машинного обучения, стеки на базе JVM по-прежнему
11 min read
Исследование миграции устаревших интеграций на асинхронную обработку с использованием паттерна входящих сообщений
blog

Исследование миграции устаревших интеграций на асинхронную обработку с использованием паттерна входящих сообщений

-Опыт перевода этапа приема информации о массовой рассылке из устаревшей системы с синхронной обработки на структуру «сохранить и выйти»- 1. Введение — с какой проблемой мы столкнулись? Адаптерный сервис, за который я отвечал, работает как шлюз: он принимает информацию о рассылке опросов, отправленную устаревшей медицинской информационной системой больницы (далее — устаревшая система)
15 min read
Обеспечение наблюдаемости задач AI-агентов
blog

Обеспечение наблюдаемости задач AI-агентов

1. Введение: что журналы коммитов больше не могут объяснить После внедрения инструментов AI-кодинга в команде код начинает расти быстрее, но процесс его создания становится ещё менее прозрачным. Раньше беглого просмотра журнала коммитов было достаточно, чтобы примерно понять, кто над чем работал и сколько времени это заняло. Теперь даже по
8 min read
Роль тестирования в эпоху программирования с помощью ИИ
blog

Роль тестирования в эпоху программирования с помощью ИИ

По мере того как ИИ-ассистенты для программирования стали частью разработки, стоимость написания кода значительно снизилась. Когда вы описываете требования, они могут быстро сгенерировать код реализации, и точно так же они могут написать тестовый код для проверки реализации. Я тоже активно использовал тесты для проверки при работе с ИИ для
7 min read
Что такое наблюдаемость и почему она должна вас интересовать?
blog

Что такое наблюдаемость и почему она должна вас интересовать?

Что такое наблюдаемость? Изначально термин из теории управления, наблюдаемость означает, насколько много мы можем узнать о внутреннем состоянии системы, глядя только на выходные данные, которые появляются за пределами системы. Применительно к программному обеспечению это можно сформулировать так: можем ли мы объяснить проблему, используя только данные, которые производятся в данный момент,
7 min read
Разделение получения и обработки внешнего API
blog

Разделение получения и обработки внешнего API

1. Введение В существующем работающем сервисе каждую минуту генерируется и сохраняется в базе данных один фрагмент данных. Данные поступают последовательно во времени, поэтому в течение часа в соответствующие моменты времени сохраняются 60 фрагментов данных. При разработке новой функции возникло требование обрабатывать данные, которые хранятся в той же таблице, но генерируются
6 min read
Современный бэкенд — рефакторинг распространения контекста (1)
blog

Современный бэкенд — рефакторинг распространения контекста (1)

Это первая лекция седьмой сессии части 1 курса [Modern Backend] — «Рефакторинг распространения контекста (1)». В этой лекции мы проанализируем целевые участки и выполним структурный рефакторинг, чтобы перевести существующую логику распространения контекста на основе ThreadLocal в проекте доски объявлений на архитектуру на основе ScopedValue из Java 25. 📌 Основные рассматриваемые темы: * Обзор
2 min read
Оптимизация производительности загрузки Excel в SpreadJS 2
blog

Оптимизация производительности загрузки Excel в SpreadJS 2

- Опыт выявления и устранения ненужных операций привязки данных посредством измерения времени выполнения - 1. Проблемная ситуация В проекте мы реализуем бизнес-экран Excel на основе React и TypeScript, используя SpreadJS (v17.0.1), чтобы файлы Excel можно было просматривать и редактировать в веб-браузере. Структура сохраняет загруженный пользователем файл Excel в
6 min read
Site footer