Agile проектирование, разработка и запуск высоконагруженного интернет-магазина на платформе 1С-Битрикс — за 4 месяца

    Добрый день, коллеги!
    Сегодня я расскажу как в очень сжатые сроки спроектировать и запустить высоконагруженный интернет-магазин с нестандартным функционалом… на платформе 1С-Битрикс.

    Проблематика


    Если подходить к задаче разработки большого интернет-магазина формально, описывая каждый миллиметр будущего проекта, то у вас получится ТЗ на несколько сотен, если не тысяч листов и десятки диаграмм и экранных форм. И писать вы его будете, скорее всего, не менее полугода… впятером, ночуя на работе. Но самое «страшное» впереди — когда вы его наконец торжественно допишите и объявите об этом выпучив воспаленные глаза, с огромной долей вероятности поменяются требования к проекту: рыночные условия за полгода изменились, приходят и уходят люди, ваши начальники и подчиненные, появляются новые идеи и у них и у вас и т.п. И придется срочно нанимать 10 переписчиков и так до бесконечности :-)
    image
    С другой стороны, если ТЗ написать маленьким, страниц на 10, за выходные, и все его согласуют… не читая, то вам придется поселиться в команде разработки для конкретизации требований и ответов на поражающие своей точностью мозгоразжижающие вопросы: «А напишите пожалуйста формулу расчета скидки при оплате продукта долларами с учетом погрешности машинного нуля». Скорее всего, больше недели вы не продержитесь и проект так и не появится.
    Так что же делать, если на проектирование отведен месяц, на программирование — три, вы не хотите поселяться в команде разработки, а кто-то уже публично объявил дату запуска проекта? :-)

    Пишем техническое задание на макро-языке


    image
    Прежде всего, осознайте, что над платформой 1С-Битрикс много лет трудились не только программисты, но и талантливые системные и бизнес-аналитики и воспользуйтесь их опытом! К счастью для вас, самые сложные и трудные для понимания вопросы электронной торговли — давно разжеваны, адаптированны к российским реалиям и превратились в простые концепции, разбитые для простоты восприятия на модули платформы 1С-Битрикс: «Интернет-магазин», «Торговый каталог» и «Валюты».
    Вам остается:
    1) Хорошо понять внутреннюю логику и терминологию данных модулей. Это ключевой пункт. Можно потратить на это выходные, дело стоит того.
    2) Увидеть, какие небольшие блоки осталось добавить, чтобы получился публично анонсированный интернет-магазин.
    3) Написать короткое, но емкое ТЗ в терминологии платформы 1С-Битрикс, содержащее ссылки на стандартную документацию к платформе и детально проработанные блоки с описанием расширенного/нестандартного функционала. Объемом — ну максимум страниц 20-30 и 5-10 диаграмм.
    4) Подготовить команду разработки к пониманию ТЗ и быстрой его реализации — для этого коллег нужно оперативно «прокачать» на бесплатных курсах для разработчиков или, если позволяет время, на более сложных коммерческих тренингах.
    5) Подготовить команду обслуживания проекта — менеджеры, контент-редакторы, администраторы — также «прокачав» их для эффективной работы.
    Да да. Остался важный вопрос — а что если я начну разработку на платформе 1С-Битрикс, а внезапно появится сложный функционал, который окажется невозможно реализовать и придется заново все писать на другой платформе? Поверьте, вы не первый, у кого возникает такое опасение — и подобные задачи решаются, давно и достаточно успешно следующими технологиями:
    1) Постоянная борьба за упрощение и модульность архитектуры платформы. Архитектура 1С-Битрикс настолько проста и интуитивно логична, что вашему креативному полету фантазии и спускаемым сверху бизнес-требованиям ничего не будет мешать — вам же воздух не мешает двигаться? Лично я не разу не встречал таких бизнес-требований к интернет-магазинам, которые требовали бы переписывания ядра платформы. Хотите верьте, хотите нет.
    2) Стандартный механизм расширения бизнес-логики платформы — переопределяемые обработчики событий и собственные модули. Поверьте это проще, чем делать трехэтажные наследования от множества объектов.
    Также вы можете вынести разработку и поддержку проекта в аутсорс, например воспользоваться услугами нашей сертифицированной партнерской сети, что значительно снизит риски самостоятельной организации процесса разработки/сопровождения интернет-проекта. Вам нужно будет только собрать требования и прийти с ними к разработчикам.

    Инструменты

    Писать ТЗ можно в Microsoft Word и т.п., но рекомендую писать его с использованием эффективного инструмента коллективной работы — wiki. Все могут править текст и видно, кто и когда это сделал. Если вы используете наш корпоративный портал, то можно писать ТЗ в wiki созданной для проекта рабочей группы.
    Также, удобная wiki имеется в продуктах redmine, trac, confluence и т.п.

    Оглавление

    Соберем и опишем ключевые особенности нашего интернет-магазина в ТЗ, оттолкнувшись от расширяемого стандартного функционала.

    Структура каталога товаров и свойства товаров

    Вам нужно однозначно определиться — какой у вас каталог. Иногда каталог товаров предоставляет из себя «дерево с яблоками», иногда — это плоский список с возможностью фильтрации по разным параметрам (производитель, новинка, распродажа), а иногда — одни и те же товары-яблоки можно повесить на разные деревья — предоставив Покупателям различные представления информации. Рекомендую вставить в этот раздел ТЗ прототипы интерфейсов всех страниц вашего каталога — черновая отрисовка экранных форм очень помогает разобраться с логикой каталога.
    Обычно на платформе 1С-Битрикс каталог размещают либо целиком в одном инфоблоке, либо в одном инфоблоке хранится древовидная структура товаров с общими описаниями, а конкретные ценовые предложения (которые часто идентифицируют по SCU), хранятся в другом(их) инфоблоках.
    Если вы или ваши коллеги разбираются в UML, то часто полезно отразить сущности каталога на подходящей диаграмме, проставив логические отношения между ними.
    image
    Чтобы максимально снизить риски, связанные с высокой нагрузкой при эксплуатации проекта, рекомендую эксперименты со структурой каталога проводить на прототипе, который может быть быстро создан разработчиками на платформе 1С-Битрикс в черновой верстке (трудозатраты: день-два). А окончательное решение по архитектуре каталога принимайте только после того, как зальете в каталог ожидаемый объем тестовых данных (а лучше его превысить раза в 2) и замерите скорость и характер типичных запросов к ним.
    Часто для функционирования каталога требуются дополнительные справочники — Производители, Цвета, Типы транспортных средств и т.п. — все то, что будет связано с товарами в каталоге. Перечисляем их тут.
    Итог:
    В данном разделе ТЗ вы продумали и описали структуру каталога и свойства товаров вашего проекта, предварительно сделав наброски экранных форм, сделали технологический прототип и испытали архитектуру каталога на объеме тестовых данных, приближенном к реальному. Было бы время — и вы смогли бы собрать и протестировать на прототипе каталог в стиле Яндекс.Маркет — однако до запуска остается 3 месяца.

    Ценообразование товара в каталоге, валюты

    Самое простое — у товара есть одна цена=циферка. Сложнее, когда цена меняется в зависимости от типа Покупателя — для рядовых цена одна, для партнеров — другая и т.п. Еще интереснее, когда цена может быть задана в каталоге в разных валютах, и должна быть пересчитана в валюту магазина, в зависимости от того, откуда пришел Покупатель. А бывает еще так, что цена товара зависит от и от покупаемого количества. А когда все собирается вместе…
    В торговом каталоге платформы 1С-Битрикс вышеперечисленный функционал, к счастью, предусмотрен (и много еще другого полезного функционала). Однако, если вам потребуется более сложная логика ценообразования в каталоге, например, когда цена зависит от числа дней до дня рождения Покупателя*сумма ваших заказов, вы всегда ее можете решить… переопределением обработчиков событий.
    В этом разделе ТЗ нередко появляются формулы. Полезно написать данный и следующий раздел ТЗ вместе с бухгалтером.
    Итог:
    Скорее всего, большая часть нужной вам логики ценообразования и валют, адаптированной к российским реалиям, уже реализована в платформе 1С-Битрикс. Однако, вы всегда можете добавить то, что вам нужно, либо изменить ее поведение — путем стандартных механизмов расширения платформы, хорошо известных разработчикам.

    Процесс заказа для Клиента

    Описываем, как Клиент может купить продукт, отрисовывая экранные формы. Если сомневаетесь, установите стандартный интернет-магазин платформы 1С-Битрикс или поиграйтесь в виртуальной лаборатории и изучите логику его работы. Часто продукт предварительно добавляется в корзину и проводится по мастеру заказа, но можно также иногда организовать «быструю» покупку в один шаг — оплатив заказ, к примеру, с лицевого счета Покупателя и подставив в него данные из профиля Покупателя по умолчанию.
    Помним, что покупатели делятся грубо на физических и юридических лиц, но иногда требуется больше типов. Каждый тип покупателя, при оформлении заказа, как правило вводит разные данные — например юридические лица могут ввести ИНН и т.п. Этот раздел ТЗ неплохо проработать совместно с юристом.
    Когда заказ оформлен, нужно не только уведомить Клиента об этом, но и сохранить введенные данные в профиль для дальнейшего использования при повторных заказах. Также, клиент должен иметь возможность просматривать сформированные заказы в персональном разделе, повторять и отменять их.
    Нередко удобно, когда Покупатели могут оплачивать заказ с персонального лицевого счета, пополняемого, например, со скретч-карты.
    image
    Итог:
    Вы отрисовали и описали процесс заказа. Полезно использовать для этого диаграммы активности UML. Многое из того, что нужно для реализации этого процесса, уже имеется в платформе 1С-Битрикс. Если вам требуется расширить бизнес-логику процесса заказа, вы всегда сможете это сделать, используя стандартные механизмы расширения платформы.

    Процесс заказа для Менеджера

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

    Платежные системы и службы доставки

    Как правило, интернет-магазины запускаются с ограниченным набором платежных систем и служб доставки, добавляя затем их по мере необходимости. В 1С-Битрикс имеется множество встроенных объектов данной категории, и вы всегда сможете быстро добавить нестандартные платежные системы и службы доставки.

    Специализированные административные разделы

    Иногда бывает так, что встроенные в платформу административные разделы, например админка заказов, не совсем подходят для решения очень специфических задач. В этом случае, правда за счет дополнительных затрат на программирование, можно создать свои собственные административные разделы с любым, нужным вам функционалом. По секрету — если нужно запуститься за 3 месяца, постарайтесь не заниматься созданием кастомных админок — лучше позаботьтесь о юзабилити части сайта, доступной посетителям :-)
    Итог:
    Админки, специфичные для вашего проекта можно добавлять в любом количестве. Но часто — «с головой» хватает стандартных админок.

    Роли и права

    image
    В этом разделе ТЗ описываем кто какими правами в магазине обладает и какие операции может выполнять. Например, редактор контента добавляет новости и редактирует страницы, а бухгалтер — проставляет у заказов статус оплаты и т.п. Возможно, в ваш каталог будет автоматически заливаться информация из других систем — создайте для них специальную учетную запись/группу с правами только на эту операцию. Полезно оформить данную информацию в виде диаграммы UseCases.

    Устойчивость системы к нагрузке

    image
    В этом разделе ТЗ описываете методику проведения нагрузочных испытаний интернет-магазина, если на это есть время, и целевые показатели. Например:
    1) В систему заливаются тестовые данные в объеме, приближенном к ожидаемым. Например 1000000 заказов, 200000 позиций в каталоге, 2000000 пользователей.
    2) Эмулируется нагрузка на интернет-проект, например с использованием jmeter и т.п.
    3) Инструментом нагрузки фиксируется информация по каждому хиту.
    Требуется, чтобы система выдержала 1000000 хитов в сутки, со средним временем получения страницы в 0.5 секунды и процентом ошибок (50*), допустим, менее 1% (системный администратор должен стремиться снизить число ошибок до 0).

    В результате у вас получилось короткое и эффективное ТЗ, в котором, с одной стороны, будет множество ссылок на подробную он-лайн документацию к платформе 1С-Битрикс, а с другой — детально расписанные специфичные для вашего интернет-проекта задачи. Дополнительно, вы сразу определяете целевые показатели решения, которые должны быть достигнуты в ходе реализации путем выбора и настройки оборудования, оптимизации кода, кэширования. ТЗ содержит лишь специфику вашего проекта, опираясь на огромную техническую документацию к платформе.

    Оценка и разработка


    image
    Реализация проекта на 1С-Битрикс обычно идет по такому сценарию:
    1) Инсталляция платформы — минуты
    2) Интеграция шаблонов, настройка многосайтовости — обычно, при наличии верстки, день
    3) Интеграция стандартных элементов — новости, карта сайта, меню, поиск по сайту и т.п — обычно делается за день-два
    Подготовленное выше ТЗ делится, лучше с привлечением команды разработчиков или экспертов (попробуйте PlanningPoker), на компоненты. Типичный проект — десятки компонентов. Часто быстрее не писать свой компонент для проекта, а доработать стандартный (в дистрибутиве платформы сотни готовых компонентов).
    image
    Для работы компонентов требуется настроить информационные блоки — это абстракция платформы 1С-Битрикс над базой данных. Обычно на это уходит около дня.
    4) Производится оценка компонентов. Лучше собрать программистов и потратить на оценку и обсуждение день-другой. На этом этапе проверяется, насколько вы понимаете, что хотите получить — либо вы уверенно ответите на все вопросы разработчиков и получите адекватные оценки, которые можно озвучить, либо разработчики, тем более не понимая задач (если вы их сами не понимаете), дадут оценки (возможно под давлением :-)) «от фонаря» и скорее всего вы не запуститесь в срок.
    5) Разработка компонентов. Как правило это самая долгая фаза в жизненном цикле первого релиза проекта. Компонент средней сложности делается одним разработчиком грубо день. Компоненты можно, как правило, делать параллельно несколькими разработчиками.
    image
    6) Настройка прав. Создаются пользователи и роли, проверяются их права в системе и проекте.
    7) Функциональное и приемочное тестирование. Тестировщики и пользователи проверяют функционал, «прокликивая» проект. Баги исправляются. Хотите модульные тесты — пишите, но скорее всего на них не останется времени.
    8) Подготовка и проведение нагрузочного тестирования. Если проект высоконагруженный, то рекомендуется настроить веб-кластер. По опыту, лучше разрабатывать и тестировать на максимально слабом железе — на мощном железе вы возможно не сразу оцените низкое качество разработки.

    Заполнение контентом


    Т.к. на предыдущем этапе были настроены роли и права, контент редакторы могут приступить к наполнению системы информацией. Также импортируются справочники и каталоги. Сотрудников, задействованных в наполнении контентом, лучше предварительно направить на вышеуказанные курсы — иначе засыпят вас вопросами в лучшем случае, а в худшем будут говорить, что платформа глючит, т.к. у них ничего не получается.

    Выбор хостинга, развертывание проекта


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

    Обслуживание проекта


    После ввода проекта в эксплуатацию проследите, чтобы ядро системы регулярно обновлялась (иногда во время разработки нарушаются наши требования к качественной интеграции и модифицируется ядро — что приводит к нарушению работы проекта после обновления, поэтому совет — заставляйте обновлять проект каждый день), а сам проект проактивно мониторился и о возможных неполадках системные администраторы узнавали раньше посетителей сайта :-)

    Заключение


    Для реализации высоконагруженного интернет-магазина за несколько месяцев вовсе не обязательно писать огромное ТЗ на 1000 страниц с сотней диаграмм. Часто менеджеру проекта достаточно изучить возможности модулей «Интернет-магазин» и «Торговый каталог» платформы 1С-Битрикс и в ТЗ отразить лишь специфические и нестандартные задачи, оформив остальные разделы в духе «смотри стандартную документацию 1С-Битрикс». Как правило, в большинстве случаев для изменения стандартного функционала интернет-магазина платформы достаточно воспользоваться технологией переопределения обработчиков событий и крайне редко — создавать свои модули, хотя делается это просто. Чтобы снизить риски деградации производительности проекта под нагрузкой — рекомендуется заблаговременно провести нагрузочное тестирование на объеме данных, приближенных к «боевым».

    Вы не первый, кого мучает вопрос: «А что, если я начну разработку на платформе 1С-Битрикс, а внезапно появится сложный функционал, который окажется невозможно реализовать и придется заново все писать на другой платформе?». Как я постарался показать в статье, задачи подобного класса давно и успешно решаютсяопасаться не стоит.

    Удачи!

    Руководитель направления контроля качества интеграции и внедрений 1С-Битрикс — Александр Сербул
    1С-Битрикс
    73,00
    Компания
    Поделиться публикацией

    Комментарии 64

      +5
      за 4 месяца

      в очень сжатые сроки


      Суровая ЦМС эта ваша битрикс.
      А не сжатые сроки — это сколько? 1.5 года?))
        0
        На проектирование интернет-магазина с десятком сотрудников в бэкофисе у вас уйдет не один месяц, если будете описывать все бизнес-процессы и согласовывать их с клиентом. А потом еще разработка, тестирование, нагрузочные испытания… :-)
          +2
          Зато сразу можно оценить стоимость разработки магазина на Битрикс.

          Если пишите срок разработки 4 месяца, то или пишите конкретно, что входит в этот срок или не надо это как преимущество выставлять.

          А то люди делают магазины за месяц и без бюджета в пол миллиона рублей и не совсем понятно, что они делают не так?
            +1
            Погодите. В статье подробно и конкретно описан процесс от проектирования до ввода в экплуатацию под ключ крупного высоконагруженного проекта с нестандартным функционалом. Что именно еще пояснить?
              +1
              В том и дело, что конкретно ничего не расписано, расписано «например», «может быть». Например кому-то нужно сложное ценообразвоание, а кому-то нет. Кому-то нужна регистрация юр. лиц, а кому-то нет, плюс задание мы не пишем, так как это очень долго, но срок разработки ровно 4 месяца и это очень круто.
          +3
          Спасибо, Александр, за подробную статью.

          Однако позвольте с вами не согласиться в части "… — заставляйте обновлять проект каждый день". На нагруженных рабочих проектах это рискованно, потому что надо тестировать обновление, что тоже затратно.

          Например, обновление 9.5.* с «живой сессией» несмотря на полное отсутствие кастомизации функционала чуть не завалило сервер, а исправлений пришлось ждать несколько дней. Нас спас только большой запас мощности на железке.
            0
            Мир софта это же постоянное движение вперед. Возьмите дистрибутивы серверных операционных систем, например Redhat/CentOS — 7 лет багфиксов и бэкпортов, в т.ч. нового функционала в ядро.

            В 1С-Битрикс тщательно тестируют все обновления перед их выходом, понимая, что будут обновляться боевые высоконагруженные системы. К большому сожалению, иногда вкрадываются ошибки — ведется активная работа по минимизации их появления. Надежнее всего — обновляться на отдельной машине, запускать юнит и интеграционные тесты и после этого обновляться на боевой машине.
              +8
              «В 1С-Битрикс тщательно тестируют все обновления перед их выходом»
              — вот уж насмешили))
                –1
                В настройках главного модуля можно отключить флаг «Загружать только стабильные обновления» — и наслаждаться бетами, кому не терпится :-) После стабилизации беты модуля, он переходит в разряд стабильных — все по взрослому.
                    –2
                    Ничего криминального там нет. Решается или уже решено косметическим рефакторингом.
                      +2
                      Но вы же предлагаете с этим работать и это дописывать и расширять…
                        –1
                        Вы думаете в исходниках linux все совершенно? :-) Да, есть чистоплюи в OpenBSD — которые обсасывают каждую строку кода — ну и какой индекс популярности у подобных систем? Архитектура 1С-Битрикс — грамотна, модульна и расширяема. Пишите свои модули на строгом ООП, никто не мешает.
                          +4
                          Искренне желаю вашей компании нанять толковых технарей и избавиться от сложившейся репутации, потому что, если бы возможности битрикса были бы еще подкреплены возможностью его сопровождения, ему бы цены не было.

                          Но пока вы пишите такие комментарии, битрикс не отмоется от ссылок на говнокод.

                          З.Ы. плюйте в карму еще, битриксу станет лучше от этого :)
                            0
                            Спасибо. А можете назвать продукт, который отмылся от ссылок на говнокод, есть такие в природе или только в книжках в университете?
                              +3
                              везде есть говнокод, вопрос в его проценте. В Битриксе его 200%.
                                0
                                Не понимаю я вас. Знаете, 90% программистов, которых я собеседовал, считают говнокодом почти любой непонятный им код, кроме своего (из-за чувства страха перед неизвестным). А когда сами начинают писать, то все оказывается наоборот — пишут хуже библиотек и коробочных решений.

                                Далее. АПИ 1С-Битрикс просто и модульно. Там практически нет ООП — для упрощения и гибкости, в основном функции. А задача программиста уже творить объекты или модули на базе АПИ — где тут поддержка говнокода, кроме как своего :-), я не вижу. Вас никто не просит поддерживать ядро и АПИ, это наша задача.

                                  0
                                  Я не собираюсь вас переубеждать, т.к. даже судя по этому топику — это бесполезно. На любой аргумент — у вас 100 своих.

                                  В любом случае что-то не так в датском королевстве, если так много людей говорят о том, что код Битрикса довольно плох. Если для вас это ничего не значит, то и нет смысла продолжать разговор.

                                  Как говорится — хай буде гречка.
            +1
            >Требуется, чтобы система выдержала 1000000 хитов в сутки, со средним временем получения страницы в 0.5 секунды и процентом ошибок (50*) менее 1%.

            И таки вы считаете что это годная цель?
              +1
              Для системы с несколькими сотнями таблиц в базе данных, десятками настроенных бизнес-процессов, веб-антивирусом, каталогом с сотнями тысяч позиций, работающим постоянно обменом данными с 1С и одновременной работой фронтенда и бэкэнда (десятки сотрудников), на одноюнитовой железке — цель имхо вполне достойная.
                +4
                Приложение, имеющее несколько сотен таблиц в базе — уже никуда не годится для высоких нагрузок.
                И именно поэтому делать такие решения на базе ЦМС (битриксов, джумл и прочих друпалов), которые медленные как каракатицы — высшей степени глупость.
                При грамотном подходе на фреймворке и с заточкой под конкретное приложение — можно уложиться в несколько десятков таблиц и многократным (на порядки) увеличением производительности.
                И совсем не уверен, что это займет много больше времени на разработку, чем запиливание этих ваших ЦМС.
                  0
                  А кто вам сказал, что Битрикс это ЦМС? Сейчас Битрикс — это платформа для управления веб-проектами, бизнес-фреймворк, что-то типа легкой SAP. Нередко клиентам нужно, чтобы решение подобного уровня сложности и надежности работало в веб под нагрузкой — я об этих случаях и пишу в статье.
                  0
                  (спешу уточнить, что понятно, что бывают случаи когда таблиц действительно сотни и по делу, но это уже столь редкие случаи, что это выходит за рамки данной темы)
                    0
                    Я не буду спорить по поводу 1М хитов или 0.5 секунды, но 1% ЗАПЛАНИРОВАННЫХ отказов — это песец. Так нельзя.
                      –1
                      А php иногда начинает сыпаться записями segmentation fault — не встречали? :-) Вот такие вот непредвиденные обстоятельства рождают малый процент ошибок. Но если использовать веб-кластер, то процент ошибок можно свести к нулю.
                        0
                        Segmentation fault я встречал.
                        Но во-первых у нее как правило есть причина, которую можно найти, а во-вторых, если у вас каждый сотый запрос сегфолтится, то вы точно что-то делаете не так ;)
                          –1
                          Причина? Ошибки в ядре php ;-)
                            +1
                            Пишите баг-репорты.
                            Любую ошибку можно локализовать и сообщить о ней разработчикам.

                            ps. У вас действительно php сегфолтится на каждый сотый запрос? как вам это удалось?
                              –1
                              Видимо вы не работали в высоконагруженных PHP-проектах, где отлавливаются баги в линуксе, nginx, apache и php и прекомпиляторах :-).
                                +1
                                Не надо переходить на личности.
                                Я работал и продолжаю работать в «высоконагруженных php-проектах».
                                Могу сказать, что 99% для нас — недопустимо мало. Сейчас, если верить моему заббиксу, наш аптайм выше 99,99%

                                На вопросы, что я задал выше, ответьте пожалуйста.
                                И да, раз вы отлавливали баги в линуксе, nginx и apache, приведите пример хотя бы одного в каждой группе.
                                  –1
                                  Два моих любимых бага:

                                  1) PHP с любым прекомпилятором в апаче сыпется при увеличении нагрузки на проектах с большим числом php скриптов. Я отлавливал ситуацию на FreeBSD, Debian, CentOS. Собирали отладочные бинарники — php падает в разных местах в момент повторного освобождения памяти кастомизированной функцией движка ZendEngine. Меняли версии glibc — не помогает. 100% стабильности работы я за много лет так и не увидел. Самое интересное, что падает даже сертифицированная сборка php на ZendServer. Все стороны валят друг на друга — т.к. прекомпилятор это же не PHP и наоборот.

                                  2) Между apache и nginx редко, но с забавной настойчивостью опять таки при высоких нагрузках появляются ридинги (слоты апача забиваются процессами в статусе "...reading..."). Решение ищу давно. Настройки стека TCP — не помогают. Баг где-то между линуксом и nginx :-) В исходниках копаться честно лень.

                                  Эти вещи однако успешно закрываются успешно веб-кластерными технологиями. Тогда процент ошибок будет 0%.
                                    0
                                    На каких версиях php провляется первый баг? Баг-репорт писали?

                                    Я правильно понимаю, что эти баги дают вам 1% ошибок на проде?
                                      0
                                      На всех версиях php, но не факт что дело в php. А кому писать репорт — в php или автору прекомпилятора? :-) Или в копию и тех и тех. Я думаю дело в связке php с прекомпилятором. Опять таки повторю, что нередко эта проблема не проявляется вообще. Все зависит от проекта, нагрузки, железа и софта.
                                        0
                                        Вы упорно игнорируете мой второй вопрос.

                                        Позволю себе повторить его еще раз.

                                        Вы ставите себе целью терять 1% запросов.
                                        Вопрос: куда теряется этот процент? Неужели у вас php сегфолтится так часто?
                                          0
                                          Вы видимо не заметили второй пункт про apache и nginx. Предлагаю не зацикливаться — пусть каждый выбирает себе такой процент ошибок, какой считает нужным. Я лишь поделился практическим опытом поведения php под высокими нагрузками на современном серверном софте.
                                            0
                                            Ради вас поправил текст статьи про 1%, написал более ясно, что имеется в виду.
                                              +1
                                              Спасибо, это честь для меня :)
                                              Ранее никто не правил ради меня статьи, кроме шуток.
                                                0
                                                Вот еще интересный материал на эту тему, надеюсь пригодится. Буду благодарен, если подскажите как бороться с такими вот багами серверного софта.

                                                  +2
                                                  Мы не используем apache в продакшене, так что подсказать я не смогу. :)
                                                  Нам хватает nginx + fcgi
                                        0
                                        У нас на большой нагрузке eAccelerator постоянно приводил к сегфолтам. С xcache проблем таких пока не замечено
                                          0
                                          К сожалению наблюдал сегфаулты и на xcache и на apc и на ZendOptimizer+.
                      +6
                      Только для меня этот пост пахнет заказухой?
                        +4
                        Показухой, пожалуй
                          0
                          Так вроде там и не скрывается, что статья написана сотрудником компании Битрикс. Прямого указания не вижу (не всё прочитал :) но там выражения «наша партнерская сеть», и т.п. встречаются.
                            0
                            А, там же подпись внизу! :)
                              +1
                              В статье изложен реальный опыт внедрения и применения фреймворка на известных крупных проектах рунета. Использование подобного 1С-Битрикс решения нередко позволяют достигнуть отличных результатов в короткие сроки, но иногда, и все мы это понимаем, при наличии сильной команды разработчиков — нужно и эффективнее писать решение самим, возможно с нуля.
                        0
                        По-моему, вместо первой картинки лучше бы подошла вот эта:
                        +3
                        Вот вроде почитаешь всё так красиво, но почему я так и не видел ни одного нормального внедрения Битрикса? Невезение-совпадение?
                          +3
                          Здесь можно посмотреть: www.1c-bitrix.ru/products/cms/projects/
                          тут тоже можете найти много нового: www.itrack.ru/research/cmsrate/
                            +1
                            А вот список успешных высоконагруженных внедрений.

                            По личному опыту скажу, что внедрять со слабой командой разработчиков (а таких большинство) решения на базе ZF, Symfony, Magento для интернет-магазина — гораздо более рискованное занятие, т.к. одно дело скриптики писать и править даже студентам понятные на 1С-Битрикс, а другое — использовать возможности ООП в php на полную катушку, для чего требуется многолетний опыт и практика, понимание паттернов проектирования и т.п. А испортить объектную модель бестолковым наследованием — очень просто, и как часто это случается.
                              –3
                              Я не верю этому списку, там присутствуют притянутые за уши внедрения. Чего только стоит внедрение в Эльдорадо, уж постистиснялись бы вывешивать как успешное внедрение.
                                +2
                                А что вам не нравится в этом замечательном высоконагруженном проекте на платформе Битрикс? ;-)
                                  –2
                                  То есть по Вашему там всё прекрасно? :)
                                    +2
                                    Я даже периодически пользуюсь данным сайтом для покупок. Все отлично работает.
                                      –2
                                      Вы знаете во сколько вышла разработка этого сайта и сколько сейчас стоит его поддержка?

                                      Даже на часть этих денег можно было нанять пару отличных спецов с бесплатным фреймворком и всё было бы дешевле, быстрее, надёжнее и производительнее. Но всем почему-то мерещиться что с битриксом можно занедорого сделать высоконагруженный проетк. «Не гонялся бы ты поп за дешевизной». :)
                                        +1
                                        Знаете, я встречал на своем жизненном пути много самописных «крутыми» разработчиками систем, которые либо умирали через год-два так и выйдя в релиз по причине самозапутывания кода разработчиками, их увольнения и постоянного изменения требований, либо запускались и их поддержка превращалась в вечный деморализующий кошмар.

                                        В платформе Битрикс вы получаете 90% нужного и работающего функционала типичного веб-проекта с технической поддержкой и обновлениями, а именно на 10% нестандарта можно эффективно сконцентрировать усилия «крутых ребят» и… достичь цели за короткий срок.
                                          0
                                          Полностью с Вами согласен, но среди самописок я видел удачные внедрения, а среди Битриксов — нет.
                                            0
                                            Мне кажется дело в грамотном сопровождении решения на платформе Битрикс после его разработки:
                                            — имеется ли постоянно обновляемое ТЗ к проекту и описание его настроек, например в вики, или никто не знает как ОНО все работает
                                            — имеются ли интеграционные и модульные тесты проекта, проверяемые после модификации его кода или проект перманентно тестируется на клиентах
                                            — проводится ли аудит доработок проекта или программисты развлекаются как могут
                                            — ведется ли непрерывный мониторинг решения с помощью например nagios, pinba — размера кэша, время исполнения страниц, отлов отпавших по недостатку памяти страниц в логах, отлов медленных запросов к БД и их оптимизация или это брошено на самотек
                                            и т.п.

                                            Там, где эти вещи делаются, решения на битриксе живут и процветают и… постоянно развиваются. Недавно обсуждали с одними крупными клиентами планы по их развитию — вдохновляет :-)
                                              0
                                              Всё возможно, но факт в том что я не видел удачных внедрений Битрикса.
                                +1
                                Однажды Ходжа Насреддин решил подшутить над слишком сильно шумящими детьми. И сказал детям: «Дети, на кладбище раздают конфеты, бегите туда скорее.» Дети побежали на перегонки. Ходжа постоял, подумал… и пришел к выводу что если бы конфеты на кладбище не давали то дети бы не побежали. И сам побежал на кладбище за конфетами.
                              +2
                              Интересная статья, Александр.
                              Скептикам рекомендую ознакомиться с трудовой биографией автора.

                              По сути у меня ряд вопросов.

                              1. Мы делаем магазины куда более простые чем Эльдорадо и без такой нагрузки, сценарии более простые и прямые, чем вы пугаете. В любом магазине 20-30 различных типов html-страниц (собственно магаз+неизбежные доп.разделы типа новостей, статей, фака, акций и т.п.)
                              Вы их не кастомизируете? Оставляете стандартные от Битрикса? Или не описываете в ТЗ? Кто и как их делает?

                              Дизайнер (1шт)+верстальщик (1шт)+программист клиентских скриптов (1шт) тратят в сумме не менее 20 рабочих дней только на реализацию дизайна и клиентской логики. И ПМ их непрерывно модерирует независимо от того, есть ТЗ или нет.
                              Это гигантская работа, особенно если заказчик внимателен к ее результату.

                              2. Разностное ТЗ (пишем только то, что отличается от стандарта) это прекрасно в смысле экономии времени и текста. У нас есть ряд проектов, где мы такое ТЗ применяем. Однако вы в начале пишете (адресуясь к проектировщику) что он должен понять логику работы компонентов и прочувствовать точки роста. Ну он-то прочувствует, а клиент?
                              Допустим, реализация магазина Битриксом хороша. Но клиент-то не знает что есть стандарт и что он ему дает. Клиент хочет (и не говорит, естественно, пока не покажешь или прямо не спросишь) массу мелочей, настраиваемых в специфических местах. Я говорю о сценарии заказа со скидками, ограничениями, правами доступа и т.п.
                              Сказать: извините, этого нет в ТЗ, мы вас предупреждали что пишем отличия от стандарта Битрикса — вы будете быстро и совершенно справедливо посланы на йух.
                              Реально получается что разностное ТЗ работает только в двух случаях: клиент знает Битрикс не хуже ПМ, причем не только как юзер, но и немного как системно-мыслящий проектировщик, или ему совершенно плевать как оно будет выглядеть, лишь бы работало и продавало.
                              Мне кажется, оба типа клиентов — абсолютная экзотика. Да и разработчики редко берут на себя смелость утверждать «мы знаем как оно будет продавать, берем на себя ответственность».

                              3. Натягивание нестандартной верстки на магаз = 1 человеко-день?
                              Может я не понимаю чего-то, но если верстка отличается от стандарта не только цветами и оформительскими картинками, а еще и меняет хотя бы чуть-чуть процесс или интерфейс просмотра товаров, это требует работы напильником и кастомизации компонентов. Я оцениваю натягивание даже готовой верстки (чего не бывает, всегда есть пропущенные страницы и забытые поля) в несколько раз больше. Или у вас 5 человек одновременно будут это делать?

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

                              4. мозгоразжижающие вопросы про скидки, которые нереально уточнить ни до, ни во время проектирования, кто и когда будет задавать? уже кодить надо, проект стынет, а формул нету! как решается?

                              Меня статья огорчила тремя вещами:
                              a. я не поверил что хайлоад магазин с нестандартными сценариями можно сделать за 4 месяца. можно примеры? и на мои вопросы ответьте, аспекты проектирования и утряски мелочей мне непонятны.
                              я по-прежнему сторонник нормального проработанного ТЗ. наша практика показывает, что если клиент не понимает бизнес-вопроса или не готов на него быстро ответить в процессе проектирования, он на него не ответит и потом, как бы не клялся. соответствующий функционал надо убирать.
                              тз на не особо навороченный магаз это 25-40 листов с картинками или скетчами всех страниц. пишется 2-5 недель.

                              b. где agile? можно для неразвитых показать где он тут?
                              открыл вики, прочитал манифест. ничего не увидел тут у вас от agile. я без сарказма, я правда не понял

                              c. битрикс. пусть он хорош, не полезем в детали. мне кажется что тут дело не совсем в платформе. вы не доказываете что битрикс лучший, вы просто берете его как данность. хорошо.
                              если надо доказать что он крут, сравните с osCommerce хотя бы. покажите чем плох последний, чем плохи решения типа Magento
                              если вы видите серьезные преимущества Битрикса для проектных операций — расскажите подробности.
                              намеки есть, но честно я не увидел аргументов. много мнений без ссылок на проекты.

                              ссылок много, а статья отличная, дает задуматься.
                                +1
                                Спасибо.

                                1) Для сложных высоконагруженных проектов (1-5% от общего числа проектов на платформе, думаю) иногда проще написать компоненты на чистом АПИ платформы Битрикс, чем кастомизировать стандартные.

                                2) Если Клиент злостно отказывается включать мозги, прикидывется идиотом, но при этом отлично считает деньги… значит, он скорее всего никогда не обламывался, получая за свое злостно-бестолковое поведение и троллинг кучу неуправляемого информационного г… на, которое нельзя развивать. Клиент, как правило, становится адекватным, когда два или три раза обломается, а затем все таки начнет думать, разбираться в системе и читать собственное ТЗ, т.е. ХОЧЕТ СОЗДАТЬ ПРОЕКТ С РАЗРАБОТЧИКАМИ, а не хочет получать зарплату за троллинг :-) Некоторые команды поэтому работают только с Клиентами «после второго, третьего автоматизатора».

                                3) Верстка… согласен, бывает сложная верстка шаблона, дня может не хватить. Я имел в виду настройку верстки для шаблона сайта (хедер/футер) — не конкретных компонентов.

                                4) см. п. 2. Постараться решить юридически, приложением к договору. Бизнес-процессы в своей компании клиент должен либо знать либо заранее описать, пригласив отдельно бизнес-аналитика, бухгалтера и т.п. Уверен — этими задачами не должны заниматься разработчики :-)

                                а) Это в моей трудовой биографии есть. Большинство сложных проектов на платформе Битрикс с такой высокой скоростью и делались. Проекты, которые делаются год и более — как правило из-за бардака с требованиями на стороне клиента, который просто НЕ ГОТОВ к разработке.

                                b) Эффективное короткое ТЗ, итерационный подход, участие клиента (не смотреть п.2 :-)) в проектировании и разработке, эффективные техники программирования и оценки, эффективное использование инструментов аудита платформы Битрикс, быстрый результат.

                                с) Magento — высокий уровень вхождения, люди должны понимать ООП и стоить дорого, однако по функционалу не такой широкий как Битрикс, всего процентов 10-15% функционала имхо.

                                d) Философия Битрикс — модульность, управляемость системы клиентом, встроенные инструменты глубокого аудита и на подходе чеклист контроля качества внедрения — вот преимущества для проектных операций, точнее их неполный список.

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое