Перейти к содержимому

Нарисуйте системный ландшафт

Также доступно на 28 языках

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

A hand-drawn map of a region in ink and watercolor, half finished: towns, roads, a river and a rail line on one side, faint pencil lines on bare paper on the other.
Изображение создано с помощью ИИ

Модуль 4 из 6 главы Понимание корпоративных данных, глава 4 курса Data Architect. Каждый модуль самостоятелен. Назад: Системы вокруг Salesforce · Далее: Стратегия org — это решение на уровне ландшафта

Вопрос, на который отвечает этот модуль: как нарисовать ландшафт, который показывает, куда идут данные?

Дайте мне новый сценарий и чистую доску, и одно из первых, что я нарисую, — системный ландшафт. Не красивый, не со всеми API, пока без модели данных. Я хочу увидеть предприятие: кто пользователи, какие системы задействованы, где находится Salesforce, что его окружает, откуда приходят данные и куда уходят. А потом я хочу пройти по стрелкам. Хороший ландшафт — это не картинка с прямоугольниками. Это способ выявить архитектурные решения.

Я заставляю кандидатов в CTA это отрабатывать. Прочитайте сценарий и начинайте рисовать. Не ждите, пока решите все в голове; рисунок помогает решать. Поэтому домашнее задание после первого дня — начать ландшафт, прежде чем браться за модель данных. Нарисуете сначала модель данных — и вы уже предположили, что относится к Salesforce. Нарисуете сначала ландшафт — и увидите системы, которые должны повлиять на это решение.

Начните с верхнего уровня, затем углубляйтесь: сначала все предприятие, потом детали там, где они важны.

Раскладка ландшафта Steve Раскладка системного ландшафта Steve, пока без стрелок. Слева сверху вниз: внутренние пользователи, пользователи партнеров и клиенты. В центре Salesforce синим с облаком, org, вокруг которого мы проектируем, а под ним, касаясь его, Partner Community и Customer Community. Вверху: публичный сайт в левом верхнем углу, поставщики удостоверений сотрудников и партнеров над Salesforce и приложение AppExchange для электронной подписи, сдвинутое вправо. Справа от Salesforce слой интеграции, под ним в той же колонке Data 360 (рядом с ядром: управляется в ядре, размещен вне ядра; пользователи к нему никогда не подключаются, а он достает до многих бэкенд-систем), затем внутренние системы: ERP, финансы, управление заказами и хранилище данных. Внизу: каналы клиентов, email, веб-формы, телефон и сообщения. Справа внизу данные внутрь и наружу: архив, загрузки данных и внешние данные, которые используются по ссылке, а не копируются. Шесть пошаговых кадров собирают его: пустые зоны, затем люди, Salesforce и его сообщества, идентификация вверху, интеграция и внутренние системы и, наконец, каналы и данные. ВВЕРХУ: ИДЕНТИФИКАЦИЯ, APPEXCHANGE, ВЕБ ЛЮДИ СПРАВА: ВНУТРЕННИЕ СИСТЕМЫ ВНИЗУ: КАНАЛЫ КЛИЕНТОВ СПРАВА ВНИЗУ: ДАННЫЕ ВНУТРЬ И НАРУЖУ © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Шаг 1 из 6: чистый холст. Только зоны.

Системный ландшафт можно рисовать по-разному. Это просто мой способ, который я оттачивал много лет, и я делюсь им, чтобы вы увидели, как быстро собрать ландшафт. Я использую его для каждого ландшафта Salesforce, и он читается как предложение: люди слева приходят к Salesforce в середине, которому доверяют через системы над ним, который обслуживает через каналы под ним и который связан с бэк-офисом справа.

Люди слева, сверху вниз: внутренние пользователи, партнеры, клиенты. Пока не все персоны; достаточно, чтобы ответить на вопрос кто пытается добраться до этой архитектуры? Каждая группа указывает, где она входит: внутренние пользователи — в Salesforce, партнеры — в партнерское сообщество, клиенты — в клиентское сообщество. Системы не существуют сами по себе. Кто-то или что-то пытается ими пользоваться.

Раскладка ландшафта Steve Раскладка системного ландшафта Steve, пока без стрелок. Слева сверху вниз: внутренние пользователи, пользователи партнеров и клиенты. В центре Salesforce синим с облаком, org, вокруг которого мы проектируем, а под ним, касаясь его, Partner Community и Customer Community. Вверху: публичный сайт в левом верхнем углу, поставщики удостоверений сотрудников и партнеров над Salesforce и приложение AppExchange для электронной подписи, сдвинутое вправо. Справа от Salesforce слой интеграции, под ним в той же колонке Data 360 (рядом с ядром: управляется в ядре, размещен вне ядра; пользователи к нему никогда не подключаются, а он достает до многих бэкенд-систем), затем внутренние системы: ERP, финансы, управление заказами и хранилище данных. Внизу: каналы клиентов, email, веб-формы, телефон и сообщения. Справа внизу данные внутрь и наружу: архив, загрузки данных и внешние данные, которые используются по ссылке, а не копируются. Шесть пошаговых кадров собирают его: пустые зоны, затем люди, Salesforce и его сообщества, идентификация вверху, интеграция и внутренние системы и, наконец, каналы и данные. ВВЕРХУ: ИДЕНТИФИКАЦИЯ, APPEXCHANGE, ВЕБ ЛЮДИ СПРАВА: ВНУТРЕННИЕ СИСТЕМЫ ВНИЗУ: КАНАЛЫ КЛИЕНТОВ СПРАВА ВНИЗУ: ДАННЫЕ ВНУТРЬ И НАРУЖУ Внутренние пользователи продажи, сервис, операции Пользователи партнеров Клиенты люди © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Шаг 2 из 6: кто пытается добраться до этой архитектуры?

