Понимание каждого компонента архитектуры веб-приложения

Вот сценарий для системы, где я пытаюсь понять, что к чему:

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

Я никогда раньше не развертывал приложение, но знаю, что сервер может относиться к машине или программному обеспечению. С этого момента давайте назовем физическую машину Стойкой. Я загрузил экземпляр MongoDB на свой компьютер и знаю, что это сервер базы данных. Чтобы обрабатывать запросы API, мне нужно что-то на стойке, которое будет обрабатывать запросы HTTP/S, поэтому я устанавливаю и запускаю на нем экземпляр NGINX, и я знаю, что это веб-сервер. Однако мой веб-сервер не знает, как запустить приложение, поэтому я провел небольшое исследование и узнал о WSGI и пришел к выводу, что мне нужен еще один компонент. Поэтому я устанавливаю и запускаю экземпляр Gunicorn и знаю, что это сервер WSGI.

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

Я думаю, что у меня все в порядке, а потом мой друг спрашивает: "Где ваш сервер приложений?"

Есть ли сервер приложений такой конфигурации? Нужен ли он мне?


person datta    schedule 07.02.2019    source источник
comment
Вы читали, что такое сервер приложений? Вам кажется, что вам нужно что-то еще, чтобы сделать то, что вы пытаетесь сделать? Достаточно ли вашей текущей конфигурации для того, как вы ее используете?   -  person wwii    schedule 07.02.2019
comment
@wwii У меня есть, но это кажется очень двусмысленным термином. Я, очевидно, не могу разместить приложение на веб-сервере, поскольку его работа заключается в обработке входящих/исходящих запросов. Таким образом, я понял, что способ представления приложения — это сервер приложений. Как упомянул Сурадж, в этом случае Gunicorn + Flask составляют сервер приложений.   -  person datta    schedule 08.02.2019
comment
@wwii Таким образом, короче говоря, более тонкий вопрос: требует ли каждое веб-приложение сервер приложений?   -  person datta    schedule 08.02.2019


Ответы (1)


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

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

В вашей конфигурации приложение WSGI serve/Flask является сервером приложений.

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

person Suraj Ramesh    schedule 07.02.2019