Опыт последних лет разработки программного обеспечения показывает, что архитектура информационной системы должна выбираться с учетом нужд бизнеса, а не личных пристрастий разработчиков. Не секрет, что правильная и четкая организация информационных бизнес-решений является слагающим фактором успеха любой компании. Особенно важным этот фактор является для предприятий среднего и малого бизнеса, которым необходима система, которая способна предоставить весь объем бизнес-логики для решения задач компании. В то же время, такие системы для компаний со средним и малым масштабом сетей часто попадают под критерий «цена – качество», то есть должны обладать максимальной производительностью и надежностью при доступной цене.
Первоначально системы такого уровня базировались на классической двухуровневой клиент-серверной архитектуре (Two-tier architecture) (рис. 3.1).
Рис. 3.1. Двухуровневая клиент-серверная архитектура
Данная клиент-серверная архитектура характеризуется наличием двух взаимодействующих самостоятельных модулей – автоматизированного рабочего места (АРМ) и сервера базы данных (БД), в качестве которого может выступать Microsoft SQL Server, Oracle, Sybase и другие. Сервер БД отвечает за хранение, управление и целостность данных, а также обеспечивает возможность одновременного доступа нескольких пользователей. Клиентская часть представлена так называемым «толстым» клиентом, то есть приложением (АРМ) на котором сконцентрированы основные правила работы системы и расположен пользовательский интерфейс программы.
При всей простоте построения двухуровневой архитектуры, она обладает множеством недостатков, наиболее существенные из которых – это высокие требования к сетевым ресурсам и пропускной способности сети компании, а также сложность обновления программного обеспечения из-за «размазанной» бизнес-логики между АРМ и сервером БД. Кроме того, при большом количестве АРМ возрастают требования к аппаратному обеспечению сервера БД, а это, как известно, самый дорогостоящий узел в любой информационной системе.
Как видим, минусов у такой архитектуры достаточно, а решение тривиально – нужно отделить бизнес-логику от клиентской части и СУБД, выделив ее в отдельный слой. Так и поступили разработчики, и следующим шагом развития клиент-серверной архитектуры стало внедрение среднего уровня, реализующего задачи бизнес-логики и управления механизмами доступа к БД (рис. 3.2).
Плюсы трехуровневой архитектуры очевидны. Благодаря концентрации бизнес-логики на сервере приложений стало возможно подключать различные БД. Теперь сервер базы данных освобожден от задач распараллеливания работы между различными пользователями, что существенно снижает его аппаратные требования.
Рис. 3.2. Трехуровневая клиент-серверная архитектура (Three-tier architecture)
Также снизились требования к клиентским машинам за счет выполнения ресурсоемких операций сервером приложений. Теперь они решают только задачи визуализации данных. Именно поэтому такую схему построения информационных систем часто называют архитектурой «тонкого» клиента. Но, тем не менее, узким местом, как и в двухуровневой клиент-серверной архитектуре, остаются повышенные требования к пропускной способности сети, что, в свою очередь, накладывает жесткие ограничения на использование таких систем в сетях с неустойчивой связью и малой пропускной способностью (Internet, GPRS, мобильная связь).
Существует еще один важный момент использования систем, построенных на трехуровневой архитектуре. Самый верхний уровень (АРМ), в целом обладающий огромной вычислительной мощностью, на самом деле простаивает, занимаясь лишь выводом информации на экран пользователя. Так почему бы не использовать этот потенциал в работе всей системы? Рассмотрим следующую архитектуру которая позволяет решить эту задачу (рис. 3.3).
Рис. 3.3. Распределенная архитектура системы
Еще недавно реализация распределенной архитектуры системы для среднего и малого бизнеса была бы невозможна из-за отсутствия соответствующих недорогих аппаратных средств. Сегодня хороший ноутбук обладает мощностью, которой несколько лет назад обладал сервер крупной корпорации, который позволял рассчитывать множество важных и судьбоносных отчетов для всех сотрудников этой корпорации.
Более 95 % данных, используемых в управлении предприятием, могут быть размещены на одном персональном компьютере, что обеспечивает возможность его независимой работы. Поток исправлений и дополнений, создаваемый на этом компьютере, ничтожен по сравнению с объемом данных, используемых при этом. Поэтому если хранить непрерывно используемые данные на самих компьютерах и организовать обмен между ними исправлениями и дополнениями к хранящимся данным, то суммарный передаваемый трафик резко снизится. Это позволяет понизить требования к каналам связи между компьютерами и чаще использовать асинхронную связь, и благодаря этому создавать надежно функционирующие распределенные информационные системы, использующие для связи отдельных элементов неустойчивую связь типа Интернета, мобильную связь, коммерческие спутниковые каналы. А минимизация трафика между элементами сделает вполне доступной стоимость эксплуатации такой связи. Конечно, реализация такой системы не элементарна, и требует решения ряда проблем, одна из которых – своевременная синхронизация данных.
Каждый АРМ независим, содержит только ту информацию, с которой должен работать, а актуальность данных во всей системе обеспечивается благодаря непрерывному обмену сообщениями с другими АРМ. Обмен сообщениями между АРМ может быть реализован различными способами, от отправки данных по электронной почте до передачи данных по сетям.
Еще одним из преимуществ такой схемы эксплуатации и архитектуры системы, является обеспечение возможности персональной ответственности за сохранность данных. Так как данные, доступные на конкретном рабочем месте, находятся только на этом компьютере, при использовании средств шифрования и личных аппаратных ключей исключается доступ к данным посторонних, в том числе и администраторов.
Распределенная архитектура системы также позволяет организовать распределенные вычисления между клиентскими машинами. Например, расчет какой-либо задачи, требующей больших вычислений, можно распределить между соседними АРМ благодаря тому, что они, как правило, обладают одной информацией в своих БД и, таким образом, добиться максимальной производительности системы.
Таким образом, модель построения распределенных систем, использующая распределенную архитектуру, вполне способна решить и реализовать функции современного программного обеспечения для предприятий среднего и малого бизнеса. Построенные на основе данной архитектуры системы будут обладать надежностью, безопасностью информации и высокой скоростью вычислений, что от них требуется в первую очередь.