
Alexander
02.01.2017
23:21:58

Nikolay
02.01.2017
23:22:08
но, по моему опыту, орм джанги, например - неловкая поделка на фоне SQLAlchemy
а движок шаблонов - говно по сравнению с jinja2

Google

Roman
02.01.2017
23:22:48

Alexander
02.01.2017
23:22:52
и если уж нужна SQLAlchemy - я бы выбрал Pyramid, а не Flask

Nikolay
02.01.2017
23:23:01

Alexey
02.01.2017
23:24:20
rest^Whttp
http1, http2 относительно быстро парсится ибо бинарный

Alexander
02.01.2017
23:24:43
я с этим не согласен но пофиг) ладно, давай на другую тему, не будите во мне Чистякова))

Pavel
02.01.2017
23:25:03

Nikolay
02.01.2017
23:25:05
но на практике чаще всего json

Roman
02.01.2017
23:26:14

Pavel
02.01.2017
23:27:00

Roman
02.01.2017
23:27:09

Google

Nikolay
02.01.2017
23:27:22
но ты на практике вряд ли будешь не-json использовать, верно?
хоть REST сам и не о JSON конкретно

Roman
02.01.2017
23:28:54

Alexey
02.01.2017
23:28:55
мне кажется если сейчас делать API для клинетов не умеющих gRPC — то лучше делать это через https://github.com/grpc-ecosystem/grpc-gateway

Pavel
02.01.2017
23:29:27

Roman
02.01.2017
23:30:25

Nikolay
02.01.2017
23:31:14

Alexey
02.01.2017
23:31:21

Roman
02.01.2017
23:31:43
проблема rest в том, что хер там сделаешь батчинг. а если его сделать, то всё сводится к одному эндпоинту и уже никакой это не рест )

Nikolay
02.01.2017
23:33:46
в чем проблема?

Pavel
02.01.2017
23:33:49

Nikolay
02.01.2017
23:34:10
и да, JSON - это тоже YAML

Roman
02.01.2017
23:35:40

Alexey
02.01.2017
23:37:07

Roman
02.01.2017
23:37:20
в смысле? коллекция объектов - такой же объект
мм... смотри. я пример этот уже приводил и просто повторюсь: надо послать и убедиться в доставке 10к смс-сообщений через сервис, который умеет послать смс(вернув message id) и по этому message id сказать статус(доставлено/нет).

Google

Nikolay
02.01.2017
23:38:40

Alexey
02.01.2017
23:39:13

Roman
02.01.2017
23:39:36

Nikolay
02.01.2017
23:39:48
ты берешь и сабмитишь коллекцию из 10 объектов PUT или POST запросом на урл, тебе в ответ приходит 10 тех же объектов с привязанными к ним тасками, у которых обновляется статус

Roman
02.01.2017
23:39:50

Alexey
02.01.2017
23:41:28
опять же, я не говорю что мультиплексировать вещи внури tcp — это праям охуенная идея, я лишь говорю, что большинство этих проблем было решено командами из Гугла 5 лет назад. Когда они доготовят QUIC, то grpc наверняка плавно перейдёт на него

Nikolay
02.01.2017
23:41:34

Roman
02.01.2017
23:41:48

Nikolay
02.01.2017
23:41:49
но это из задачи надо исходить, опять же
если у тебя больше разных типов объектов и действий с ними - тогда REST есть REST

Alexey
02.01.2017
23:42:44
это только linux.
на серверсайде всегда линукс, а с повсеместным андройдом, половина high packetloss клинетских девайсов тоже под ним

Roman
02.01.2017
23:45:06

Alexey
02.01.2017
23:45:17
это CUBIC так делает

Nikolay
02.01.2017
23:45:42

Alexey
02.01.2017
23:46:10
это не правда, для BBR, CDG, и New Vegas

Roman
02.01.2017
23:46:17

Alexey
02.01.2017
23:46:37
да, многие так делают, но это не свойство протокола

Google

Alexey
02.01.2017
23:46:53
это свойство конкретных имплементаций

Roman
02.01.2017
23:47:20

Alexey
02.01.2017
23:48:08
потому что его нельзя в продакшн, ибо он написан PhD для PhD. Его CUBIC задавит в интернете.

Roman
02.01.2017
23:49:10
скатились к каким-то жутким нескольким кб/с

Alexey
02.01.2017
23:49:50
это крайний случай не-fairness - starvation

Pavel
02.01.2017
23:49:53

Nikolay
02.01.2017
23:50:26
а REST может определять тип, с которым работать, по заголовку в запросе клиента
а что тебе не нравится?

Pavel
02.01.2017
23:50:59
Для валидатора потребуется еще раз описать правила?

Roman
02.01.2017
23:52:42

Pavel
02.01.2017
23:52:53
Дальше я бы тебя спросил про кеширование, про etag, про интеграцию с sqlalchemy

Roman
02.01.2017
23:53:59

Alexey
02.01.2017
23:55:26
Люди, одумайтесь, не пишите вы это говно в ручную, возьмите ваш внутренний типизированный бинарный RPC, и генерите автоматом стабы для api-gateway'я который вам будет преобразовывать входящий JSON обратно в thrift/protobuf/etc и дальше отсылать по вашему внутреннему RPC.
Нафиг вам 2 разные системы?
Вот простой пример прямо от GCP: https://cloud.google.com/service-management/reference/rpc/google.api#http

Roman
02.01.2017
23:56:55

Alexey
02.01.2017
23:56:59

Nikolay
02.01.2017
23:57:25
там все такие вещи проверяет еще компилятор

Google

Alexey
03.01.2017
00:00:11
в Go/C++/Rust у нас тоже эти вещи проверяет компилятор, в Python protobuf stub'ы аннотированы mypy. Это не спицифично для какого либо языка, это можно сделать везде.

Vladimir
03.01.2017
00:04:15

Alexey
03.01.2017
00:08:07
Речь про внешнюю была вроде :)
Для внешней балансировки DNS — это пиздец. У нас был случай когда какие-то принтеры резолвили dropbox.com только на старте. Пришлось год ждать пока они все поребутаются, чтобы выкинуть старый IP.
Да что далеко ходить, куча провайдеров по миру имеют говноадминов, которые настроили bind игнорировать любой TTL меньше месяца. Мы так на www месяц ждали чтобы со старого IP безопастно уехать.
(про DDoS я вообще молчу, если у вас есть куча "слабых" unicast IP'шников - заддоить очень просто)

Pavel
03.01.2017
00:10:19

Alexey
03.01.2017
00:15:04

Pavel
03.01.2017
00:18:27
Сформулируй, что хотел сказать-то

Alex
03.01.2017
00:23:49
Леголас фигню пороть не будет

Uncel
03.01.2017
00:28:14
https://arxiv.org/pdf/1611.05428.pdf

Дмитрий
03.01.2017
00:49:36

Nikolay
03.01.2017
00:52:31

Дмитрий
03.01.2017
00:52:40
Но бинарный полиморфный язык телеграма это уже слегка перебор, конечно

Nikolay
03.01.2017
00:53:19
не, бинарных протоколов много разных
мы именно про REST

Roman
03.01.2017
01:26:55

Nikolay
03.01.2017
01:27:35
когда вырождается, когда нет
для CRUD - REST, для запуска удаленных процедур - RPC, на деле обычно комбинация из обоих подходов

Roman
03.01.2017
01:29:40

Nikolay
03.01.2017
01:32:22