суббота, 9 февраля 2013 г.

архитектура социальной сети

JavaScript компонент для загрузки файлов на сервер.

Кроме того, что немаловажно, у команды уже был опыт работы с DOJO Из трудностей интеграционную часть DOJO-Tapestry пришлось изобретать самостоятельно; в перспективе планируем оформить ее в виде open source-проекта и выложить в открытый доступ.

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

JavaScript framework с AJAX

Кроме Tapestry, наше Web-приложение использует следующие библиотеки:

Исходя из сказанного выше, внутренняя архитектура Web-приложения Campus.ru продиктована правилами разработки приложений под фреймворк Tapestry 5.

Поскольку ранее опыта работы с Tapestry 5 ни у кого из нас не было, в первую очередь был написан тестовый прототип приложения и выполнено его нагрузочное тестирование утилитой . Тестирование показало быстрое время отклика, стабильную утилизацию аппаратной платформы и отсутствие блокировок, после чего решение об использовании Tapestry 5 было окончательно утверждено.

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

Содержит ряд архитектурных решений, нацеленных на высокопроизводительную работу, например, таких как Page Pool.

Tapestry позволяет полностью разделить верстку и презентационную логику. Нет необходимости добавлять в HTML специальные теги, не интерпретируемые браузером, как в JSP. Это особенно важно, т.к. Web-проект в большинстве случаев подразумевает сложную верстку, которая, как правило, выполняется и поддерживается отдельным специалистом. Кстати, в плане оптимизации верстки мы старались соблюдать .

Основным фреймворком проекта стал . Выбор в пользу Tapestry 5 был сделан по ряду причин, основными из которых являются:

Предполагая язвительные комментарии, касающиеся производительности Java-приложений, замечу, что, принимая решение в пользу Java, я ясно осознавал, что JVM не самый быстрый и экономичный интерпретатор. Однако, во-первых, JVM 6.0 действительно достаточно производителен для нужд Web-приложения, а во-вторых, труд программистов сейчас дороже стоимости железа, поэтому подолгу изобретать дорогие «велосипеды», которые позволяют выиграть 5%-10% производительности, для стартапа было бы неразумно. Я придерживаюсь принципа «лучше быстро работать с минимумом кода и красивой архитектурой, чем сэкономить 10% железа и увязнуть в отладке».

При формировании проектной команды «с нуля» найти на рынке труда нескольких подходящих Java-разработчиков, обладающих необходимым уровнем квалификации, опытом командной работы и знаниями в области понимания архитектуры программного обеспечения (ОПП, Design Patterns) проще, чем, например, для работы с Ruby (т.к. этот язык, по опыту коллег, еще не достаточно широко распространен), или c PHP (по собственному опыту, слишком много низкоквалифицированных кадров, на отсев которых уходят без преувеличения месяцы).

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

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

Обзор системной архитектуры начнем с информации о том, что Campus.ru реализован на платформе Java. Судя по общей статистике, выбор платформы Java в качестве инструмента реализации медийного Web-ресурса является достаточно нестандартным решением, однако я выбрал именно эту платформу исходя из следующих соображений:

Социальная сеть Campus.ru помогает школьникам и студентам в построении их будущей карьеры путем проведения специальных конкурсов от крупных компаний-работодателей, организации прохождения производственных практик и обучающих семинаров, а также посредством необходимого функционала для общения, обмена информации и удовлетворения других учебных нужды например, составления учебного расписания. Функционал Campus.ru преимущественно пересекается с функционалом привычных для нас социальных сетей: зарегистрированные пользователи могут общаться, собираться в сообщества, писать в блоги, размещать фотографии и т.д. Однако, поскольку данная социальная сеть изначально ориентировалась на школьников и студентов, некоторые вещи были реализованы специально с учетом потребностей учащихся, например, «Учебный портфель» папка для хранения материалов, или «Планер» сервис для составления учебного расписания.

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

Обзор системной архитектуры социальной сети Campus.ru

Обзор системной архитектуры социальной сети Campus.ru / Блог компании Creative Media / Хабрахабр

Комментариев нет:

Отправить комментарий