Как выбрать структуру, язык и фреймворк для приложения?
Здравствуйте!
Нужен совет по выбору языка и фреймворка для того, чтобы переписать существующее web-приложение.
Итак, дано:
1. Клиент ( реализован на JS + Bootstrap ) - основная задача - внесение данных в БД, их анализ (сейчас все выполняется клиентом в браузере на компьютере или планшете), работа с календарем (планирование), сбор статистики.
2. Сервер ( реализация на Python 2.7/ Flask ) - хранение БД, авторизация и доступ к данным клиентов.
Вся работа происходит через веб-сайт с использованием браузера клиента и, в случае проблем с интернетом, работа заканчивается. Такого еще не было, но учитывать такой вариант стоит. Насколько я понимаю, такая концепция реализации сходна с SaaS.
Цель - переписать заново, грамотно и для предоставления на коммерческой основе.
Вижу такие варианта:
- всю логику и бд убирать на веб-сервер, оставляя клиенту возможность работы только через интернет посредством браузера или отдельно написанных программ под Windows/Androis/iOS;
- создавать такой же локальный сервер, которому безразлично наличие интернета, поскольку все клиенты будут находиться в одной сети;
- писать полноценное приложение для клиента, создав возможность синхронизации данных из БД через сервер. Опять же, где размещать серверное приложение, локально или в Интернет? В некоторых случаях у сервера будет всего один пользователь и все данных можно хранить локально на одном компьютере, но минус данного способа в том, что вся информация будет доступна только на этом пк, а было бы неплохо иметь досту к статистике и некоторым данных через личный телефон/планшет.
От выбора схемы работы зависит способ продажи приложения: либо ежемесячная плата за пользование, либо разовая оплата с последующими апдейтами.
Сам склоняюсь к первому варианту, поскольку его проще поддерживать и продавать, но что делать клиенту в случае проблем с интернетом? С одной стороны ни у кого пока такого не было да и всегда можно воспользоваться мобильным интернетом, в случае проблем со "стационарным". Но опять же, отказ главного веб-сервера приведет к остановке работы всех клиентов.
После выбора схемы работы потребуется определиться на чем писать, какой язык и фреймворк использовать, каких программистов нанимать.
Сам не айтишник, не знаю что сейчас лучше и перспективнее выбрать. Надеюсь на ваши советы!
Сергей, спасибо за ответ!
Допустим финансовый вопрос, хоть и играет важную роль, но не находиться на первом месте, куда важнее отказоустойчивость, корректность, простота и удобство работы. И реализовываться будет именно путем найма программистов, поскольку этот проект далеко не единственный. Вопрос в том кого нанимать? HTML + JS для фронтенда? Android и iOS на аутсорс? Для бекенда Python или ...? Либо создавать нативные приложения? Я вообще в сторону Go посматриваю)
Алексей Уколов: Именно! Поэтому и спрашиваю советы у профи здесь) Пока что понял, что нужен Software engineer. Либо оставлять действующую модель SaaS и отталкиваться от нее.
Если делать бекенд с нуля, к чему стоит присмотреться? Python (Django) или что-нибудь другое? Ruby? Возможно правильным будет поставить вопрос так - Будет ли оптимальным выбором Python?
Написано
Алексей Уколов
@alexey-m-ukolov Куратор тега Веб-разработка
Пока вам нужен Software Architect, а не программист - именно он ответит на все вопросы, которые вы ставите, причём сделает это качественно.
Нормальный архитектор/технический директор вам скажет, что язык и фреймворк не играют никакой существенной роли в том насколько качественным, поддерживаемым, дешёвым или успешным будет ПО.
Вы сейчас занимаетесь микроменджментом - поставьте себе задачу найти тех. дира, обозначте ему бизнес-цели и занимайтесь дальше своими непосредственными обязанностями.
Здесь вы ответ не найдёте - формат ресурса и тип задачи совершенно не тот. Это целый проект, который должен быть оплачен и займёт несколько недель.
Если же вы уже решили делать всё на Питоне и хотите, чтобы вам "айтишники" разрешили, то и говорить не о чем.
Алексей Уколов: Алексей, спасибо за ответ! Пожалуй таки прислушаюсь к вашему совету и займусь поиском Software Architect.
А на Пайтоне пока реализована тестовая версия, проведен поиск анализ задач клиентов, способы решения, базовый интерфейс и т.п. Коммерческое решение будет переписано практически с нуля, поэтому я полностью свободен в выборе средств разработки.
Вы не айтишник не берите на себя задачу айтишника, в данном вопросе вы должны выступать как заказчик, вам нужно реализовать сервис, для коммерческого предоставления услуг, вам необходимо чтобы клиенты имели доступ по сети, и могли пользоваться локально, при отсутствии соединения с сетью, вы хотите оптимизировать данное решение так, чтобы снизить стоимость оборудования. вариант храним все на своем сервере -да это Sass
+ для вас:
1.абонентская плата - может зависеть от количества пользователей
2.новые обновления делаются безболезненно нет желающих убить вас клиентов которым на их сервак пришли обнова и раз**нила все к чертям.
- для вас:
1. Работники в штате, как минимум админ сервера и техподдержка
2. Атаки на сервер (конкуренты например)
3.Аренда или покупка как минимум 1 сервера
Во-втором варианте для вас из плюсов то что все на железе (вы не заморачиваетесь с поддержкой своего сервера) клиента если его будут атаковать вы ответственности не несете, но по факту у вас единоразовый платеж от клиента и платная обнова на которую скупой клиент скорее всего забьет.
Выбор сделать не легко,надо учитывать на сколько финансово вы можете вложиться, приложение-клиент на мобилки и десктоп стоят отдельных денег, разработка веб-интерфейса и бэкенд тоже отдельно, поэтому изначально посчитайте выгодна ли вам в конечном итоге эта затея
Сергей, спасибо за ответ!
Допустим финансовый вопрос, хоть и играет важную роль, но не находиться на первом месте, куда важнее отказоустойчивость, корректность, простота и удобство работы. И реализовываться будет именно путем найма программистов, поскольку этот проект далеко не единственный. Вопрос в том кого нанимать? HTML + JS для фронтенда? Android и iOS на аутсорс? Для бекенда Python или ...? Либо создавать нативные приложения? Я вообще в сторону Go посматриваю)
Вы же не айтишник), технологии надо выбирать проверенные и популярные, GO - пока не настолько популярен, python, java, c++,php и т.д. выбирать из них надо конкретно по нагрузке проекта и удобству использования, если нужен хороший интерфейс помимо программистов нужен еще и проектировщик интерфейсов ( web дизайнер - это не чувак который в фотошопе вам нарисовал красивую страничку), а опытный человек реально понимающий проблемы UI, отказоустойчивость, это задача больше админа серверов,хотя и программисты должны разработать оптимальную архитектуру, аутсорс в вашем случае мне кажется не подходящее решение.
Я бы сделал так, шел бы маленькими итерациями
1) web
2)приложения на смартфоны планшеты
Построить бэкенд можно на основе микросервисов, таким образом разные части системы можно будет писать на более удачном для этого языке
Сейчас так и реализовано - все через веб-браузер, что для ПК, что для планшета, отдельные приложения для мобильных устройств запланированы после реализации главной части проекта.
Советуете придерживаться данной концепции?
И что вы имеете ввиду под микросервисамии? "Организация сервисов вокруг бизнес-потребностей, автоматическое развертывание, перенос логики от шины сообщений к приемникам (endpoints) и децентрализованный контроль над языками и данными" или что-нибуть конкретнее?
Имею ввиду центральный сервер доступный через веб, основной функцией которого будет обслуживание запросов от клиентов - организаций с разным числом работников, в отличие от некоторого множеста локальных серверов, где один сервер обслуживает одну организацию с определенным числом клиентов.