Сегодня в бета-версию для разработчиков поступила новая версия Главного модуля 6.5.5, в которую включена поддержка AJAX 2.0 как мы ее назвали для Компонент 2.0.
Эта технология призвана позволить разработчикам без переделки вообще или с минимальными переделками переводить комплексные Компоненты 2.0 в режим работы AJAX.
Сегодня утром нам с Вадимом Думбравану нужно было заехать к нотариусу и подписать пару документов по делам фирмы. Юридическая компания, которая нас обслуживает, выслала представителя, милую девушку Ольгу, четверокурсницу юридического факультета.
Пока мы стояли ждали оформления документов Ольга решила скоротать время и состоялся любопытный разговор
Ольга: «А вы программисты?»
Я: «Ну да, вроде того :)»
Ольга: «У меня приятель приехал из Штатов, купил там ноутбук ... Эпл. И сказал, что Виндовс самая плохая операционная система. Это так?»
Вад (смеется, отвечать не может): …
Я (через смех): «А почему он так считает?»
Ольга: «Он сказал, что Эпл никогда не ломается, и вирусы в нее не лезут»
Я: «Оль, а какая самая лучшая машина на твой взгляд?»
Ольга: «…э Феррари, конечно!»
Я: «Как ты думаешь, она когда-нибудь ломается? Ну, в принципе, может ломаться теоретически?»
Ольга (озадаченно): «… ну да, я допускаю, что она может ломаться…»
Я: «Т.е. если бы этих машины было много в городе, то не исключено, что даже бы сервисы появились, где их бы ремонтировали?»
Ольга: «Ну ладно… А Виндовс много используют? Я смотрела его Эпл, ничего не поняла. Но только раз смотрела. Сама я на Виндовс работаю и кого я знаю на нем же.»
Вадим: «Ну процентов 90-95% на Виндовс сидят.»
Ольга: «Хм… любопытно. А зачем тогда все покупают Виндовс, если он такой плохой?»
Диалог продолжился, в точности я его уже не перескажу. Но Ольга сделала наше утро ярким и незабываемым, за что ей большое спасибо.
Механизм появился в новом модуле поиска, осталось понять как им воспользоваться у себя на сайте.
Как мы уже выяснили, облако тегов - это по сути точка доступа к поисковому механизму по тегам.
Для экспериментов на своей пробной версии продукта я создал новую страницу и открыл ее в визуальном редакторе. Справа в визуальном редакторе в списке Компоненты 2.0 выбираю Служебные-Поиск и далее переношу на страницу компонент "Облако тегов". Оставим параметры по умолчанию и сохраним страницу.
Мы получили... пустоту. Но ничего удивительного в этом и нет, потому как в моей демо-версии пока еще нет ни одного тега ни в каким материалах.
Значит следующим шагом иду инфоблоки и открываю первые 5-10 новостей и добавляю в них разных тегов, стараюсь относить теги близко к теме новостей, некоторые теги будут общими
Вернусь на страницу, где я разместил компонент облака тегов. И....
Эх, опять ничего нет ... Выяснил, оказалось, я выбрал инфоблок, который был привязан только к сайту S2, а вывел я облако тегов на сайте S1. Имейте в виду, поиск и облако тегов работают в контексте сайта на котором они выводятся. Ну вот, теперь появился шедевр
Перед выпуском очередного обновления к продукту, я решил немного поразмышлять на тему такой новомодной штуки как Облако тегов. А то получается забавная ситуация как раньше была с блогами. Все знали, что такое блог и как его использовать для себя лично, но никто не знал, как это можно использовать на сайте компании, в Интернет-магазине или на простом новостном сайте, как работать через блоги с аудиторией, и вообще, в какое меню это приткнуть на сайте. Сейчас примерно так же обстоит дело с облаком тегов.
Думаю, что многим пользователям доводилось встречать на сайтах нечто напоминающее набросанные слова, разного размера, а иногда и разного цвета.
Если вы управляете магазином с оборотом, например, в 30 миллионов рублей в год, то можно сказать, что час простоя сервера для вас равен 30000000/365/24 = 3424,66 рублей в час. А если честно сказать, что 90% заказов выписывается за 8 часов рабочего времени, то получается, что за час магазин должен зарабатывать примерно 10 тысяч рублей. Если же оценить еще и праздники и сезонность, то получится, что есть периоды, когда магазин зарабатывает в час по 50 тысяч рублей.
На самом деле, 30 миллионов уже не так и много. Есть проекты, которые оборачивают по 300 миллионов в год или уже 3 миллиарда. Становится понятно, почему клиенты начинают ценить время и вкладываются в проектирование бесперебойную работу проектов.
Конечно, надежность, это целый комплекс: инфраструктура датацентра и резервирование каналов, 24 саппорт и мониторинг. Но не менее важная часть - это надежная работа приложения и отказоустойчивая архитектура.
Одним словом, когда вопросы надежности и производительности становятся не простым звуком, а оценены в часах и рублях, все чаще начинают произносить слова кластер, Oracle и Oracle RAC (Real Application Claster ). Это совсем не значит, что MySQL или MSSQL плохи, совсем нет. До определенного уровня MySQL отлично справляется с нагрузкой и вполне надежен. Но лучший опыт в построении кластера сегодня у Oracle.
По заказу нашего давнего и лучшего клиента, компании Softkey мы создаем сегодня Oracle кластер.
Кстати, пользуясь случаем скажу, что Oracle проект выбрал с самого начала благодаря Феликсу Мучнику и его опыту еще как разработчика. И благодаря этому выбору, в том числе, проект технологически непрерывно развивается.
Забавно, но еще до начала 2007 года проект работал всего на одной машине. (надеюсь, не рассказал коммерческой тайны ) Т.е. на одном выделенном сервер работал и Oracle и веб-сайт с бизнес-логикой. И в такой конфигурации Софткей в 2006 году показал обороты более 300 миллионов рублей! Неплохая эффективность, мне кажется
В начале года проект переехал на две машины, одна под Web вторая для Oracle. Причем реально машина для Web не перегружена, единицы процентов используются. Но вот машину для Ораклу пришлось выделять и специально конфигурировать, так как нагрузка на базу постоянно растет. Но даже сегодня, ситуация такова, что резервы производительности отличные.
За 6-7 лет эксплуатации Софткей простоял на профилактике не более двух суток в общей сложности. Великолепный результат! Спасибо и нам и Датафорту, которы отвечает за эксплуатацию инфраструктуры. Но сегодня рост оборотов компании настолько значителен, что стоимость возможного часа простоя требует построения отказоустойчивой архитектуры на основе Oracle RAC.
Итоговую схему кластера не смогу опубликовать сегодня или дать детальные разъяснения Но такой схематичный вариант приведу:
Проект Oracle кластера для Софткея уже сформирован, пробный стенд работает и тестируются. Ожидаем приход оборудования. Думаю, что в Октябре кластер Oracle начнет свою промышленную эксплуатацию.
В итоговой конфигурации проект будет насчитывать 4 машины, две для Oracle кластер и две для кластера веб-приложения. Каждый из серверов можно будет выводить из работы, выполнять профилактику и обновление и уже после этого вводить его обратно в работу. При необходимости можно будет ввести новые сервера в работу как в кластер Оракла, так и в кластер Веб, если потребуется увеличение мощности.
Над проектом у нас в компании работают первокласные специалисты. Вообще, можно сказать, что мы собрали у себя отличный профессиональный состав сертифицированных Oracle специалистов и вообще специалистов по базам данных! У ребят есть практический опыт по запуску RAC в компаниях мобильной связи, да и наш опыт по управлению веб-проектами уже можно считать уникальным.
Я уверен, что потребность в отказоустойчивых системах будет непрерывно возрастать. Этот Oracle кластер только первый пример. По мере роста Интернет бизнеса спрос на кластеры Oracle, MSSQL, MySQL будет постоянно возрастать.
Начиная с версии 6.5 мы выпускаем новый модуль "Веб-сервисы". Этот модуль войдет в редакции Эксперт и Бизнес и выйдет в систему обновлений скорее всего уже сегодня в режиме бета-версии.
Несколько определений:
Веб-служба, веб-сервис (англ. web service) — программная система, идентифицируемая строкой URI, чьи публичные интерфейсы и привязки определены и описаны языком XML. Описание этой программной системы может быть найдено другими программными системами, которые могут взаимодействовать с ней согласно этому описанию посредством сообщений, основанных на XML, и передаваемых с помощью интернет-протоколов.
Достоинства веб-сервисов:
Веб-службы обеспечивают взаимодействие программных систем независимо от платформы. Веб-службы основаны на базе открытых стандартов и протоколов. Благодаря использованию XML достигается простота разработки и отладки веб-служб. Использование интернет-протокола HTTP обеспечивает взаимодействие программных систем через межсетевой экран.
Модуль Веб-сервисов служит для облегчения создания и интеграции с существующими веб-сервисами. Мы полагаем, что основное свое применение модуль найдет при разработке интеграций с действующими приложениями как внутри компании, так и с внешними уже работающими веб-сервисами.
В качестве примера работающего веб-сервиса в поставке модуля включен веб-сервис для модулоя веб-аналитик. Это веб-сервис позволяет сайту отдавать сводную статистику сайта. Пользователи операционной системы Windows Vista могут установить в боковую панель или на рабочий стол мини-приложение, которое будет отображать эту статистику. Мини-приложение идет в поставке модуля Веб-сервисов. Выглядит этот сервис так:
Есть ряд идей по использованию веб-сервисов. Но если у вас есть идеи или потребности по интеграции с приложениями, пишите, с удовольствием обсудим.
По своей идее, Openstat предназначен для проведения post-click анализа, а именно, для точной идентификации переходов на сайт Рекламодателя по каждому рекламному Сообщению (текстовому объявлению, баннеру,..).
Веб-аналитика ( http://www.1c-bitrix.ru/sitemanager/features/statistics.php ), входящая в наш продукт, позволяет вести post-click анализ, и не просто анализ, а в разрезах по рекламным кампаниям с детальным анализом событий, анализом внимания к контенту и вычислением ROI.
Для нас не составило труда поддержать данную инициативу. И мы очень рады, что такие крупные как Яндекс, Бегун, Спайлог пришли к единому формату.
Начиная с версии модуля статистики 6.0.0 наш продукт поддерживает OpenStat.
Как подключить?
В Битриксе: откройте настройки модуля Статистики, закладка "Рекламные кампании", секция "Поддержка Openstat". Можно настроить, какие значения будут использованы в r1 и r2.
XML + XSLT - это давняя тема, о которой можно написать целую статью, чтобы выразить свое субъективное мнение по этому вопросу. Появление модуля Блогов в нашем продукте, это отличный повод опубликовать материал.
Действительно, было написано много книг и учебников, в которых программистов и проектировщиков учили, что единственный способ абстрагировать внешний вид (представление) от данных - это загнать все в XML, пропустить потом через XSLT и уже на выходе получить HTML.
Утверждалось, что проекты c XSLT шаблонами должны быть проще и удобнее, чем любые другие шаблоны и ими будет удобнее управлять. Много говорилось об удобстве переносимости и простоте развития таких проектов.
Все восприняли это буквально и начали делать подобные продукты. Не скрою, мы тоже были в рядах сторонников этой технологии и выпустили на рынок продукт "Битрикс: Инфо-портал" разработанный на ASP+MSSQL+XML+XSLT. Совершили подвиг, заставив XSLT шаблоны работать достаточно быстро, вложили кучу сил, времени и денег в разработку технологии... Самые большие каталоги товаров вмещали по 70 тысяч товаров.
Но клиенты голосовали рублем и внесли ясность. Что мы получили в итоге:
1. Иллюзия простоты XSLT шаблонов.
Проекты на XML+XSLT очень тяжело поддерживать клиентам. Специалистов по XSLT очень мало. Технологичный шаблон может подправить только специалист очень высокой квалификации. Таким образом, развеялась иллюзия, о простоте для клиентов и удобстве в управлении.
2. Иллюзия управляемости и гибкости.
Шаблонов XSLT в большинстве своем недостаточно для написания серьезной бизнес логики в публичной части сайта. XSLT не дорос до полноценного языка программирования, на нем можно делать только простые условные представления и очень ограниченную логику. Нет возможности использовать все возможности современных языков программирования и библиотек (графика, представление, сервисные функции и т.п.)
3. Иллюзия производительности, дешевого размещения и масштабируемости.
Как не стараются разработчики, производительность XML+XSLT систем остается очень низкой, несмотря на все усилия индустрии. Да и как выжать эту производительность? Сначала данные из SQL базы преобразуются в XML (а это текстовый файл большого размера в силу своей архитектуры). Потом XML данные загружаются в XML парсер уже в серверной части, где они занимают еще больше памяти для работы XPATH, формирования индексов по XML данным в момент загрузки и т.п. Далее XSLT проходит по огромному массиву данных получая на выходе опять же текст, который занимает память.
Реальное решение производительности просматривается только в многоуровневом кэшировании, что не всегда возможно, или нежелательно.
Ну и как результат, проекты на этой технологии очень тяжело хостить, почти всегда это выделенные машины. Потребность в масштабирование таких проектов возникает уже начиная с 1000-10000 уникальных пользователей в день и требует значительных финансовых усилий.
4. Иллюзия удобства абстрагирования данных и внешнего вида.
Один из плюсов, за которым все гонятся, используя технологии XML+XSLT - добиться качественной абстракции внешнего вида. Но только уже после создания первых шаблонов все понимают, что абстракция получилась, только никому она уже больше не нужна. Шаблон XSLT очень сложен для представления внешнего вида. Корректива его требует много сил. Полная смена дизайна требует полного переписывания всех шаблонов, что в расчете на сложность создания XSLT получается еще дороже. Таким образом, получается, что цена владения технологией XML+XSLT очень высока как для разработчиков, так и для их клиентов.
Это только некоторые моменты...
И что получается в результате героических усилий разработчиков по освоению технологии?
Большие расходы на владение и разработку, постоянно возрастающие расходы на масштабирование, низкий спрос на продукты, дорогие услуги, переход в дорогую ценовую группу, уменьшение числа заказов, снижение темпов развития продуктов, отсутствие работающей партнерской сети...
Значит ли это, что надо вообще отказаться от XML? Конечно нет. XML+XSLT очень красивая технология и будет еще развиваться. XML отлично работает для связи между проектами (RSS 2.0, Яндекс.Маркет, CommerceML и другие). Для небольших шаблонов и фрагментов и сегодня вполне эффективно используется XSLT для обработки XML.
Можно ли добиться абстрагирования продукта от дизайна и бизнес-логики другим способом, отличным от XML+XSLT? Конечно, возможно. В своем продукте "Битрикс: Управление сайтом" мы это сделали. Причем сумели даже создать технологию обновлений SiteUpdate, которая в нормальной реализации встречается вообще крайне редко и возможна только при полном разделении внешнего вида и бизнес-логики приложений: http://www.bitrixsoft.ru/sitemanager/siteupdate.php
Тема интересная и говорить о ней можно долго При случае, продолжу...