Что означает N-уровневая архитектура в наше время? - PullRequest
6 голосов
/ 01 сентября 2011

В традиционном смысле N-уровень означает разделение приложения на «уровни» и размещение каждого «уровня» на разных серверах.Это было сделано по крайней мере по 3 причинам:

  1. Обслуживание:

    a) Обслуживание кода: проще делать исправления ошибок и дополнения функций.

    b) Обслуживание оборудования: отключение одного сервера не нарушает обслуживание другого уровня.

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

    b) Распределение нагрузки: наличие нескольких экземпляров уровня помогает обслуживать большое количество запросов.

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

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

Итак, что для вас сегодня является N-уровневой архитектурой?

Ответы [ 3 ]

3 голосов
/ 01 сентября 2011

Из статьи Википедии я прочитал:

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

Я думаю, что понятие «слой» и понятие «слой» смешались со временем. Лично мне нравится говорить только о слоях, а не об уровнях, поскольку я предпочитаю решения PAAS, в которых мои интересы связаны только с программным обеспечением, и отрасль медленно движется в этом направлении.

Также, когда вы планируете приложение, которое может значительно расшириться, я все еще не думаю, что вам следует подумать о n-уровне для масштабируемости. На самом деле, очень популярные сайты с большим трафиком разделяются только на 3 компонента: Серверы баз данных, веб-серверы (включая серверы кэширования) и несколько CDN (сетей доставки контента). Такое разделение может быть достигнуто при любом применении.

Но в заключение я думаю, что программист должен думать только о слоях и разделении задач внутри приложения для достижения наиболее важной (и сложной) задачи: ремонтопригодности в долгосрочной перспективе.

2 голосов
/ 01 сентября 2011

Я думаю, что это всегда было искусственным различием.Я согласен с вашей предпосылкой, что в наши дни это относится главным образом к логическому разделению компонентов.Тем не менее, все еще существует множество приложений, которые слишком велики (используются по-разному или по-разному) для размещения на одной машине, поэтому идея разделения приложения на отдельные компоненты по соображениям масштабируемости определенно не устарела.

1 голос
/ 01 сентября 2011

Безопасность на одного? Я бы предпочел, чтобы вы попали на мои веб-серверы, а не на серверы приложений!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...