Техническая поддержка
Команда Web-разработки V-Sage не раз сталкивалась с подобной проблемой у своих заказчиков.
Рассмотрим пример среднестатистического интернет-магазина, который продает почтовые марки по всему миру. После долгих месяцев работы, счастливый клиент получает красивый сайт с закругленными кнопками и кучей слайдеров на главной странице. Идут заказы и работа кипит. После отправки первых заказов выясняется, что у некоторых товаров описание не соответствует заявленному производителем. И встает потребность поменять то самое описание, но Джим(так зовут владельца магазина) как-то не задумывался о том, что контент на сайте надо будет изменять/добавлять/удалять. Вначале проекта у Джима были проблемы поважнее этого. Ему надо было договариваться с заводами, отделениями почты, открывать компанию, общаться с банком и, конечно же, командовать скруглением кнопок.
Проблема
Отсутствие руководства пользователя и технической поддержки со стороны разработчика.
Решение
К красивому сайту в интернете должно прилагаться руководство пользователя. Желательно, чтобы это был не просто текстовый файл на пару строк, а полноценный документ, содержащий скриншоты и видеоинструкции. Тут можно поучиться у автосалонов с их красивыми брошюрами и понятными инструкциями.
Если клиент что-то не поймет в руководстве - он судорожно начинает набирать всех, кого знает в компании разработчике. Вряд ли менеджер или директор смогут сходу рассказать, что делать. Они найдут ответственного за это сотрудника и переключат задачу на него.
Если сообщить все необходимые данные сразу - будет спокойнее и вам, и вашим клиентам.
Набравшись знаний в области контент-модерирования магазина и пообщавшись с первыми клиентами, Джим понял, что в фильтре по каталогу продукции не хватает одного важного параметра. В руководстве по эксплуатации ничего не сказано о том, как добавлять новые поля в фильтр. Затем идет звонок в тех. поддержку:
- Алло, это студия X ?
- Да, чем можем служить?
- На мой сайт необходимо добавить одно поле в фильтре по каталогу, но в руководстве ничего не сказано о том, как это сделать.
- ...
- Дело в том, что добавление полей в фильтр не предусмотрено через панель администрирования. Вам необходимо заключить договор на доработку сайта.
- Сколько это займет по времени
- ….
Проблема
Необходимость доработок сайта после сдачи проекта.
Решение
Нужно иметь проработанный договор сопровождения, чтобы клиент не бегал к вам подписывать новый документ по каждой мелочи. Помимо юридической части - у вас должны быть специалисты, готовые взяться за работу тут же. Конечно такого никогда не будет. Но всё-таки, если вы клиенту скажете, что мелкая задача будет выполнена спустя неделю, это будет как минимум некрасиво.
После первых трудностей обладатель сего магазина несколько месяцев занимается только тем, что отправляет марки и следит за тем как растет банковский счет, но приходит момент, когда хочется большего, чем есть сейчас, и в бой идет отряд маркетологов, которые всеми способами завлекают клиентов на сайт. И происходит что-то странное: продажи начинают падать, сайт начинает тормозить или вообще показывать “белый лист”. Джим в панике начинает звонить разработчикам своего сайта:
- Алло, это студия X ?
- Да, чем можем служить?
- Ваш сайт сломался…
- сейчас проверим и наберем...
- …
Спустя пару часов технический специалист X перезванивает:
- Добрый день, Джим, мы осмотрели ваш сайт и пришли к решению, что все работает. Программных ошибок нет.
- Как нет?! В обед я не мог попасть на сайт.
- Это не ошибка, на ваш сайт заходит слишком много посетителей и сервер не успевает их всех обслужить.
- …
Джим столкнулся с тем, что его сайт не был рассчитан на такое количество посетителей и просто отказался работать. Как правило, разработчики сайта предлагают перейти на более мощный сервер, но это скорее временное решение, нежели серебренная пуля, плюс ко всему, хороший сервер стоит хороших денег.
Решение
Подключить сервис DNS кэширования CloudFlare. Большинство его основных функций бесплатны и решают проблемы нагрузки на сервер. Принцип его работы очень прост: доменное имя привязывается к его серверам, таким образом у нашего сайта появляется невидимый щит, который кеширует у себя статические файлы вашего сайта (картинки, стили и пр.) тем самым снижая число запросов к вашему серверу.
Джим сделал все, что требовалось для того, чтобы снять нависшую над его магазином угрозу. А за то время, которое сайт не работал, он уже успел потерять как новых клиентов, так и их лояльность, они просто ушли на следующий сайт, который предлагает почти то же самое. А тем временем поток работы идет своим чередом и Джим, почувствовав себя в безопасности, решает увеличить ассортимент товаров в несколько раз. Он подключил к работе свою жену и соседского парнишку, который хочет заработать карманные деньги. Дружной компанией за несколько недель они запихнули в магазин аж xxxx новых товаров. И… все начало жутко тормозить! Страницы стали открываться десятками секунд. А клиенты начали убывать сотнями, и это неудивительно - ведь мы живем в век быстрой информации.
Каждые 100 миллисекунд задержки обходится в 1% от суммы продаж. Amazon Inc.
Проблему долгой загрузки можно, конечно же, решить мощностью сервера, но так можно прийти к тому, что для вашего небольшого проекта потребуется небольшой ЦОД(Центр обработки данных), что будет нерентабельно для Джима.
Решение
Оптимизация типовых сайтов состоит из следующих этапов:
- Оптимизация веб сервера
- Оптимизация кода
- Настройка кеширования
- Оптимизация базы данных
- Подключение HTTP кешера Varnish (https://www.varnish-software.com)
По каждому из этих пунктов можно смело писать книгу, как это правильно делать и что лучше выбрать. Самым оптимальным решением в случае Джима будет распределение базы данных на несколько серверов (Репликация данных) и разнесение его веб-сайта на разные Docker контейнеры.
После всей оптимизации сайт Джима, как правило, начинает работать в разы быстрее, плюс появляется приятный бонус - требования к серверу уменьшаются и ежемесячные расходы снижаются.
Казалось бы, всё, что ещё может случиться с сайтом, уже случилось: он выдерживает кучу посетителей, на нём предложено огромное количество товаров и если клиентов станет еще больше, то эта проблема легко решается покупкой сервера и масштабированием проекта. Но не всё так просто, ведь когда проект становится крупным, возрастает интерес и у злоумышленников. В случае с программными продуктами - это хакеры. Их интерес может заключаться в краже платежных данных клиентов или в нарушении работоспособности сайта с целью требования денег за восстановление. Может быть и другой интерес, но в любом из вариантов это вред для бизнеса.
За безопасность нодо платить, за ее отсутствие - расплачиваются. Уинстон Черчилль
По статистике, взломы в большем числе случаев происходят из-за того, что не обновлялся софт т.к. сами разработчики стараются своевременно исправлять все уязвимости и выпускают обновления. Для того, чтобы предотвратить вероятность взлома, достаточно просто своевременно обновлять все компоненты системы. Это можно сделать путём ежедневного мониторинга доступных обновлений, но, как правило, все забивают на это и в итоге сайт оказывается под угрозой. При обновлении компонентов всегда есть риск что-то сломать. Поэтому после любого обновления надо проводить тестирование всего сайта.
Решение
Для мониторинга обновлений мы используем собственный софт, который подключается к сайту и мониторит обновления. При их наличии он ставит срочную задачу на обновление.
Проблему информационной безопасности нельзя решить одним лишь своевременным обновлением. Требуется защита инфраструктуры, на которой размещается сайт. Ее необходимо проектировать с учетом безопасности и своевременно обновлять. Помимо злоумышленников против сайта работает и время. Часто бывает, что из-за отсутствия мониторинга сервера он заполняется информацией и свободного места не хватает для банальной работы веб-сервера. Это происходит из-за записи логов, растущей базы и медиафайлов. Очистить корзину как в настольном ПК не получится, нужно будет срочно решать, чем пожертвовать ради работы сайта. Хорошо, если ваш проект размещен в облаке и можно просто увеличить объем диска, но и тут не все так просто.
Решение
Для мониторинга серверов мы используем инструмент Zabbix (http://www.zabbix.com). Он позволяет мониторить практически все необходимые показатели: объем свободного пространства, нагрузку на сервер и пр.
Чтобы не пропустить критические обновления, мы настраиваем сервер на отправку уведомлений администраторам.
Также необходимо мониторить логи сервера, в них кроется демон, т.к. они первые предупредят о каких-либо неполадках. Для эффективного мониторинга мы используем связку инструментов под названием ELK (https://www.elastic.co/products/elasticsearch, https://www.elastic.co/products/logstash, https://www.elastic.co/products/kibana).
Джим получил колоссальный опыт в построении интернет-проектов. С момента запуска прошел не один год, а его маленький магазинчик за углом превратился в онлайн-гипермаркет с тысячами клиентов. Знай все нюансы возникшие по ходу развития, он мог бы сэкономить время и свой кеш.
Оригинал статьи: https://v-sage.com/blog/tehniceskaa-podderzka