Мы разрабатываем сайты и веб-приложения, устойчивые к отказу оборудования и отдельных подсистем.

Действительно серьёзные проекты должны работать без перебоев даже в случае отказа отдельных серверов или модулей системы. Причин для сбоев в работе немало: выход из строя «железа», сетевые проблемы, сбои программного обеспечения, аварии на уровне дата-центров. И этих рисков можно избежать или хотя бы минимизировать их последствия.

В основе отказоустойчивости всегда лежит дублирование компонентов системы и исключение единой точки отказа.

Для достижения отказоустойчивости используется горизонтальное масштабирование или дублирование всех серверов и настройка их автоматической «горячей» замены в случае выхода из строя основных. И в том, и в другом случае всех критичные компоненты системы резервируются: при горизонтальном масштабировании они все работают параллельно, выход из строя одного из них не критичен для работоспособности системы в целом, а при использовании схемы с «горячей заменой» резервный компонент включается только в момент выхода из строя основного.

Уровень на котором производится дублирование определяет степень толерантности к сбоям. 

Например, отказоустойчивым уже может называться решение, построенное на одном физическом сервере с использованием виртуализации. Выход из строя отдельных «виртуалок» не будет приводить к сбоям, но поломка физического сервера приведет к неработоспособности системы.

Более продвинутый вариант — использование нескольких физических серверов (или облачных VPS) в рамках одного дата-центра. В этом случае точка отказа — дата-центр, если он вдруг окажется «отрезан» от мира, то система не будет доступна.

Саймы продвинутый способ — использование не менее трёх несвязанных между собой дата-центров для размещения оборудования. В этом случае можно «застраховаться» от сбоев и на уровне дата-центра.

На программном уровне часто используется микросервисный подход — в этом случае сбой отдельного сервиса не приводит к сбою системы в целом.

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

Например, в интернет-магазинах часто есть рекомендательные системы, показывающие блоки «с этим покупают» / «смотрите также». Вполне логично, что при сбое на уровне рекомендательной системы эти блоки можно просто не показывать, но отобразить всё остальное содержание страницы.

При этом важно понимать, что чем более отказоустойчива система, тем дороже инфраструктура и тем сложнее инженерные задачи, связанные с обеспечением её работы.

Экономическая целесообразность подходов к отказоустойчивости определяется индивидуально в каждом конкретном случае. Обычно производится оценка рисков: вероятности сбоя на каждом конкретном уровне и вычисляются возможные экономические потери от них. И на основании этой оценки уже можно принять рациональное решение о необходимости построения отказоустойчивой системы нужного уровня.

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

Правильное построение отказоустойчивой системы позволяет избежать простоя в работе даже в случае выхода из строя оборудования или при сбое отдельных сервисов приложения.

Мы разрабатываем сайты, которые работают по-настоящему быстро: генерация страниц осуществляется за доли секунды, а загрузка сайта даже на медленных каналах занимает не более пары секунд.

Скорость работы веб-приложений очень важна для коммерческих проектов: пользователи не любят ждать и если сайт работает недостаточно быстро, то это их раздражает и они просто уходят. В системах для автоматизации бизнес-процессов показатель скорости работы тоже очень важен — продуктивность работы страдает, если система «зависает» или «тормозит».

Узнать больше →

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