<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Observability on Andrew Jones</title><link>https://andrew-jones.com/categories/observability/</link><description>Recent content in Observability on Andrew Jones</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>&amp;copy; 2008 - 2026 Andrew Jones</copyright><lastBuildDate>Fri, 10 Jul 2026 07:30:50 +0000</lastBuildDate><atom:link href="https://andrew-jones.com/categories/observability/index.xml" rel="self" type="application/rss+xml"/><item><title>Data contracts anti-pattern #3: Vanity SLOs</title><link>https://andrew-jones.com/newsletter/2026-07-10-data-contracts-anti-pattern-3-vanity-slos/</link><pubDate>Fri, 10 Jul 2026 07:30:50 +0000</pubDate><guid>https://andrew-jones.com/newsletter/2026-07-10-data-contracts-anti-pattern-3-vanity-slos/</guid><description>&lt;p&gt;Hello 👋 Welcome to the third part in my series of data contract anti-patterns, following on from:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://andrew-jones.com/newsletter/2026-06-26-data-contracts-anti-pattern-1-contracts-as-documentation/" target="_blank" rel="noreferrer"&gt;Contracts as documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://andrew-jones.com/newsletter/2026-07-03-data-contracts-anti-pattern-2-checkbox-compliance/" target="_blank" rel="noreferrer"&gt;Checkbox compliance&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This one is all about defining SLOs that actually make a difference.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s also links to articles on semantic vs context layers, building a semantic layer at Lyft, and data contracts in KCL.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="data-contracts-anti-pattern-3-vanity-slos" class="relative group"&gt;Data contracts anti-pattern #3: Vanity SLOs &lt;/h2&gt;&lt;p&gt;There&amp;rsquo;s been a top-down directive that every data product needs to have SLOs, and so the data producer sets some, but without any conversation with consumers. The data producer asks &amp;ldquo;what can I safely commit to?&amp;rdquo; rather than &amp;ldquo;what does the consumer need?&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Their targets are calibrated to avoid alerts, not to reflect consumer requirements.&lt;/p&gt;
&lt;p&gt;This happens because the data producers are asked to define SLOs unilaterally, which creates the wrong incentive. Minimising alerts is the rational choice.&lt;/p&gt;
&lt;p&gt;This results in targets disconnected from what consumers are actually building against.&lt;/p&gt;
&lt;figure style=""&gt;
&lt;img src="https://andrew-jones.com/images/newsletter/2026-07-10-data-contracts-anti-pattern-3-vanity-slos/Data-contracts-anti-pattern-3_-Vanity-SLOs.png" alt="Sketch diagram titled &amp;#34;Data freshness SLO&amp;#34; with a scale from Weekly to Daily to Hourly; a &amp;#34;Data producer commitment&amp;#34; bar spans Weekly to Daily, while a &amp;#34;Data consumer need&amp;#34; bar spans Weekly to Hourly, with the extra portion from Daily to Hourly labeled &amp;#34;Vanity gap&amp;#34;." /&gt;
&lt;/figure&gt;
&lt;div class="clear"&gt;&lt;/div&gt;
&lt;p&gt;Now, low SLOs are not necessarily a problem. If a consumer genuinely only needs data refreshed once a day, a daily freshness SLO is fine. The problem is the target has not been validated with the consumers.&lt;/p&gt;
&lt;p&gt;To avoid this anti-pattern SLOs should be negotiated, not declared. The data consumers should be asking for SLOs to be defined because they have a business need to build on this data and need a certain level of reliability/performance. The data producers can then decide if that SLO is one they can commit to. If it is, great! If not, are the costs for the data producer to meet that (investment, rearchitecture, on-call rotas, etc.) worth the return for the business? That&amp;rsquo;s the negotiation.&lt;/p&gt;
&lt;p&gt;Of course, this does require data consumers to be able to &lt;a href="https://andrew-jones.com/newsletter/2025-08-01-data-producers-need-to-know-why/" target="_blank" rel="noreferrer"&gt;articulate the value of the work&lt;/a&gt;. If they can do that, and do it well, there&amp;rsquo;s no reason why the case cannot be made to invest in higher SLOs for data products.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="interesting-links" class="relative group"&gt;Interesting links &lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://datacreation.substack.com/p/a-semantic-layer-is-not-a-context" target="_blank" rel="noreferrer"&gt;A semantic layer is not a context layer&lt;/a&gt; by Yali Sassoon&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Interesting read on what a context layer does, and why that is beyond what a semantic layer does (which itself is still valuable).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://eng.lyft.com/metric-semantic-layer-how-lyft-governs-and-scales-key-data-definitions-56bee3643c29" target="_blank" rel="noreferrer"&gt;Metric Semantic Layer: How Lyft Governs and Scales Key Data Definitions&lt;/a&gt; by Iraklikhorguani&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Related to the above, this is a nice writeup of how Lyft built a semantic layer, driven by metadata, and with a focus on governance and ownership.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://enkinex.hashnode.dev/enkinex-odcs-tutorial" target="_blank" rel="noreferrer"&gt;Enkinex ODCS Tutorial - Governance as Code&lt;/a&gt; by Rodrigo de Alvarenga Mattos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nice tutorial showing how to define an ODCS data contract in code with KCL.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="being-punny-" class="relative group"&gt;Being punny 😅 &lt;/h2&gt;&lt;p&gt;A ship carrying red paint collided with a ship carrying purple paint. Both crews thought to be marooned.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="upcoming-events" class="relative group"&gt;Upcoming events &lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;🆕 Lost in translation - Data vs Integration Architecture, 2026.07.21 19:00 CEST (GMT+2), &lt;a href="https://www.linkedin.com/events/looselycoupled-lostintranslatio7478766928451510272/theater/" target="_blank" rel="noreferrer"&gt;LinkedIn&lt;/a&gt; and YouTube Live&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.eventbrite.co.uk/e/data-community-conference-2026-tickets-1984617779202?aff=AndrewJones" target="_blank" rel="noreferrer"&gt;Data Community Conference&lt;/a&gt;, September, Online&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="thanks-if-youd-like-to-support-my-work" class="relative group"&gt;Thanks! If you&amp;rsquo;d like to support my work&amp;hellip; &lt;/h2&gt;&lt;p&gt;Thanks for reading this weeks newsletter — always appreciated!&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to support my work consider buying my book, &lt;a href="https://data-contracts.com" target="_blank" rel="noreferrer"&gt;&lt;em&gt;Driving Data Quality with Data Contracts&lt;/em&gt;&lt;/a&gt;, or if you have it already please leave a review &lt;a href="https://amzn.to/3Nm4lN9" target="_blank" rel="noreferrer"&gt;on Amazon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy your weekend.&lt;/p&gt;
&lt;p&gt;Andrew&lt;/p&gt;</description><custom:summary>SLOs that make a difference</custom:summary><custom:pun>A ship carrying red paint collided with a ship carrying purple paint. Both crews thought to be marooned.</custom:pun><custom:linkedin>In this week's newsletter I write about the 3rd anti-pattern in my series - Vanity SLOs.
There's also links to articles on semantic vs context layers, building a semantic layer at Lyft, and data contracts in KCL.</custom:linkedin><custom:bluesky>In this week's newsletter I write about the 3rd anti-pattern in my series - Vanity SLOs.
There's also links to articles on semantic vs context layers, building a semantic layer at Lyft, and data contracts in KCL.
https://a-j.io/n260710 #DataBS</custom:bluesky></item></channel></rss>