По какому принципу выбирать технологию для бэкэнда?
Есть у меня задача, которую нужно реализовать на долгосрочную перспективу.
ПО с сфере ЖКХ. Соответственно интенсивная работа с БД.
Т.к. я не системный архитектор, затрудняюсь как тут подбираются технологии.
Можно наугад ткнуть пальцем в Руби или какой-то из модных сегодня серверных джаваскриптовых фреймворков(который не факт что будет завтра, и придется оставлять как есть, или рефакторить). Или можно ратовать за старый-добрый пхп, потому что видимо он никуда не денется, с сервером проще, и человекочасы для обслуживания дешевле.
Но как всё таки правильно выбрать технологию для моего проекта?
Может есть примерный алгоритм, или у ВАС есть уже сложившийся свой алгоритм?
Кмк никакого алгоритма в большинстве случаев нет. Берешь либо то, что лучше всего знаешь, либо то, с чем хочешь поработать и более-менее уверен в этом.
lukoie: системные архитекторы/тимлиды прекрасно осведомлены о возможностях своей команды. Вряд ли они выберут Haskell для реализации back-end-а в команде Java разработчиков. По-этому Вам правильно сказали, что выбирать надо то, в чем больше всего разбираешься. Если "сечете" в PHP - берите его.
Евгений: я буду брать комманду. любую.
в нашей компании есть много отделов по многим городам. могу хоть на пхп, хоть на руби, хоть на жаву, хоть на ноду, хоть на гоу. проблема правильно выбрать технологию.
Артём Петренков: архитектора нет. тимлиды делают тоже на коленке, как умеют. тем более ТЛ команды руби - делают на руби, им заказы дают сейлзы, и те просто не касаются вопросов выбора технологий.
Выбор технологий - это результат анализа и исследований по тех. заданию.
Например проекты, завязанные на событийную модель вероятно легко будут писаться и поддерживаться на ноде. Проекты, завязанные на ms - на с#. Проекты, которые будут очень динамично развиваться - вероятно на пыхе поддерживать будет проще всего, и т.д.
Не последним вопросом является популярность, например вы решили писать на эрланге, потом ваш инженер уволился и оказалось, что он единственный специалист по этому языку в вашем городе.
о, точно - классный инсайт про "динамично развивающийся". с этим хоть понятней, я не думал в эту степь.
вот по примеру эрланга я и думал - вот например сделаем на ноде, а пройдет 5 лет и нода будет никому не нужна потому что появился какой то лучше аналог, и все повалили туда, потому что нода была лишь промежуточным этапом в эволюции. не может разве так произойти?
Или вот Джава - я даже не представляю зачем кому-то может понадобиться этот монстр. Но у джавистов и работы полно, и оплата высокая, и язык нумбер раз по кол-ву заказов.
Возможно его в проекты с бизнеспроцессами и безопасностью.
Тогда с жавой и пхп понятно.
Но что делать со всем остальным зоопарком?
нода, экспресс, эмбер, метеор, РоР, гоу, хаскелл, Синатра, Диджанго, Ларавелы всякие и Ангуляры.
Тут вопрос о том, действительно ли приложению нужна та или иная технология, или можно обойтись и без нее, или даже в его случае более подходит иная технология.
Вот берем мое приложение ЖКХ - выписывать квитанции на квартплату, отсылать в собес отчеты, слать показатели счетчиков, подтягивать БД банка и собеса и автоматически интегрироваться с квартплатами по квартирам. Ко всему там же формировать отчетность по налоговой/пф/статистике. Там же разносить платежи за веники, с формированием документооборота(купил лампочки - сформировалась ведомость, сразу списались и лягли пдфки в свою директорию для потомков/проверок). Зашел в абонента - выписал одним кликом справку о составе семьи.
Вроде по отдельности все эти задачи понятно как и чем сделать. Но когда комплексный проект, еще и понимаешь что он будет явно не на год-два, чтобы через десяток лет его не было сложней обслуживать.
Или вот - одна знакомая контора решила пользовать Феникс Фреймворк. А есть чуваки на АСП пишут.
Неужели нет никаких критериев отбора технологии, а просто если нравится и есть кто на нем будет делать - брать и делать?
Вот взять тот же Феникс - я б не решился на нем делать проект, именно потому же что и Эрланг.
- I am Matt Mullenweg, co-founder of WordPress (18% of web!) and Automattic, ask me anything!
- If you could wave a magic wand and instantly rewrite WordPress in any programming language, which would it be?
- Go. :)
sim3x: django-boy что ли? Даже я могу навскидку пожаловаться на orm и cbv в джанге, а ребята по опытнее еще что-нибудь добавят. Джанга сильно руки связывает, если нужно сделать что-то нестандартное, как и большинство фреймворков
И вот такой вопрос - а как правильно выбирать между всякими кодегнитерами, йии, ларавелями, коханами, симфониями, кэйками, зендами, и даже какими-то мелкими изделиями?
lukoie: скажем так, в общем и целом - ROR нечто среднее между хорошо написанным фреймворком и цмс, как только надо пилить что либо на нативном руби начинается боль, пока есть подходящие гемы - все ок, по этому быстрый старт можно фиганнуть на роре, а дальше будет сложнее. С пыхом нет такого скачка в разработке, он дает более "гладкий" процесс разработки. По поводу фреймворков - это удобно, много готового кода написано за вас, причем это не гемы, которые по уму колупать не желательно, а нормально читаемые исходники, на которых еще и поучиться можно. + огромное комюнити для любого распространенного фрейма на пыхе. 99% задач уже кто-то решал и решил.