Salesforce в середине. Один простой прямоугольник. Не потому, что Salesforce — центр предприятия (мы только что потратили три модуля, чтобы сказать, что это не так), а потому, что это система, вокруг которой я проектирую. Это якорь.

Сообщества прямо под ним, вплотную. Партнерское и клиентское сообщества — отдельные точки входа, поэтому у них свои прямоугольники. Но они прилегают к Salesforce, потому что для доступа к ним ничего не нужно интегрировать: они работают в том же org.

Раскладка ландшафта Steve Раскладка системного ландшафта Steve, пока без стрелок. Слева сверху вниз: внутренние пользователи, пользователи партнеров и клиенты. В центре Salesforce синим с облаком, org, вокруг которого мы проектируем, а под ним, касаясь его, Partner Community и Customer Community. Вверху: публичный сайт в левом верхнем углу, поставщики удостоверений сотрудников и партнеров над Salesforce и приложение AppExchange для электронной подписи, сдвинутое вправо. Справа от Salesforce слой интеграции, под ним в той же колонке Data 360 (рядом с ядром: управляется в ядре, размещен вне ядра; пользователи к нему никогда не подключаются, а он достает до многих бэкенд-систем), затем внутренние системы: ERP, финансы, управление заказами и хранилище данных. Внизу: каналы клиентов, email, веб-формы, телефон и сообщения. Справа внизу данные внутрь и наружу: архив, загрузки данных и внешние данные, которые используются по ссылке, а не копируются. Шесть пошаговых кадров собирают его: пустые зоны, затем люди, Salesforce и его сообщества, идентификация вверху, интеграция и внутренние системы и, наконец, каналы и данные. ВВЕРХУ: ИДЕНТИФИКАЦИЯ, APPEXCHANGE, ВЕБ ЛЮДИ СПРАВА: ВНУТРЕННИЕ СИСТЕМЫ ВНИЗУ: КАНАЛЫ КЛИЕНТОВ СПРАВА ВНИЗУ: ДАННЫЕ ВНУТРЬ И НАРУЖУ Внутренние пользователи продажи, сервис, операции Пользователи партнеров Клиенты Partner Community Customer Community Salesforce org, вокруг которого мы проектируем Salesforce сообщество люди © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Шаг 3 из 6: Salesforce в середине, сообщества прямо под ним.

Удостоверения сверху. Наверху находятся поставщики удостоверений, те самые, о которых забывают разработчики: один для внутренних пользователей, может быть, еще один для партнеров. Туда же идут пакеты AppExchange, сдвинутые вправо, потому что это возможности, принесенные в org, а не системы бэк-офиса, которые обмениваются с ним данными. Публичные сайты располагаются слева вверху.

Раскладка ландшафта Steve Раскладка системного ландшафта Steve, пока без стрелок. Слева сверху вниз: внутренние пользователи, пользователи партнеров и клиенты. В центре Salesforce синим с облаком, org, вокруг которого мы проектируем, а под ним, касаясь его, Partner Community и Customer Community. Вверху: публичный сайт в левом верхнем углу, поставщики удостоверений сотрудников и партнеров над Salesforce и приложение AppExchange для электронной подписи, сдвинутое вправо. Справа от Salesforce слой интеграции, под ним в той же колонке Data 360 (рядом с ядром: управляется в ядре, размещен вне ядра; пользователи к нему никогда не подключаются, а он достает до многих бэкенд-систем), затем внутренние системы: ERP, финансы, управление заказами и хранилище данных. Внизу: каналы клиентов, email, веб-формы, телефон и сообщения. Справа внизу данные внутрь и наружу: архив, загрузки данных и внешние данные, которые используются по ссылке, а не копируются. Шесть пошаговых кадров собирают его: пустые зоны, затем люди, Salesforce и его сообщества, идентификация вверху, интеграция и внутренние системы и, наконец, каналы и данные. ВВЕРХУ: ИДЕНТИФИКАЦИЯ, APPEXCHANGE, ВЕБ ЛЮДИ СПРАВА: ВНУТРЕННИЕ СИСТЕМЫ ВНИЗУ: КАНАЛЫ КЛИЕНТОВ СПРАВА ВНИЗУ: ДАННЫЕ ВНУТРЬ И НАРУЖУ Внутренние пользователи продажи, сервис, операции Пользователи партнеров Клиенты Публичный сайт IdP сотрудников единый вход IdP партнеров единый вход Приложение AppExchange электронная подпись Partner Community Customer Community Salesforce org, вокруг которого мы проектируем Salesforce сообщество люди идентификация, приложения, веб © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Шаг 4 из 6: удостоверения сверху — прямоугольник, о котором забывают разработчики.

