콘텐츠로 이동

Steve Trucking, What I Would Architect

이 콘텐츠는 아직 번역되지 않았습니다.

Module 7 of 7 in the chapter Integration Patterns, chapter 7 of the Integration Architect course, and the end of Part 1. Previous: Several Patterns, One Solution · Next: Part 2 begins with Salesforce as an API Provider (coming soon)

Try the challenge first. This is my walkthrough of Checkpoint 1’s challenge. If you haven’t drawn your own landscape, sized it and named a pattern for every arrow, do that before you read on. Then compare your reasoning, not just your answers.

The question this module answers: For Steve Trucking, what does every integration need to move, how much, and which pattern does each one use?

This is the end of Part 1. You can draw a landscape, ask for the requirements, do the math, and name the patterns. So let’s do all four, on one company, the way I’d do it in the first weeks of a project.

Here’s Steve Trucking, the way you drew it in chapter 5: people on the left, the org in the middle, the integration layer just to its right, the systems on the right, partners and providers at the bottom right. Every arrow starts at the system that opens the connection.

Out and in, in context The Steve Trucking landscape from chapter 5, every box in its place: people on the left, Salesforce in the middle, the integration layer to its right, the other systems on the right, partners and providers at the bottom right. All the arrows are drawn as in chapter 5. Underneath: every arrow that touches Salesforce is a call-in or a call-out; next, the call-ins, then the call-outs. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.54.0", "built": "2026-10-30", "id": "DGM-INT-PT-03", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "system-landscape 0.13.0", "theme": "stevetecharc 1.4.0"} ABOVE: IDENTITY, APPEXCHANGE, WEB PEOPLE RIGHT: INTERNAL SYSTEMS BELOW: CUSTOMER CHANNELS BOTTOM RIGHT: PARTNERS AND PROVIDERS Dispatch coordinators 45, inside 9 partner DCs Delivery crews ~700 on 330 trucks Care and office staff 100: service, ops, finance Retail Partner users ~300 at 3 partners Recipients ~1 million a year Corporate IdP SSO for office staff only Retail Partner portal Tracking page INTEGRATION Snowflake status history, analytics FleetLink raw GPS stays here Finance ERP invoices partners, pays crews Photo storage 4–5 million a year, off core RouteDesk archive retired; 8 years of history Phone care agents Email email-to-case SMS and email provider day-before message, with a link Redrock REST API, webhooks Keystone CSV over SFTP Brightwave EDI through a third-party network Salesforce Field Service, one US org a link, no login office staff only calls cases in manifests in status out manifests in status out manifests in status out upserts, partner key status events status events latest position only delivery counts delivery counts photos, from the crews' app day-before, with a link Salesforce a community people identity, apps, web an internal system a customer channel the integration layer starts at the system that opens the connection; the label says what moves a shared certificate: trust, no direct call Every arrow that touches Salesforce is a call-in or a call-out. Next: the call-ins, then the call-outs. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Steve Trucking’s landscape.

The arrows from people to Salesforce, logging in, aren’t integrations. Everything else is, and every one of them needs a pattern.

Do your math early. These are the numbers from chapter 6, today:

  • Deliveries: about 3,300 a day, growing 30% a year.
  • Status updates: about eight per delivery, so about 26,400 a day. Over a twelve-hour day, that’s under one a second.
  • Photos: about 13,200 a day at about 4 MB each: about 53 GB a day, about 1.2 MB a second. Few calls, heavy bytes.
  • GPS readings: about 200,000 a day from FleetLink.

None of these is big for Salesforce. But two of them have a shape that matters. The photos are all bytes. And FleetLink’s readings, one call each, would spend most of the org’s daily allocation of inbound calls, as you saw in chapter 6.

Now the three questions from module 5 for every arrow: which way, what kind, does anyone wait. Then the numbers.

Every arrow, its pattern A table of every Steve Trucking integration and its pattern, under four direction bands, with the pattern picked out. From another system to Salesforce: Redrock's manifests, upserted by the integration layer as they come, Redrock's share of about 3,300 deliveries a day, for R1 and R4, Remote Call-In; Keystone's and Brightwave's manifests, from their files, one or more files per DC per day, for R1, Batch Data Synchronization; FleetLink's latest position, about 200,000 readings a day, or one call a minute with every truck, 720, for R6, R10 and R13, Remote Call-In. From Salesforce to another system: status events to the integration layer, about 26,400 a day, under one a second, for R2, Fire and Forget, published as events, with a batch underneath; delivery counts to Finance, once a night, for R14, Batch Data Synchronization; photos to photo storage, about 13,200 a day, about 53 GB, 1.2 MB a second, for R7 and S5, Fire and Forget, sized by its bytes; the day-before message, about 3,300 a day, for R5, Fire and Forget. On the screen: a manifest changes after routing, or a truck will miss its window, as it happens, for 45 coordinators, for R4 and R13, UI Update Based on Data Changes. Between the integration layer and the partners: status to Redrock, Keystone and Brightwave, by webhooks as they happen, a nightly file, and EDI messages, for R2, the layer's own patterns: a call each, a file, a message. Underneath: the pattern comes from which way, what kind and whether anyone waits; the numbers decide how it's built, in Part 2. {"author": "Steve Simpson", "blueprint": "1.0.1", "builder": "standard 1.57.1", "built": "2026-10-30", "id": "DGM-INT-PT-19", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "system-landscape/inventory 0.13.0", "theme": "stevetecharc 1.4.0"} THE ARROW HOW MUCH, TODAY FOR THE PATTERN From another system to Salesforce Redrock's manifests, upserted by the integration layer as they come Redrock's share of about 3,300 deliveries a day R1, R4 Remote Call-In Keystone's and Brightwave's manifests, from their files one or more files per DC per day R1 Batch Data Synchronization FleetLink's latest position about 200,000 readings a day; one call a minute with every truck: 720 R6, R10, R13 Remote Call-In From Salesforce to another system Status events, to the integration layer about 26,400 a day, under one a second R2 Fire and Forget, published as events, with a batch underneath Delivery counts, to Finance once a night R14 Batch Data Synchronization Photos, to photo storage about 13,200 a day, about 53 GB: 1.2 MB a second R7, S5 Fire and Forget, sized by its bytes The day-before message about 3,300 a day R5 Fire and Forget On the screen A manifest changes after routing; a truck will miss its window as it happens, for 45 coordinators R4, R13 UI Update Based on Data Changes Between the integration layer and the partners Status to Redrock, Keystone and Brightwave webhooks as they happen; a nightly file; EDI messages R2 The layer's own: a call each, a file, a message The pattern comes from which way, what kind and whether anyone waits. The numbers decide how it's built: Part 2. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Every arrow, its pattern.

