На начальном этапе разработки стартапа многие разработчики сталкиваются с проблемой создания достаточно гибкой и в будущем масштабируемой архитектуры приложения, оптимизированной для большой нагрузки. Мы хотели бы поделиться опытом в этой области. В качестве примера рассмотрим методы построения ресурса, базирующегося на Ruby On Rails. Тем не менее примеры, которые будут приведены ниже, с легкостью могут быть использованы для LAMP решений.
Серверы можно разделить на несколько типов по ролям:
- Application
- Database
- Load Balancer
- Utils
- Tools
Application – это front-end сервер. Возможно использование как одного, так и нескольких Application серверов. В случае использования одного Application сервера надобности в балансировке нагрузки нет.
- Application сервер выполняет следующие функции:
- обработка запросов от пользователей (получает запросы от балансировщика нагрузки),
- взаимодействие с базой данных (Database server),
- отправка сообщений в очередь сообщений (Utils server),
- взаимодействие с CDN,
- взаимодействие с search engines (Util server),
- инвалидация кэша,
- работа с кэшем (Database server).