Интеграция, затем бэк-офис — справа. Слой интеграции, ESB или iPaaS (или MuleSoft, если он назван), — это высокая полоса сразу справа от Salesforce. За ней стоят внутренние системы: ERP, финансы, управление заказами, устаревшие системы, хранилище данных. Теперь страница читается слева направо: люди, Salesforce, интеграция, бэк-офис.

Раскладка ландшафта Steve Раскладка системного ландшафта Steve, пока без стрелок. Слева сверху вниз: внутренние пользователи, пользователи партнеров и клиенты. В центре Salesforce синим с облаком, org, вокруг которого мы проектируем, а под ним, касаясь его, Partner Community и Customer Community. Вверху: публичный сайт в левом верхнем углу, поставщики удостоверений сотрудников и партнеров над Salesforce и приложение AppExchange для электронной подписи, сдвинутое вправо. Справа от Salesforce слой интеграции, под ним в той же колонке Data 360 (рядом с ядром: управляется в ядре, размещен вне ядра; пользователи к нему никогда не подключаются, а он достает до многих бэкенд-систем), затем внутренние системы: ERP, финансы, управление заказами и хранилище данных. Внизу: каналы клиентов, email, веб-формы, телефон и сообщения. Справа внизу данные внутрь и наружу: архив, загрузки данных и внешние данные, которые используются по ссылке, а не копируются. Шесть пошаговых кадров собирают его: пустые зоны, затем люди, Salesforce и его сообщества, идентификация вверху, интеграция и внутренние системы и, наконец, каналы и данные. ВВЕРХУ: ИДЕНТИФИКАЦИЯ, APPEXCHANGE, ВЕБ ЛЮДИ СПРАВА: ВНУТРЕННИЕ СИСТЕМЫ ВНИЗУ: КАНАЛЫ КЛИЕНТОВ СПРАВА ВНИЗУ: ДАННЫЕ ВНУТРЬ И НАРУЖУ Внутренние пользователи продажи, сервис, операции Пользователи партнеров Клиенты Публичный сайт IdP сотрудников единый вход IdP партнеров единый вход Приложение AppExchange электронная подпись Partner Community Customer Community СЛОЙ ИНТЕГРАЦИИ (ESB) ERP заказы, счета Финансы платежи Управление заказами Хранилище данных аналитика Salesforce org, вокруг которого мы проектируем Salesforce сообщество люди идентификация, приложения, веб внутренняя система слой интеграции © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Шаг 5 из 6: интеграция, затем бэк-офис.

Каналы снизу. Все, у чего есть прямая линия к клиентам: email-to-case, web-to-lead, телефон, мессенджеры.

Данные внутрь и наружу — справа внизу. Внешние источники данных, архивы, загрузки данных.

Data 360 справа, под слоем интеграции. Пользователи к нему никогда не подключаются, а его тенант подключается ко множеству серверных систем, поэтому он стоит рядом с «трубопроводом», где эти линии остаются короткими: рядом с внутренними системами, хранилищем данных и данными справа внизу. Команды данных открывают его экраны, но эти экраны находятся в org: Data 360 — рядом с ядром, управляется в ядре и размещается вне ядра (модуль 1). Одна линия обратно к Salesforce показывает, кто им управляет. То, где вы ставите прямоугольник, должно рассказывать историю о том, что он делает.

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

Раскладка ландшафта Steve Раскладка системного ландшафта Steve, пока без стрелок. Слева сверху вниз: внутренние пользователи, пользователи партнеров и клиенты. В центре Salesforce синим с облаком, org, вокруг которого мы проектируем, а под ним, касаясь его, Partner Community и Customer Community. Вверху: публичный сайт в левом верхнем углу, поставщики удостоверений сотрудников и партнеров над Salesforce и приложение AppExchange для электронной подписи, сдвинутое вправо. Справа от Salesforce слой интеграции, под ним в той же колонке Data 360 (рядом с ядром: управляется в ядре, размещен вне ядра; пользователи к нему никогда не подключаются, а он достает до многих бэкенд-систем), затем внутренние системы: ERP, финансы, управление заказами и хранилище данных. Внизу: каналы клиентов, email, веб-формы, телефон и сообщения. Справа внизу данные внутрь и наружу: архив, загрузки данных и внешние данные, которые используются по ссылке, а не копируются. Шесть пошаговых кадров собирают его: пустые зоны, затем люди, Salesforce и его сообщества, идентификация вверху, интеграция и внутренние системы и, наконец, каналы и данные. ВВЕРХУ: ИДЕНТИФИКАЦИЯ, APPEXCHANGE, ВЕБ ЛЮДИ СПРАВА: ВНУТРЕННИЕ СИСТЕМЫ ВНИЗУ: КАНАЛЫ КЛИЕНТОВ СПРАВА ВНИЗУ: ДАННЫЕ ВНУТРЬ И НАРУЖУ Внутренние пользователи продажи, сервис, операции Пользователи партнеров Клиенты Публичный сайт IdP сотрудников единый вход IdP партнеров единый вход Приложение AppExchange электронная подпись Partner Community Customer Community Data 360 рядом с ядром: управляется в ядре, размещен вне ядра СЛОЙ ИНТЕГРАЦИИ (ESB) ERP заказы, счета Финансы платежи Управление заказами Хранилище данных аналитика Email email в обращение Веб-формы веб в интерес Телефон контакт-центр Сообщения SMS, чат Архив старые обращения Загрузки данных миграция Внешние данные по ссылке, не копируются Salesforce org, вокруг которого мы проектируем Salesforce сообщество люди идентификация, приложения, веб внутренняя система канал клиентов данные внутрь и наружу слой интеграции пунктир: еще не работает или по ссылке © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Шаг 6 из 6: вся схема, пока без стрелок. Все следующие ландшафты сохраняют эти позиции.

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

