Эффект наращивания мощностей

Все сегменты инфраструктуры так или иначе взаимодействуют друг с другом. Клиенты обращаются с запросами к веб-серверам, которые в свою очередь выдают запросы к базам данных, кэширующим серверам, дисковым устройствам и другим компонентам. Совместная работа разных уровней инфраструктуры обеспечивает отклик, реагируя на действия пользователей — предоставление веб-страниц, фрагментов страниц или подтверждения выполнения некоторых действий (например, отправки фотографий).

Когда на одном или нескольких уровнях возникают «узкие места», вы обращаете на них внимание, рассчитываете, какие дополнительные мощности вам понадобятся, и развертываете их. В зависимости от того, насколько серьезны проблемы данного уровня или кластера, при новом развертывании могут проявиться «эффекты второго порядка», а «пробка» в конечном итоге может переместиться в другую часть архитектуры.

Предположим, что в работе вашего сайта задействованы веб-сервер и база данных. Одним из способов, которыми организация может способствовать масштабированию своих приложений, является кэширование результатов (потенциально высокозатратных) обращений к базе данных. Развертывание Memcached или его аналога позволит это сделать. По сути это означает, что для некоторых запросов перед обращением к базе данных следует проверить содержимое кэша, находящегося в памяти. Это делается с двойной целью как для ускорения получения ответа, так и для сокращения нагрузки на сервер базы данных для часто запрашиваемых данных.

Самое заметное преимущество заключается в том, что запросы, на обработку которых требуется до нескольких секунд, могут обрабатываться за считанные миллисекунды, а следовательно, ваш веб-сервер сможет быстрее ответить клиенту. Как ни парадоксально, у такого ускорения есть и оборотная сторона когда пользователи меньше ждут загрузки страниц, они склонны быстрее щелкать на ссылках, повышая нагрузку на веб-серверы. Нередко можно видеть, как развертывание Memcached быстро трансформируется в проблемы с мощностями.