как сервер приложений понимает какое приложение должно обработать запрос

IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.

Что такое сервер? Серверный компьютер и серверное приложение

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику Сервера и протоколы. А также рубрику Вопрос-ответ, в которой у нас есть раздел «Что такое?». В этой записи мы разберемся со значением термина сервер и поговорим о том, что такое серверный компьютер и что такое серверное приложение. Сначала мы разберемся откуда появилось слово сервер, а затем разберемся для чего нужны серверные машины и почему некоторые программы называют серверными приложениями и в чем их отличие от обычных приложений.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Что такое сервер? Серверный компьютер и серверное приложение

Общее определение термина сервер

Итак, давайте разберемся с вопросом: что такое сервер? Но для начала немного исторической справки. Сервер – это имя. Перевод имени Сервер с персидского – глава, предводитель, вождь. Собственно, нам такое определение подходит для дальнейшего разговора. Если говорить конкретно про компьютерную тематику и отрасль IT, то термин сервер имеет два значения:

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

Серверный компьютер

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

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

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

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

Серверное приложение

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

В качестве примеров серверных приложений можно привести:

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

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

Но, помимо того, что у серверного приложения есть определённая роль или функция, нам стоит отметить то, что взаимодействие между клиентской программой и серверным приложением происходит по сетевому протоколу (даже если оба приложения установлены на один компьютер, например, по протоколу HTTP). Сейчас мы не будем давать полную классификацию серверных приложений и не будем вдаваться в специфику тех или иных приложений. Нам важно понимать, что серверные приложения выполняют строго определённую роль и в архитектуре клиент-сервер являются поставщиками услуг для клиентов.

Источник

Что такое сервер приложений?

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Введение в сервер приложений

И, следовательно, термин сервер приложений был придуман и в конечном итоге введен в мир Интернета.

Определение

Теперь, если мы хотим узнать назначение серверной программы, она идет следующим образом:

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

Работает

Они в основном используются в веб-приложении с трехуровневой архитектурой. Положение, в которое входит сервер приложений, описано ниже:

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

Использование серверов приложений

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

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

Примеры

Сегодня используется огромное количество серверов приложений. Некоторые из примеров приведены ниже:

Типы сервера приложений

Серверы приложений могут быть трех категорий:

Выбор правильного

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

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

Вывод

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

Рекомендуемые статьи

Источник

В чем разница между сервером приложений и веб-сервером?

В чем разница между сервером приложений и веб-сервером?

В большинстве случаев эти термины веб-сервер и сервер приложений используются взаимозаменяемо.

Ниже приведены некоторые ключевые различия в возможностях веб-сервера и сервера приложений:

Это подробный ответ с некоторыми сценариями, чтобы четко понять разницу, сходство и то, как оба могут работать вместе и все

Информация, передаваемая назад и вперед между сервером и его клиентом, не ограничивается простой разметкой дисплея, а взаимодействует между ними.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Пример:

Сценарий 1. Веб-сервер без сервера приложений.

у вас есть интернет-магазин только с веб-сервером и без сервера приложений. На сайте будет отображаться, где вы можете выбрать продукт. Когда вы отправляете запрос, сайт выполняет поиск и возвращает результат HTML своему клиенту. Веб-сервер отправляет ваш запрос непосредственно на сервер базы данных (наберитесь терпения, я объясню этот в нашем следующем слепке) и ждем ответа. После получения веб-сервер формулирует ответ в HTML-файл и отправляет его в веб-браузер. Эта двусторонняя связь между сервером и сервером базы данных происходит каждый раз, когда выполняется запрос.

Сценарий 2: веб-сервер с сервером приложений

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

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

Надеюсь это поможет.

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

Веб-сервер : передает контент в Интернет по протоколу http.

Сервер приложений : размещает и предоставляет бизнес-логику и процессы.

Я думаю, что главное в том, что веб-сервер предоставляет все через протокол http, в то время как сервер приложений не ограничен этим.

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

веб сервер

Сервер приложений

Скажем, у нас есть крошечное приложение, как показано ниже (фрагмент из Flask ).

О какой бизнес-логике говорят все остальные? Итак, поскольку URL-адрес отображается где-то конкретно в нашей кодовой базе, мы гипотетически показываем некоторую логику о том, как работает наша программа.

