Ускоряем Basecamp

Некоторые фичи приложений привлекательны. Они появляются с новыми классными интерфейсами, дополнительными кнопками, большими возможностями. Они очевидны и на них легко показать. Эти фичи прикольно программировать и релизить.

Однако, есть и другая вещь в улучшении продукта, которая не привлекает столько внимания. Это оптимизация. Мы не добавляем ничего нового, но все начинает работать чуточку лучше. Небольшие изменения кода здесь, апгрейд железа там. Все начинает работать более гладко, но никто не уведомляет об этом. Вы ощущаете улучшения, но заявлять об этих результатах жесткой работы не принято.

Инициатива за скорость

Мы хотим трактовать скорость как фичу. Это будет одна из наших лучших фишек. Последние несколько месяцев Джереми и Марк усердно работали над ускорением наших приложений путем оптимизации софта, кеширования, улучшения сети и железа. Они заслужили серьезные аплодисменты. Они добились заметной разницы.

Поговорим о Basecamp

Мы обкатывали различные техники оптимизации на всех продуктах 37signals, но давайте поговорим о Basecamp, как наиболее популярном из них. Basecamp серьезно используется множеством людей. Это один из тех продуктов, с которым люди работают на протяжении всего дня, поэтому скорость является критическим фактором. Мы запустили серию оптимизаций на этой неделе.

Некоторые данные

Ниже представлены некоторые графики, сгенерированные New Relic - они проливают свет на результаты серьезной работы.

Графики ускорения Basecamp

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

Как мы добились этого

Улучшение производительности произошло благодаря применению нескольких техник:

Анализ - мы сильно зависим от потрясающего сервиса RPM, который дает нам представление о наиболее востребованных частях Basecamp и соответственно, нуждающихся в наибольшем ускорении.

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

Оптимизация MySQL - мы работали с консультантом по производительности MySQL для того, чтобы оптимизировать наши запросы к базе. Мы все еще в самом начале пути, но мы извлекли много полезного.

Апгрейд железа - недавно мы произвели серьезные обновления серверов с базами данных. Мы ушли с серверов с двумя двухъядерными процессорами 2 GHz, 36 гигами памяти и шестью винчестерами по 73GB 15,000 RPM SAS на сервера с двумя четырехъядерными процессорами 3 GHz, 128 гигами памяти и восемью винчестерами по 73GB 15,000 RPM SAS. Мы также обновили балансировщики нагрузок, а скоро обновим и свитчи.

Перемены, которые вы можете ощутить

Хотя вы можете и не заметить увеличение в скорости так очевидно, как вы замечаете новую большую возможность продукта, мы считаем, что через некоторое время вы заметите улучшение собственной производительности благодаря этому ускорению. Меньшее время загрузки страниц, меньше ожидания результатов. Все работает более гладко. Это перемены, которые вы можете ощутить. Чем больше вы пользуетесь Basecamp, тем сильнее вы их ощущаете.

Источник: блог 37signals от 7 августа 2008

Теги: , , , ,
Оставьте Комментарий или Трекбек

One Comment

  1. admin
    09.12.2008 at 14:49 | Permalink

    Судя по комментариям к материалу, 37signals держит сервера у Rackspace, видимо, это железо компании Dell.

    В качестве балансировщиков используется как железо, так и софт - HAProxy.

Оставьте Комментарий

Ваш e-mail не будет опубликован. Обязательные поля отмечены звездочкой.

*
*