<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Integrations on Brian Faust</title><link>https://vacua.dev/tags/integrations/</link><description>Recent content in Integrations on Brian Faust</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://vacua.dev/tags/integrations/rss.xml" rel="self" type="application/rss+xml"/><item><title>A Third-Party API Is an Unreliable Collaborator</title><link>https://vacua.dev/thoughts/a-third-party-api-is-an-unreliable-collaborator/</link><pubDate>Thu, 01 Feb 2018 00:00:00 +0000</pubDate><guid>https://vacua.dev/thoughts/a-third-party-api-is-an-unreliable-collaborator/</guid><description>&lt;p&gt;A scheduled import begins by listing remote orders. The list request returns a
502 HTML page, so there are no trustworthy item identifiers to process.&lt;/p&gt;
&lt;p&gt;On another run the list succeeds. One order then returns a 504 while its
details are being loaded. The remaining orders are still independent and can
continue.&lt;/p&gt;
&lt;p&gt;These failures share a provider, but not a recovery boundary. Treating both as
“the API is down” either discards useful work or pretends to know more than the
response established.&lt;/p&gt;</description></item><item><title>Silencing an Error Does Not Protect the Customer</title><link>https://vacua.dev/thoughts/silencing-an-error-does-not-protect-the-customer/</link><pubDate>Wed, 01 Jun 2016 00:00:00 +0000</pubDate><guid>https://vacua.dev/thoughts/silencing-an-error-does-not-protect-the-customer/</guid><description>&lt;p&gt;A shipment-booking request returned without an error. The shipment appeared in
the system, so the request looked successful. It had no label and no tracking
number.&lt;/p&gt;
&lt;p&gt;Persistence had failed after the remote booking completed. A broad catch
swallowed the exception, emitted no report or log, and continued. The code met
one operational request—do not show customers errors—by returning an object
which the customer could not use.&lt;/p&gt;
&lt;p&gt;The intent was reasonable. Customers prefer reliable bookings to error
messages. But once the system can no longer produce the required result,
silence does not create reliability. It converts a known failure into an
ambiguous success and hands the investigation to the customer.&lt;/p&gt;</description></item><item><title>A Failure Timeline Can Eliminate the Best-Looking Suspect</title><link>https://vacua.dev/thoughts/a-failure-timeline-can-eliminate-the-best-looking-suspect/</link><pubDate>Fri, 01 Apr 2016 00:00:00 +0000</pubDate><guid>https://vacua.dev/thoughts/a-failure-timeline-can-eliminate-the-best-looking-suspect/</guid><description>&lt;p&gt;A shipment appeared in the local database without the tracking number or label
that made it useful. Payment was the first suspect because it was known to be
brittle, and the visible result looked like an operation which had stopped
halfway through.&lt;/p&gt;
&lt;p&gt;But payment had completed. The remote booking had completed too. The failure
happened while persisting the response, and a broad catch continued without
reporting it.&lt;/p&gt;
&lt;p&gt;The payment theory was attractive because of history, not because it explained
the state in front of us. Ordering the effects made that mismatch visible
before another log line was added.&lt;/p&gt;</description></item></channel></rss>