"Вечером разбирал заметки по архитектуре приложений (крайние 4 месяца пришлось работать в этом направлении). У нас получается во многом по фэншую. Убрана почти вся событийная гадость, четко изолированы слои, код неплохо документирован, покрыт автотестами, злыми правилами хаски, CI/CD и т.д. Есть еще где наводить красоту, разгонять тормозные тесты, наводить порядок в компонентах, но основной каркас очень хороший. Из наблюдений: я видел много архитектур самых разных приложений, и, как не странно самый жирный фарш почти всегда прячется в самых банальных местах. В тех, которые есть в любой более-менее нормальной апке. А именно: 🔹 1. Биллинг При быстром росте сервиса — постоянные эксперименты: новые платежки, кредики, скидки, тарифы, акции. Куча непростых вопросов: ""А если он сменил тариф и потом применит промокод, но к предыдущему тарифу, то что будет?"" Место как правило и так не самое простое, а ещё ошибки в нём очень чувствительны. За неправильное списание или кривое начисление пользователи готовы сжигать с огнемётом. 🔥. Ну вот когда кинопоиск списал 2 раза, а ты потом 3 недели переписываешься с саппортом и их отмазками — это как раз оно. Сложное место, первая линия ТП не спасет, юзеры нервные. Немного спасают схемы и автотесты. Но вот это ""нам надо быстро подкрутить тарифы, чо ты, мы же быстрая компания“ — всегда боль. 🔹 2. Права доступа и фиче-флаги Частично вытекает из первого. ACL или подобный подход либо сдержит огромную перду с правилами: ""В этом случае эту функцию этому парню можно, а в этом случае — низя или пусть еще месяц посидит во френд-зоне.” Либо это размазано по коду. И бабка надвое сказала, какая архитектура лучше. 🔹 3. Главные меню приложения Ну казалось бы, что такого — меню и меню. Вот шаблон, вот экшены, всё просто. Но если меню должно моментально перестраиваться от действий пользователя (постоянно следить за контекстом) — быть зависимым от прав доступа, положения курсора на экране, состояния буфера, состояния конкретного окна, состояния интернета, биллинга и т.д. — получается такой паук в паутине, который должен знать про всё. Чистая функция от состояния. Или не очень чистая. 🔹 4. И ещё небольшой список ада, но это уже зависит от типа апки: — Фоновая синхронизация. Восстановление после разрывов. Гибернация: хлопаний крышек ноутбука (после которых внезапно подыхает часть потоков). Блокировок РНК или подобных “помогаторов”. — Работа offline с последующей синхронизацией (файлов, таблиц, сущностей) — Генерация состояний в офлайне с последующим согласованием в онлайне — Обновление, миграции состояния на лету и юзеры, не перезапускающие апку месяцами — Многопоточность (если у тебя прям трэдовая жара, мультиоконность и капец-какой реактивный интерфейс) — Криптография и безопасность на клиенте 💀 Короче: ""Вроде бы тривиальное"" почти всегда = фарш."
"Вечером разбирал заметки по архитектуре приложений (крайние 4 месяца пришлось…
Источник
https://t.me/sibirix/608Канал Владимир Завертайлов | Управление digital-проектами и продуктами · опубликовано 27 апр. 2025 г.
Из этого канала
- #609Из рассказов наших дедов: - Помню, на наше колхозное после сел самолёт. Лётчик…
Из рассказов наших дедов: - Помню, на наше колхозное после сел самолёт. Лётчик дал детишкам посидеть в кабине, бабушки накормили его ужином, ночью лётчик…
- #610#промптытаймменеджмента #карточки Как работать с ИИ по задачам тайм-менеджмента…
#промптытаймменеджмента #карточки Как работать с ИИ по задачам тайм-менеджмента 💬 Промпты для целей: постановка и проверка целей Не знаете, с чего начать путь…
- #611Однажды Эрнест Хемингуэй поспорил, что сможет написать самый короткий рассказ,…
Однажды Эрнест Хемингуэй поспорил, что сможет написать самый короткий рассказ, способный растрогать любого.
- #607Что у вас на завтрак?
Что у вас на завтрак?
- #606Представьте, что вы просыпаетесь утром, полностью забыв о том, что происходило…
Представьте, что вы просыпаетесь утром, полностью забыв о том, что происходило вчера.