|
|
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
Тема не совсем про Java, но мне почему то все равно хочется задать его в этой ветке. Допустим мы все нижесказанное будет относиться к кровавому java энтерпрайзу. В последние годы наблюдаю несколько трендов, которые по ощущениям даже немного противоречат друг другу. Первый из них это выделение фронт-энд в целую отдельную нишу со своим стеком технологий и т.д., второй тренд это стремление к различным микросервисам, где вроде как наоборот пропагандируются кросс-функциональные компетенции. Интересует мнение, кто какой вариант считает более верным? Наиболее подходящим для энтерпрайз проектов? Или возможно я что то не верно понимаю? Интересует в том плане в каком направлении развиваться самому / развивать проект (как следствие развивать команду)? Универсальные бойцы или узкие специализации front/server/db? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 13:57 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
just_vladimirИнтересует в том плане в каком направлении развиваться самому / развивать проект (как следствие развивать команду)? Универсальные бойцы или узкие специализации front/server/db? Я всегда за специалистов широкого спектра. Я несколько раз наблюдал команды со строгим разделением ролей. И, когда, 5 человек пилит каждую фичу, это жопа. Вася запилил морду и ждет Петю, который должен написать сервис, Ване некогда добавить поле в таблицу, он занят. И все друг на друга показывают пальцем в случае чего. А когда Ваня уходит в отпуск, то всё, приплыли. Нужно уговаривать кого-то написать SQL скрипт. В своей команде я всегда назначал фичу на человека целиком. В результате человек разбирался во всём проекте. Конечно, со временем возникает некоторая специализация, и кто-то в большей степени отвечает за UI чем за SQL. Но специализация должна быть размытой, а ответственность за фичу - конкретной. В противном случае, может оказаться что ответственность размыта, в специализация очень конкретная и, посему, узкая. И в этом нет ничего хорошего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:06 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, если это стек технологий в стиле UI на JSF или GWT или что-нибудь не очень хитрое на базе пары jQuery компонент, нехитрый серверный код (без заморочек на j/u/c) + работа с базой через JPA, то вопросов нет. А если будет стек технологий, когда одновременно лабают UI на TypeScript+Angular 2, но при этом если что нужно и подправить PL/SQL процедурку на сотню-другую строчек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:35 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
Узкие и широкие . Что касается технологий, то с моей кочки зрения, наблюдается некий "кризис жанра" - все пытаются бежать ещё быстрее, чтобы только остаться на месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:41 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
just_vladimirесли это стек технологий в стиле UI на JSF или GWT или что-нибудь не очень хитрое на базе пары jQuery компонент, нехитрый серверный код (без заморочек на j/u/c) + работа с базой через JPA, то вопросов нет. А если будет стек технологий, когда одновременно лабают UI на TypeScript+Angular 2, но при этом если что нужно и подправить PL/SQL процедурку на сотню-другую строчек? Мысль верная, но пример, конечно, так себе. Я, например, и на Flex/ActionScript писал. И на T-SQL ваял хранимки на несколько экранов. И TypeScript не без удовольствия попробовал бы. Нужды не было. Из коллег Java-программистов почти никто iOS/Android/Angular не чурается. А некоторые даже получили сертификат Oracle DBA. Но, конечно, UX эксперт или дизайнер и DBA это очень слабо коррелирующие специализации. Но и к программированию они относятся мало. Поэтому, если оставаться в рамках программирования, то я не вижу никаких ограничений в широкой специализации. А вот если выйти за рамки программирования, на весь IT и дальше, то очевидно, что у ширины специализации всегда есть предел. У кого-то он меньше, у кого-то больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 15:26 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 15:27 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
Доказательство требует очень чёткой организации команды и некоторых доп.условий. Обычно, проще иметь группу "умеренно широких" специалистов, чем пытаться создать идеально сыгранный оркестр из узких. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 15:30 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovДоказательство требует очень чёткой организации команды и некоторых доп.условий. Обычно, проще иметь группу "умеренно широких" специалистов, чем пытаться создать идеально сыгранный оркестр из узких. То есть, если команда широких специалистов способна к некоторой самоорганизации, то для орекстрирования узкими специалистами нужны дополнительные затраты на менеджмент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 15:34 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
Не только - в вашем же примере, узкий SQL-специалист, прежде чем создать таблицу, обязан поинтересоваться: какая, собственно, задача решается. По результатам обсуждения может быть предложен более эффективный вариант. А может и не быть. Я бы сказал, что это часть более общей проблемы: надо ли изначально закладывать затраты на "эффективную разработку", если, обычно, "и так сойдёт". Причём - неплохо сойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 15:47 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
У нас микросервисы и специализация. По сути система из 3х основных сервисов-слоев, каждую фичу пилит 3 человека. Нас это мало волнует, потому что мы никуда не спешим. Я думаю сильно зависит от системы. На мой взгляд, оптимальный вариант, это когда специализация есть и не вызывает проблем. Обычно для этого требуется, чтобы сервис имел целостный АПИ и его можно было переиспользовать для разных будующих кейсов без необходимости постоянно вносить изменения в сервис. Если любая фича требует внесения изменений во все существующие сервисы, то возможно это никакие не сервисы, а просто систему попилили на связанные части (на практике обычно так и есть :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 15:57 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
just_vladimirУниверсальные бойцы или узкие специализации front/server/db? не в той плоскости вопрос. Управление проектом это одно. А архитектура это другое. Скажу больше по архитектуре, а не по людям). ... Сейчас IMHO фреймворк определяет как мы пишем. А вот если мы сами пишем свой фреймворк (изобретаем "микросервисы") то я их нигде не видел. Вроде обычные у всех решения. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 22:02 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
just_vladimirВ последние годы наблюдаю несколько трендов, которые по ощущениям даже немного противоречат друг другу. Первый из них это выделение фронт-энд в целую отдельную нишу со своим стеком технологий и т.д., второй тренд это стремление к различным микросервисам, где вроде как наоборот пропагандируются кросс-функциональные компетенции. Вот хоть убей не вижу противоречия. Наоборот эти вещи неразрывно связаны. Грубо говоря back-end`щик пишет микросервис на своем любимом ЯП. Создает API (например REST API) для взаимодействия с микросеврсом. А front-end`щик на своем любимом JS-фреймворке рисует "морду" к данному микросервису. Все довольный. Никто ни от кого сильно не зависит. Тесты те же писать одно удовольствие. back-end рисует свои тесты, для проверки правильности работы API, а front-end свои. Засада, как обычно в "деталях". Спроектировать API взаимодействия front-end и back-end не совсем тривиальная задача. Особенно когда бизнес-логика не тривиальная. Вот тогда начинается "футбол" м/у front-end и back-end, за то кто и где будет писать эту логику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 06:40 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
И все забыли про первое сообщение "... где вроде как наоборот пропагандируются кросс-функциональные компетенции." Т.е. всё логично- вот мы пилим дополнение к большой системе. Там, как принято, веб-UI на javascript. Отдельные микросервисы на java. Вот и получается- что да, мы хорошо отделены от остальной части, общаемся только через rest-api, у себя моки, заглушки и т.п. Но веб-морда - всё пишет отдельный человек. Он может у нас что-то править, а вот мы у него- не можем. И дело даже не в том, что javascript для всех видится невнятной кашей букв, но и в том, что веб-морда по сути один большой кусок... кода. И править его никто из нас не готов. Становится js-разработчиками желания нет- хватает своих обязанностей и нужных знаний. Так что получается такая забавная структура- каждая команда делает кусок бэкенда, а отдельная команда- весь UI. Потому что пользователю пофиг, где у нас там стыки микросервисов- он хочет видить один сайт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 11:11 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
mad_nazguljust_vladimirВ последние годы наблюдаю несколько трендов, которые по ощущениям даже немного противоречат друг другу. Первый из них это выделение фронт-энд в целую отдельную нишу со своим стеком технологий и т.д., второй тренд это стремление к различным микросервисам, где вроде как наоборот пропагандируются кросс-функциональные компетенции. Вот хоть убей не вижу противоречия. Наоборот эти вещи неразрывно связаны. He вот читаю я статью Фаулера (умный мужик говорят, обычно знает что пишет): http://martinfowler.com/articles/microservices.html Organized around Business Capabilities When looking to split a large application into parts, often management focuses on the technology layer, leading to UI teams, server-side logic teams, and database teams. When teams are separated along these lines, even simple changes can lead to a cross-team project taking time and budgetary approval. A smart team will optimise around this and plump for the lesser of two evils - just force the logic into whichever application they have access to. Logic everywhere in other words. This is an example of Conway's Law[5] in action. Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure. -- Melvyn Conway, 1967 Figure 2 Figure 2: Conway's Law in action The microservice approach to division is different, splitting up into services organized around business capability. Such services take a broad-stack implementation of software for that business area, including user-interface, persistant storage, and any external collaborations. Consequently the teams are cross-functional, including the full range of skills required for the development: user-experience, database, and project management. Может конечно у меня с английским как то не очень? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 11:33 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
Alexey TominИ все забыли про первое сообщение "... где вроде как наоборот пропагандируются кросс-функциональные компетенции." Т.е. всё логично- вот мы пилим дополнение к большой системе. Там, как принято, веб-UI на javascript. Отдельные микросервисы на java. Вот и получается- что да, мы хорошо отделены от остальной части, общаемся только через rest-api, у себя моки, заглушки и т.п. Но веб-морда - всё пишет отдельный человек. Он может у нас что-то править, а вот мы у него- не можем. И дело даже не в том, что javascript для всех видится невнятной кашей букв, но и в том, что веб-морда по сути один большой кусок... кода. И править его никто из нас не готов. Становится js-разработчиками желания нет- хватает своих обязанностей и нужных знаний. Так что получается такая забавная структура- каждая команда делает кусок бэкенда, а отдельная команда- весь UI. Потому что пользователю пофиг, где у нас там стыки микросервисов- он хочет видить один сайт. Все верно, об этом и речь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 11:35 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
Petro123Управление проектом это одно. А архитектура это другое. Скажу больше по архитектуре, а не по людям) Не верите в закон Конвея? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 11:39 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
mad_nazgulВот тогда начинается "футбол" м/у front-end и back-end, за то кто и где будет писать эту логику. А это решается просто- за каждую фичу есть один ответственный, который распределяет задачи. Если начинается футбол, то пас даёт ответственный без права перепаса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 11:56 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
just_vladimirmad_nazgulпропущено... Вот хоть убей не вижу противоречия. Наоборот эти вещи неразрывно связаны. He вот читаю я статью Фаулера (умный мужик говорят, обычно знает что пишет): ... Может конечно у меня с английским как то не очень? Правильно пишет. Но это если кто-то пишет один микросервис. То да, он и швец, и жнец, и на дуде игрец. Но если использовать микросервисную архитектуру, то разработка не вполне может свестись к тому что вы привели в первом абзаце. Кто-то делает микросервисы, а кто-то рисует к ним GUI. Так что микросервисная архитектура все равно подвержена закону Конвея ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 13:06 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
Alexey Tominmad_nazgulВот тогда начинается "футбол" м/у front-end и back-end, за то кто и где будет писать эту логику. А это решается просто- за каждую фичу есть один ответственный, который распределяет задачи. Если начинается футбол, то пас даёт ответственный без права перепаса Ну сам не сталкивался, но коллеги имели много проблем. Бак-енд написал несколько сервисов (услуги) Фронт-енд нарисовал к ним GUI (с валидацией, аутентифкацией и пр). Потом пришло ТЗ сделать услугу, которая является композицией нескольких услуг. Т.к. почти все услуги асинхронные, и должны выполнятся в определенном порядке, причем время отклика некоторых услуг могла исчисляться днями. То тут началось веселье. По идее сервисы для всех услуг есть. Но использовать их в композиции напрямую нельзя, т.к. важно состояние. Поначалу был "футбол", потом когда разобрались, пришлось потеть всем и back-end`у и front-end`у. В общем микросервисы это хорошо. Но они не "серебрянная пуля". Т.к. взаимодействие м/у микросервисами может вызвать "комбинаторный взрыв". И да, теперь я с опаской отношусь к асинхронному взаимодействию. Т.к. он усложняет задачу как минимум в два раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 13:19 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
mad_nazgulИ да, теперь я с опаской отношусь к асинхронному взаимодействию. Самое веселое это отладка, когда у тебя на один use case более трех асинхронных методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 13:21 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
just_vladimirНе верите в закон Конвея? дак всё таки вопрос в управлении проектами? Есть более простой аналог Конвея - фраза: "Пишите на том что знаете". Эту фразу все программисты знают. С другой стороны, я верю в личность Архитектора или руководителя проектов. Если они - личность и рулят проектом, то и микросервисы будут положительные. Если нет, то красивое слово микросервисы только угробят проект. Раньше вместо микросервисов можно было сказать что слабая связанность модулей угробила проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 23:22 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
mad_nazgulПравильно пишет. Но это если кто-то пишет один микросервис. То да, он и швец, и жнец, и на дуде игрец. Но если использовать микросервисную архитектуру, то разработка не вполне может свестись к тому что вы привели в первом абзаце. Кто-то делает микросервисы, а кто-то рисует к ним GUI. Так что микросервисная архитектура все равно подвержена закону Конвея ;-) Я-бы проголосовал ЗА микросервисную архитектуру т.к. я в ней вижу возможности условного разнесения логики на отдельные независимые части (акторы) и выделение каналов микросервисов - как потоков месседжей между акторами. Про классической (монолитной) архитектуре когда ПО разрабатывается так что оно работает либо на кластере (со всеми вытекающими - штормы событий, жесткие требования по идентичности конфигураций, сложные и неоднозначные механизмы синхронизации общей памяти, split-brain, и невозможность включать или исключать узлы на ходу) либо на просто очень мощной и дорогой железке которая тоже имеет естесвтенные (природные ограничения) по частоте тактового генератора. Монолитное ПО обычно обновляется единоразово с остановом сервиса. Оно - критично. Его нельзя трогать. Над ним трясутся. И сдувают пыль. Микросервисное ПО (я надеюсь) будет не только синхронным но и асинхронным что открывает новые возможности по организации процессов обработки данных. А само по себе ТЗ которое требует единой точки входа и единого "дирижера" вроде механизма транзакций и требований по ACID нужно просто пересматривать с точки зрения законов развития естественого мира. Под развитием я подразумеваю сроки порядка 10-100 лет. Никто не сможет построить полностью синхронное ПО в условиях коммуникации нескольких планет солнечной системы. У нас нет физических сред где можно генерировать такты. Мы сможем строить только потоки данных. Причем односторонние. Разумеется я не говорю что обычные архитектуры будут не нужны. Они нужны. Просто их надо пересмотреть с точки зрения ближнего и далекого будущего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2016, 23:56 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
maytonmad_nazgulПравильно пишет. Но это если кто-то пишет один микросервис. То да, он и швец, и жнец, и на дуде игрец. Но если использовать микросервисную архитектуру, то разработка не вполне может свестись к тому что вы привели в первом абзаце. Кто-то делает микросервисы, а кто-то рисует к ним GUI. Так что микросервисная архитектура все равно подвержена закону Конвея ;-) Я-бы проголосовал ЗА микросервисную архитектуру т.к. я в ней вижу возможности условного разнесения логики на отдельные независимые части (акторы) и выделение каналов микросервисов - как потоков месседжей между акторами. Я тоже за "микросервисную" архитектуру, т.к. она позволяет собрать сложную систему из не сложных компонентов. Но проблема в том, что сложность никуда не девается. Она переходит во взаимодействие м/у компонентами. Что налагает большую ответственность на разработку API микросервисов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 06:37 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
just_vladimirТема не совсем про Java, но мне почему то все равно хочется задать его в этой ветке. Допустим мы все нижесказанное будет относиться к кровавому java энтерпрайзу. В последние годы наблюдаю несколько трендов, которые по ощущениям даже немного противоречат друг другу. Первый из них это выделение фронт-энд в целую отдельную нишу со своим стеком технологий и т.д., второй тренд это стремление к различным микросервисам, где вроде как наоборот пропагандируются кросс-функциональные компетенции. Интересует мнение, кто какой вариант считает более верным? Наиболее подходящим для энтерпрайз проектов? Или возможно я что то не верно понимаю? Интересует в том плане в каком направлении развиваться самому / развивать проект (как следствие развивать команду)? Универсальные бойцы или узкие специализации front/server/db? Вообще сейчас явно наметился тренд Cloud + Machine Learning - все остальное по баблу резко уступает здесь в Долине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 06:46 |
|
||
|
Оффтоп на тему микросервисы/фронтэнд/закон Конвея
|
|||
|---|---|---|---|
|
#18+
mad_nazgulmaytonпропущено... Я-бы проголосовал ЗА микросервисную архитектуру т.к. я в ней вижу возможности условного разнесения логики на отдельные независимые части (акторы) и выделение каналов микросервисов - как потоков месседжей между акторами. Я тоже за "микросервисную" архитектуру, т.к. она позволяет собрать сложную систему из не сложных компонентов. Но проблема в том, что сложность никуда не девается. Она переходит во взаимодействие м/у компонентами. Что налагает большую ответственность на разработку API микросервисов. Верная мысль насчет сложности. Мне пришлось работать как-то в проекте из 50 чел. Разработка была разбита на команды по 5-7 чел. Работали по Ajile. Времени на освоение кода почти не было. (знакомая ситуация) Шла разведка боем. До этого. Я заметил что возникает miss comunications и одна команда не знает чем занята другая. Разумеется борды с тикетами публиковались но очевидно этого было недостаточно. Формат митингов не позволял собрать все 50 чел. Кроме того часть людей были в другом часовом поясе. Вобщем к чему я это все. Разделение проекта на независимые части и выделение интерфейса между ними как единого протокола связи - неизбежное явление. Если проект одномодульный и связи в нем - как спагетти то этот код неизбежно будет утерян к осмыслению. Не будет на проекте ни одного гуру или знатока который знает все. И если тренд на микро-сервисность помогает переосмыслить важность и значимость интрефейсов (один пункт в философии SOLID) то я еще раз голосую +1 за микросервисность. Кстати в тему сложности на хабре лежит новая статья. https://habrahabr.ru/post/310782/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 08:52 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39313778&tid=2123675]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
68ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 359ms |

| 0 / 0 |
