на чём писать бэкенд?
От: Dair Россия https://dair.spb.ru
Дата: 06.04.19 07:34
Оценка:
Хотел было в веб-программирование, но там трут за фронтенд, решил сюда.

Я в основном умею в C++, но пишу ещё на Swift и Kotlin.

Мне надо ВНЕЗАПНО написать бэкенд для мобильного приложения.

Довольно минималистично — обмениваться json'ами с клиентом при помощи HTTP GET и/или POST.

Сейчас дичайший зоопарк языков и фреймворков для бэкенда.

C#/.NET — вроде уже умеет под линуксом работать, но брать продукт от Microsoft мне всё ещё стрёмно. И тяжёлое оно.
Java/J2EE — тоже тяжёлое.
Python/Django — за часа три курения мануала по Django я не понял, как там сделать просто. Как сделать сложно — понял.
Ruby/Rails — есть даже опыт, понятно что и как, пока что вариант по-умолчанию, если не найду ничего лучше.

Дальше терра инкогнита:
Go — почитал страницу "как сделать веб-приложение на го за полтора часа" или типа того — вроде понятно всё
Rust — почитал страницу "как сделать веб-приложение на русте за полтора часа" или типа того — тоже вроде понятно всё

Nodejs — мне претит писать на JS, но, может, миллионы мух не могут ошибаться?..

Наверно, есть что-то ещё.

---
Ещё такое, что возможно, один сервер не потянет, надо будет балансировку делать, или в облако это всё тащить. В облаках вообще всё инопланетяне придумывали, не понятно ровным счётом ничего, как там вообще хоть что-то сделать (как создать виртуалку с линуксом в AWS понятно, но под этим линуксом надо что-то запускать же, и тогда см. выше)

Сервер надо чтобы раздавать контент пользователям.
Контент сравнительно небольшой — ну десятки мегабайт. Пользователей тыщ 100.

Workflow типа "здрасьте, я тут у вас контент купил, вот чек" — "давайте посмотрим. Петровна! Ты этому молодому человеку пробивала?! Да? Вот, молодой человек, вам файлик, пожалуйста"
Ну или "Здрасьте, вот у меня чек, нет ли у вас чего новенького?" — "Петровна, помнишь этого парня? Помнишь? Хорошо. Да, вот у нас тут новенькое случилось специально для вас"

В качестве Петровны выступают Apple AppStore и Google Play Store, которые рассказывают, насколько валидны чеки, присылаемые с клиента.

Флейм приветствуется
Отредактировано 06.04.2019 7:34 Dair . Предыдущая версия .
Re: на чём писать бэкенд?
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 06.04.19 07:38
Оценка: :))
ну ты хотя бы на PHP-то умеешь программировать?
Re: на чём писать бэкенд?
От: reversecode google
Дата: 06.04.19 07:42
Оценка:
задавать вопрос в котором заложен ответ это такая многоходовочка ?
очевидно, пишите на том на чем умеете
/thread
Re: на чём писать бэкенд?
От: std.denis Россия  
Дата: 06.04.19 08:33
Оценка: 1 (1)
D>Я в основном умею в C++, но пишу ещё на Swift и Kotlin.
D>Java/J2EE — тоже тяжёлое.

а на kotlin без j2ee, с каким-нибудь ktor?
Re: на чём писать бэкенд?
От: neFormal Россия  
Дата: 06.04.19 08:40
Оценка: 2 (1) +1 -1
Здравствуйте, Dair, Вы писали:

D>Я в основном умею в C++, но пишу ещё на Swift и Kotlin.

D>Мне надо ВНЕЗАПНО написать бэкенд для мобильного приложения.
D>Довольно минималистично — обмениваться json'ами с клиентом при помощи HTTP GET и/или POST.

если будешь писать сам, то пиши на котлине.
берёшь самый тонкий веб-фреймворк, либу для жисонов, самый простой орм и за вечер ты это всё напишешь.

D>C#/.NET — вроде уже умеет под линуксом работать, но брать продукт от Microsoft мне всё ещё стрёмно. И тяжёлое оно.


непонятно про тяжесть.
но можно брать, если в команде, например, клиентщики пишут на шарпах, и вам будет нужна шареная между клиентом и бэком логика.

D>Java/J2EE — тоже тяжёлое.


оно быстрое.

D>Python/Django — за часа три курения мануала по Django я не понял, как там сделать просто. Как сделать сложно — понял.


зачем тебе контентный фреймворк?
для бэка достаточно какого-нить werkzeug.

D>Ruby/Rails — есть даже опыт, понятно что и как, пока что вариант по-умолчанию, если не найду ничего лучше.


зачем тебе контентный фреймворк?
для бэка достаточно thin+sinatra.

D>Дальше терра инкогнита:

D>Go — почитал страницу "как сделать веб-приложение на го за полтора часа" или типа того — вроде понятно всё
D>Rust — почитал страницу "как сделать веб-приложение на русте за полтора часа" или типа того — тоже вроде понятно всё
D>Nodejs — мне претит писать на JS, но, может, миллионы мух не могут ошибаться?..

не стоит тратить время.
а на жс можно переходить только с голодухи. хотя он процентов на 20 быстрее питона.

D>Ещё такое, что возможно, один сервер не потянет, надо будет балансировку делать, или в облако это всё тащить. В облаках вообще всё инопланетяне придумывали, не понятно ровным счётом ничего, как там вообще хоть что-то сделать (как создать виртуалку с линуксом в AWS понятно, но под этим линуксом надо что-то запускать же, и тогда см. выше)


запускаешь nginx и делаешь в нём балансировку между твоими запущенными инстансами бэкенда.

D>Сервер надо чтобы раздавать контент пользователям.

D>Контент сравнительно небольшой — ну десятки мегабайт. Пользователей тыщ 100.

если CDN для тебя дорого, то опять же nginx на раздаче работает хорошо.
...coding for chaos...
Re: на чём писать бэкенд?
От: andrey.desman  
Дата: 06.04.19 08:40
Оценка: 2 (1) +1
Здравствуйте, Dair, Вы писали:

D>Nodejs — мне претит писать на JS, но, может, миллионы мух не могут ошибаться?..


JS, если нет планов погрузиться в тему, я бы не стал брать. Язык весьма своеобразный, и мухи тут не при чем.
Вообще, это и к остальным вариантам относится.
Re: на чём писать бэкенд?
От: so5team https://stiffstream.com
Дата: 06.04.19 09:21
Оценка: 4 (3) +1 -1
Здравствуйте, Dair, Вы писали:

D>Хотел было в веб-программирование, но там трут за фронтенд, решил сюда.


D>Я в основном умею в C++, но пишу ещё на Swift и Kotlin.


D>Мне надо ВНЕЗАПНО написать бэкенд для мобильного приложения.


D>Довольно минималистично — обмениваться json'ами с клиентом при помощи HTTP GET и/или POST.


Как ни странно, но сейчас это можно запросто делать и на C++. Если целый ряд фреймворков для современного C++, которые позволяют без особых проблем принимать и обслуживать HTTP-запросы: RESTinio, Silicon, Pistache, RestBed, served, C++REST SDK. (Вроде бы RestBed, в приниципе, не очень шустрый, а C++REST SDK был не очень шустрым под unix-ами).

Для работы с json в C++ можно взять либо nlohmann::json, либо связку из RapidJSON+json_dto. В обоих случаях получится довольно компактно и понятно.
Re: на чём писать бэкенд?
От: landerhigh Пират  
Дата: 06.04.19 09:32
Оценка:
Здравствуйте, Dair, Вы писали:

D>В качестве Петровны выступают Apple AppStore и Google Play Store, которые рассказывают, насколько валидны чеки, присылаемые с клиента.

D>Флейм приветствуется

Если тебе нужны in-app purchases, то их нужно делать прямо в мобильной аппликухе используя их родное API, иначе получится нагромождение костылей.
Примеры у гугля, конечно, говно, но разобраться можно.
www.blinnov.com
Re: на чём писать бэкенд?
От: VladCore  
Дата: 06.04.19 11:20
Оценка: +2
Здравствуйте, Dair, Вы писали:


D>C#/.NET — вроде уже умеет под линуксом работать, но брать продукт от Microsoft мне всё ещё стрёмно.


До моно, java и питон ему ещё далеко. если говорить про "any Linux". На LTS-версиях популярных дистрибутивов с .net core все хорошо начиная с версии 2.1
Единственное что плохо с .NET — нет SDK под x86, хотя под 32х битный arm есть. похоже на то что 32-х битный линукс под Intel-архитектуру всё уже. И похоронила его не УбунтаЮ а MS.
Там длинная вобщем история не в пользу Microsoft. Если краткто то в MS очень любят убунту для серверов, а они, каноникал, выкинули поддержку x86. И майкрософт их поддержала. Напрасно.

D>И тяжёлое оно.