резюмируя

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

Как указали Рутеш и Дж.М.Сервера, различие нечеткое. Исторически они были разными, но на протяжении 90-х годов эти две ранее разные категории смешивали и эффективно объединяли. На данный момент, вероятно, лучше всего представить, что категория продукта «Сервер приложений» является строгим расширенным набором категории «веб-сервер».

В параллельной категории сервер приложений развивался и существовал долгое время. Компании поставляли продукты для Unix, такие как Tuxedo, TopEnd, Encina, которые были философски получены из сред управления и мониторинга приложений мэйнфреймов, таких как IMS и CICS. Microsoft предложила Microsoft Transaction Server (MTS), который впоследствии превратился в COM +. В большинстве этих продуктов указаны «закрытые» протоколы связи для конкретных продуктов, позволяющие подключать «жирных» клиентов к серверам. (Для Encina протокол связи был DCE RPC; для MTS это был DCOM и т. Д.) В 1995/96 году эти традиционные продукты для серверов приложений начали внедрять базовые возможности HTTP-связи, сначала через шлюзы. И линии начали стираться.

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

На данный момент грань между «сервером приложений» и «веб-сервером» нечеткая. Но люди продолжают использовать термины по-разному, в качестве акцента. Когда кто-то говорит «веб-сервер», вы часто думаете о HTTP-ориентированных веб-интерфейсах и приложениях. Когда кто-то говорит «Сервер приложений», вы можете подумать, что «большие нагрузки, корпоративные функции, транзакции и очереди, многоканальная связь (HTTP + больше)». Но зачастую это один и тот же продукт, который удовлетворяет обоим наборам требований к рабочей нагрузке.

Источник

Impress Application Server простыми словами

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запросЭто не первая вводная статья про Impress на Хабре, но за последний год я получил много вопросов и приобрел некоторый опыт в объяснении архитектуры и философии этого сервера приложений и, надеюсь, стал лучше понимать проблемы и задачи разработчиков, начинающих его освоение. Да и в самом сервере произошло достаточно изменений, чтобы назрела актуальность совершенно новой вводной статьи.

Impress Application Server (IAS) — это сервер приложений для Node.js с альтернативной архитектурой и философией, не похожий на мэйнстрим разработки под нодой и призванный упростить и автоматизировать широкий круг повторяемых типовых задач, поднять уровень абстракции прикладного кода, задать рамки и структуру приложений, оптимизировать как производительность кода, так и производительность разработчиков. IAS покрывает сейчас только серверные задачи, но делает это комплексно, например, можно объединить на одном порту API, веб-сокеты, стриминг, статику, Server-Sent Events, проксирование и URL-реврайтинг, обслуживать несколько доменов и несколько приложений, как на одном сервере, так и на группе серверов, работающих в связке, как одно целое, как один сервер приложений.

Введение

Постановка задачи

Философия Impress

Область применения

Обработчики

Аналогом middleware для IAS является handler (обработчик) — это асинхронная функция, которая имеет два параметра (client и callback) и находится в отдельном файле (из которого и экспортируется). Когда вызывается callback, то сервер приложений IAS узнает, что обработка завершилась. Если функция не вызывает callback дольше таймаута, то IAS возвращает HTTP статус 408 (Request timeout) и фиксирует проблему в логах. Если при вызове обработчика происходит исключение, то IAS берет на себя ответ клиенту, отлов ошибки и восстановление работы оптимальным способом, вплоть до удаления и повторного создания песочницы с испорченными или утекшими структурами данных.

Пример API обработчика:

Пространства имен

Все базы данных и драйверы СУБД видны через db.name. Соединения настраиваются в /config/databases.js (для каждого приложения отдельно), устанавливаются при старте и автоматически восстанавливаются при потере связи. В комплекте идут драйверы для MongoDB, PostgreSQL и MySQL, обернутые в плагины для IAS, при желании за 30 минут можно обернуть в плагины драйвера любой СУБД.