Here’s my reasoning, arrow by arrow.

The manifests coming in are two patterns, not one. On the landscape it’s one arrow, the integration layer upserting manifests with the partner key. But Redrock sends its manifests through its API as they come, and the layer passes each one on: Remote Call-In, with our own middleware as the caller. Keystone drops a file each afternoon and Brightwave’s come as EDI files: the layer loads each file in bulk, and nobody is waiting: Batch Data Synchronization. One arrow on the landscape, two patterns, because the partners behave differently. That’s why you ask the shape of every flow behind an arrow.

FleetLink’s latest position is Remote Call-In. It’s data, FleetLink starts it, and each call waits for Salesforce’s answer. The pattern was never the question. The numbers were: one call per reading is 200,000 calls a day. But coordinators must be alerted within five minutes when a truck is likely to miss its window, so they need positions within a minute or two, not within seconds. One call a minute with every truck’s latest position is 720 calls over a twelve-hour day. Same pattern, two very different designs.

The status events are a fire and forget, published as events. A delivery’s status changes, and several systems care: the integration layer for the partners, the status history in Snowflake. Nobody waits for them. So Salesforce publishes once and moves on, and the subscribers take their copy in their own time, module 4. And remember: you get a receipt, not the outcome.

The delivery counts to Finance are a batch. The requirement is to invoice each partner daily from completed deliveries. Finance doesn’t need each delivery the second it’s done; it needs the whole day, complete, by morning. Batch Data Synchronization, going out. The selection tables list batch only coming in, but it works in either direction.

The photos are a fire and forget, sized by their bytes. The crew doesn’t wait for storage to confirm each photo. But 53 GB a day is the number that will decide the mechanism, not the pattern. That’s for Part 2.

The day-before message is a fire and forget. Salesforce asks the provider to send it, gets an acknowledgment, and moves on. Whether the text reached the phone is the provider’s job, and its report.

Two requirements live on the screen. When a manifest changes after routing, coordinators must see it immediately, and they must be alerted within five minutes when a truck is likely to miss its window. Both are UI Update Based on Data Changes: the coordinator’s screen is told, it doesn’t keep asking, module 3.

The partner side has patterns too, just not Salesforce’s names. Status goes back to each partner the way it wants it: Redrock by webhook as it happens, Keystone as a file each night, Brightwave as EDI messages. Those arrows don’t touch Salesforce, so Salesforce’s six don’t name them. The industry’s names do: a call for each event, a file, a message through a third party.

One more requirement doesn’t have an arrow yet: RouteDesk’s eight years of history must stay available after it retires. Whether that’s a migration, an archive, or data virtualization is a design of its own, and the Data Architect course and chapter 14 take it on.

Batch is your backup plan. So here’s where I’d put one underneath.

The status history in Snowflake gets every status change through events, and a nightly batch reads the day’s changes by date and fills any gap, the design from module 5. The same idea protects Redrock’s webhooks: a nightly comparison of what we sent and what Redrock has. And Keystone already gets a nightly file, so its status is a batch from the start.

The brief asks for three times today’s volume within five years, and chapter 6 planned 30% a year. In three years, that’s about 2.2 times today: about 58,000 status updates a day, and about 116 GB of photos a day.

Look at the table again. Not one pattern changes. The status events are still a fire and forget, the counts are still a batch, FleetLink still calls in. What changes is the mechanism underneath and its limits, and that’s Part 2.

Part 1 gave each arrow its pattern. Part 2 picks how to build each one, and checks it against its limits:

  • Salesforce as the provider, for the call-ins: chapter 8.
  • Salesforce as the client, for the call-outs: chapter 9.
  • Bulk, for the batches and the photos: chapter 10.
  • Events, for the status changes and the screens: chapter 11.
  • And how every caller signs in: chapter 12.
  • For every arrow on the landscape: its pattern, from which way, what kind and whether anyone waits.
  • For every arrow that hides several flows: a pattern for each flow, not one for the arrow.
  • For every pattern: the numbers that will decide its mechanism, today and in three years.
  • For every event-driven flow: the batch underneath.

Beyond the exam: what AI changes. Put this landscape and the brief into an AI and ask for a pattern per arrow, and you’ll get a table much like this one. What it won’t do on its own is notice that one arrow is two patterns, ask whether coordinators need seconds or minutes, or count FleetLink’s calls against the allocation. Give it the three questions and the numbers, and check every row the way you just did.