Ni55aN
@Ni55aN

Нужно ли разделение системы на сервисы, за которые отвечает в полной мере минимум один человек?

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

В микросервисной архитектуре часто встречается подход, в котором на бэке в отдельных процессах крутятся микросервисы, но они общаются с юзером через один API Gateway и одно клиентское приложение. Если пойти дальше, можно встретить подходы с выделением частей клиентского приложения на микросервисы (frontend microservices). Фактически, микросервис будет предоставлять клиентскую и серверную часть в пределах своих границах (поломать что-то на клиенте или API другого микросервиса становится нереально).

Назревает такая идея: положить ответственность за каждый сервис на одного человека (как минимум).

Как по мне, это имеет следующие преимущества:

  • в роли фронтендера разработчик не должен заботиться о бизнес задаче, которую решают другие сервисы.
  • нет частых коммуникаций между фронтендером и бэкендером (так как это один и тот же человек)
  • исключено перекладывание ответственности на фронтендера/бэкендера (проще сделать минимальное API и предложить фронтендеру преобразовывать данные на клиенте так, как ему нужно, но это усложняет ему работу и ухудшает быстродействие приложения)
  • можно писать код в своем стиле (особенно касается клиентской части, где можно похоливарить о kebab-case против camelCase для имен классов стилей)


Недостатки:

  • необходимы навыки full track
  • сложно продолжить поддержку сервиса, если с него ушел (временно или насовсем) единственный разработчик, так как кроме него мало кто имеет понятие как работает сервис внутри



Какие еще могут быть сложности с этим? Есть реальные кейсы?
Все эти пункты не основаны на практическом опыте (скорее на опыте противоположного подхода с монолитным "всем :)"), поэтому мне интересно узнать о реаьных кейсах, в которых применяется такой подход. Предполагается, что проблемы с деплоем большого количества сервисов и их связыванием уже известны и приняты как должное :)
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ответы на вопрос 3
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Во-первых FullStack для сервисной архитектуры это полная задница, уж простите. Необходимо иметь раздельно людей на фронт и бэк. Проблема о которой вы еще не знаете в том что люди имеют свойство меняться и в таком ключе вы можете потерять очень значимую единицу. Бэк должен иметь четкую спецификацию и соответствовать логике работы микросервиса/ сервиса (по секрету - они только размером отличаются ).

Микросервис и их интеграция появляется в системе с разной скоростью и строятся они абсолютно по-разному. Более того в таком подходе вам обязательно нужен тот кто проектирует все это вместе и по отдельности. Обычно это архитектор
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Веб-разработка
software engineer
Разбитие на микросервисы делается не для того, чтобы за микросервис отвечал один человек (для этого есть ООП), а чтобы приложение могло легко масштабироваться горизонтально, когда отдельные микросервисы запускаются на разных хостах, а возможно даже и в несколько инстансов с балансировщиком нагрузки.
Ответ написан
Делюсь личным опытом)
Будучи в компании единым бэкенд разрабом, я являюсь и архитектором БД и проектирую архитектуру самого приложения (в моем случае это REST API, и пришлось проектировать структура фронта на Angular 6 ).
Так вот - все это полная ерунда, один человек не может делать все качественно (если он на 15+ лет уже в этой сфере)
На сейчас у меня стоит задача проектировать систему,которая похожа на микросервисную архитектуру, и я уже второй день здесь задаю вопросы у знающих людей и ищу советы, так как раньше такого не делал)
Поэтому чисто по своему опыту говорю - если бизнес задача и нагрузки не требуют сервисов(микросервисов) лучше не проектировать её так.
Если вы один, то потом получите просто уйму обязанностей, это и автоматический деплой систем, их тестирование, их администрирование.
Мне повезло пообщаться с senior разработчиком, так он сказал - чем дольше у вас все на монолите тем вам лучше, иначе потом будете отгребать по полной
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Искра Екатеринбург
от 80 000 до 100 000 ₽
Art gorka Санкт-Петербург
от 60 000 ₽
от 40 000 до 60 000 ₽
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект