Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 7, 2012 10:52:45

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Выбор архитектуры для командой разработки.

Скоро начнется большой (многолетний) проект (web сервис) с кучей народа, т.к. все программисты владеют разными языками/технологиями, а хочется задействовать всех максимально эффективно - рассматривается SOA, т.е. что-б продукт состоял из множества кусков (плагинов, модулей) написанных на разных языках, которые будут взаимодействовать друг с другом (может быть через некую шину). Например срабатывает событие “save” на конкретный объект, все плагины (python, js(nodejs), c#…) которые подписаны на это событие такого типа объектов вызовутся в порядке приоритета.

Какие подводные камни есть, какие альтернативы, что нужно поизучать, может есть что-то готовое на что можно посмотреть.

Сходу видно что при таком методе будет сложнее разворачивать инстанс и сложнее расширять при увеличении нагрузки.

Может есть какие-нибудь другие методы/технологи для этой цели: задействовать всех максимально эффективно.

Или игра не стоит свеч - всех обучать питону?
Если посмотреть на крупные компании, зачастую там используется большой зоопарк языков и технологий, хотя может в пределах конкретного проекта они использую 1 язык.

Офлайн

#2 Июнь 7, 2012 11:17:45

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Выбор архитектуры для командой разработки.

сам не сталкивался, но смотреть наверно на всякие шины из энтерпрайз мира аля openesb/fuse esb и ESB в целом

я б наверно с чем-то попроще повозился (REST и тп), чем вникать в “мир прекрасного” энтерпрайза В)

Отредактировано slav0nic (Июнь 7, 2012 11:23:38)

Офлайн

#3 Июнь 7, 2012 14:40:36

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Выбор архитектуры для командой разработки.

В большом проекте и с использованием одного языка/платформы/архитектуры со временем всё равно получается зоопарк. Зачем создавать его изначально?



Офлайн

#4 Июнь 7, 2012 18:08:41

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Выбор архитектуры для командой разработки.

Андрей Светлов
В большом проекте и с использованием одного языка/платформы/архитектуры со временем всё равно получается зоопарк.
Зачем создавать его изначально?
Конечно зоопарк изначально не хочется, но как задействовать всех максимально эффективно. Можно конечно всех переобучить, но это какое-то время (пока программист станет профессионалом в другом языке) , да и не все согласятся. Да и новых сотрудников набирать проще, если можно будет на любом языке разрабатывать.

Офлайн

#5 Июнь 7, 2012 18:20:31

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Выбор архитектуры для командой разработки.

slav0nic
сам не сталкивался, но смотреть наверно на всякие шины из энтерпрайз мира аля openesb/fuse esb и ESB в целом

я б наверно с чем-то попроще повозился (REST и тп), чем вникать в “мир прекрасного” энтерпрайза В)
спс. почитаю.
я подумываю на счет zeromq или подобного, хотя тут ещё надо рассмотреть варианты.

Офлайн

#6 Июнь 7, 2012 18:51:08

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Выбор архитектуры для командой разработки.

Посмотрите еще на AMQP. Мы в свое время использовали, чтобы развязать компоненты достаточно большой системы. Использовали RabbitMQ http://www.rabbitmq.com/ и питоновые биндинги к нему от той же команды: http://pika.github.com/ ну и celery http://celeryproject.org/, как распределятель задач. celery показался тяжелым, но тоже работал в результате нормально.



Офлайн

#7 Июнь 7, 2012 19:21:09

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Выбор архитектуры для командой разработки.

Мое мнение: по крайней мере в рамках команды необходим единый стандарт. Команда — до дюжины программистов плюс сколько нужно всяких прочих тестеров.



Офлайн

#8 Июнь 7, 2012 22:15:09

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Выбор архитектуры для командой разработки.

Если смотрите в сторону Message Queue, то нужно решить, какие возможности вам нужны. Я не имею ввиду атомарность, кроссплатформенность и поддержку языков - это и так понятно.
Но, нужна ли отказоустойчивость или сохранение сообщений на диск?

0MQ - шустрая, простая в использовании и обслуживании, но без хранения на диске.

RabbitMQ - скорость приемлемая, но Erlang и установка, обслуживание немного усложнены (соблюдать соответствия версий и т.п.), код выглядит не таким простым, зато может хранить сообщения на диске и даже самом выбирать: хранить или нет.

AcitveMQ - скорость приемлемая, проста в обслуживания при условии заранее выбранной архитектуры, поддерживает REST и бинарный протокол, в зависимости от потребностей позволяет способ хранения сообщений, тем самым напрямую влияя на производительность.
Но, в отличие, от Кролика это нужно сделать заранее, на лету менять способ не выйдет.

Все они достаточно функциональны и масштабируемы.

ЗЫ
Если Питон-онли, тоесть PyMQ.



Офлайн

#9 Июнь 8, 2012 05:34:04

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Выбор архитектуры для командой разработки.

Lexander
AcitveMQ - скорость приемлемая, проста в обслуживания при условии заранее выбранной архитектуры, поддерживает REST и бинарный протокол, в зависимости от потребностей позволяет способ хранения сообщений, тем самым напрямую влияя на производительность.

Да, это впечатляет.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#10 Июнь 8, 2012 13:17:41

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Выбор архитектуры для командой разработки.

PooH
Ну, наращивать скорость можно и в RabbitMQ.
Разница именно в способе хранения очереди.
Использование аппенд-онли лога для обеспечения сохранности данных - известная штука.
Но это действительно самый быстрый способ.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version