Я буду топить за C#/.NET для новичка. Гайд ровно один и неправильную библиотеку выбрать сложно. Гайд описывает все. Вместе с БД, безопасностью. Кстати entity framework тоже та самая правильная библиотека — новичкам позволяет девелопить БД так, как раньше только сеньоры умели.

D>Java/J2EE — тоже тяжёлое.

D>Python/Django — за часа три курения мануала по Django я не понял, как там сделать просто. Как сделать сложно — понял.

питон говорят вне конкуренции в научных/расчетных/gpgpu расчетах. несложный в освоении. про бекенды на питоне не слышал.

D>Ruby/Rails — есть даже опыт, понятно что и как, пока что вариант по-умолчанию, если не найду ничего лучше.


D>Дальше терра инкогнита:

D>Go — почитал страницу "как сделать веб-приложение на го за полтора часа" или типа того — вроде понятно всё
D>Rust — почитал страницу "как сделать веб-приложение на русте за полтора часа" или типа того — тоже вроде понятно всё

D>Nodejs — мне претит писать на JS, но, может, миллионы мух не могут ошибаться?..


Полная противоположность .NET/C#. Особенно во фронтенде я уверен — 50 полифиллов, 50 pub/sub-ов. 50 фрейморков рендера babel-ом. Ужас.
Отредактировано 06.04.2019 11:35 VladCore . Предыдущая версия .
Re[2]: на чём писать бэкенд?
От: Dair Россия https://dair.spb.ru
Дата: 06.04.19 12:40
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>ну ты хотя бы на PHP-то умеешь программировать?

Нет, как-то миновала меня чаша сия.
Re[2]: на чём писать бэкенд?
От: Dair Россия https://dair.spb.ru
Дата: 06.04.19 12:40
Оценка:
Здравствуйте, reversecode, Вы писали:

R>задавать вопрос в котором заложен ответ это такая многоходовочка ?

R>очевидно, пишите на том на чем умеете
R>/thread

Неочевидно, кстати. Если всегда писать на том что знаешь — как научиться чему-то новому?
Re[2]: на чём писать бэкенд?
От: Dair Россия https://dair.spb.ru
Дата: 06.04.19 12:40
Оценка:
Здравствуйте, std.denis, Вы писали:

SD>а на kotlin без j2ee, с каким-нибудь ktor?


Новое для меня слово, записываю. Спасибо.
Re[2]: на чём писать бэкенд?
От: Dair Россия https://dair.spb.ru
Дата: 06.04.19 12:43
Оценка:
Здравствуйте, so5team, Вы писали:

S>Как ни странно, но сейчас это можно запросто делать и на C++. Если целый ряд фреймворков для современного C++, которые позволяют без особых проблем принимать и обслуживать HTTP-запросы: RESTinio, Silicon, Pistache, RestBed, served, C++REST SDK. (Вроде бы RestBed, в приниципе, не очень шустрый, а C++REST SDK был не очень шустрым под unix-ами).


А что у описанных штук с продакшеном? Ну, т.е., реально в жизни это кто-то использует?

S>Для работы с json в C++ можно взять либо nlohmann::json, либо связку из RapidJSON+json_dto. В обоих случаях получится довольно компактно и понятно.


Да это-то и так используем, тут понятно всё.
Re[2]: на чём писать бэкенд?
От: Dair Россия https://dair.spb.ru
Дата: 06.04.19 12:49
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Если тебе нужны in-app purchases, то их нужно делать прямо в мобильной аппликухе используя их родное API, иначе получится нагромождение костылей.

L>Примеры у гугля, конечно, говно, но разобраться можно.

Что у Гугла, что у Эппла, описан следующий workflow:

Мобильный клиент у соответствующего API (В iOS — StoreKit) получает чек. Потом этот чек надо заслать на свой сервер, потому что если сразу спрашивать у Эппл/Гугл, то можно при помощи MitM обмануть. А потом надо пользователю собственно контент (файл) дать, за который пользователь заплатил. Этот контент надо где-то хранить и как-то обновлять.
Отредактировано 06.04.2019 20:02 Dair . Предыдущая версия .
Re: на чём писать бэкенд?
От: vsb Казахстан  
Дата: 06.04.19 12:50
Оценка:
Если хочешь просто приложение написать, классический сервер, то я бы тебе посоветовал Go. Язык простой, выучить его много времени не займёт, в стандартной библиотеке всё, что надо, есть, в общем просто сядешь и напишешь.

Если тебе нужна масштабируемость, тут я посоветую Google Cloud. Там подход не совсем такой, но масштабируемость там будет практически безграничная. Писать можно на том же Go.

Конкретно для твоей задачи я бы попробовал задачу раздачи самого контента переложить на Cloudflare. Я точно не знаю, можно ли там сделать защищённый контент, но задача выглядит типовой, думаю, способы есть. Тогда тебе не придётся заботиться о трафике со своего сервера.
Отредактировано 06.04.2019 12:55 vsb . Предыдущая версия . Еще …
Отредактировано 06.04.2019 12:55 vsb . Предыдущая версия .
Re[3]: на чём писать бэкенд?
От: so5team https://stiffstream.com
Дата: 06.04.19 13:10
Оценка: 1 (1)
Здравствуйте, Dair, Вы писали:

S>>RESTinio, Silicon, Pistache, RestBed, served, C++REST SDK. (Вроде бы RestBed, в приниципе, не очень шустрый, а C++REST SDK был не очень шустрым под unix-ами).


D>А что у описанных штук с продакшеном? Ну, т.е., реально в жизни это кто-то использует?


Да.

Еще есть proxygen от Facebook-а.
Re: на чём писать бэкенд?
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.04.19 13:37
Оценка: +2
Здравствуйте, Dair, Вы писали:

D>Go — почитал страницу "как сделать веб-приложение на го за полтора часа" или типа того — вроде понятно всё


Я бы выбрал Go. У него почти все, что тебе понадобится, есть прямо в стандартной библиотеке (т.е., не придется мучиться с выбором библиотек), сам по себе язык простой и понятный, а на выходе получается статически собраный исполняемых файл, который заработает на любпй машине.
Re: на чём писать бэкенд?
От: Буравчик Россия  
Дата: 06.04.19 14:20
Оценка: 1 (1) +1
Здравствуйте, Dair, Вы писали:

D>Python/Django — за часа три курения мануала по Django я не понял, как там сделать просто. Как сделать сложно — понял.


А что значит "просто"? В любом случае, совсем просто не будет, т.к. бэкенд, это как минимум:
— REST или RPC API, роутинг
— доступ к БД
— авторизация и аутентификация

В django все это уже включено, поэтому с наскоку кажется сложно.
Можно взять flask — все то же самое, но не из коробки, а из плагинов/библиотек (более гибко).

Для Json-бэнеда рекомендую Python + flask. В начале просто, затем по чуть-чуть усложняешь.

D>Ruby/Rails — есть даже опыт, понятно что и как, пока что вариант по-умолчанию, если не найду ничего лучше.


Умеешь ruby — пиши на нем.

D>---

D>Ещё такое, что возможно, один сервер не потянет, надо будет балансировку делать, или в облако это всё тащить. В облаках вообще всё инопланетяне придумывали, не понятно ровным счётом ничего, как там вообще хоть что-то сделать (как создать виртуалку с линуксом в AWS понятно, но под этим линуксом надо что-то запускать же, и тогда см. выше)

Потому что облака — это целый спектр технологий, которые позволяются делать масштабируемые и надежные системы — микросервисы, очереди сообщений, контейнеры и оркестрация, безсерверные вычисления и многое-много другое. Без этого просто не построить масштабируемые системы. Как начнешь делить систему на 2-3 сервера с балансировкой, сразу станет понятно, что это не "инопланетяне придумывали".

В простейшем случае имеется один линукс сервер, на нем веб-сервер, обрабатывающий твои запросы. Например, для питон есть стандарт wsgi. Приложения, написанные на flask или django развертываюся очень просто.

D>Сервер надо чтобы раздавать контент пользователям.

D>Контент сравнительно небольшой — ну десятки мегабайт. Пользователей тыщ 100.

Рассмотри возможность хранения контента в облаке.
Best regards, Буравчик
Re: на чём писать бэкенд?
От: Anton Batenev Россия https://github.com/abbat
Дата: 06.04.19 14:25
Оценка: +1
Здравствуйте, Dair, Вы писали:

D> Довольно минималистично — обмениваться json'ами с клиентом при помощи HTTP GET и/или POST.


Для перекладывания json-ов из одного места в другое по HTTP — Go идеальный кандидат.
Бэкапимся на Яндекс.Диск
Re: на чём писать бэкенд?
От: Ip Man Китай  
Дата: 06.04.19 14:57
Оценка: +1
Здравствуйте, Dair, Вы писали:


D>Java/J2EE — тоже тяжёлое.


сам ты тяжёлый.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.