Не кладите слишком много внутрь прямоугольника. Только на очень сложном ландшафте я раскрываю Salesforce на части (Sales Cloud и Service Cloud внутри org со стрелками между ними). И не изобретайте пятнадцать фигур, если каждая не сообщает читателю что-то. Я хочу, чтобы человек посмотрел на ландшафт тридцать секунд и начал понимать архитектуру. Вычурность не помогает. Помогает ясность.

Не ждите детального проектирования, чтобы подумать об объеме. Стрелка, по которой идут 500 продуктов за ночь, и стрелка с 200 000 показаний GPS в день на ландшафте могут выглядеть совершенно одинаково. Это не одна и та же задача. Поэтому, прежде чем нарисовать хоть одну стрелку, посчитайте, что движется. Начните инвентаризацию за рисунком с цифр: по строке на каждый важный набор данных, с его объемом. Нули могут так и не появиться на стрелках, но вам нужно знать, когда вы переходите к большим числам: тысячи или миллионы в час, сотни тысяч транзакций, даже от десятков до сотен транзакций в секунду.

Эти числа определяют механизм. Несколько сотен записей за ночь — это пакетная обработка. Вызов, которого кто-то ждет, может быть синхронным, если позволяет объем. Десяткам или сотням в секунду могут понадобиться события, например platform events, а не вызов на каждую запись. Стрелка будет выглядеть так же; что по ней пойдет, решает объем, поэтому записывайте его в инвентаризацию, где выбирается механизм.

Механизм может даже поменять направление стрелки. Отправляете пару записей в минуту — и Salesforce может просто сделать вызов (callout): стрелка начинается у Salesforce. Отправляете намного больше — и Salesforce может вместо этого публиковать события в шину событий; внешняя система подписывается и приходит за ними сама, так что теперь стрелка начинается с другого конца. Еще больше, скажем, ночная синхронизация миллионов записей, — и это пакетный процесс. Поэтому знайте свои цифры рано, когда начинаете проектировать механизмы, потому что цифры могут перерисовать стрелки.

Объем важен в двух местах по двум причинам. На модели данных он нужен мне, чтобы следить за большими объемами данных и планировать архивирование; часть 2 разбирает это глубоко. На системном ландшафте большие числа в инвентаризации определяют выбор шаблона интеграции и механизма. Модуль 6 ставит реальные нули на ландшафт Steve Trucking и его инвентаризацию. С цифрами на руках рисуйте стрелки.

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

Это правило — для системных ландшафтов, где системы говорят с системами. На диаграмме потоков данных стрелка, как и следует ожидать, следует за данными. Не переносите правило ландшафта на другие диаграммы; это только добавит путаницы.

