Подскажите пожалуйста. Необходимо организовать серверную часть для разработки, работы приложений (мобильные, десктоп, web).
Приложения довольно простого формата, управление заявками. Заявка попала в базу, заявку видно, можно взять и выполнять.
Интересует организация серверной части. Это конечно прозвучит смешно, но Мы не знаем, как её организовать.
Есть сервера (шт.10) а вот что на них ставить, не понятно. Даже не понимаю, какую литературу надо прочитать, что бы понять как это все организовывать.
Я видел различные варианты архитектур, приведу пример:
1) Application — это frontend-сервер.
2) Database — сервер, на котором находится база данных.
3) Load Balancer — балансировщик нагрузки, необходимый для распределения запросов пользователей между Application-серверами.
4) Utils — сервер, на котором располагаются сопутствующие сервисы, необходимые для отложенной обработки данных.
5) Tools — сервер, необходимый для установки сторонних решений для работы приложения.
И вот тут же возникает вопрос. Как сам по себе выглядит Application server? И с чем его едят?
Балансировщик нагрузки так же непонятно что за структуру собой представляет.
Но когда люди все это дело формируют вместе и правильно настраивают, получаются хорошо организованные архитектуры.
Конечная цель, я просто хочу понимать, как это все выглядит изнутри.
Осознать и про Application сервер, и про балансировщик нагрузки и т.д. Что это вообще из себя представляет, зачем нужно ?
Может быть есть какая то модель правильного построения с описанием?
Наведите пожалуйста на правильный путь.
Application server - основной сервер, где обрабатывается логика ваших приложений, которую нельзя обрабатывать на клиентах. Application server имеет доступ к серверу баз данных (Database server). Очень часть Application server и Database server размещают на одном сервере, пока это позволяет нагрузка на приложение.
На Application server как правило устанавливают веб-сервер и обработчик какого-либо языка программирования. Например, apache + php, nginx + ruby и пр. Иногда встречаются и более экзотичные варианты. Всё зависит от того, какими инструментами ведется разработка приложения.
На Database server устанавливают какое-либо ПО для СУБД. Например, MySQL, SQL Server, Oracle Database и пр. Через специальные библиотеки и конфигурационные файлы Application server "привязывается" к Database server.
Loadbalancer используется для того, чтобы, в случае наличия нескольких Application серверов, направить пользовательский запрос на менее загруженный Application server. Тут есть много разных вариантов реализации.
Utils и Tools - фишки исключительно очень больших проектов. Например, если нужно пересчитывать количество записей в базах по сложным медленным запросам или удалять ненужные изображения на дисках сервера - для этого и предназначены эти инструменты.
Вы рассуждаете абстракциями. В рамках этих абстракций application сервер выполняет основную работу. Принимает запрос, обрабатывает его, возвращает результат.
А вот на вопрос - как выгладит application сервер - однозначного ответа не существует. Простейший пример - apache/mod_php, отдающий некий сайт. Или php-fpm. Или node.js. Или… тыщи их.
Чтобы грамотно построить архитектуру - надо обратиться к грамотному архитектору, рассказать ему как можно больше про задачи серверной части приложения, договориться об оплате - и он все сделает. А чтобы научиться это делать самому - надо сначала пойти в падаваны к такому архитектору.