В традиционном смысле N-уровень означает разделение приложения на "уровни" и размещение каждого "уровня" на разных серверах. Это было сделано по крайней мере по трем причинам:
-
Обслуживание:
a) Обслуживание кода: упростить исправления ошибок и дополнения к функциям.
b) Техническое обслуживание аппаратного обеспечения: отказ одного сервера не прерывает обслуживание с другого уровня.
-
Производительность. Один сервер часто был недостаточно быстрым для обработки веб-запросов, вычислений бизнес-логики и доступа к базе данных/файлам одновременно.
-
Масштабируемость: в частности горизонтальная масштабируемость
a) Отказоустойчивость: Возможность иметь более 1 физического сервера на уровне уровня, когда 1 сервер выключен, приложение все еще может функционировать в целом.
b) Балансировка нагрузки: наличие нескольких экземпляров уровня помогает обслуживать большое количество запросов.
В настоящее время аппаратные средства и сети достаточно быстры, чтобы обслуживать тысячи запросов в секунду на одном сервере. Кроме того, слово buzz для ИТ прямо сейчас - это "консолидация". Поэтому, даже если приложение разделено на уровни, они, вероятно, будут размещены на виртуальных машинах на одном сервере.
Я думаю, что сейчас, когда люди говорят о архитектуре N-уровня, они говорят о разделении проблем в приложении. Это скорее логическое разделение, чем физическое. Я думаю, что до тех пор, пока мы достигнем хорошего разделения проблем и развязки, приложения не должны быть N-уровнями. Просто кажется, что многие программисты считают, что архитектура N-уровня является золотым стандартом, которым должно соответствовать каждое веб-приложение.
Итак, что такое архитектура N-уровня для вас в настоящее время?