Ландшафт со стрелками Тот же ландшафт, теперь со стрелками; каждая начинается у системы, которая открывает соединение, а подпись говорит, что и куда движется. Внутренние пользователи входят в Salesforce, пользователи партнеров в Partner Community, клиенты в Customer Community. Каждый поставщик удостоверений и Salesforce делят сертификат, показанный зеленой пунктирной линией с сертификатом на каждом конце: доверие, а не прямой вызов, потому что вход проходит через браузер пользователя в виде перенаправлений. Поставщик удостоверений сотрудников также отправляет обновления пользователей в Salesforce. Salesforce отправляет документы наружу в приложение AppExchange для электронной подписи, а заказы наружу в слой интеграции, который присылает продукты внутрь Salesforce. Слой интеграции отправляет заказы наружу в ERP и забирает оттуда продукты; ERP присылает статус заказа в слой интеграции; слой интеграции забирает платежи из финансов. Data 360 под слоем интеграции открывает свои соединения: данные CRM наружу из Salesforce, zero copy к хранилищу данных и ссылку на внешние данные. Снизу email приносит обращения, а веб-формы интересы в Salesforce; Salesforce отправляет старые обращения в архив; загрузки данных приносят записи. ВВЕРХУ: ИДЕНТИФИКАЦИЯ, APPEXCHANGE, ВЕБ ЛЮДИ СПРАВА: ВНУТРЕННИЕ СИСТЕМЫ ВНИЗУ: КАНАЛЫ КЛИЕНТОВ СПРАВА ВНИЗУ: ДАННЫЕ ВНУТРЬ И НАРУЖУ Внутренние пользователи продажи, сервис, операции Пользователи партнеров Клиенты Публичный сайт IdP сотрудников единый вход IdP партнеров единый вход Приложение AppExchange электронная подпись Partner Community Customer Community Data 360 рядом с ядром: управляется в ядре, размещен вне ядра СЛОЙ ИНТЕГРАЦИИ (ESB) ERP заказы, счета Финансы платежи Управление заказами Хранилище данных аналитика Email email в обращение Веб-формы веб в интерес Телефон контакт-центр Сообщения SMS, чат Архив старые обращения Загрузки данных миграция Внешние данные по ссылке, не копируются Salesforce org, вокруг которого мы проектируем общий сертификат обновления пользователей общий сертификат документы наружу заказы наружу продукты внутрь заказы наружу, продукты внутрь статус заказа внутрь платежи внутрь данные CRM наружу zero copy по ссылке обращения внутрь интересы внутрь старые обращения наружу записи внутрь Salesforce сообщество люди идентификация, приложения, веб внутренняя система канал клиентов данные внутрь и наружу слой интеграции пунктир: еще не работает или по ссылке начинается у системы, которая открывает соединение; подпись говорит, что движется общий сертификат: доверие, без прямого вызова © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Стрелки добавлены. Каждый прямоугольник там же, где был; каждая стрелка начинается у системы, которая открывает соединение, а ее подпись говорит, что движется и в какую сторону.

Итак, если слой интеграции отправляет продукты в Salesforce, стрелка идет от слоя интеграции к Salesforce с подписью продукты внутрь. Если Salesforce сам делает вызов, чтобы их забрать, стрелка начинается у Salesforce, и подпись по-прежнему продукты внутрь. Те же данные, другой разговор, и эта разница говорит мне, кому нужны учетные данные и кто должен обрабатывать сбой. Salesforce отправляет заказ через слой интеграции: заказы наружу. Исполнение из ERP возвращается: статус заказов внутрь. Теперь я вижу, кто начинает каждый разговор, где данные входят в Salesforce и где покидают его, какие потоки пересекают границы, где, вероятно, находится владение и где мне нужно спросить больше.

И помните модуль 1: когда я вижу только один поток, я начинаю беспокоиться. На верхнем уровне стрелка заказы наружу зависит от обратных потоков: клиенты внутрь, продукты внутрь, цены. Посмотрите еще глубже — и там обратный путь: принятие, отклонение, статус, номер счета, отмена. Стрелки дают мне что-то конкретное, к чему можно предъявить вопросы.

Вот где ландшафт перестает быть картинкой в PowerPoint. На review board любая стрелка может вызвать три вопроса, и я хочу, чтобы у вас были ответы:

  • Как проходит аутентификация? OAuth, сертификат, Named Credential, что-то еще?
  • Это синхронно или асинхронно? Ждет ли Salesforce ERP или публикует и продолжает работу? Как быстро бизнесу нужен результат?
  • Какой механизм? Вызов REST, событие, файл, очередь сообщений, через MuleSoft или напрямую?

А затем: что происходит, когда другая сторона недоступна? У каждой стрелки должен быть механизм. Если вы не можете его объяснить, линия — просто украшение.

И «отправил и забыл» — это не ответ. Обычно это значит «я не спроектировал, что происходит после отправки». Дошло ли? Приняли ли? Не сломалось ли? Будет ли повтор? Кто узнает, что все застряло? Что, если одно и то же сообщение придет дважды? Ничего из этого на ландшафт не попадает, иначе он станет нечитаемым. Но стрелка должна напоминать вам, что эти вопросы существуют.

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

