ch
Feedback
S0ER

S0ER

前往频道在 Telegram

Архитектура | Программирование | Профессиональное развитие Соер.Клуб - https://t.me/soer_live По всем вопросам писать на @soerdev

显示更多

📈 Telegram 频道 S0ER 的分析概览

频道 S0ER (@softwareengineervlog) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 10 462 名订阅者,在 技术与应用 类别中位列第 11 426,并在 俄罗斯 地区排名第 61 087

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 10 462 名订阅者。

根据 02 九月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 13,过去 24 小时变化为 2,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 48.33%。内容发布后 24 小时内通常能获得 N/A% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 0 次浏览,首日通常累积 0 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 0
  • 主题关注点: 内容集中在 rbp, архитектура, callme, mov, указатель 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Архитектура | Программирование | Профессиональное развитие Соер.Клуб - https://t.me/soer_live По всем вопросам писать на @soerdev

凭借高频更新(最新数据采集于 03 九月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

10 462
订阅者
+224 小时
+97 天
+1330 天
帖子存档
S0ER
10 464
Есть мнение, что монолит - это реализация какого-то конкретного архитектурного стиля, некоторые даже считают, что это самостоятельный архитектурный стиль. На самом деле монолит - это характеристика архитектуры рассматривающая возможность раздельного развертывания и характеризующая силу зацепления между компонентами архитектуры. Монолитные приложения могут быть созданы с использованием разных архитектурных стилей, как на рисунке выше. Основная особенность, все же, в монолите почти всегда "Data centric" подход с единственной БД и единственной связью между БД и приложением.

S0ER
10 464
Небольшая инфографика по вариантам архитектурных решений монолитных приложений
Небольшая инфографика по вариантам архитектурных решений монолитных приложений

S0ER
10 464
Эта мысль мне нравится тем, что для понимания того как лучше реализовать ту или иную часть проекта, нужно последовательно понять следующие моменты: - какие преимущества/недостатки есть в различных вариантах решения; - какие ограничения есть в проекте; - для чего мы реализуем тот или иной функционал. Рассматривать поставленные вопросы нужно снизу вверх, тем самым мы как раз и приходим к простому закону: "'Why' is more important then 'how'".

S0ER
10 464
В книге "Fundamentals of Software Architecture: An Engineering" Neal Ford, Mark Richards сформулирован офигенный "закон" архитектурного взгляда на проект, он звучит так: "'Why' is more important than 'how'"

S0ER
10 464
Спасибо Хауди Хо за наводку про комментарии для постов, подключил чат для обсуждений, теперь должна появиться возможность комментировать оставленные сообщения.

S0ER
10 464
В чем причина разделения бизнес-логики и логики приложения в DDD? Все дело в том, что бизнес-логика - это логика "реального" мира, на нее имеют влияние процессы, которые происходят за пределами "программы", поэтому причины и вектор развития бизнес-логики будут завязаны на "реальный мир", логика приложения же завязана исключительно на само приложение и изменение, и развитие будут происходить исключительно по внутренним причинам. Так как темпы изменений и причины разные, то разделив логику приложения и бизнес-логику мы получим более гибкое решение, которое легче сопровождать и развивать. Если же бизнес-логика и есть логика приложения (вырожденные случаи, когда мы разрабатываем приложение без бизнеса), то разделять их не имеет смысла.

S0ER
10 464
По поводу анемичных моделей надо помнить, что у нас есть совершенно разные "логики": - бизнес-логика, независимая от приложения - бизнес-логика, возникающая в следствие автоматизации (по сути создания приложения) - логика приложения (по сути обязанность приложения обеспечивать свою работу) - обязанность получения и доступа к данным (логика работы с данными) Анемичная модель возникает в случае когда бизнес-логика в рамках домена утекает из доменной модели в другую часть программы. Но анемичная модель не может, возникать вне рамок домена.

S0ER
10 464
С DDD есть несколько нюансов, которые нужно помнить: - DDD плохо ложится на Data Centric подход, т.е. если у вас простой CRUD+Rest вокруг него, то DDD скорее всего не нужен - DDD не имеет смысла внедрять в маленьких приложениях, на самом деле если у вас порядка 30-40 User Stories, то это очень маленькое приложение, если начать делать его по DDD, то будет получен оверхед в виде ненужных Aggregate, Registry и Entities, куда проще использовать классический Transaction Script и сервисы.

S0ER
10 464
Чек-лист для проверки DDD архитектуры: 1) Проверка дизайна существует несколько основных элементов домена, которые могут применяться для хранения стейта и реализации поведения: - Entity, Value Object, Aggregate должны использоваться для хранения "стейта" и реализации "поведения" - Data transfer Object - только "стейт" - Service, Repository - только "поведение" 2) В DDD как правило используются следующие паттерны: - Domain Object - DTO - Repository - DAO 3) В DDD по возможности не должно быть: - Анемичных моделей - Fat Service - Зацепления между разными Enteties

S0ER
10 464
Памятка по версионированию: 1. Наиболее распространено семантическое версионирование MAJOR.MINOR.PATH-LABEL+MetaInfo MAJOR - обратно несовместимые изменения MINOR - обратно-совместимые изменения PATCH - локальные изменения 2. Библиотеки при учете совместимости должны учитывать: - бинарную совместимость - семантическую совместимость (один и тот же код, должен должен приводить к одному и тому же результату) - совместимость на уровне интерфейсов кода (один и тот же метод, должен иметь одну и ту же сигнатуру вызова) Если хотя бы одно из условий нарушается - увеличивается MAJOR версия 3. API должны учитывать совместимость: - по версии клиента (должен поддерживать все клиенты предыдущего API) - по версии сервера (должен работать на серверах поддерживающих предыдущий API) - по версии протокола (должен поддерживать все протоколы, что и предыдущий API) Если хотя бы одно условие нарушается, увеличивается MAJOR версия. 4. Схемы данных - При добавлении необязательных полей с дефолтным состоянием увеличивается MINOR - При добавлении обязательных полей увеличивается MAJOR

S0ER
10 464
photo content

S0ER
10 464
Доступ к API обычно осуществляется по следующей схеме
Доступ к API обычно осуществляется по следующей схеме

S0ER
10 464
- специализированные API - как правило API построенные на каком либо языке запросов, которые разрабатываются конкретно под сервер. Пример: SQL.

S0ER
10 464
- REpresentational State Transfer (REST) - набор прицнипов для построения легковесных API, как правило использует текстовый формат для обмена сообщениями (JSON, XML). Текстовый формат сообщений позволяет развязать зависимости сервера и клиента, не использовать какие-либо общие библиотеки. Унифицирован для веб-разработки.

S0ER
10 464
- Remote method invocation (RMI) - вариант RPC который "скрывает" удаленную природу вычислений и со стороны клиента выглядит так, будто вычисления выполняются локально.

S0ER
10 464
API стили: - Remote Procedure Call (RPC) - удаленный вызов процедур, один из самых используемых стилей при построении API. Он реализуется с помощью клиент-серверного шаблона архитектуры, и позволяет клиенту выполнять свой код удаленно на сервере. Обычно используют компактные бинарные форматы. Пример: gRPC ( https://grpc.io ), из более ранних примеров - SOAP

S0ER
10 464
По всем flow можно посмотреть конспект для архитектурных стримов: https://s0er.ru/codelabs/arch_stream_15/index.html#0

S0ER
10 464
Идея простая - есть одна основная ветка (trunk) весь код непрерывно сливается в нее, чтобы отсечь неработоспособные фичи (те фичи, которые находятся в разработке) используются флаги. Таким образом мы постоянно ревьюим код через Pull Request, а фичу включаем через флаг когда она готова.

S0ER
10 464
на изображении схематично показан алгоритм работы trunk flow, из плюсов: - простой и легкий - подходит для частых релизов и CI - не имеет проблем "длинных" слияний (когда ветка долго в разработке находится)

S0ER
10 464
Если меня попросят порекомендовать flow для разработки проекта, то пожалуй это будет Trunk based + Feature flag + Branch by a
Если меня попросят порекомендовать flow для разработки проекта, то пожалуй это будет Trunk based + Feature flag + Branch by abstraction