Обновить
16K+
82
True Engineering@true_engineering

Создаем цифровые продукты

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

По мере роста продукта регрессионное тестирование быстро становится узким местом: количество сценариев растет, время проверки увеличивается, а цена ошибки перед релизом становится выше. В нашем случае переход к 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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Информация

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