Ошибки в бизнес логике

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

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

Ошибки в науке логике

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

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

Цепочка по созданию ценности должна начинаться с взгляда на клиента. Дело в том, что на современном рынке продавцы играют жизненно важную роль в определении конкурентных отличий своей организации. Без сейлзов – глаз и ушей компании – такие важные функции, как выполнение заказа, оказание услуг, производство и НИОКР, лишены обратной связи.

Читайте также:  Как рассчитать целевую аудиторию для бизнеса

«Если мы построим, они придут», – было сказано в известном фильме с Кевином Костнером [15] , но такой подход плох для стратегии бизнеса, кроме тех случаев, когда компания комбинирует свои возможности таким образом, что де-факто создает монополию в отдельно взятом сегменте рынка. В действительности компания, ведущая дела подобным образом, попадает впросак, потому что сегодня конкуренты реагируют гораздо быстрее прежнего.

Источник: studopedia.su

Введение

Технические ошибки

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

Казнить нельзя помиловать: уязвимости из-за ошибок в бизнес-логике

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

Организационные и продуктовые задачи

Процесс создания проудкта, от постановки требований до исполнения в виде готового решения, состоит из двух частей:

  • Организационная
  • Техническая

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

Как работать с ошибками бизнес-логики через HTTP

Почти все разработчики так или иначе постоянно работают с api по http, клиентские разработчики работают с api backend своего сайта или приложения, а бэкендеры «дергают» бэкенды других сервисов, как внутренних, так и внешних. И мне кажется, одна из самых главных вещей в хорошем API это формат передачи ошибок. Ведь если это сделано плохо/неудобно, то разработчик, использующий это API, скорее всего не обработает ошибки, а клиенты будут пользоваться молчаливо ломающимся продуктом.

Читайте также:  Каким бизнесом заниматься в Дубае

За 7 лет я как поддерживал множество legacy API, так и разрабатывал c нуля. И я поработал, наверное, с большинством стратегий по возвращению ошибок, но каждая из них создавала дискомфорт в той или иной мере. В последнее время я нащупал оптимальный вариант, о котором и хочу рассказать, но с начала расскажу о двух наиболее популярных вариантах.

№1: HTTP статусы
Если почитать апологетов REST, то для кодов ошибок надо использовать HTTP статусы, а текст ошибки отдавать в теле или в специальном заголовке.

Http статусы предназначались для описания ошибок при передаче данных, а про логику вашего приложения никто не думал. Статусов явно не хватает для описания всего разнообразия ошибок в вашем проекте, да они и не были для этого предназначены. И тут начинается натягивание «совы на глобус»: все начинают спорить, какой статус ошибки дать в том или ином случае. Пример: Есть API для task manager.

Какой статус надо вернуть в случае, если пользователь хочет взять задачу, а ее уже взял в работу другой пользователь? Ссылка на http статусы. И таких проблемных примеров можно придумать много.

REST скорее концепция, чем формат общения из чего следует неоднозначность использования статусов. Разработчики используют статусы как им заблагорассудится. Например, некоторые API при отсутствии сущности возвращают 404 и текст ошибки, а некоторые 200 и пустое тело.

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

№2: На все 200
Есть другой подход, даже более старый, чем REST, а именно: на все ошибки связанные с бизнес-логикой возвращать 200, а уже в теле ответа есть информация об ошибке.

Читайте также:  Как отключить уведомления Сбербанк бизнес онлайн

В некоторых случаях, если есть библиотека десериализации данных, она может взять часть работы на себя. Писать SDK вокруг такого подхода проще нежели вокруг той или иной имплементации REST, ведь реализация зависит от того, как это видел автор. Кроме того, теперь никто не вызовет случайное срабатывание alert в мониторинге из-за того, что выбрал неудачный код ошибки.

Но неудобства тоже есть:

1. Избыточность полей при передаче данных, т.е. нужно всегда передавать 2 поля: для данных и для ошибки. Это усложняет чтение логов и написание документации.

2. При использовании средств отладки (Chrome DevTools) или других подобных инструментов вы не сможете быстро найти ошибочные запросы бизнес логики, придется обязательно заглянуть в тело ответа (ведь всегда 200)

3. Мониторинг теперь точно будет срабатывать только на ошибки транспорта, а не бизнес-логики, но для мониторинга логики надо будет дописывать парсинг тела сообщения.

В некоторых случаях данный подход вырождается в RPC, то есть по сути вообще отказываются от использования url и шлют все на один url методом POST, а в теле сообщения передают все параметры. Мне кажется это не правильным, ведь url это прекрасный именованный namespace, зачем от этого отказываться, не понятно?!

Кроме того, RPC создает проблемы:

1. Нельзя кэшировать по http GET запросы, так как замешали чтение и запись в один метод POST

2. Нельзя делать повторы для неудавшихся GET запросов (на backend) на реверс-прокси (например, nginx) по указанной выше причине

3. Имеются проблемы с документированием – swagger и ApiDoc не подходят, а удобных аналогов не нашлось.

Источник: itlaunch.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
Бизнес для женщин