- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Вы опять толкаете свою ситуацию на всех. Нет никого тонкого магазина. Есть только Толстый бекэнд который у вас уже есть, а у других нет.
Честно - проблемы тех, у кого толстый бэкэнд (не дай бог еще и написан на php и лежит в сети) меня ммм... не очень беспокоят. Они уже давно на пути к банкротству, думаю в этот кризис их смоет окончательно.
Я понимаю, что вы открыли для себя ООП, полиморфизм и MVC. К слову, я уже лет 15 назад пользовался лично сделанными костылями, реализующими те самые MVC, просто без умных книжек, да и не только я. Что бизнес-логика должна быть отделена от представления - это всё придумали черт знает когда. А аналог смарти у меня был самолично написан еще тогда, когда некоторые пользователи получали www-странички заказывая их запакованными по email :).
Так что в целом вы правы, описанное вами - это всё 10-летней давности всё.
Именно поэтому у меня всё отделено :).
Понимаете ? Нет никакого толстого бэкэнда, есть тонкий бэкэнд и тонкое представление его в интернете в виде "интернет-магазина". MVC в чистом виде в общем-то. Просто на более глобальном уровне. При этом интерфейс бэкэнд - магазин очень и очень узкий.
И чтобы там не делали с магазином, бэкэнду на это пофиг, склад не встанет из-за того,
что какой-нибудь дебил в админке добавит пару неиндексируемых полей в базу на 40гб.
И магазин, кстати тоже, не падает чтоб с бэкэндом не сделали.
И, собственно, этот бэкэнд есть как правило в любой компании.
У всех есть склад, бухгалтерия итп. И им абсолютно не нужны никакие ВАШИ фреймворки, потому как они хотят использовать СВОИ, бухгалтерию вам не написать хоть тресни, склад можно конечно, тикет-системы есть неплохие готовые и как правило требуют только доточки, итд итп.
Идея, что вы построите людям всю инфраструктуру для бизнеса хороша (для вас, ибо больше работы - больше бабла). Но только пока речь идет о салоне по продаже авто, где вся инфраструктура... с гулькин нос её. Если задача среднего или не дай бог крупного размера, то шансов на то, что вы справитесь нету. Интеграторы не зря берут в этом случае миллионы евро.
Невозможно автоматизировать бизнес-процессы на коленке. Для этого надо перекроить половину бизнеса. И для того, чтобы привинтить интернет к имеющемуся бизнесу на это никто не пойдет.
Да это и не нужно. Для создания интернет-магазина всё это не нужно.
Для создания магазина - необходимо, но интернет тут непричем абсолютно.
А кто сказал что бухгалтерия и склад должны быть в магазине?)
Ваш код который генерирует для вас странички (по 5 секунд Карл!) это и есть бекэнд. И нет ни у кого такого бекэнда. Это часть магазина, просто вы ее держите на другом сервере. Всё. Если оно является отдельным ПО, то ок, если оно встроено в вашу ERP, то... тоже ок. Но... это все равно часть магазина.
Если вы ее реализовали на 1С или на С++ или на бейсике - оно не перестает быть частью магазина. Но это скучно. Вы повторяетесь и мне лень вам это объяснять по 100500 раз.
Вы лучше расскажите как вам удалось 5 секунд на страницу выдать?
Откуда такой ужас. Не подумайте что это "переход на личности".
Реально интересно что же может генерироваться по 5 секунд.
Ну и если Вы такой опытный что используете MVC уже 15 лет как, да еще и ООП знаете, то можете сказать сколько в вашем типичном контроллере строк всего, и сколько методов. В общепринятых терминах (т.е. контроллер это класс контроллера у которого может быть 1 и более action которые в академическом MVC и являются контроллером).
Даже не представляю как вы могли так умудрится. Совсем не представляю.
А это не я. Вы возьмите из топ 10 коробочных движков и увидите сами что и как работает.
Нет, от них можно "отпилить ножовкой" лишнее, но я уже теперь выкинул всё целиком.
У меня без оптимизаций, без половины индексов, без кеширования, без жадной загрузки и т.п., на сложных страницах выходит в пределах 0.25с.
Считаете, что не загнетесь от 5 запросов в секунду ?
Сколько ботов надо, чтобы это было похоже на действия пользователей ?
Скажем бот раз в 30с будет что-нибудь выбирать.... 30*4... 120 штук всего ?
И это правда крутое достижение ?
А при чем тут урлы? Кешируют данные а не урлы, если пачка запросов будет одинаковая, то всё пойдет из кеша.
Да с чего бы она будет одинаковая. Не будет. Что-то вы сможете закешировать,
что-то нет. Да и размер кеша не бесконечен.
Однако, если большинство данных у вас не меняется, то непонятно зачем вы забираете
их из базы и кешируете :). Понимаете :) ? Чем лучше вам помогает кеш, тем менее
вам вообще БД нужна. Чем больше она реально нужна, тем меньше пользы от кеша.
Таких мест где не кешируется ответ, да еще и полсекунды на ответ - мало. За ними приглядывают.
Отключать на ходу что-ли будете ?
Процессоров много, одновременно все сайты не нагружают, так что пиковые 120 пользователей на сайте одновременно
Да хоть трижды-выделенный сервер. К вам когда-нибудь DDOS приходил ?
Хоть раз ? От школьника с 1000 проксями хотяб. И не такой, который просто льёт флуд.
С другой стороны выдавать атаку в сотню IP давящих на слабое место - дорогое удовольствие. Допустим вы выдаете один запрос в 10 секунд. Чаще - забаню буквально со второго или третьего запроса.
Вы баните пользователей запрашивающих страницы чаще чем раз в 10 секунд ?
Really ?!?!?!
Или вы на дебилов рассчитываете, которые будут от вас одно и тоже забирать.
К вам никогда не приходил я.бот ? С ним бывает иногда, когда он "бесится" и приходит
сразу штук 50 пауков забирая тысячи страниц в минуту. Очень знаете-ли позволяет
переосмыслить тонкие места...
Скажите, а когда я буду долбить ваш интернет-магазин, то ваша бухгалтерия и склад
будут насколько хорошо себя чувствовать ? Учитывая, что я долблю ваш "толстый бэкэнд"
прямо из интернета. Не пугает перспектива какого-нибудь 29 декабря, в пик продаж,
оказаться без склада потому, что пришел небольшой такой ДДОС. Причем без склада для
оффлайн продаж....
А это не я. Вы возьмите из топ 10 коробочных движков и увидите сами что и как работает.
Коробки, особенно бесплатные - кривые. С этим мы определились еще в прошлом году. Да, падают при каждом ДДоС. И что?
Считаете, что не загнетесь от 5 запросов в секунду ?
Сколько ботов надо, чтобы это было похоже на действия пользователей ?
Скажем бот раз в 30с будет что-нибудь выбирать.... 30*4... 120 штук всего ?
И это правда крутое достижение ?
0.25с это самые узкие места. Которые кешируются. С инвалидацией не по времени а по более разумным критериям. И по частям. Скажем сайдбар закешировали один раз и всем выдаем его. Топменю закешировали один раз, инвалидируем по легкому условию вроде самой свежей даты изменения страницы у которой стоит галочка "выводить в топменю".
Этот запрос "дешев", но в хайлоаде его тоже можно держать в мемкеше. Что у нас еще? Всякая статика типа меню в футере и прочих текстов? Тоже в кеше. Что еще ? Хлебные крошки? Сео-текст, тайтл, мета-дескрипшн? Хлебные крошки делаются одним простым запросом еще на уровне разбора URL, и кешировать их нет смысла. Мета-данные страницы тоже достается запросом. Запрос списка товаров из категории с соответствующими количествами на страницу, сортировками и т.п.? Ну один легкий запрос. Рендеринг превью самих товаров? Так закешировано. Инвалидируем по изменению связанных данных. Сам товар, его атрибуты и т.п. Если зависимости сложные и их много - редкоменяемые связи могут связанным данным поменять некий параметр последнего изменения кеша, чем инвалидировать всех кто связан.
Итого в реальности выйдет каждая десятая страница доходит до пхп (остальное кешируется еще нгинксом), из них 90% страниц или закешированы более чем на 90%, или ладно уж, генерятся за 50-200мс. У реального проекта может быть несколько узких мест, но сходу приходит в голову ТОЛЬКО сложный поиск. Его да, частенько надо защищать. Но под атакой его можно и деградировать или закрыть капчей. У вас же его в принципе быть не может по определению.
Да с чего бы она будет одинаковая. Не будет. Что-то вы сможете закешировать,
что-то нет. Да и размер кеша не бесконечен.
Однако, если большинство данных у вас не меняется, то непонятно зачем вы забираете
их из базы и кешируете . Понимаете ? Чем лучше вам помогает кеш, тем менее
вам вообще БД нужна. Чем больше она реально нужна, тем меньше пользы от кеша.
У меня где нужно используется кеш, а где нужно - база. Даже если база используется в 0.1% случаев, то она у меня есть. У вас же есть только кеш. Любое изменение у меня это разовый пересчет страницы когда понадобится, у вас же - жди пока будет пересчет.
Отключать на ходу что-ли будете ?
fail2ban и другие инструменты работают не хуже рук.
Да хоть трижды-выделенный сервер. К вам когда-нибудь DDOS приходил ?
Хоть раз ? От школьника с 1000 проксями хотяб.
Лет 10 назад было с "1000 проксей". Положили да.
Недавно китайцы парсили в 100 потоков. Там была дюжина AS всего. Ничего не делал. Не успел. Минут за 10 сервак их всех побанил и все вернулось.
Еще было пару раз более интеллектуально, по узким местам и все такое. Но сам не разгребал это было на более-менее толстых проектах где были выделенные админы.
Ну и за клудфларе прятаться приходилось пару раз.
И не такой, который просто льёт флуд.
Флуд это задача хостера или магистрала или своего админа если сэкономили на хостинге.
Вы баните пользователей запрашивающих страницы чаще чем раз в 10 секунд ?
Really ?!?!?!
Не всякие страницы а только те которые слабые места.
Вы этим форумом пользоваться пробовали?) Поиск даже для авторизованных - именно так и закрыт, и ничего.
Или вы на дебилов рассчитываете, которые будут от вас одно и тоже забирать.
А вы? У вас то как раз "только то что в кеше, остальное - не судьба". Сделайте мне поиск по произвольному атрибуту по 100к товаров без базы. Посмотрю на вас)
К вам никогда не приходил я.бот ? С ним бывает иногда, когда он "бесится" и приходит
сразу штук 50 пауков забирая тысячи страниц в минуту. Очень знаете-ли позволяет
переосмыслить тонкие места...
50 одновременных заходов паука это мелочи. Было как-то за сотню. Лет семь назад. Положил сервер да. Ну тогда там косяк мой был, он таки миллионы страниц "находил" у меня. Очень грубо говоря я ему дал кушать вывод "анонимайзера" (не совсем но похоже).
Но мы ведь не обсуждаем косяки роботс.тхт и экзотические сложные проекты. Crawl-delay никто не отменял. Индексировать служебные страницы и страницы поиска никому не нужно и все такое. В общем - мимо кассы.
Скажите, а когда я буду долбить ваш интернет-магазин, то ваша бухгалтерия и склад
будут насколько хорошо себя чувствовать ? Учитывая, что я долблю ваш "толстый бэкэнд"
прямо из интернета. Не пугает перспектива какого-нибудь 29 декабря, в пик продаж,
оказаться без склада потому, что пришел небольшой такой ДДОС. Причем без склада для
оффлайн продаж....
Не пугает, поскольку вы в очередной раз боретесь с выдуманными вами ветряными мельницами. Склад отдельно, бухгалтерия отдельно, магазин отдельно. У вас еще и витрина отдельно от основного магазина. Имеет право на жизнь для части простых магазинов, но в среднем - не катит.
Коробки, особенно бесплатные - кривые. С этим мы определились еще в прошлом году. Да, падают при каждом ДДоС. И что?
Да а гдеж других кроме коробочных взять.
Самопис от дяди васи еще хуже... самопис под заказ = чумовые убытки.
Особенно если писать толстый бэкэнд, вместо тонкого фронтэнда.
У меня где нужно используется кеш, а где нужно - база. Даже если база используется в 0.1% случаев, то она у меня есть. У вас же есть только кеш. Любое изменение у меня это разовый пересчет страницы когда понадобится, у вас же - жди пока будет пересчет.
Ммм... всё никак не запущу нагрузочное тестирование именно генерации... подозреваю ждать надо будет 1-2с на каждые 1000 страниц. Да, вы правильно заметили - я сам своим "кешем" управляю. Тогда, когда надо. А когда не надо, тогда не управляю.
fail2ban и другие инструменты работают не хуже рук.
А толку-то... сервис при этом работать перестает.
Вы этим форумом пользоваться пробовали?) Поиск даже для авторизованных - именно так и закрыт, и ничего.
У вас закрыты части магазина для пользователей капчей или таймаутом :) ?
И эээ... получается продавать что-то ?
А вы? У вас то как раз "только то что в кеше, остальное - не судьба". Сделайте мне поиск по произвольному атрибуту по 100к товаров без базы. Посмотрю на вас)
А у меня всё в кеше.
К счастью, в моей реальности не требуется искать по 100к товарам.
Было бы нужно, скорее всего забрал бы всё в память и отдавал неким демоном.
Хотя поиск - это одна из очень немногих задач, где с БД можно получить хоть какой-то выхлоп.
И то, если очень аккуратно себя вести.
Crawl-delay никто не отменял.
Угу... я тоже так думал, ровно до момента когда яндекс пришел.
Причем ни до, ни после проблем с Crawl-delay не было, боты из сетей яндекса итп.
Не пугает, поскольку вы в очередной раз боретесь с выдуманными вами ветряными мельницами. Склад отдельно, бухгалтерия отдельно, магазин отдельно. У вас еще и витрина отдельно от основного магазина. Имеет право на жизнь для части простых магазинов, но в среднем - не катит.
Тогда не очень понятно зачем вы "слили" кучу времени на свой "толстый бэкэнд", если ничего
кроме обслуживания веб-запросов пользователей он не делает. Я-то грешным делом думал,
что вы ратуете за единую ИТ-инфраструктуру в рамках которой вы не только интернет-магазин,
но и все остальные задачи пусть убого, но решаете (как это пытаются делать коробочные
варианты).
Да в целом норм.
Мы так же идем. Немного не в таких глобальных масштабах.
А связка html5 странички + битрикс24.
Всю менеджерскую работу, историю, отсылка писем и пр. аналитика делается в битрикс24, скрипты продаж, звонки, письма, распределения.
Работает на ура, катаем 2ой год уже пошел. Объемы потихоньку переваливают основной сайт.
Так что если ИМ не на 10000 товаров, вы не торгуете болтами. То вполне. У нас есть свой обкатаный кейс. Сейчас заворачиваем подобным образом 1го клиента. Опыт нам понравился очень.
У вас закрыты части магазина для пользователей капчей или таймаутом ?
И эээ... получается продавать что-то ?
Те части которых у вас нет вообще? Да, предусмотрена возможность включать капчу и таймаут в моменты пиковой нагрузки. Доли процентов клиентов конечно могут обидится, но это лучше чем вообще деградировать до безбазового кеша.
Тогда не очень понятно зачем вы "слили" кучу времени на свой "толстый бэкэнд", если ничего кроме обслуживания веб-запросов пользователей он не делает. Я-то грешным делом думал, что вы ратуете за единую ИТ-инфраструктуру в рамках которой вы не только интернет-магазин, но и все остальные задачи пусть убого, но решаете (как это пытаются делать коробочные варианты).
Единая инфраструктура это что?) Импорт/экспорт с 1С это уже единая инфраструктура. Я же говорю про единую архитектуру. Тут проще. Никто не требует чтобы ваш бекэнд жил на том же сервере что и шоп. Но когда все части системы написаны на одном фреймворке и т.п. - это упрощает поддержку.
И кстати слегка оффтоп конечно, но вы со своей бухгалтерией и складом тоже сильно ограничиваете нишу. У нас сейчас американский клиент - розничная сеть работающая в большинстве штатов. Т.е. не маленькая. Видели бы вы их склад и бухгалтерию - ад кромешный. Но им хватает. Простота бухучета и бюрократия работающая на бизнес а не против - всё сглаживает. А то что всё криво так это наша проблема а не клиента. И то как интегрировать кучу разных сервисов (включая бухгалтерские программы и т.п.) без использования "а тут у нас мальчик в экселе быстренько переконвертирует" - это тоже наши проблемы а не его.
Для всего реально хватает вполне простых решений, и для меньшего размера магазина, не сетевого вполне хватило бы для всего - простенького склада и пары стат.отчетов в боксовом шопе.
Единая инфраструктура это что?) Импорт/экспорт с 1С это уже единая инфраструктура. Я же говорю про единую архитектуру.
У вас единая с 1С архитектура ?
Тут проще. Никто не требует чтобы ваш бекэнд жил на том же сервере что и шоп. Но когда все части системы написаны на одном фреймворке и т.п. - это упрощает поддержку.
У вас ешоп написан на 1с ?
О какой единой архитектуре можно говорить, когда действующий бизнес как правило
УЖЕ имеет свою бухгалтерию и свой склад. И переписывать это всё ради интернет-магазина
немножко безумная идея. В любом случае "пристыковывать сбоку".
И кстати слегка оффтоп конечно, но вы со своей бухгалтерией и складом тоже сильно ограничиваете нишу. У нас сейчас американский клиент - розничная сеть работающая в большинстве штатов. Т.е. не маленькая. Видели бы вы их склад и бухгалтерию - ад кромешный. Но им хватает. Простота бухучета и бюрократия работающая на бизнес а не против - всё сглаживает. А то что всё криво так это наша проблема а не клиента. И то как интегрировать кучу разных сервисов (включая бухгалтерские программы и т.п.) без использования "а тут у нас мальчик в экселе быстренько переконвертирует" - это тоже наши проблемы а не его.
Для всего реально хватает вполне простых решений, и для меньшего размера магазина, не сетевого вполне хватило бы для всего - простенького склада и пары стат.отчетов в боксовом шопе.
Я чем дальше, тем меньше понимаю, что у вас делает интернет-магазин, если бухгалтерию
и склад ведет что-то еще.
Для чего кроме выборок по параметрам вы используете базу данных именно в интернет-магазине ?
Что в ней вообще хранится и зачем ?
Это ведь отдельный сервер у вас с отдельной БД ?
тут у нас мальчик в экселе быстренько переконвертирует
Вы эээ... в интернет-магазин через эксель что-ли данные вставляете ?
Зачем ? Я когда пользовался коробкой генерировал просто SQL-скрипт, который вставлял в базу
всё, что нужно, если этого немного то еще и в одну транзакцию.
Ума не приложу, зачем может мальчик с экселем понадобиться.
О какой единой архитектуре можно говорить, когда действующий бизнес как правило
УЖЕ имеет свою бухгалтерию и свой склад.
Далеко не всегда. Мой опыт работы кредитным экспертом в банке говорит что далеко не всегда. Больше половины клиентов получавших у нас кредиты от 20к$ до 100к$ не имели учета даже в экселе, а только в тетрадочке.
Вы эээ... в интернет-магазин через эксель что-ли данные вставляете ?
Зачем ? Я когда пользовался коробкой генерировал просто SQL-скрипт, который вставлял в базу
всё, что нужно, если этого немного то еще и в одну транзакцию.
Ума не приложу, зачем может мальчик с экселем понадобиться.
Это был другой проект. Не магазин. Там была специфичная статистика для прогнозирования закупок. Боксовые решения не учитывали их специфику.
Для чего кроме выборок по параметрам вы используете базу данных именно в интернет-магазине ?
Ой, всё.
Неоднократно всё было пережевано. Мне лень, я сливаюсь.
Собственно я знаю, как оно сейчас обстоит дело.
В деталях разбираюсь во внутренней кухне итп.
Однако. Если предположить, что "движок" магазина направлен на продажи в интернете,
а не на ведение склада и отчетности, переписку, печать бланков итп (это всё делает локальная
система отделенная от него), то зачем в нём необходим сервер баз данных :) ?
Собственно вопрос навеян попыткой использовать т.н. "современные флагманские движки" :),
и отказом от них в сторону целиком статического проекта. Пока обкатываю, но по ощущениям,
лучше бы я сразу так сделал... Возможно не вижу чего-то реально полезного, для чего
используют "динамическую генерацию страниц", "базы данных с 100500 таблицами" и прочее ?
Нет, больше я не храню заказы - они высылаются по email и обрабатываются локальной системой.
(на всякий случай копия хранится в виде файлов в дирректории с заказами)
Нет, я больше не храню пользователей - это ни им, ни мне не нужно, пользователь вводит своё
имя, email и телефон. Да, он мог бы вводить email и пароль, но ему это сложнее,
практика показывает, что проще не помнить пароля... часто его запрашивают.
Будет очень надо - смогу хранить в файлах. Индексация пользователям не нужна.
Нет, я больше не храню остатки по складу, они в другом приложении ведутся.
Нет, я больше не буду показывать "нет товара", я буду предлагать таким клиентам другой товар,
или продавать их конкурентам.
Нет, мой магазин теперь не переписывается с пользователями - это дело рук менеджера,
либо опять-таки локальной системы.
Нет, теперь никто не заводит товар руками(и не косячит), он выгружается автоматом из той-самой локальной системы.
Нет, корзин я тоже больше не храню, для этого есть local-storage.
Предлагаемый вами подход вполне применим для маленького интернет-магазина с одной продажей в неделю например. Типичным примером такого "магазина" является лэндинг-страница для продажи одной услуги типа строительства домов под ключ и т.п. Для этого можно использовать и безмускульные платформы вроде SimpleCMS.