LINUX.ORG.RU
ФорумTalks

AWS и в частности S3 как vendor lock

 , , ,


0

1

N месяцев назад мне ставили в упрек то, что якобы аналоги сервисов AWS есть у кучи других провайдеров. Ну есть же да? Сколько альтернативных реализаций S3, да? Как бы не так. Который месяц ковыря S3, я прихожу к однозначному выводу: интерфейсы AWS определены через реализацию, то есть, нет никаких общих абстрактных протоколов, разработанных для конкретных задач. Вместо этого протекает деталь реализации здесь, протекает костыль тут, здесь устаревший параметр, которым уже давно никто не пользуется, а здесь новый параметры, которым ЕЩЁ никто не пользуется, и по итогу портирование минимально сложной системы на базе S3 с одной площадки на другую требует целой команды макак с напильниками.

Раньше я не решался высказать эту мысль, потому что у меня небыло железных пруфов, но сейчас они есть, по крайней мере по отношению к S3. Даже достаточно продвинутые реализации S3 API в Yandex.Cloud или Ceph имеют огромное число несовместимостей с AWS.

Как бы это не могло звучать странно, тем не менее, эту картину я вижу далеко не первый раз. Это не тупая ошибка, а точный расчет — так развивали свои решения как минимум Oracle, SAP, Microsoft, а именно — холили и лелеяли каждый маленький костыль, для поддержки которого приходилось выделять отдельного программиста, ровно для одной цели — чтобы никто не мог реверс-инженернуть твою софтину и написать альтернативу, таким образом уведя клиентов. IBM сделало независимый от реализации стандарт PC? Intel сказал огромное спасибо и монопольно основался в нише.

К тому же, с маркетинговой точки зрения чем больше пунктов с фичанеймами в брошюрках — тем лучше смотрится продукт. Почесать левой рукой левое ухо — замечательная фича. Клиент приходит с запросом «мне нужно почесать левое ухо правой рукой» — «извините, поддержка такой фичи у нас не планируется».

И только не нужно мне говорить, что вот же есть где-то Джон и Фрэнком, которым позарез нужен ваш костыль 1997 года выпуска, без которого они не могут жить. Могут. Разработчик мог сэкономить на поддержке этого костыля, потеряв лояльность пары клиентов — это допустимая жертва. Однако, фактор vendor-lock-а за счет бесконечной поверхности интерфейса В УСЛОВИЯХ ИЗБЫТКА ФИНАНСИРОВАНИЯ слишком привлекателен. Я хочу подчеркнуть фактор избытка финансирования, потому что при недостатке финансирования клиенты Джон с Фрэнком будут мгновенно посланы, руководство ни одной минуты не будет размышлять про какую-то совместимость, доверие клиентов, и прочие пустые слова, лишь поддержка будет отвечать дежурное «мы работатаем над этим, оставайтесь пожалуйста на связи». Всё, о чем будет думать руководство — это как сократить издержки. чтобы выйти на прибыль.

Мне удивляет только тот факт, что подобные соображения никто не пишет на каждом заборе. Ведь это просто священные заповеди коммерческой разработки, но даже я до недавних пор не рисковал оглашать их публично. Страшно то, что эти заповеди «с молоком матери» впитали многие разработчики, и следуют им, даже не понимая, что эти заповеди существуют. «Я должен поддерживать совместимость ради совместимости. Моя совместимость должна быть совместимой. Даже если я обосрался в минорном релизе, который скачало 10 человек — я буду эту ошибку тащить следующие 10 лет разработки, потому что могу».

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

★★★★

Последнее исправление: byko3y (всего исправлений: 1)

Ответ на: комментарий от abcq

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

Какие причины стоимости исходящего трафика AWS, если не vendor lock? Давай, придумай мне хотя бы одну альтернативную причину. По опросам пользователей, причина номер один, почему они не ищут альтернативные сервисы — это «трафик наружу дорогой», вторая по популярности причина «да нам просто пофик».

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

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

abcq ★★
()
Ответ на: комментарий от i-rinat

какие там еще преимущества

Видимо, вендорлок на другого вендора лучше вендорлока на Амазон

Я уже отвечал — клиент под B2 пишется с нуля за пару недель. Тупой GET/PUT можно написать за день-два. То есть, там максимально стандартный HTTP, под него даже SDK толком не нужен.

byko3y ★★★★
() автор топика
Ответ на: комментарий от abcq

ага, черканите номерок

Ну как бы всё сводится к «тебя по какому телевизору показывали». Я хз, в какой телевизор залезть, чтобы получить доверие.

byko3y ★★★★
() автор топика
Ответ на: комментарий от abcq

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

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

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Я не знаю, насколько можно считать хайлоадом тот проект, в котором я проработал 6 лет

если не знаешь, то это показатель.

Как долго вы харитесь в сраку, чтобы критиковать гомосеков?»

я проработал 6 лет.

то есть так ты оцениваешь свои профессиональные достижения за эти 6 лет?:)

ок, вопросов больше не имею=) читать портянку не буду)

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от i-rinat

А разве S3 не через HTTP работает?

И да, и нет. Они накостылили поверх HTTP черт знает что, мне страшно теперь думать, как мы это всё со своей стороны будем повторять. HMAC-авторизация, пайплайнинг не соответствует RFC, из-за чего наивные HTTP клиенты сходят с ума от ответов S3 — это из наиболее вопиющего.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

в доверчивый телевизор, который никому отказать не может и всем доверяет, и в 90% случаев жалеет об этом потом :)

abcq ★★
()
Ответ на: комментарий от byko3y

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

Вы как будто такие схемы первый раз видите и слышите.

Еще раз вам повторю, может быть 1000 причин. Но вы как с рен-тв сбежали )

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

abcq ★★
()
Последнее исправление: abcq (всего исправлений: 1)
Ответ на: комментарий от byko3y

ну так то и диг например не говоря уже о нслукапе сходили и даже сходят с ума от всего новомодного транспорта и шифрования для днс и что же с того, тоже думаете заговор?

abcq ★★
()
Ответ на: комментарий от byko3y

HMAC-авторизация

Необходимая защита при условии работы через HTTP без TLS.

пайплайнинг не соответствует RFC

А, да, это забавный косяк. Ожидаемый, конечно, но всё равно забавный.


Кстати, когда это B2 вышел в публичный доступ? И какая доля рынка у них?

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Cамое главное кто их хозяин и откуда деньги, а то вдруг еще выяснится что снова амазон, ну тогда точно заговор… и такой хитрый-хитрый чтобы точно никто не подумал что заговор, а на самом то деле заговор в заговоре, тайные планы внутри других тайных планов (с) Владимир Харконен.

abcq ★★
()
Ответ на: комментарий от abcq

Это было первое, что я нагуглил. Но это же не анонс доступности сервиса. Это размещение акций на рынке: IPO, Initial Public Offering.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

ну если надо точнее думаю там же есть и анонс доступности или был в рассылке от них. По любому они как-то эту инфу доносили или донесут, если еще не донесли.

abcq ★★
()
Ответ на: комментарий от abcq

ну если надо точнее

Прямо до слёз рассмешило. Заявить после абсолютно неправильного ответа «ну если надо точнее» это что-то с чем-то.

С таким не поспоришь.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

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

abcq ★★
()
Ответ на: комментарий от praseodim

Это они оправдывали неосиляторство и костылестроение своих индусов. :) Не можешь победить, возглавь :)

anc ★★★★★
()
Ответ на: комментарий от abcq

какая вам разница от этой даты вообще

Интересно сравнить с датой запуска Amazon S3. Какой-нибудь 2018-й год это совсем не то, что 2006-й. Многое изменилось.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

там в вики есть две статьи датированные 2008 и 2009 годом где они позиционируются как челики с решением уровня онлайн сторадж для бекапа. Сами они основаны в 2007 приблизительно как и амазон s3, но если смотреть на историю из веб архива, первые появления в ней по урлу для обращения к апи есть только в 2017 году, да и сами доменные имена зареганы в это же время, а еще например есть вот такая интересная табличка https://viewdns.info/iphistory/?domain=backblazeb2.com, где видно что доменное имя было довольно долго подвязано к ипам принадлежащим амазону ) В общем так то вроде они не совсем уж хайповые подражатели, но и сказать что они были хотя бы чуваками которые одновременно сделали то что предлагает s3 тоже нельзя, хотя и выходили на рынок со смежным товаром, и очень даже возможно он очень долго крутился на s3 и мощностях амазона :]

abcq ★★
()
Ответ на: комментарий от i-rinat

Необходимая защита при условии работы через HTTP без TLS

Как там в 2001 без TLS живется? Текущий протокол подписи запросов является четвертой версией. Я раскопал первую:

https://web.archive.org/web/20071016051430fw_/http://docs.amazonwebservices.c...

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

Кстати, когда это B2 вышел в публичный доступ? И какая доля рынка у них?

Сам Backblaze открылся где-то в 2009 году как простое решение для бэкапов. B2 API у них возник в конце 2015/начале 2016:

https://web.archive.org/web/20160323035222/https://www.backblaze.com/b2/docs/

Как видишь, никакого S3 API. Какая доля рынка — не знаю, но точно сильно меньше, чем у AWS. Они не так давно вступили в альянс с Cloudflare и еще какими-то там провайдерами, чтобы сделать свой эквивалент AWS, так что эту доля отследить еще сложнее.

byko3y ★★★★
() автор топика
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от abcq

такой хитрый-хитрый чтобы точно никто не подумал что заговор, а на самом то деле заговор в заговоре, тайные планы внутри других тайных планов (с) Владимир Харконен

Всё, что вам нужно знать про аргументацию сторонников AWS.

byko3y ★★★★
() автор топика
Ответ на: комментарий от bodqhrohro_is_back

@vurdalak, например. И ещё кто-то, не помню уже

Это ж не идеолог, а просто фанат. И то какой-то вялый. Я вот фанат Mercurial тоже, я считаю, что по архитектурному дизайну оно на голову выше Git-а.

byko3y ★★★★
() автор топика
Ответ на: комментарий от abcq

есть вот такая интересная табличка https://viewdns.info/iphistory/?domain=backblazeb2.com, где видно что доменное имя было довольно долго подвязано к ипам принадлежащим амазону

Это лендинг, который кидает на backblaze.com:

https://web.archive.org/web/20180828224019/http://backblazeb2.com/

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

Я искал инфу по нынешним указанным в документации урлам для взаимодействия с их апи, и их возникновение датируется около 2017 годом вместе с поддоменами, а так то там даже внутри документации за 2016 год, есть редиректы. В общем-то сути не меняет это никак, решение свое они уже делали именно на хайпе s3, и судя по табличке даже какое-то время работали с амазоном, т.к. доменное имя было подвязано а адресам амазона (в какой мере плотности была эта работа сказать сложно, особенно сейчас), Ну и вы сами подтвердили инфу что раньше они занимались каким-то бекапирование данных, как я это написал до вас, собственно в этом и была суть это «расследования». К этому Ринат изначально и вёл, что у них как минимум были на руках все карты чтобы сделать лучше чем у амазона.

abcq ★★
()
Ответ на: комментарий от byko3y

Как видишь, никакого S3 API.

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

abcq ★★
()
Ответ на: комментарий от byko3y

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

Вот алгоритм подписи из документа по архивной ссылке, которую ты привёл:

                Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;

                Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of( StringToSign ) ) );

                StringToSign = HTTP-Verb + "\n" +
                               Content-MD5 + "\n" +
                               Content-Type + "\n" +
                               Date + "\n" +
                               CanonicalizedAmzHeaders + 
                               CanonicalizedResource;

                CanonicalizedResource = [ "/" + Bucket ] +
                                        <HTTP-Request-URI, from the protocol name up to the query string> +
                                        [ sub-resource, if present. For example "?torrent", or "?acl"];

                CanonicalizedAmzHeaders = <described below>

Вот алгоритм подписи с https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#ConstructingTheAuthenticationHeader, то есть текущей версии:

Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;

Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of(YourSecretAccessKey), UTF-8-Encoding-Of( StringToSign ) ) );

StringToSign = HTTP-Verb + "\n" +
	Content-MD5 + "\n" +
	Content-Type + "\n" +
	Date + "\n" +
	CanonicalizedAmzHeaders +
	CanonicalizedResource;

CanonicalizedResource = [ "/" + Bucket ] +
	<HTTP-Request-URI, from the protocol name up to the query string> +
	[ subresource, if present. For example "?acl", "?location", or "?logging"];

CanonicalizedAmzHeaders = <described below>

Если выровнять пробельные символы, то разница получится примерно такой:

--- year-2007	2022-04-03 22:26:13.724282591 +0300
+++ year-2022	2022-04-03 22:26:17.392304265 +0300
@@ -1,16 +1,16 @@
 Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature;
 
-Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of( StringToSign ) ) );
+Signature = Base64( HMAC-SHA1( UTF-8-Encoding-Of(YourSecretAccessKey), UTF-8-Encoding-Of( StringToSign ) ) );
 
 StringToSign = HTTP-Verb + "\n" +
     Content-MD5 + "\n" +
     Content-Type + "\n" +
     Date + "\n" +
-    CanonicalizedAmzHeaders + 
+    CanonicalizedAmzHeaders +
     CanonicalizedResource;
 
 CanonicalizedResource = [ "/" + Bucket ] +
     <HTTP-Request-URI, from the protocol name up to the query string> +
-    [ sub-resource, if present. For example "?torrent", or "?acl"];
+    [ subresource, if present. For example "?acl", "?location", or "?logging"];
 
 CanonicalizedAmzHeaders = <described below>

Ты это имел в виду под «изменилось до неузнаваемости»?

Как видишь, никакого S3 API.

Я отвечал на сообщение, в котором ссылка вела на актуальную версию сайта, а не в архив: AWS и в частности S3 как vendor lock (комментарий)

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Вот алгоритм подписи с https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html..., то есть текущей версии

Вот здесь ошибка. Это не текущая версия, а устаревшая v2, которая на ряде серверов уже не поддерживается, актуальная же v4. Вверху страницы даже коммент есть «new regions after January 30, 2014 will support only Signature Version 4».

https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html

Очевидно же, что холили, лелеяли, разрабатывали третью, нерелизнутую версию, выпустили четвертую — а там тот же legacy трешак, только еще сложнее.

Я отвечал на сообщение, в котором ссылка вела на актуальную версию сайта, а не в архив: AWS и в частности S3 как vendor lock (комментарий)

А я писал (но не тебе), что почему-то другие разработчики могут делать хорошо, а амазону совесть не позволяет, Backblaze может создать S3-совместимый API на базе своих сервисов, которые внутри по архитектуре сильно отличаются от S3 и это вполне публично описано, а Amazon не может разработать более удобный API, даже несмотря на то, что у них есть параллельный API для SOAP:

https://docs.aws.amazon.com/AmazonS3/latest/API/SOAPListBucket.html

byko3y ★★★★
() автор топика
Ответ на: комментарий от abcq

Думаете сторонники AWS аргументируют(кстати что?) цитатами из Дюны по памяти?

Они применяют нетехнические аргументации при обсуждении чисто технических тем. Товарищ ugoday по моему впечатлению намного лучше технически продвинут и имеет солидный опыт «админства» AWS (если это можно так назвать), но, тем не менее, точно так же часто скатывается в нетехническую аргументацию плана «вот там 150 сервисов — попробуй сам их реализовать без AWS», потому у меня постоянно возникает впечатление, будто он говорит со мной не как с программистом-архитектором, а как с эффективным манагером. Ты меня тоже пытаешься водрузить на пост манагера и нассать в лицо аргументацией цитатами из Дюны, но я технически грамотен, в отличие от большинства клиентов AWS, потому на меня это не работает. Хотя, справедливости ради, работает на солидную долю местной публики.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

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

так извините, ваш (?) веб-девелопмент - это bleeding edge говноволны, которая накрывает IT. они сделали, вы будете повторять - волна растет: жизнь и разработка в потоке (г*вна).

и судишь об AWS ты исключительно с т.з. веб-разработки. в то время, как под капотом решается еще куча задач другого плана.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 2)
Ответ на: комментарий от byko3y

а амазону совесть не позволяет, Backblaze может создать S3-совместимый API на базе своих сервисов

так в том-то и дело, что у amazon легаси и куча обязательств. плюс они это начинали, когда еще не было проторенной дорожки. очевидно, что молодой, малоизвестный, малозаюзанный сервис через 20 лет может сделать все правильно с точки зрения веб api. кто б сомневался! ты еще m$ предъяви, что у них много легаси.

но поэтому люди к ним и идут. они знают, что через пять лет это не закроется, как ноунейм.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 2)
Ответ на: комментарий от byko3y

так суть ваших заблуждений относительно «заговора» вообще к технической реализации не имеет ровным счетом никакого отношения, просто вы упорно не хотите видеть других причин кроме как вам кажется технических огрехов, и даже эти огрехи спорны. Ну и опять же забываете что никому особо не интересно рыть документацию или чего хуже исходники если они есть, чтобы продолжать эту беседу. А вы это воспринимаете как условный Д’Aртаньян, мол все дураки кроме меня и только я могу прочитать документацию на какой-то сервис какого-то амазона и раз эта тема интересна мне то и всем остальным она должна быть интересна не меньше чем мне.

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

Если подходить с вашей позиции, то можно начать говорить например что и какой-нибудь http2@3 «ненужно», что доп транспорты и шифрование которое наспех прикручивались и прикручиваются ко всем старым протоколам тоже не нужно, ведь это все ведет к усложнению и поломкам, к отказу или невозможности обработать их старым стеком инструментов, и т.д. и т.п.

И в итоге всего этого мы имеет все те же краеугольные затруднения и проблемы что и 20 лет назад и 20 лет назад до этого.

  • сложность систем в общем
  • гетерогенность систем
  • человеческий фактор
  • капиталистический фактор
  • другие виды факторов

А вы все сводите к капиталистическому и мнимому заговору. Не надо так.

abcq ★★
()

У нормальных разработчиков есть такой лайфхак как слои абстрагирования, например к базе данных. И когда настала пора соскочить на другую СУБД, нужно только реализовать этот слой для новой СУБД. При этом API и поведение слоя не должны полагаться на какие-то особенности одной из реализаций.

byko3y ★★★
мммм, что это? AWS S3? Давай захардокрдим его в наш код по самые помидоры.

byko3y ★★★, но чуть позже
Ряяяяяяя, не могу соскочить с AWS S3, вендор лок, это всё проклятые капиталисты виноваты!!!!11111

Ну кто бы мог подумать…

ox55ff ★★★★★
()
Ответ на: комментарий от byko3y

Эм, окей.

Вопрос ещё. B2 поддерживает внутреннее состояние или у него тоже запросы каждый сам по себе могут быть?

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Вопрос ещё. B2 поддерживает внутреннее состояние или у него тоже запросы каждый сам по себе могут быть?

Каждый запрос может быть «сам по себе» в том смысле, что получаемый из ключа через b2_authorize_account авторизационный токен можно переиспользовать в течении 24 часов — он как бы эквивалентен временному ключу AWS. Двухэтапная авторизация и загрузка играют роль балансера:

https://www.backblaze.com/blog/design-thinking-b2-apis-the-hidden-costs-of-s3...

Как я уже писал, S3 API светит деталями реализации, и одна из провальных деталей этой реализации — централизация по серверам API/индексов/загрузки. Отсюда возникают официальные советы от амазона давать объектам случайные имена. Напоминаю, что еще в 2017 году в S3 на один префикс был лимит в 100 RPS PUT/LIST/DELETE и 300 RPS GET:

https://web.archive.org/web/20171229062058/http://docs.aws.amazon.com/AmazonS...

Как это делает B2: https://www.backblaze.com/b2/docs/b2_get_upload_url.html

An uploadUrl and upload authorizationToken are valid for 24 hours or until the endpoint rejects an upload, see b2_upload_file. You can upload as many files to this URL as you need. To achieve faster upload speeds, request multiple uploadUrls and upload your files to these different endpoints in parallel.

Если ты мне хочешь рассказать, что какие-нибудь serverless службы могут быстрее работать за счет того, что не проходят два-три этапа — не спеши. Чтобы serverless приложению аутентифицироваться на AWS, ему нужно пройти через IAM и/или STS, потому что тот же S3 сам аутентификацию не производит, на запрашивает IAM-STS и кэширует локально полученный ответ. Таким образом Amazon точно так же делает двухэтапную авторизацию под капотом, но вместо того, чтобы грузить этими задачами многочисленные клиенты, он грузит ими свои сервера.

Аналогично с самой загрузкой: может показаться, что загрузка на S3 API быстрее, потому что нужно сделать только один запрос. По факту всё намного, намного веселее:

  1. Запрос загрузки приходит на балансер
  2. Балансер кидает запрос на API-сервер
  3. API-сервер аутентифицирует-авторизует запрос (сократил до одного пункта)
  4. API-сервер отправляет запрос на службу размещения (такая штука, которая отделена от службы индексов-метаданных, и служит индексом над индексами специально для PUT операций).
  5. API-сервер получает адрес найденного хранилища
  6. API-сервер пробрасывает через себя содержимое файла в указанное хранилище.
  7. API-сервер отправляет службе индексов уведомление об успешной загрузке — с этого момента файл становится виден другим клиентам.
  8. API-сервер отправляет клиенту уведомление об успешной загрузке.

Я здесь опустил вопросы применения политик доступа, шардирования индексов, и прочего. B2 делает примерно то же самое, то есть, ему нужно авторизовать клиента и найти место для загрузки файлов, но после этого начинается разница: S3 делает всю аутентификацию-авторизацию-размещения заново, из-за чего приходится задействовать кучу кэшей, отсюда и eventual consistency; в это время B2 «кэширует» авторизацию и размещение на внешнем клиенте, выдавая токен, по которому клиент может загрузить НЕСКОЛЬКО ФАЙЛОВ НАПРЯМУЮ В ХРАНИЛИЩЕ, не задействуя службы API, аутентификации, и размещения, и задействуя лишь индекса, которые хранилище обновляет для того, чтобы другие клиенты увидели загруженный файл. Почему служба аутентификации не задействована? Потому что авторизационный токен выдается специально под одно конкретное хранилище и внутри этого хранилища проверяется. То есть, по сути B2 переносит кэши с серверов на клиент. Что характерно, даже при этом B2 API выглядит проще, если заливать только один файл в стиле S3 API. Если оптимизировать заливку нескольких файлов, то уже нужно где-то хранить токены.

Возвращаясь к твоему вопросу:

B2 поддерживает внутреннее состояние или у него тоже запросы каждый сам по себе могут быть?

Я надеюсь я пояснил, что у B2 на самом деле внешнее состояние, а не внутреннее — каждый запрос сам по себе, но связывается система через клиента.

byko3y ★★★★
() автор топика
Ответ на: комментарий от crypt

и судишь об AWS ты исключительно с т.з. веб-разработки.

В облачных сервисах бывает не-веб-разработка? У S3 единственный родной API — HTTP.

в то время, как под капотом решается еще куча задач другого плана

Да, большая куча задач: как скоротать время до конца рабочего дня, как отчитаться о проделанной работе, когда катал вату весь месяц, как не вылететь со своего места, когда все дедлайны просраны, а показывать нечего. А еще есть манагер, которые боятся включать компьютер, но зато у него диплом MBA, он прекрасно разбирается в финансах и управлении людьми (что бы это ни значило), и он осознает, что талантливые делатели вида — это его лучшие друзья. Когда манагеру придавливают хвост и требуют финансовых результатов, то он начинает делать две вещи — сокращить издержки и активнее вытряхивать деньги с клиентов. В том числе вендор локом. В каком месте здесь «злой умысел» — это трудно разобраться, потому что никто ни за что не отвечает, и большинство шестеренок просто пытаются крутится так, как могут и умеют, им вообще пофигу, какой там это вред нанесет клиентам. Прибыль выросла — я свою работу выполнил. Точка. И ниже исполнители: двадцать тыщ строк кода написаны в срок, а как они работают — ваша проблема.

Пустые фичи, вендорлок, FUD, неэффективное расходование бюджета, смишная реклама, сетевой эффект и фактическое околомонопольное положение — естественный итог всего этого. В этом треде я лишь хочу сказать, что естественным итогом всего этого также является глубокий вендор лок — и это очень неочевидный факт, многим кажется, что «вот же есть S3-совместимое API, проблема превеличена», но на самом деле нет, не преувеличена, вендорлок реален, и если вы не предусмотрели слоя абстракции, то окажетесь в говне при попытке перейти на менее грабящий сервис.

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

и судишь об AWS ты исключительно с т.з. веб-разработки.

В облачных сервисах бывает не-веб-разработка? У S3 единственный родной API — HTTP.

виртуальные машины, hot migration all that stuff... never heard of it? alright then...

crypt ★★★★★
()
Ответ на: комментарий от byko3y

Пустые фичи, вендорлок, FUD, неэффективное расходование бюджета

ты в отпуске когда был последний раз?

crypt ★★★★★
()
Ответ на: комментарий от crypt

так в том-то и дело, что у amazon легаси и куча обязательств. плюс они это начинали, когда еще не было проторенной дорожки. очевидно, что молодой, малоизвестный, малозаюзанный сервис через 20 лет может сделать все правильно с точки зрения веб api. кто б сомневался! ты еще m$ предъяви, что у них много легаси

Давай все-таки не пытаться оправдывать амазон просто тем фактом, что они рано начали. MS в свое время выкинули всё ядро доса, сделали новое ядро и поставили эмулятор. А потом еще грейдили модель драйверов, из-за чего у семерки было кучу проблем с драйверами. Амазон точно так же много менял в S3. Более важный аргумент ты правильно высказал:

но поэтому люди к ним и идут. они знают, что через пять лет это не закроется, как ноунейм

«Доверяйте нам» — это намного более важный фактор, чем «у нас нету денег/времени/возможности». Поскольку амазон таки дорабатывал S3, вводил дублирующие функциональности, но по итогу так и не создал простое подмножество API, говорит нам о том, что сохранение сложного API было поставлено в роли ключевой задачи, выполнение которой обеспечивало как вендорлок, так и FUD «верьте нам, мы тут надолго» — если задуматься, это две стороны одной монеты под названием «монополизация рынка».

byko3y ★★★★
() автор топика
Ответ на: комментарий от byko3y

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

я все-таки настаиваю. после 10 лет «первый блин комом», уже более 25 лет m$ делает все на ядре nt и им приходится тащить кучу легаси. чего стоит cmd и powershell в одной поставке.

crypt ★★★★★
()
Ответ на: комментарий от crypt

виртуальные машины, hot migration all that stuff... never heard of it? alright then.

Виртуальными машинами сыт не будешь. Hot migration? Кто в него умеет? Только не так, что «надеюсь ничего не сломается», а с гарантиями.

byko3y ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.