LINUX.ORG.RU

Архитектура веб сервисов/приложений

 ,


1

4

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

Начал смотреть книги, и заметил одну странность: как-то подозрительно мало книг по концептуальным вещам (архитектура, протоколы, форматы), а в основном «Сделаем что-то в чем-то/с чем-то», где «чем-то» - конкретный фреймворк или ЯП, как будто кроме практики и конкретных инструментов ничего не существует.

Нашел вот такую книгу 2003г.: http://bedford-computing.co.uk/learning/wp-content/uploads/2016/07/Web-Application-Architecture-Principles-Protocols-and-Practices.pdf

Что скажете? Устаревший хлам?

★★★★★

Устаревший хлам?

Вся книга умещается в одну строку: веб это TCP/IP -> HTTP -> server -> browser -> HTML -> xml

vvn_black ★★★★★ ()

В web-разработке всё, что вышло более года назад - устаревший хлам. Как бы ни хотели старпёры, чтобы им пригождались знания «архитектур», матана, концептуальных основ - всё херня. Сегодня выходит новый js фреймворк, пару дней по вечерам его учат школьники и студенты, полгода он - основа всей разработки. Потом следующий. Так что не парься, учи JS по статьям на Медиуме типа «как я запилил авторизацию в своём сраном блоге на JS».

Alve ★★★★★ ()

как-то подозрительно мало книг по концептуальным вещам

Но хотя-бы документация и стандарты есть, концептуальные вещи от создателей, в таком же виде примерно + сами проекты.

anonymous ()

Всё это лишнее. Ты будешь отталкиваться от того, на чём пишешь. У большинства реализаций есть предпочтения и соглашения.

От себя вброшу, если хочется стройности - Angular тебе в помощь. Всё остальное пишут… Даже без TS.

FortyTwo ()
Ответ на: комментарий от Alve

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

Славно загнул.

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

Ты будешь отталкиваться от того, на чём пишешь. У большинства реализаций есть предпочтения и соглашения.

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

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

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

Пруфов, конечно же, не будет. Но накинул знатно.

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

то, что ты хочешь - это опыт. При чём высокого уровня. Такие люди не пишут книг. А технологии несовершенны. Тебя интересует, что происходит? Куда идёт мир? Тогда меня удивляет твой выбор площадки для данных вопросов.

Но намёк кинуть могу! Electron. Terminal. Kiosk. Network.

концептуал ты наш…

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

А… Ну да… Почитал я предыдущие твои «идеи» и переписку. Умываю руки.

Хочу на тебя посмотреть после 40… Архитектурный.

FortyTwo ()

начать хочу с концептуальных вещей типа технологий, архитектур

Нашел вот такую книгу 2003г

Устаревший хлам?

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

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

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

Я два года назад вкатился в вебдев для своего проекта, использовал react+redux и react+route, все делал на typescript и собирал webpack’ом, интересно, много ли из этого устарело? А то я последние два года в веб дев даже не заглядывал.

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

Реакт уже умер, не так сильно умер, как jQuery, но умер. Впрочем, использовать трупы в вебе тоже нормальная тема.

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

А мне очень понравился react+redux, и скорее именно redux. Как же это удобно одним махом увидеть всё глобальное состояние клиента. Например на java backend куча объектов, таблицы в базе и все в разных состояниях, выяснение того каким образом было достигнуто невозможное состояние, это и есть дебагинг на часы и дни. А в redux я просто брал json из store и смотрел, или сравнивал состояния на разных шагах в meld. В общем redux мне понравился, хочется что-то такое на backend, чтоб просто посмотрел на структуру модели и все увидел, но базы… приходится кучу контекста держать в голове и писать заметки.

anonymous ()

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

level1 ★★ ()

Нормальных книг нет. Читай статьи по слоям, анемичной архитектуре.

Legioner ★★★★★ ()

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

InterVi ★★★ ()

заметил одну странность: как-то подозрительно мало книг по концептуальным вещам (архитектура, протоколы, форматы), а в основном «Сделаем что-то в чем-то/с чем-то», где «чем-то» - конкретный фреймворк или ЯП, как будто кроме практики и конкретных инструментов ничего не существует

С пробуждением: 95% всех материалов/статей/книг — говно. Особенно горит очко с мамкиных программистов, которые не могут заставить себя изучить какую-то либу, но которым нравится писать статьи — и они изучают либы под соусом написания статей. Особенно в академической среде такое популярно, вроде: «я добавил кнопочку в html страничке — буду номинироваться на нобилевку».

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

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

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

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

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

Это отчасти так, и очень часто причина заключается в том, что 98% всех либ в NPM — это куски дерьма или костыли. Отдельные костыли вносят в браузер, из-за чего смысл в костылях отпадает. Половину той же jQuery уже находится в составе браузеров, например, сложные селекторы DOM. Сделали moment.js — в браузера добавили продвинутое форматирование дат. И так далее.