Каждой стрелке нужен механизм Одна стрелка ландшафта крупным планом. Salesforce, клиент, со своими Named Credential и External Credential, отправляет заказы наружу в ERP, сервер, у которого есть External Client App и интеграционный пользователь только с API. Пунктир, нужный для OAuth, показывает, что клиент сначала идет к серверу аутентификации, который выдает токен. Ниже, строка за строкой, что делает клиент и что определяет сервер. Куда: клиенту нужны конечная точка и порт; сервер слушает на URL или IP-адресе и порту. Аутентификация: клиент сначала получает токен, обрабатывает истечение срока и входит заново, конечная точка в Named Credential, а аутентификация в ее External Credential; сервер доверяет токенам своего сервера аутентификации, а его External Client App и интеграционный пользователь решают, что клиенту можно делать. Протокол и контракт: клиент их вызывает; сервер их определяет. Полезная нагрузка: клиент сериализует и читает; сервер определяет JSON, XML или двоичный формат. Время: клиент выбирает, ждать, продолжать или работать по расписанию; сервер должен успевать. Трассировка: клиент видит весь путь туда и обратно; сервер только свою часть. Ошибки и сбои: клиент обрабатывает все виды ошибок, повторяет и понимает, когда застрял; сервер проверяет входящее и не может повторить. Внизу: ничего из этого нет на ландшафте, но у каждой стрелки это есть. нужно для OAuth Сервер аутентификации выдает токен заказы наружу КЛИЕНТ Salesforce СЕРВЕР ERP Named Credential External Credential External Client App Интеграционный пользователь (только API) КЛИЕНТ ОБЕСПЕЧИВАЕТ СЕРВЕР ОПРЕДЕЛЯЕТ Куда Нужны конечная точка (URL или IP-адрес) и порт для подключения. Слушает на URL или IP-адресе, на порту (например, 443). Аутентификация Сначала получает токен у сервера аутентификации; обрабатывает истечение срока и входит заново. Named Credential хранит конечную точку, а ее External Credential — аутентификацию. Доверяет токенам своего сервера аутентификации; External Client App и интеграционный пользователь только с API решают, что клиенту можно делать. Протокол и контракт Вызывает нужный протокол, методы и глаголы (для SOAP импортирует WSDL). Определяет протокол (REST, SOAP, gRPC) и контракт: методы, глаголы, параметры, возвращаемые значения. Полезная нагрузка Сериализует запрос и читает ответ в согласованном формате. Определяет полезную нагрузку: JSON, XML или двоичный формат. Время Выбирает: ждать ответа (синхронно), продолжать (асинхронно) или работать по расписанию (пакетно). Должен успевать: отвечать на каждый вызов по мере поступления или принимать пакет, когда он придет. Трассировка Видит весь путь туда и обратно: что ушло, что вернулось, сколько это заняло. Видит только свою часть: входящий вызов, обработку, исходящий ответ. Ошибки и сбои Обрабатывает ошибки соединения, аутентификации, сервера и ответа; повторяет и понимает, когда застрял. Проверяет входящее и сообщает о своих ошибках; он не видит весь путь, поэтому не может повторить. Ничего из этого нет на ландшафте, но у каждой стрелки это есть. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

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

Теперь разверните стрелку. Когда ERP вызывает Salesforce, Salesforce — сервер: он определяет API, запускает собственный сервер авторизации и через External Client App и интеграционного пользователя решает, что вызывающей стороне разрешено. Те же вопросы, другая сторона.

Salesforce как сервер Та же стрелка в обратную сторону. ERP, клиент, с client ID и секретом или сертификатом, отправляет статус заказа внутрь Salesforce, сервера, который выполняет это от имени интеграционного пользователя только с API. Пунктир, нужный для OAuth, показывает, что ERP сначала идет к собственному серверу авторизации Salesforce, который выдает токен для External Client App. Ниже, строка за строкой, что делает клиент и что определяет Salesforce. Куда: клиенту нужны URL My Domain org и версия API; Salesforce слушает на My Domain по HTTPS. Аутентификация: клиент получает токен доступа через External Client App и входит заново, когда срок истекает; Salesforce доверяет своим токенам, а политики приложения и разрешения интеграционного пользователя решают, что клиенту можно делать. Протокол и контракт: клиент вызывает REST, SOAP или Bulk API; Salesforce определяет API, а объекты и поля org — это контракт. Полезная нагрузка: JSON или XML, CSV для Bulk. Время: клиент ждет, продолжает или загружает пакетами; Salesforce должен успевать в рамках лимитов API org. Трассировка: клиент видит весь путь туда и обратно; Salesforce только свою часть. Ошибки и сбои: клиент обрабатывает ошибки соединения, аутентификации, лимитов и ответа и повторяет; Salesforce проверяет входящее, возвращает свои ошибки и повторить не может. Внизу: ничего из этого нет на ландшафте, но у каждой стрелки это есть. нужно для OAuth Сервер авторизации Salesforce выдает токен для External Client App статус заказа внутрь КЛИЕНТ ERP СЕРВЕР Salesforce Client ID и секрет или сертификат Интеграционный пользователь (только API) КЛИЕНТ ОБЕСПЕЧИВАЕТ СЕРВЕР ОПРЕДЕЛЯЕТ Куда Нужны URL My Domain org и версия API. Salesforce слушает на My Domain org по HTTPS (порт 443). Аутентификация Получает токен доступа у сервера авторизации Salesforce через External Client App; обрабатывает истечение срока и входит заново. Доверяет своим токенам; политики External Client App и разрешения интеграционного пользователя решают, что клиенту можно делать. Протокол и контракт Вызывает API, который определяет Salesforce: REST, SOAP или Bulk (для SOAP импортирует WSDL). Salesforce определяет API и их версии; объекты и поля org — это контракт. Полезная нагрузка Сериализует запрос так, как ожидает API, и читает ответ. Определяет полезную нагрузку для каждого API: JSON или XML, CSV для Bulk. Время Выбирает: ждать ответа (синхронно), продолжать (асинхронно) или загружать пакетами (Bulk API). Должен успевать в рамках лимитов API org. Трассировка Видит весь путь туда и обратно: что ушло, что вернулось, сколько это заняло. Видит только свою часть: входящий вызов, сохранение и его автоматизацию, исходящий ответ. Ошибки и сбои Обрабатывает ошибки соединения, аутентификации, лимитов и ответа; повторяет и понимает, когда застрял. Проверяет входящее (правила проверки, обязательные поля, общий доступ) и возвращает свои ошибки; повторить не может. Ничего из этого нет на ландшафте, но у каждой стрелки это есть. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Salesforce как сервер: те же вопросы, и Salesforce отвечает за половину сервера.

