Обновить
16K+
83
Настоящий инженер@true_engineer

IT-специалист

17
Рейтинг
112
Подписчики
Отправить сообщение

Canvas или SVG для карты офиса: как мы выбрали и справились с неочевидными граблями

Время на прочтение4 мин
Охват и читатели5.5K

Если к вам придут с задачей внедрения интерактивной карты офиса, какой рендер вы выберете? Canvas или SVG? Верхнеуровневый обзор скажет, что Canvas хорош для частых перерисовок (географические карты, игры), а SVG — когда важна работа с отдельными элементами, которые естественным образом присутствуют в DOM.

Мы выбрали SVG.

В этой статье не будет глубокого анализа, это живая история о том, почему мы отказались от идеи использовать Canvas, как строили карту с нуля, какие инструменты использовали, как организовали связь между SVG-элементами и данными в БД, и как сделали админку, где карту могут менять дизайнеры без участия разработчиков.

Читать далее

Тестирование интеграций через Kafka: проверка сценариев с разными типами данных

Время на прочтение4 мин
Охват и читатели6.6K

Сервисы, в которых данные собираются и обрабатываются на основе других сервисов, очень чувствительны к интеграциям. Технические решения часто реализованы на брокерах, например, Kafka. У нашей команды была задача с финансовой отчетностью и десятками вариантов состояния документов.

Читать далее

Миграция с ingress-nginx: переход к Gateway API

Время на прочтение6 мин
Охват и читатели7.9K

В предыдущей части были рассмотрены варианты ingress-контролера. В этой статье расскажем, как мы тестировали Traefik и постепенно готовим инфраструктуру к переходу на Gateway API без простоев и массового переписывания сервисов.

Читать далее

Миграция с ingress-nginx: выбор нового контроллера

Время на прочтение5 мин
Охват и читатели4K

Ingress-nginx долгое время оставался стандартным ingress-контроллером для Kubernetes, но после объявления о завершении активной поддержки многим командам пришлось задуматься о миграции. Эта статья о том, как мы командой выбирали новый ingress-контроллер.

Читать далее

SSR и CSR в одном месте: как мы разделили рендеринг для людей и поисковых ботов

Время на прочтение5 мин
Охват и читатели8.7K

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

Мы разрабатываем продуктовый сайт на Angular 17 с микрофронтендовой архитектурой на Module Federation. Нам нужно было и хорошее SEO, и привычный CSR для пользователей. В итоге мы выбрали гибридный подход: для людей — клиентский рендеринг, для поисковых ботов — пререндеринг через доработанный сервис MTS botview.

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

Читать далее

Cursor в разработке: нейропрототип модуля в корпоративной системе

Время на прочтение8 мин
Охват и читатели6.9K

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

В этой статье мы расскажем, как в проекте нейропрототипа модуля Планирования (PlanningProto) мы использовали Cursor — редактор с ИИ, который встроен прямо в репозиторий.

Читать далее

Отказываемся от wkhtmltopdf: как мы искали решение для генерации нетривиальных PDF

Время на прочтение8 мин
Охват и читатели7K

wkhtmltopdf долгое время был одним из основных инструментов для генерации PDF из HTML. Мы столкнулись с ним на собственном проекте, но, когда потребовалось реализовать сложные макеты, колонтитулы и повторяющиеся заголовки в многостраничных документах — возникли проблемы.

В этой статье — краткий обзор альтернатив (Headless Chrome, Puppeteer, Playwright, WeasyPrint, Gotenberg), их плюсы и минусы, а также наш итоговый выбор и подводные камни, которые всплыли в процессе внедрения.

Читать далее

Circuit Breaker в микросервисах: как защитить систему от каскадных отказов

Время на прочтение6 мин
Охват и читатели6.6K

Представьте: сервис А звонит сервису Б, а тот зависает. Сервис А ждёт, занимает потоки, не освобождает ресурсы. Потом к нему приходит другой сервис — и тоже встаёт в очередь. Так один сбой разрастается по всей системе, как снежный ком. Этот эффект называется каскадным отказом.

Паттерн Circuit Breaker (предохранитель) решает эту проблему. В статье разбираем его на примере ассистента HR с зонтиком, показываем, как настроить Resilience4j, и делимся, какие ошибки стоит (а какие не стоит) учитывать в статистике.
 

Читать далее

OpenTelemetry и Sentry: как мы выстроили сбор телеметрии в микросервисной системе

Время на прочтение7 мин
Охват и читатели6.2K

В распределенной системе понять, что именно произошло во время выполнения запроса, бывает сложнее, чем исправить саму ошибку. Логи показывают события по отдельности, метрики — общую динамику, но без связки между ними картина остается фрагментарной. Мы решили выстроить наблюдаемость на базе OpenTelemetry и использовать Sentry для анализа трейсов.

Читать далее

Децентрализованная оркестрация на RabbitMQ вместо Apache Camel

Время на прочтение7 мин
Охват и читатели6.9K

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

Читать далее

Генерация больших Excel отчетов без таймаутов: опыт внедрения Spring Batch

Время на прочтение5 мин
Охват и читатели4.6K

Как организовать пакетную генерацию Excel отчетов на Java, чтобы пользователи могли запускать десятки и сотни документов за раз без зависаний и таймаутов? Разбираем архитектуру решения на Spring Batch, схему обработки, расчет прогресса и интеграцию с фронтендом.

Читать далее

Дизайн интерфейса: когда изменения оправданы. Часть 2

Время на прочтение4 мин
Охват и читатели5.6K

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

Читать далее

Дизайн интерфейса: когда изменения оправданы. Часть 1

Время на прочтение5 мин
Охват и читатели6.5K

До этого мы говорили о том, где лучше не экспериментировать. Но интерфейсы все же меняются — и иногда довольно радикально. Это подтверждается современными UX-трендами и анализом развития интерфейсных решений.

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

Читать далее

Покрытие регресса автотестами: практический опыт внедрения E2E

Время на прочтение6 мин
Охват и читатели5.2K

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

Читать далее

Дизайн интерфейса: когда лучше ничего не менять. Часть 2

Время на прочтение3 мин
Охват и читатели5.8K

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

Читать далее

Дизайн интерфейса: когда лучше ничего не менять. Часть 1

Время на прочтение4 мин
Охват и читатели5.3K

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

Читать далее

Сравнение тестовых фреймворков: Cypress vs Playwright vs Selenium

Время на прочтение5 мин
Охват и читатели6K

Сегодня мы сравним основные фреймворки: их плюсы и минусы, поделимся своим опытом работы с каждым и поможем понять, какой же лучше выбрать для своего проекта? 

Читать далее

Keycloak: Внедрение единой системы идентификации

Время на прочтение4 мин
Охват и читатели11K

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

Читать далее

Как мы находим 90% ошибок до написания кода и экономим до 30% бюджета

Время на прочтение4 мин
Охват и читатели4.9K

Практический гайд по внедрению requirements testing: процессы, чек-листы и измеримые результаты с реального проекта.

Читать далее

Миграция автотестов с Cypress на Playwright

Время на прочтение3 мин
Охват и читатели5.5K

Делимся свои опытом: как мы обеспечили быструю и безопасную миграцию с одной технологии на другую с использованием ИИ.

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

Информация

В рейтинге
542-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность