gRPC - альтернатива REST API от Google. Пишем gRPC сервер и клиент на Java и Python.

Поділитися
Вставка
  • Опубліковано 23 лют 2021
  • Скачать PVS-Studio бесплатно: www.viva64.com/alishev
    UA-cam канал PVS-Studio: / pvsstudiotool
    VK группа PVS-Studio: pvsstudio_rus
    pom.xml: gist.github.com/NeilAlishev/1...
    Продвинутая Java - swiftbook.org/courses/415
    Telegram: t.me/alishev_g
    Реклама и сотрудничество: alishev.neil@gmail.com

КОМЕНТАРІ • 296

  • @alishevN
    @alishevN  3 роки тому +7

    Telegram: t.me/alishev_g

  • @wizardadeptus2044
    @wizardadeptus2044 2 роки тому +11

    Хорошее видео. Позволило поверхностно разобраться в gRPC под стакан уиски. В свою очередь это позволило отдебажить gRPC сервак заказчика на котлине и понять почему он возвращал NPE в ответе. А то непонятно было, куда коней запрягать с этим gRPC. Ура, баг починен, автору респект.

  • @user-vj7dc1ib2y
    @user-vj7dc1ib2y Рік тому +22

    Огромная благодарность, Наиль, за Ваш труд! Реально талант. Настолько доступным языком объяснять сложные вещи. Смотрел в других источниках про gRPC , почти ничего не понял. После этого видео сразу целостное понимание технологии, подхода и преимуществ. И сразу с примером👍Спасибо!)

  • @aliaksandraryzhyk4138
    @aliaksandraryzhyk4138 2 роки тому +4

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

  • @DairaGames
    @DairaGames 3 роки тому +38

    Блин чувак. Ты просто вангуешь. Я только сегодня такой думал: блин, вот бы урок про микросервисы замутил бы кто то годный. И тут уведомление. Просто бомба. Спасибо большое. От души. Я в этой жизни теперь точно не буду счастлив, пока лично не найду тебя не пожму руку. Спасибо

  • @eugenenazirov
    @eugenenazirov Рік тому +2

    Офигенно! Как раз на проекте столкнулся с использованием микросервисов, которые общаются по gRPC. Помогло очень быстро въехать в тему. Спасибо большое!

  • @user-jo5js4ug5b
    @user-jo5js4ug5b Рік тому +1

    Мужик, спасибо за объяснение с практикой и сжато в тоже время.
    Я ваще не в теме был.
    Но честно, мужик.
    ctrl + A, ctrl + c - скопировать все содержимое файла.
    ctrl + A, ctrl + v - вставить в файл с полной заменой.
    Так сильно проще, чем крутить колесико.

  • @user-hv2vy3kd9f
    @user-hv2vy3kd9f 2 роки тому +4

    Я наконец то разобрался с gRPC) Спасибо тебе за проделанную работу!

  • @psy667
    @psy667 3 роки тому +7

    Очень качественная подача информации, спасибо вам огромное

  • @ivanfedin9094
    @ivanfedin9094 Рік тому +1

    Шикарный урок - очень подробно и понятно. Спасибо!

  • @Skykvi
    @Skykvi Рік тому +1

    Очень круто, отличное содержание, приятно смотреть. Спасибо за труд.

  • @olegrazin3429
    @olegrazin3429 3 роки тому +3

    Так вот как ты выглядишь, Alishev. Этот видео формат очень крут!

  • @varchar21
    @varchar21 3 роки тому +2

    Наиль, благодарю! Всегда актуально и своевременно. Спасибо еще раз!

  • @nikenuke
    @nikenuke 8 місяців тому

    Очень классный материал! Посмотрел до этого 10 роликов по gRPC и не мог разобраться все равно, теперь же все ясно, спасибо!

  • @user-ty7dj4pm5b
    @user-ty7dj4pm5b Рік тому

    Спасибо большое за ценный и подробный урок!

  • @CyberAcidPlanet
    @CyberAcidPlanet 3 роки тому +6

    Аргмент по несжимаемость JSON надуманный. Он отлично жмётся тем же gzip или brotli, где не будет проблемы того что у нас один и тот же ключ повторяется много раз (будет ссылка на этот символ при сжатии).

  • @fedyasavchuk1043
    @fedyasavchuk1043 3 роки тому +15

    Был бы очень признателен за подобные уроки по kafka и maven :)

  • @user-fy5kj8hf4j
    @user-fy5kj8hf4j 3 роки тому +3

    Отличный и понятный урок, спасибо!

  • @RG-em1nh
    @RG-em1nh 3 роки тому +41

    Мне бы такого ментора как ты, спасибо большое добрый человек !

  • @leonidvolobuev7096
    @leonidvolobuev7096 3 роки тому +3

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

  • @dzmitrydarashuk6528
    @dzmitrydarashuk6528 8 місяців тому

    Я человек простой, вижу новое видео Алишева - захожу, ставлю лайк!

  • @svetlanamazhaykina6918
    @svetlanamazhaykina6918 Місяць тому

    Спасибо за Ваш труд! Коммент в поддержку канала.

  • @user-rk1xr3cs8x
    @user-rk1xr3cs8x 2 роки тому

    Прекрасный урок, большое спасибо!

  • @ykochubeev
    @ykochubeev Рік тому

    Большое спасибо вам, очень полезное видео. Пойду поищу ваши уроки про Java

  • @user-mk2xy9py8s
    @user-mk2xy9py8s 7 місяців тому

    Наиль, у Вас талант объяснять сложные вещи простым языком. Например я очень долго искал и не мог найти понятное для себя руководство по Spring'у, пока не наткнулся на Ваш курс - он стал для меня единственным спасательным кругом. И то же самое с gRPC. Вам нужно собственную школу по программированию открывать для программистов, уже владеющих основами языков программирования, такой как бы продвинутый курс. Или стажировать людей за деньги где-то с оплатой в Вашу сторону. Первую работу найти очень тяжело, поэтому думаю на это реально должен быть спрос - новичкам дать возможность покупать коммерческий опыт, котирующийся у работодателей, за деньги.

  • @ZzooD
    @ZzooD 3 роки тому

    Классный урок, побольше бы таких )

  • @MrNil1982
    @MrNil1982 3 роки тому +1

    Ща некогда, но позже обязательно погляжу. И чую новый формат зайдет (давно пора) Пока просто лайкос и низкий поклон за труд!

  • @Denis-Orlov
    @Denis-Orlov 3 роки тому +9

    Как же ж вовремя! Как раз на работе попросили замутить gRPC клиент!

  • @It_wizards
    @It_wizards 2 роки тому

    Круто, очень доступно, красавчик!

  • @user-hd8sc3ux7i
    @user-hd8sc3ux7i 9 місяців тому

    Редко оставляю комментарии, но ты красавчик! Столько полезного материала!❤

  • @AndreyMalygin
    @AndreyMalygin 2 роки тому

    Товарищ Алишев, хочу сказать тебе, что ты крутой поц, который выручает меня в знаниях уже который раз, тебя знают половина моей группы в институте, ты уже стал некой мафией в java. Держишь уже свою нишу довольно долго, репект

  • @user-lx4dc1ls3e
    @user-lx4dc1ls3e 7 місяців тому +3

    По моему мнению Наиль самый комфортный обозреватель по Java!!! Скорость подачи ин-фы + грамотная речь + хороший объём нового материала!!! В общем просто КЛАСС👍

  • @Nievinor
    @Nievinor 3 роки тому

    Не знал ранее про данный механизм. Спасибо)

  • @miketuev3241
    @miketuev3241 3 роки тому

    Супер ролик! Большое спасибо. Доходчиво и понятно.

  • @vladimirnechiporyuk2948
    @vladimirnechiporyuk2948 Рік тому

    Афигенная штука. Теперь буду писать пет проекты только на gRPC!

  • @spilnich
    @spilnich 3 роки тому +3

    Получил первый оффер! Спасибо огромное за grpc и все видео по Spring, кучу раз пересматривал и конспектировал.

  • @maxim9976
    @maxim9976 3 роки тому +6

    21:30 для браузера можно использовать gRPC-web. Там пока есть ряд ограничений по стримингу, но в целом рабочий вариант.

    • @RedkeiGost
      @RedkeiGost 2 роки тому +1

      Да ну куча проблем у gRPC-web. Вот приходит вам мессаг-респонс, и нужно её прочитать. Вы делаете toObject и если в глубине есть тип google_protobuf_struct_pb.Struct то оно превратится в fieldsMap. И можно конечно на Struct юзать toJavaScript, но Struct может быть очень глубоким потомком jspb.Message и во-первы, идти через геттеры к нему крайне неудобно, а во-вторых, нам нужно все дерево и нужно как-то мержить результат toObject и его потомка. С типизацией у Struct тоже плохо - она вообще не имеет типа и это реально приводит к проблемам в typescript. В целом ну очень неудобно, имхо.

  • @pozystark
    @pozystark 2 роки тому

    Хороший урок. Спасибо)

  • @llARXANGELll
    @llARXANGELll 2 роки тому

    Ух годнота. Однозначно лайк!!!

  • @faniskhalikov9736
    @faniskhalikov9736 3 роки тому +3

    Круто! Очень хорошо разобрано, заходит отлично ) Талантливый человек талантлив во многом (на заднем плане гитара и синтезатор : ) )

  • @user-uu7cg8mp7l
    @user-uu7cg8mp7l 3 роки тому

    Классно!!! Спасибо большое за проделанную работу! Очень интересно слушать!

  • @DairaGames
    @DairaGames 3 роки тому +1

    Формат кстати бомбезный. Люблю иногда посмотреть стримы от GeekBrains (Александр Фирсунов) из за того, что урок идёт на примере и больше часа.

  • @antondzmitruk2102
    @antondzmitruk2102 3 роки тому +2

    Нет слов! Спасибо тебе огромное!

  • @ivanstrelka3448
    @ivanstrelka3448 2 роки тому

    Очень круто. Спасибо

  • @alekcandrovich
    @alekcandrovich 2 роки тому

    спасибо! все понятно и лаконично

  • @kursruk
    @kursruk 3 роки тому +2

    Отсутствие строгой типизации, это не минус, а плюс JSON.
    По поводу избыточности JSON.
    {
    "header":["date", "event"],
    "data": [
    ["2020-01-14", "Событие 1"],
    ["2020-01-19", "Событие 2"],
    ["2020-01-23", "Событие N"],
    ]
    }
    Так, что избыточных ключей легко избежать.
    Также ничто не мешает гонять потоки JSON объектов по HTTP 2.
    Тем не менее большое спасибо за видеоролик.

    • @alexanderp6982
      @alexanderp6982 Рік тому

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

  • @alexeymyasnichenko3318
    @alexeymyasnichenko3318 2 роки тому +2

    был ли у кого затык в том, что после генерации классов из прото файла, в таргет папке все как в видео, но при имплементации возникает затык, идея просто не видит этот класс из таргета, при ручном импорте com.example.grpc* , идея не видит уже с папки example . хотя ТООЧНО она в иерархии папок в таргет файлах есть как в видео.

  • @Pewdew
    @Pewdew 3 роки тому

    Послушал с удовольствием, первый раз покурить оторвался на 47й минуте))

  • @ChamZod
    @ChamZod 3 роки тому +1

    Не успел начать рест изучать, а тут уже что-то новое)

    • @NummeSpnet
      @NummeSpnet 3 роки тому

      не парься, ещё долго рест будет актуален.

  • @denislobanov7582
    @denislobanov7582 2 роки тому

    Просто Вау! Такая крутая штука, а я и не знал! Спасибо автору за труд, очень хороший и нужный вводный ролик! Кстати, а почему в сервере response билдится каждую итерацию цикла? Один раз сбилдить, затем много раз отправлять. Или так нельзя?

  • @evgenkr2993
    @evgenkr2993 3 роки тому

    супер видео! понятно преподнесено материал! спасибо!

  • @aidynabirov7728
    @aidynabirov7728 2 роки тому

    Отличное видео !

  • @MrShark123123
    @MrShark123123 3 роки тому +1

    Надеюсь тема grpc будет дальше развиваться,очень нужная штука сейчас,а русскоязычных материалов нету

  • @user-fg7hf4qo8m
    @user-fg7hf4qo8m 3 роки тому +9

    Никто не мешает в rest использовать бинарный формат и сжатие.

    • @kalashnikofsergey7064
      @kalashnikofsergey7064 3 роки тому

      Я бы посмотрел как ты свагером нагенеришь код под бинарные сообщения

    • @dark_evil77
      @dark_evil77 3 роки тому

      Я мешаю

    • @user-fg7hf4qo8m
      @user-fg7hf4qo8m 3 роки тому +2

      @@kalashnikofsergey7064 чем? Тут ведь речь шла не об удобстве и трудозатратах, а о принципиальной возможности.

    • @user-ns7jq7sf1g
      @user-ns7jq7sf1g 3 роки тому +5

      это помимо того, что json, как и любой текст, прекрасно жмётся апаратными средствами, прозрачно для разработчика.

  • @ilyababcenco6864
    @ilyababcenco6864 3 роки тому +7

    Автолайк, Наиль скажи пожалуйста когда ждать следующий урок по спрингу, ну ооочень жду там как раз на самом интересном ты остановился

    • @alishevN
      @alishevN  3 роки тому +11

      по спрингу я записываю полный курс. выйдет через месяц-два

  • @mykytafrolov
    @mykytafrolov 3 роки тому

    Крутой урок, спасибо!

  • @arthureirich7591
    @arthureirich7591 3 роки тому +1

    Скажите, пожалуйста, в чем отличие установки соединения по HTTP 2 с последующим получением по этому соединению потока данных и сокетов? Используя сокеты тоже ведь можно установить отдельное соединение с сервером и получать по нему данные? Большое спасибо за урок!

    • @gregory-povorozniuk-piano
      @gregory-povorozniuk-piano Рік тому

      HTTP и Web Sockets это разные протоколы сделанные на основе TCP

  • @kazakhification
    @kazakhification 3 роки тому +24

    Json сжимается gzip-ом разве нет?

    • @alishevN
      @alishevN  3 роки тому +1

      даже сжатый JSON все равно занимает больше места, чем protobuf - nilsmagnus.github.io/post/proto-json-sizes/

    • @FastDamage
      @FastDamage 3 роки тому +6

      @@alishevN Честно не много не понял,так если проблема в размере JSON,что мешает весь JSON прогнать через protobuf и отправить? я ничего не имею против gRpc но в большом проекте где под 1000+ методов которые взаимодействуют с различными микросервисами замучаешься всё описывать в .proto (для такой задачи надо нанимать отдельно человека на должность mapper ;) )

    • @mishashins
      @mishashins 3 роки тому

      @@FastDamage у нас в C# можно описывать интерфейсы)

    • @brunneng8575
      @brunneng8575 3 роки тому +5

      Автор даёт ссылку на тесты. Там видно что при коротких сообщениях прото дает выигрыш. Однако на больших сообщениях явно теряет преимущество.
      Я думаю что нужно ещё больше тестов. Повысить энтропию данных, зажать их и посмотреть что получиться. Есть шанс что в разных ситуациях, в разных задачах придется выбирать между прото или json вариантом, так как есть зависимость от объема данных и рассеивании. Аргумент того что json сжатие требует процессорное время, такое себя, так как любое сжатие этого требует. Нужно больше хороших синтетических тестов и тестов из жизни, реальных проектов.
      Но по мне, пока что, JSON выглядит лучше, даже если на коротких сообщениях проигрывает.

  • @antondzmitruk2102
    @antondzmitruk2102 3 роки тому

    Ты мог бы сказать типо есть такая штука от Гугла и используйте ее вместо REST, она лучше), но ты прям с самого начала разжевал) Браво!

  • @indecentexposure852
    @indecentexposure852 Рік тому

    Спасибо за видео

  • @tuujhfjjiyiiitr5763
    @tuujhfjjiyiiitr5763 Рік тому

    Спасибо! очень помог

  • @user-iu6yz6ck6h
    @user-iu6yz6ck6h 3 роки тому

    Отличное видео) Спасибо

  • @gamechannel_833
    @gamechannel_833 3 роки тому +4

    Не посмотрев видео, сразу ставлю лайк!

  • @daniyarrakhymbek5876
    @daniyarrakhymbek5876 11 місяців тому

    Большое спасибо!

  • @mazeltov2701
    @mazeltov2701 3 роки тому

    Неплохая обертка веб сокетов

  • @GT-cv3xu
    @GT-cv3xu 3 роки тому

    Спасибо! Видео супер!

  • @user-vz5yr3dm7d
    @user-vz5yr3dm7d 3 роки тому

    Спасибо большое за видео. Хочу спросить - а как задавать повторяющиеся поля?Как задать хобби в этом примере? Я постоянно отваливаюсь по OutOfBoundException

  • @shubinsyu
    @shubinsyu 3 роки тому +5

    А чем отличается микросервис от EJB-компонента, работающего в распределенной JEE-платформе? И в чем отличие gRPC от RMI/Corba?

    • @user-uz4lo4ho6n
      @user-uz4lo4ho6n 2 роки тому +5

      EJB аналогичен по своей сути мультимодульному проекту на мавене, когда монолит делят на разные куски в зависимости от его действий в приложении, например, один ejb компонент отвечает за DAO, другой бизнес логика, другой интеграция с внешними сервисами и ТД.
      Концепция миеросесервисов строится вокруг DDD подхода в рамках которого у каждого сервиса может быть и свой dao слой, и свой слой интеграции и своя бизнес логика. А по поводу RMI, так эта технология и так используется в спринг клауд и является его базой. Grpc в отличии от RMI можно сипмлементировать на любом языке, таким образом не завязываясь на определенном стеке, в то время как клауд в рамках одного цельного приложения это набор микросервисов на java

  • @tonyvegas6009
    @tonyvegas6009 3 роки тому

    Лукас атдущи! работа с железом wanted :)

  • @Softovick
    @Softovick 3 роки тому +1

    Спасибо за видео.
    Но вопрос возник в голове у меня - ведь если текст, то его тоже можно сжимать на лету, есть же алгоритмы. Которые достаточно эффективно и быстро сжимаю данные и вот их можно по сети гонять. По сути ведь все равно gRPC дает накладные расходы на кодировние/декодирование, в REST это можно на сжатие/распаковку тратить. Ну правде это не решает вопрос с протоколом и стримами, согласен, но тем не менее.

  • @lookingforthetruth5903
    @lookingforthetruth5903 11 місяців тому

    Спасибо!

  • @ramilsafin5751
    @ramilsafin5751 3 роки тому

    С удовольствием послушал тебя, Наиль!

    • @ramilsafin5751
      @ramilsafin5751 3 роки тому

      Из предложений по улучшению контента: можешь приобрести планшет или ноутбук с поддержкой стилуса (ручки) для интерактивного добавления материала поверх слайдов.

    • @alishevN
      @alishevN  3 роки тому

      @@ramilsafin5751 Спасибо за фидбэк!) Подумаю над этим.

  • @eugenenovikov671
    @eugenenovikov671 2 роки тому

    Наиль, а если мы работаем в другой IDE, где нету такого окна Maven с package, как нам тогда всё запускать?

  • @kamurashev
    @kamurashev 3 роки тому +5

    Как скопировать джава RMI в другие языки и ни кому не говорить. Структура 1 в 1. И этой штуке 100 лет в обед. Я еще не родился. За видео лайк.

  • @darkstyleV
    @darkstyleV 2 роки тому

    Просто топ)

  • @pavelgolin2421
    @pavelgolin2421 3 роки тому

    для приема данных с сенсоров используется mqtt, а http для веба

  • @olzhasserikbayev1155
    @olzhasserikbayev1155 3 роки тому

    спасибо огромное за урок, очень многое для себя уловил))

  • @konstantinviktorovich8194
    @konstantinviktorovich8194 3 роки тому

    Подход работы с gRPC, чем то похож с SOAP. Там на основе wsdl генерится java код, а здесь на основе proto файла. Как у клиента так и у сервера эти два файла должны быть одинаковые.

  • @vladislavborisov985
    @vladislavborisov985 2 роки тому

    У меня такой вопрос, когда мы делаем стрим данных от сервера клиенту, в этот стрим попадает 10000 сообщений, которые клиент вычитывает подключившись к серверу, если происходит перезапуск клиента то сообщения читаются с начала, а как сделать, чтобы сервер стримил сообщения которые клиент получал бы не с самого начала, а в реальном времени, т.е. со следующего отправленного после подключения клиента?

  • @TeamKiller06
    @TeamKiller06 3 роки тому

    В REST API ведь можно использовать потоковые данные через библиотеку Reactor для Spring Boot. Данные передаются через Mono и Flux.
    Спасибо за обзор. Все четко и доступно. Однозначно заинтересовала технология. Немного напрягает что вместо JSON используется бинарный код

    • @johnxibai8454
      @johnxibai8454 2 роки тому

      Если не нравится делай на старых технологиях, и как ты собираешься организовывать стримы?

  • @p.polunin
    @p.polunin Рік тому

    Обалдеть! 😳

  • @redologs
    @redologs 3 роки тому +1

    Увидел тему, посмотрел длительность - лайк не глядя.

  • @user-vc5sn3ob6c
    @user-vc5sn3ob6c Рік тому

    Блин , хорошая лекция. Толковый лектор....

  • @ZIK_1337
    @ZIK_1337 6 місяців тому

    привет! а как происходит версионирование proto файлов? допустим на сервере он поменялся, это же не значит, что все клиенты должны обновляться? есть какие-то версии пакетов, чтобы использовать конкретный proto файл на клиентах?

  • @IgorAlov
    @IgorAlov 3 роки тому

    json так же сжимается может deflate или gzipом, если настроено сжатие между клиентом и серверов. это прям очень стандартно. и реально эффективно это все и получается бинарно. так же весь html передается, он сжимается при передаче. посмотрите это с помощью tcpdump данные в теле буду бинарными а не текстовыми при использовании сжатия

  • @k0rinf
    @k0rinf 3 роки тому +1

    Поясните как контролить версии прото файла!? Как сервисы должны понять что он обновился и нужно его поменять и перегенерить код!?

  • @Roma4086
    @Roma4086 3 роки тому

    а SoapUI еще используется где-нибудь?

  • @vitaliiyakubenko8246
    @vitaliiyakubenko8246 3 роки тому

    Привет. У меня есть несколько вопросов:
    А какое максимальное количество параллельных стримов/конекшенов может обрабатывать сервер?
    И ещё один вопрос - какая пропускная способность Grpc канала и какой размер задержки при передачи данных?

    • @johnxibai8454
      @johnxibai8454 2 роки тому

      я испытывал на 10000 параллельных запросов, нормально работает, сервер на Go

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Рік тому

    Спасибо

  • @KotlinBack
    @KotlinBack 3 роки тому

    Сразу вопрос. Как при потоковой передаче данных клиент поймёт, что данные кончились ? В данном примере клиент итератором бежит по ответам, получаемым от сервера, но если задержка между ответами будет составлять не 100мс, а разное время , то как клиент поймёт , что поток закончился? Или закрытие потока на сервере даст понять клиенту , что данных больше не будет ? За видео спасибо огромное !!

  • @user-be2cy2fb9u
    @user-be2cy2fb9u 2 роки тому

    огромное списибо

  • @user-df1bx3jl2c
    @user-df1bx3jl2c 3 роки тому

    В тренде :) 👍

  • @dmsa9404
    @dmsa9404 3 роки тому

    Прикольно... я уже хотел написать что-то из серии так это уже проходили с WSDL а тут и скорость выше раз в 10 и тыры пыры

  • @konstantinr7632
    @konstantinr7632 3 роки тому

    Отличные видео! Спасибо!

  • @phil2964
    @phil2964 3 роки тому +1

    Наилю лайк неглядя)

  • @lotierm
    @lotierm 3 роки тому +2

    rest api тоже можно бинарно передавать

  • @evgenyshevelev6100
    @evgenyshevelev6100 3 роки тому

    Охренеть! Это же гениально! Общение клиента и сервера как по шине между процессором и ОЗУ, например. Я балдею)

  • @dmitr8194
    @dmitr8194 3 роки тому

    Годно, плюсую!

  • @cannibalirk3055
    @cannibalirk3055 11 місяців тому

    некоторые зависимости из этого урока и protobuf-maven-plugin не обновлялись аж с 2018 года. есть какой-то более современный стек, заменяющий эти, очевидно, устаревшие инструменты?

  • @RedkeiGost
    @RedkeiGost 2 роки тому

    "в случаи с монолитным приложением мы можем изменить какую-то часть и это затронет другие приложения" - вопрос архитектуры монолита. Зацепленность-связанность, все дела. "Всё объединено" это не от монолитности же зависит. Микросервис тоже можно изменить так, что это затронет зависящие от него микросервисы.
    Используется версия http2 только если браузер его полностью поддерживает. Иначе энвой же шлет по http1, разве нет?
    Ключ-единицу 29:21 мог бы и proto сгенерировать.