С другой стороны, есть всякие корпоративные сервисы, которые должны просто работать. Им не нужны новомодные рюшечки, им нужно только чтобы они десять лет подряд выполняли свою задачу. Это подтверждается в том числе тем фактом, что так много нынче работы по React, которому уже семь лет от роду. Хотя как минимум в хроме у DOM уже есть флаги нечистоты, благодаря которым можно эффективно работать с DOM без каких-либо дополнительных прокладок, особенно таких недоразвитых и примитивных, как React, алгоритм работы которого в принципе неэффективен, будучи реализованным на любом языке. Да, у них недавно сделали какие-то новые механизмы для работы с глобальным состоянием без необходимости подключать костыли в виде Redux/Duix/mobX — но механизмы инвалидации/обновления остались старыми.

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

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

Я боюсь, что это задача плана «получить понимание механизмов на основе шестерен». Их очень много самых разных. А поскольку нынче популярно быть шестеренкой и не задавать лишних вопросов, то в мире существует лишь несколько человек, которые реально знают ответ на этот вопрос. Собственно, а зачем его знать вообще? Есть конкретная задача, смотришь на имеющиеся знания и решения, делаешь свои решения — вот и вся история.

По сути, почти в любой проект можно влиться за несколько недель, если в нем нет каких-то особых требований, вроде high load. Реально тяжело влиться в проект на React с кучей уже наработанных компонентов, или какой-то фреймворк на Vue (но не сам Vue). Тяжело научиться хорошо верстать динамическую страницу — на серверной стороне, как правило, эта проблема менее актуальна, хотя статику по прежнему непросто заверстать. Тяжело освоиться в любом крупном серверном проекте. В последний раз у меня проблема «смены миров» возникла с ProseMirror, которая использует неизменяемые структуры данных с copy-on-write, построенные на базе старого говеного JS — мне понадобилось больше месяца, чтобы хоть как-то освоиться с этим инструментом.

Проблема в каком-нибудь Spring заключается в том, что это вообще какой-то свой мир и не Java вовсе, а какой-то другой язык. Соответственно, приходится привыкать. В мире же фронтенда и бекенда нынче, как правило, до такого маразма не доказываются и ограничиваются простыми вещами. И даже React/Vue не являются «сменой мира», а только построенные на них проекты.

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

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

Посыл правильный — аргументация хромает. Каким образом сильно возросла нагрузка, например, на интернет магазин? Или другой коммерческий сайт. Да никак. Пока проект не дорос до масштаба ali/ebay/amazon, думать о проблемах масштабирования не имеет смысла.

Писать стали хуже, низкая квалификация компенсируется шардированной базой на монге. Появилось software as a service, но далеко не всем эта штука нужна, потому что разработка сервиса стоит мама не горюй, особенно если это делать на микросервисах.

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

Реакт уже умер, не так сильно умер, как jQuery, но умер. Впрочем, использовать трупы в вебе тоже нормальная тема

Судя по предложению работы, реакт настолько же мертв, насколько питон и PHP.

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

А мне очень понравился react+redux, и скорее именно redux...
А в redux я просто брал json из store и смотрел, или сравнивал состояния на разных шагах в meld. В общем redux мне понравился, хочется что-то такое на backend, чтоб просто посмотрел на структуру модели и все увидел, но базы… приходится кучу контекста держать в голове и писать заметки

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

Во-вторых, redux — это костыль, который создан специально для крупных проектов, вроде facebook.com. Это слишком жирная абстракция, которая для мелких проектов не подходит, потому что делает простые вещи сложными. Потому что банальное изменение глобального состояния или отследивание этого изменения оказывается не банальным, Если ты используешь redux. И не дай бог тебе придется отлаживать что-то во внутренностях самого redux — там рехнуться можно. По этой причине в вакансиях по реакту, как правило, упоминается redux — настолько этот навык важен и настолько тяжело его получить.

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

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

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

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

Каким образом сильно возросла нагрузка, например, на интернет магазин? Или другой коммерческий сайт

Таким же, каким и общее количество активных юзеров.

WitcherGeralt ★★ ()

http://bedford-computing.co.uk/learning/wp-content/uploads/2016/07/Web-Application-Architecture-Principles-Protocols-and-Practices.pdf

Просмотрел оглавление. Фигня. Это простая обзорная книжка для чайников. Устаревшая, чуть менее, чем полностью. Если какие-то азы HTTP (1.1) и HTML еще и сойдут, то от CGI, ASP, JSP, SSI это уже реликвии из склепа. Cold fusion, ска! О древности этой книги свидетельствует то, что в нее не вошел флеш как новье)

онцептуальных вещей типа технологий, архитектуры и проч.

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

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

Ты ещё эти баяны не порвал, играй пока на них.

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

Таким же, каким и общее количество активных юзеров

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

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

А каким образом меня любит то, что твой сайт — ненужное дерьмо? Почему мы вообще о нём говорим?

Нагнать юзеров в 2020 — как два пальца.

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