Обработчики могут изменять http код статуса, добавлять свои http заголовки, но в штатном режиме они работают только с объектом client, у которого есть методы безопасного API: client.error(code), client.download(filePath, attachmentName, callback), client.cache(timeout), client.end(output) и т.д. Начиная с версии 0.1.157 в IAS реализована частичная поддержка обработчиков middleware, имеющих 3 параметра: req, res и next. Но нужно это крайне редко, а код, портированный из проектов на express или connect, обычно можно переписать в несколько раз короче и проще.

Создавать обработчики обоих типов, т.е. handler (с 2я параметрами) и middleware (с 3я параметрами) можно не только из файлов, а добавляя роутинг вручную, через вызовы методов, например:

Структура приложения

Функциональность IAS

Заключение

Impress (IAS) активно развивается, каждую неделю появляется от 4 до 7 минорных версий. Сейчас актуальна версия 0.1.195 и на подходе версия 0.2, в которой мы зафиксируем структуру приложений и базовое API, соблюдая обратную совместимость для всех 0.2.x версий. В 0.2.x мы будем заниматься только вопросами оптимизации и исправлением ошибок, а расширение функциональности будет возможно только если это не потребует редизайна приложений, основанных на 0.2.x. Все крупные нововведения и эксперименты будут параллельно вводиться в ветке 0.3.x. Приглашаю всех желающих развивать проект, а со своей стороны обещаю поддерживать код, как минимум, до тех пор, пока это актуально. Версия же 1.0 появится только тогда, когда я пойму, что независимые разработчики полностью в состоянии поддерживать код. Сейчас готовится документация, которая до этого была невозможна из-за того, что структура и архитектура часто менялась, я опубликую ссылку на нее по готовности версии 0.2. До этого подробнее ознакомиться с IAS можно по примерам, которые устанавливаются вместе с IAS, как приложение по умолчанию.

Немного цифр по состоянию на 2015-01-11: загрузок из npm вчера: 1 338, за эту неделю: 5 997, за последний месяц: 21 223, звезд на github: 168, вклад в репозиторий: 8 человек, строк кода: 6 120, размер исходников: 207 Кб (из них ядро: 118Кб), усредненная цикломатическая сложность кода: 20, кол-во закрытых issues в github: 151, открытых issues: 9, дата первой опубликованной версии: 2013-06-08, кол-во сборок в Travis CI: 233, кол-во коммитов github: 468.

Источник

Клиент-серверная архитектура в картинках

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Знакомая картинка? А вы ведь постоянно сталкиваетесь с этой архитектурой — когда покупаете билет в кино онлайн, бронируете путевку на море или записываетесь к врачу.

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

Об этом я и расскажу в статье. Объясню на пальцах, с примерами и забавными картинками =) Если вы больше любите видео-формат, можно посмотреть мой ролик на youtube на ту же тему.

Содержание

Что это и как работает

Вот есть у нас некий Вася, который решил купить машину. Такую, как в рекламе — быструю, мощную, красивую! Только стоит она как хвост самолета, у Васи таких денег нет.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Конечно, Вася может подкопить несколько лет, а потом уже покупать машину. Но ведь хочется здесь и сейчас! Да и средство передвижения нужно…

А еще Вася не умеет копить — получил зарплату, закупился основным, оплатил жилье, всё! Остальное можно потратить. Для таких людей есть банки, куда можно прийти и взять деньги в кредит.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

Вася подумал, прикинул и сказал:

— Да, хочу именно так! 100 рублей с зарплаты платить в банк могу, а откладывать — нет. Потрачу.

Поэтому Вася идет в банк и говорит:

— Я Василий Иванов, хочу автокредит на 1000р.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

У Кати есть специальная программа для проверки данных по клиентам. Эта программа может быть как web, так и desktop:

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Катя вбивает в программу «Василий Иванов» и получает информацию по клиенту — есть ли он в черных списках? Была ли кредитная история раньше? И так далее. Но что происходит в потрохах приложения?

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Катя ввела данные на клиенте. Но когда она нажала «проверить», клиент отправил запрос на сервер:

— Дай мне информацию по Васе Иванову!

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Сервер отправил запрос в БД, базу данных:

— Select * from clients where fio = ‘Василий Иванов’. (Дай мне всю информацию по ФИО ‘Василий Иванов’)

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

— Вот тебе все, что нашла.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Сервер вернул эту информацию клиенту:

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

А клиент уже отрисовал ее для Кати:

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

— Ага, кредитная история хорошая.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

И делает предложение Васе:

— Пожалуйста, если хотите взять кредит, то мы готовы выделить 1000р на 12 лет под 80% годовых. Устроит?

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

— Да, меня всё устраивает, давайте скорее деньги, и я побежал за машиной!
Все счастливы, все довольны.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Катя даже не догадывается, какой путь проделали данные в программе, когда она вбила туда ФИО своего клиента. Но мы с вами должны узнать, что же это за путь такой? И к чему все эти сложности? Почему именно такая структура? Почему есть клиент, почему есть сервер?

Зачем нужен клиент

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

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Зачем нужен сервер

Клиентов может быть много. В примере с банком у нас может быть по 10 отделений в 10 городах России, а в каждом отделении по 10 операционисток. Тысяча Катек, и у каждой отдельный компьютер.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

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

Нет дублирования кода

Если бы у нас были только клиентские машины, на каждой из них хранился бы одинаковый код по обработке логики, лежала вся база данных, все справочники террористов и прочая. Но так как сервер и БД вынесены в отдельные звенья, с клиентской машины освобождается куча места… И кода.

Не надо дублировать код, ведь вся основная логика вынесена на более мощный сервер.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

На сервере и в базе хранится информация, недоступная простому операционисту. Это:

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

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Зачем нужна база

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

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

БД (база данных) — отдельный программный продукт, который позволяет:

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

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Плюсы архитектуры

Резюмируем плюсы архитектуры:

Минусы архитектуры

Упало одно звено — все отдыхают

Если упал сервер или отвалилась база, то есть испортилось 1 звено — всё, все в ступоре, все отдыхают. Сотни, тысячи, да хоть миллионы клиентов если есть — никто не может работать. Все операционистки грустно смотрят на окно «Простите, что-то пошло не так» и разводят руками перед клиентом.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

Перед серверами ставят балансировщик, и клиент шлет запрос туда. Сколько бы серверов не поставили в кластер, клиенту это не интересно. У него есть один URL — адрес балансировщика.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

И вот с клиента поступает запрос:

— Дай мне всю информацию по Васе Иванову.

— Ребята, новый запрос! Кто меньше загружен?

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

— У меня 5 запросов в очереди стоит.

Балансировщик отправляет запрос второму серверу.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

Facebook, amazon, google — туда заходят миллионы пользователей. Один сервер с ними не справится. Поэтому ставят кластер, а балансировщик делит между ними нагрузку. И в таком случае в кластере может быть не 2 сервера, а 10, 15, сколько нужно, столько и ставим.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

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

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

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Но если с первым сервером что-то случится и он помрет, балансировщик перенаправит нагрузку на второй сервер:

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

В это время у администраторов будет время разобраться с проблемой на сервере 1.

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

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

Таким образом, схемы резервирования помогают нам устранить проблему «упало 1 звено — все отдыхают». Клиент никогда не узнает, что один или несколько серверов в кластере сдохли, у него всё как работало, так и работает.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Высокая стоимость оборудования

Сервера стоят дорого. Туда нельзя поставить обычный SSD как для домашнего компьютера. Почему? Потому что к железу для серверов совсем другие требования по надежности + есть поддержка специфичных функций:

— у HDD это специальная микропрограмма контроллера, которая оптимизирована для работы диска в RAID, дома это не нужно.

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

SSD — быстро работающий диск, HDD — обычный. RAID — когда мы N дисков вместе соединили, а DDR кэш — это оперативная память

Плюс у серверных решений гарантия обычно гораздо дольше: 5 лет, а не год.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

По цене отличаются в 2 раза. Например, SSD:

Вроде не сильно отличается, да? Но смысл в том, что для дома 1 тб хватает за глаза — и фоточки все влезут, и кино, и куча приложений… А для базы данных иногда и 10 тб будет мало. А если делать кластер, то умножаем стоимость на 2, если не больше. Поэтому и разница в цене кажется огромная, но при пересчете на гигабайт небольшая выходит.

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

Нужно нанять сисадмина

Нам нужно нанять сисадмина, который будет следить за всеми нашеми серверами приложения и БД. Добавляем его зарплату к стоимости оборудования!

