Tips & Tricks: PHP, Rails, Nginx, Apache, Passanger, MySQL, PgSQL, RabbitMQ, Memcached, …

На начальном этапе разработки стартапа многие разработчики сталкиваются с проблемой создания достаточно гибкой и в будущем масштабируемой архитектуры приложения, оптимизированной для большой нагрузки. Мы хотели бы поделиться опытом в этой области. В качестве примера рассмотрим методы построения ресурса, базирующегося на 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).

Continue Reading >>