В web-разработке всё, что вышло более года назад - устаревший хлам. Как бы ни хотели старпёры, чтобы им пригождались знания «архитектур», матана, концептуальных основ - всё херня. Сегодня выходит новый js фреймворк, пару дней по вечерам его учат школьники и студенты, полгода он - основа всей разработки. Потом следующий. Так что не парься, учи JS по статьям на Медиуме типа «как я запилил авторизацию в своём сраном блоге на JS».

Решается очень просто. Всё что моложе 10 лет – школолоподелие. Что старше 10 лет и сдохло – закопать. Остальное годно.

anonymous ()

в основном «Сделаем что-то в чем-то/с чем-то», где «чем-то» - конкретный фреймворк или ЯП, как будто кроме практики и конкретных инструментов ничего не существует.

Угумс. А самое главное, что и «конкретика» не совсем конкретна. Т.к. нифига не разъясняется что там за «неонка» внутри, потому если от этих простых примеров нужно маленько шагнуть в сторону — придётся изучать кишки, которые нигде не описаны.

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

статью не читал но осуждаю. устарела.

Более правильно

Статья про Бонапарта не актуальна "в век, когда космические корабли бороздят Большой Театр"
anonymous ()
Ответ на: комментарий от WitcherGeralt

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

Какая разница, есть ли у ненужного дерма много посещений или мало? Да, есть те, кто конвертирует посещения в рекламу и продажу персональной инфы. Но таких сервисов/сайтов немного, и при успехе они, как правило, превращаются в сайты с очень высокой нагрузкой a.k.a high load, для которых действуют иные правила архитектуры. Остальные же в любое время дня и ночи предпочтут полезных клиентов с деньгами, а не толпы анонов, постящих в отзывах нигеров, говно, и спам. Мало кто хочет содержать проходной двор — многие прдепочли бы содержать ювелирку.

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

Ты опять в какой-то слохо связанный лепет пустился, как у тебя это из раза в раз выходит?

По сути есть что ответить? Я серьезно рассмотрел вариант «может быть я просто отстал от жизни» — но нет, я все-таки в значительной степени догнал ее. Я сам участвовал в проекте, который в значительной степени был SaaS, и он не вышел на самоокупаемость. Вспоминая какие-то нибудь Slack или Uber, которые растут, и при этом стабильно приносят убытки, у меня возникает подозрение, что это судьба не одного нашего сервиса. Что в реальности на таких сервисах больше зарабатывают облачные хостеры и наемные программисты, а не создатели, которые свой SaaS продают. Да, сделали сервис, да, он востребован — а в прибыль выйти не получается. Потому что большинство васянов самым жадным образом пользуется сервисом, и оставляют создателей в убытке. Ну и толку с такой посещаемости?

Gmail, Google docs, и прочие, прочие — это убыточные сервисы. А Yahoo, который был одним из первых поисковиков, вообще не видел коммерческой преспективы в поисковиках. Собственно, ее и нет — сам по себе поиск глубоко убыточен. Прибыльным он начинает становится, когда подключается NSA, ЦРУ, когда голден сакс от щедроты душевной размещает миллиардные акции, привлекая инвестиции с крайне выгодными условиями как для инвесторов, так и для инвестиционного проекта. Вот это и есть тот самый крупный проект с другими правилами игры. Но на этот уровень большинство проектов не выходят. Хотя бы потому, что для этого нужны связи в ЦРУ. Или в аналогичных структурах в России (привет яндексу и мейлру).

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

Самое странное то, что этой логики не понимают некоторые люди из СНГ. В том числе те, на которых я работал. Они не понимают, что за океаном стоит печатный станок, что убыточный проект из-за этого может расти и жить годами. Мне ответят: ну вот же, руководители дискорда и просто статьи «аналитиков» говорят «это второстепенно, сначала наберем пользовательскую базу — а потом разберемся», но они лукавят. Но на самом создатели, наверняка, уже понимают, куда дело идет, просто они же не будут прямо говорить «да, мы скоро подключаемся к сбору инфы NSA, но нам нужно больше пользователей для фиксации социальных связей, так что оставайтесь с нами».

А те же World of Tanks пошли несколько по иному пути, в качестве каноничного примера которого я бы привел игру «Raid Shadow Legends», в которой почти ничего нет, кроме громкой рекламы из каждого утюга и доната за каждый чих — такой проект может существовать без необходимости «доната» от государственных организаций. По крайней мере теоретически. Тот же Path of Exile, например, испытывает финансовые трудности, поскольку выбрал не ту целевую аудиторию — задротов, которые будут пердолиться с игрой тысячи часов, загружая сервера, и ничего не оплачивать. Это вам не успешные спуфинги, которые готовы платить за то, чтобы игра играла саму себя.

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

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

другие как-то иначе пытаются заработать. все провайдеры впн 100% анализируют трафик и продают результаты, кто-то наглее, могут сразу рекламу показать в стиле «а здесь купить дешевле», кто-то скромнее, но «все это делают» (tm). вся анонимность и безопасность - забудьте, сказочки для лохов.

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

anonymous ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.