Существует множество факторов, которые необходимо учитывать при выборе серверного окружения (environment), такие как производительность, масштабируемость, доступность, надежность, стоимость и простота управления.
Здесь представлен набор наиболее часто используемых серверных окружений с их кратким описанием, включая их плюсы и минусы. Имейте ввиду, что все концепции, описанные в данном руководстве, могут быть использованы в различных комбинациях друг с другом, а каждое окружение имеет различные требования, так что не существует единой верной конфигурации.
Окружение находится на одном сервере. Для типичного веб-приложения она будет включать в себя веб-сервер, сервер приложений и сервер баз данных. Частным случаем реализации этого набора является стек LAMP, название которого представляет собой сокращение от Linux, Apache, MySQL и PHP, на одном сервере.
Пример использования: Хорошо подходит для быстрого развертывания приложения, так как это простейшая конфигурация из всех, однако она дает мало возможностей в плане масштабируемости и изоляции компонентов.
Плюсы:
Минусы:
Дополнительные руководства:
Система управления базами данных (СУБД) может быть отделена от остального окружения, чтобы исключить конкуренцию за ресурсы сервера между приложением и базой данных и усилить безопасность, убрав базу данных из DMZ, общедоступного интернета.
Пример использования: Хорошо подходит для быстрого развертывания приложения, но при этом устраняет проблему конкуренции приложения и базы данных за одни системные ресурсы.
Плюсы:
Минусы:
Дополнительные руководства:
Балансировщики нагрузки могут быть добавлены в окружение сервера для увеличения производительности и надежности путем распределения нагрузки между несколькими серверами. Если один из серверов упадет, то другие серверы будут обрабатывать входящий трафик, пока упавший сервер снова не заработает. Балансировщик нагрузки так же может быть использован для обслуживания нескольких приложение через один и тот же домен и порт при помощи обратного прокси.
Примеры программного обеспечения, поддерживающего обратный прокси: HAProxy, Nginx, и Varnish.
Пример использования: Полезен для окружения, которое требует масштабирования путем добавления дополнительных серверов, так же известное как горизонтальное масштабирование.
Плюсы:
Минусы:
Дополнительные руководства:
HTTP accelerator, или кэширующий HTTP-запросы обратный прокси-сервер, может быть использован для уменьшения времени, необходимого для предоставления контента пользователю, с помощью различных методов. Основой метод, используемый с HTTP accelerator, это кэширование ответов от веб-сервера или сервера приложений в памяти, при этом последующие запросы на тот же самый контент могут быть обработаны быстро и меньшим количеством лишних взаимодействий с веб-сервером или сервером приложений.
Примеры программного обеспечения, поддерживающего HTTP acceleration: Varnish, Squid, Nginx.
Пример использования: Полезен для динамических веб-приложений с тяжелым контентом или с большим количеством файлов, к которым возможен одновременный доступ.
Плюсы:
Минусы:
Дополнительные руководства:
Одним из способов улучшения производительности системы базы данных, к которой запросов на чтение происходит гораздо больше, чем на запись, как, например, в системах управления контентом (CMS), является использование репликации базы данных по схеме ведущий-ведомый. Такая схема предполагает наличие одного ведущего и одного и более ведомых узлов. В таком случае, все записи направляются на ведущий узел, а запросы на чтение могут быть распределены между всеми узлами.
Пример использования: Дает хорошее увеличение производительности приложения в части чтения из базы данных.
Вот пример репликации базы данных по схеме ведущий-ведомый с одним ведомым узлом:
Плюсы:
Минусы:
Дополнительные руководства:
Можно распределять нагрузку серверов кэширования, в дополнение к серверам приложений, и использовать репликацию базы данных в едином окружении. Целью объединения этих методов является получение преимуществ каждого подхода без лишней сложности.
Вот примерная диаграмма того, как может выглядеть серверное окружение:
Давайте предположим, что балансировщик нагрузки настроен на распознавание статических запросов (таких как изображения, CSS, JavaScript и т.д.) и отправляет эти запросы к серверам кэширования, а все другие запросы - к серверам приложений.
Вот что будет происходить, когда пользователь отправит запрос на динамический контент:
Если пользователь запрашивает статический контент:
Данное окружение имеет две возможные точки отказа (балансировщик нагрузки и ведущий сервер базы данных), но обеспечивает другие преимущества в области надежности и производительности, описанные ранее в каждом из пунктов.
Теперь, когда вы знакомы с некоторыми основными вариантами настройками сервера, вы должны иметь хорошее представление о том, что именно вы будете использовать для вашего собственного приложения или приложений. Если вы работаете над улучшением своего окружения, помните, что лучше идти итерационным путем во избежание излишнего усложнения.
Дайте нам знать о любых конфигурациях, которые вы можете порекомендовать или о которых вы хотели бы узнать больше, ниже в комментариях!
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Спасибо за перевод!
Отличная статься, спасибо большое что на русском =) А что вы посоветуете для веб разработчика который часто сталкивается с созданием на разных кмс не больших сайтов. Хотя бывает что нужно создавать и Ecommerce. Мне бы хотелось что бы навигация по сайту ничем не отличалась по скорости от ajax запросов как обычное веб приложение, и достичь на пшп этого я так понял можно только через дополнительный сервер кэширования?
Good tutorial but english please, had to use translate ;)