Что тестировать

Чтобы понимать, что тестировать, надо понимать, с чем имеет дело человек.

Пользователь работает с клиентом. Это может быть web или desktop приложение, не суть. Операционистке Кате дали рабочее место, показали какую программу запускать и как с ней работать. Она знать не знает о наличии серверов и БД, она работает только с клиентом.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Поэтому тестировщик в первую очередь проверяет клиент! Потому что сервер может работать идеально, вы можете даже написать тесты на уровне API и они все будут зелененькие, и кажется, что все зашибись! А пользователь загрузит отчет и увидит ошибку. Ой.

Сервер работает, на клиенте ошибка. И плевать на сотни «зеленых» автотестов. У пользователя все равно ошибка. И наша задача — посмотреть с его точки зрения.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Однако, если у вас есть доступ к серверу приложения и его базе данных — стоит проверять и их тоже! Так мы можем увидеть «будущий баг». Например:

— Ну, наверное, их и не заполняли.

А их заполняли! Просто сохранение криво сработало. Поэтому, если у нас только черный ящик, то нужно проверять, «а реально ли сохранились данные?». Сохранили? Откройте карточку в новом окне или вызовете информацию через API-метод.

Если доступ к базе есть — просто проверьте по ней, что все хорошо. Если есть доступ к серверным логам — проверьте их на наличие ошибок.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Помимо простых пользователей бывают злые люди, которые пытаются встрять в наше приложение и своровать деньги / данные. Они используют не клиент или сервер — туда у них доступа нет. Они пытаются перехватить данные в пути от клиента к серверу, или от сервера к БД.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Ну а раз нехорошие люди могут это сделать, то тестировщик тоже должен это уметь! Потому что тестировщик предоставляет информацию о нашем продукте.

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Тестировщик изучает уязвимости и потом рассказывает команде:

— Ребята, вот я проверил, у нас есть такие-то и такие-то потенциальные дыры. Давайте подумаем, надо нам их как-то закрывать или нет.

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

Но какие-то базовые проверки типа sql-иньекций или XSS-атак стоит изучить и проверить на своем приложении. Хотя бы чтобы понять их критичность. Ведь если атака сломает клиент — ну и пусть, сам себе буратино. А если атака положит сервер, это уже не очень хорошо. И надо хотя бы знать, от чего это бывает.

Итого

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

Клиент — та программа, с которой работает пользователь. Он знать не знает, это у него на компьютере программа целиком, или где-то за ней прячутся сервер с базой, а то и целый RAID. Он работает в браузере или с desktop-приложением. И всё, что ему нужно знать — это «куда тут тыкать».

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

Сервер — компьютер, на котором хранится само приложение. Весь код, вся логика, все дополнительные материалы и справочники. Например, справочник адресов ФИАС или справочник юр лиц ЕГРЮЛ — они тоже занимают место, как сами по себе, так и в памяти приложения.

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

Приложения бывают самые разные. Есть ресурсоемкие, им нужно много памяти и места на диске. Есть «легкие», которые можно развернуть даже на домашнем компьютере.

БД (база данных) — хранилище данных. Тут вы можете легко поискать информацию + уверены в том, что она сохранится, даже если в приложении что-то сломается. Подробнее о ней — в статье «Что такое База Данных (БД)»

Сколько места нужно под базу, зависит от количества данных. Есть огромные базы в банках, где и 1тб будет мало. А есть совсем небольшие, которые вы можете установить на своей машине. Например, XAMPP можно поставить. И врядли вы напихаете туда столько данных, что у вас не останется под них место.

Отдельной базы может не быть, тогда структура станет двузвенной: клиент-сервер. И все!

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

как сервер приложений понимает какое приложение должно обработать запрос. Смотреть фото как сервер приложений понимает какое приложение должно обработать запрос. Смотреть картинку как сервер приложений понимает какое приложение должно обработать запрос. Картинка про как сервер приложений понимает какое приложение должно обработать запрос. Фото как сервер приложений понимает какое приложение должно обработать запрос

PS — больше полезных статей ищите в моем блоге по метке «полезное». А полезные видео — на моем youtube-канале

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *