Pull to refresh
16K+
83
Настоящий инженер@true_engineer

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

7
Rating
109
Subscribers
Send message

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

Reading time5 min
Reach and readers3.8K

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

Читать далее

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

Reading time5 min
Reach and readers8.6K

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

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

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

Читать далее

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

Reading time8 min
Reach and readers6.9K

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

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

Читать далее

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

Reading time8 min
Reach and readers6.9K

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

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

Читать далее

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

Reading time6 min
Reach and readers6.5K

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

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

Читать далее

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

Reading time7 min
Reach and readers6.2K

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

Читать далее

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

Reading time7 min
Reach and readers6.9K

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

Читать далее

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

Reading time5 min
Reach and readers4.5K

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

Читать далее

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

Reading time4 min
Reach and readers5.6K

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

Читать далее

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

Reading time5 min
Reach and readers6.5K

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

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

Читать далее

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

Reading time6 min
Reach and readers5.2K

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

Читать далее

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

Reading time3 min
Reach and readers5.8K

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

Читать далее

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

Reading time4 min
Reach and readers5.3K

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

Читать далее

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

Reading time5 min
Reach and readers6K

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

Читать далее

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

Reading time4 min
Reach and readers11K

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

Читать далее

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

Reading time4 min
Reach and readers4.9K

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

Читать далее

Как мы «усложнили жизнь» автотестам и повысили качество тестирования

Reading time3 min
Reach and readers5.9K

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

Читать далее

React Native. Часть 2: Bare Workflow, Expo, стили и платформенные особенности

Reading time4 min
Reach and readers7.4K

В первой части мы разобрали эволюцию архитектуры React Native. Теперь перейдем к практическим вопросам: как организован процесс разработки и какие платформенные особенности встретятся в работе.

Читать далее

React Native. Часть 1: архитектура, производительность и варианты использования

Reading time3 min
Reach and readers7.6K

React Native прошел путь от решения с фундаментальными архитектурными ограничениями до платформы с современным, производительным ядром. В этой статье мы разберем, как работала старая архитектура на основе Bridge, как ее заменили JSI, Fabric и Hermes, и в каких случаях React Native - оптимальный выбор для проекта.

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

Information

Rating
933-rd
Location
Россия
Date of birth
Registered
Activity