Стрелки на ландшафте, диалоги — в дорожках

Заголовок раздела «Стрелки на ландшафте, диалоги — в дорожках »

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

Когда мне нужно объяснить взаимодействие, я рисую вторую диаграмму, но не для каждой интеграции. Если система A что-то отправляет в B или даже спрашивает и получает ответ, подписанной стрелки достаточно. Swim lane (диаграмма с дорожками) мне нужна, когда процесс становится диалогом: A вызывает B, B сверяется с C, C отвечает, B что-то создает и вызывает A обратно, человек утверждает, другая система продолжает. Мое практическое правило: больше одного-двух обменов туда и обратно — и последовательность получает собственную диаграмму с дорожками. Стрелки на ландшафте; диалог — в дорожках.

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

Стрелки на ландшафте, диалог на диаграмме с дорожками Те же три системы двумя способами. Вверху, как на ландшафте: Salesforce отправляет заказы наружу в слой интеграции, который присылает номера заказов внутрь Salesforce, а слой интеграции отправляет заказы наружу в ERP. Ниже каждая система становится дорожкой, и диалог идет вниз по странице в шесть пронумерованных шагов: 1, Salesforce отправляет заказ в слой интеграции; 2, слой интеграции отвечает «принято» со ссылкой; 3, слой интеграции просит ERP создать заказ; 4, ERP создает заказ; 5, ERP отвечает слою интеграции номером заказа; 6, слой интеграции вызывает Salesforce, чтобы обновить заказ. Ответы светлее. Внизу: на ландшафте стрелка — это соединение; на диаграмме с дорожками каждая стрелка — одно сообщение, по порядку. НА ЛАНДШАФТЕ: КТО ПОДКЛЮЧАЕТСЯ И ЧТО ДВИЖЕТСЯ НА ДИАГРАММЕ С ДОРОЖКАМИ: ДИАЛОГ ПО ПОРЯДКУ Salesforce Слой интеграции ERP заказы наружу номера заказов внутрь заказы наружу отправить заказ 1 принято: ссылка 2 создать заказ 3 создает заказ 4 номер заказа 5 обновить заказ 6 На ландшафте стрелка — это соединение. На диаграмме с дорожками каждая стрелка — одно сообщение, по порядку. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Три стрелки на ландшафте; шесть шагов на диаграмме с дорожками. На ландшафте стрелка — это соединение; на диаграмме с дорожками каждая стрелка — одно сообщение, по порядку.

Когда ландшафт кажется почти готовым, пройдите по нему, стрелка за стрелкой. От ERP к Salesforce: что движется, кто этим владеет, как проходит аутентификация, какой механизм, синхронно или асинхронно, насколько актуальными должны быть данные? Затем следующая стрелка и следующая. Вот здесь и появляются пробелы. «Ой, мы так и не разобрались, как партнер на самом деле это присылает». «Мы отправляем заказы в ERP, но не спроектировали, как возвращаются отклоненные». Хорошо. Вы нашли это на доске, а не в продакшне.

Рисунок должен оставаться читаемым, поэтому детали идут в инвентаризацию за ним. Вы начали ее с цифр; теперь закончите, по строке на каждый важный набор данных или поток:

СтолбецЧто я хочу знать
Набор данныхКлиент, продукт, заказ, доставка, счет
ВидМастер-данные, справочные, транзакционные, аналитические, неструктурированные
ВладелецКто владеет его смыслом и жизненным циклом?
Система записиГде находится авторитетная версия?
НагрузкаОперационная, аналитическая, потоковая
Объем«Число нулей»
OrgКакой org Salesforce, если их несколько?
АутентификацияКак соединение устанавливает доверие?
Механизм и времяAPI, событие, файл, федерация; синхронно, асинхронно, пакетно
ПодходКопировать, ссылаться или федерировать?

Теперь артефактов два: ландшафт позволяет мне увидеть архитектуру, а инвентаризация — допросить ее.

Инвентаризация за картинкой Инвентаризация за ландшафтом, по строке на поток, колонки объема и механизма выделены вместе. Продукты внутрь: владелец ERP, около 500 изменений за ночь, ночной пакет через слой интеграции, External Client App и интеграционный пользователь, копируются. Заказы наружу: владелец Salesforce, около 2 000 в день, несколько в минуту, почти в реальном времени, когда Salesforce вызывает через слой интеграции callout из Apex или Flow с Named Credential, копируются. Статус заказа внутрь: владелец ERP, около 16 000 в день всплесками, асинхронно, когда ERP передает в слой интеграции, который обновляет Salesforce через REST API, копируются. Платежи внутрь: владелец финансы, около 1 500 в день, ежечасный пакет через Bulk API 2.0, копируются. Данные CRM наружу: владелец Salesforce, миллионы записей, Data 360 забирает из org по расписанию, рядом с ядром, копируются в Data 360. Zero copy: пять лет истории хранилища данных, сотни миллионов строк, запрашиваются на месте, федерируются. По ссылке: внешний поставщик, по одному запросу за раз, читаются, когда кому-то нужно, используются по ссылке. Внизу: на ландшафте стрелки похожи; что несет каждую, решает объем. ПОТОК НА ЛАНДШАФТЕ ВЛАДЕЛЕЦ ОБЪЕМ МЕХАНИЗМ И ВРЕМЯ АУТЕНТИФИКАЦИЯ КОПИРОВАТЬ, ССЫЛАТЬСЯ ИЛИ ФЕДЕРИРОВАТЬ Продукты внутрь ERP ~500 изменений за ночь Пакетно: слой интеграции загружает их каждую ночь External Client App, интеграционный пользователь Копировать Заказы наружу Salesforce ~2 000 в день, несколько в минуту Почти в реальном времени: Salesforce вызывает через слой интеграции, callout из Apex или Flow Named Credential Копировать Статус заказа внутрь ERP ~16 000 в день, всплесками Асинхронно: ERP передает в слой интеграции, который обновляет Salesforce через REST API External Client App, интеграционный пользователь Копировать Платежи внутрь Финансы ~1 500 в день Пакетно: ежечасно, через слой интеграции и Bulk API 2.0 External Client App, интеграционный пользователь Копировать данные CRM наружу Salesforce Миллионы записей, все Data 360 забирает из org по расписанию Рядом с ядром: управляется в org Копировать в Data 360 Zero copy Хранилище данных Пять лет истории, сотни миллионов строк Запрашивается на месте при необходимости Подключение Data 360 к хранилищу данных Федерировать По ссылке Внешний поставщик По одному запросу за раз Читается, когда кому-то нужно Подключение Data 360 Справочные данные На ландшафте стрелки похожи. Что несет каждую, решает объем. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Инвентаризация за ED-D42. На ландшафте стрелки выглядят одинаково; что идет по каждой, решает объем.

Вот почему мне нравится этот артефакт: он помогает думать. «Как мы будем строить отчеты по Salesforce и ERP вместе?» Это вопрос из модуля 3: какая из моих диаграмм решает это красиво? Ландшафт. Если все в ядре — стандартные отчеты. Если данные в ERP и хранилище данных, вы видите это сразу. «Где должен вестись этот атрибут клиента?» Посмотрите, какие системы его используют и какая уже владеет клиентом. «Нужно ли Salesforce каждое показание GPS?» Кто его производит, кто потребляет, какая нагрузка? Возможно, Salesforce нужна текущая позиция, а историю хранит другая платформа. Ландшафт не вручает вам ответ. Он дает правильный взгляд на задачу.

Нарисуйте текущее состояние, прежде чем его чинить

Заголовок раздела «Нарисуйте текущее состояние, прежде чем его чинить »

Еще одна дисциплина. На существующем предприятии рисуйте то, что есть, а не то, что вам хотелось бы. Таблица, которую рассылают по почте каждую пятницу: нарисуйте ее. CSV партнера на SFTP-сервере: нарисуйте. Интеграция, которая по историческим причинам обходит ESB: нарисуйте. Люди, перебивающие данные из одной системы в другую: покажите это. Не приукрашивайте реальность, пока ее документируете. Вам нужен текущий ландшафт, прежде чем проектировать целевой, и именно это мы делаем для Steve Trucking в модуле 6.

За пределами экзамена: что меняет ИИ. Ландшафт превращается в карту для агентов. Если агент отвечает на вопрос «где моя доставка?», ландшафт должен сказать, откуда берется ответ: из Salesforce, системы партнера, телематики, ERP или из нескольких источников. Агенты не убирают границы систем; они делают еще важнее знание того, какая система авторитетна и как безопасно до нее добраться.

  • Какие системы и группы пользователей должны быть на ландшафте и как их расположение показывает их роль.
  • Какие потоки пересекают границы систем, в каком направлении и что возвращается.
  • Как каждое соединение проходит аутентификацию, какой механизм его несет и является ли оно синхронным, асинхронным, пакетным или федеративным.
  • Когда подписанной стрелки достаточно, а когда взаимодействию нужна собственная диаграмма с дорожками.
  • Что фиксирует инвентаризация за рисунком: владелец, нагрузка, объем, org, время, аутентификация и копировать, ссылаться или федерировать.

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