<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Software Architecture on dplabs — Software Engineering &amp; Technology Consultancy</title>
		<link>https://dplabs.tech/categories/software-architecture/</link>
		<description>Recent content in Software Architecture on dplabs — Software Engineering &amp; Technology Consultancy</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Mon, 06 Jan 2025 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://dplabs.tech/categories/software-architecture/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Monolith vs Microservices: Starting With the Right Question</title>
				<link>https://dplabs.tech/blog/monolith-vs-microservices/</link>
				<pubDate>Mon, 06 Jan 2025 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/monolith-vs-microservices/</guid>
				<description>&lt;p&gt;The monolith vs microservices debate has produced more heat than light over the past decade. Both sides have oversimplified. &amp;ldquo;Monoliths don&amp;rsquo;t scale&amp;rdquo; is demonstrably false — StackOverflow ran a monolith for years serving massive traffic. &amp;ldquo;Microservices are only for large teams&amp;rdquo; ignores the many small teams that have shipped them successfully.&lt;/p&gt;&#xA;&lt;p&gt;The real question is not which architecture is better in the abstract. It&amp;rsquo;s which architecture fits your current constraints: your team size, your organizational structure, your operational maturity, and your actual scaling requirements.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Event-Driven Architecture: When Events Help and When They Hurt</title>
				<link>https://dplabs.tech/blog/event-driven-architecture/</link>
				<pubDate>Mon, 23 Dec 2024 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/event-driven-architecture/</guid>
				<description>&lt;p&gt;Event-driven architecture has become fashionable, which means it&amp;rsquo;s being applied in situations where it doesn&amp;rsquo;t fit. Events are a powerful architectural tool for specific problems. They&amp;rsquo;re a significant operational burden when applied indiscriminately.&lt;/p&gt;&#xA;&lt;p&gt;Understanding when events help and when they hurt requires understanding what problems they actually solve.&lt;/p&gt;&#xA;&lt;h2 id=&#34;events-vs-commands&#34;&gt;Events vs Commands&lt;/h2&gt;&#xA;&lt;p&gt;The distinction matters more than most tutorials acknowledge.&lt;/p&gt;&#xA;&lt;p&gt;A &lt;strong&gt;command&lt;/strong&gt; expresses intent: &amp;ldquo;place this order,&amp;rdquo; &amp;ldquo;cancel this payment,&amp;rdquo; &amp;ldquo;reserve this inventory item.&amp;rdquo; It&amp;rsquo;s addressed to a specific recipient and implies that recipient is responsible for handling it. Commands can be rejected. They have an expected response.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Architecture Decision Records: Making Technical Decisions Explicit</title>
				<link>https://dplabs.tech/blog/architecture-decision-records/</link>
				<pubDate>Mon, 11 Nov 2024 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/architecture-decision-records/</guid>
				<description>&lt;p&gt;Every significant technical decision your team makes will be questioned later. When the original authors have left. When the context has changed. When someone proposes replacing the system. When a new engineer asks &amp;ldquo;why does this work like this?&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Most teams have no good answer to these questions. The reasons behind decisions live in people&amp;rsquo;s heads, in Slack threads that are impossible to find, or nowhere at all.&lt;/p&gt;&#xA;&lt;p&gt;Architecture Decision Records are a lightweight practice that fixes this. They capture not just what was decided, but why — including what was considered and rejected. The investment is small. The return compounds over time.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Distributed Systems: The Problems You Get for Free</title>
				<link>https://dplabs.tech/blog/distributed-systems-problems/</link>
				<pubDate>Mon, 28 Oct 2024 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/distributed-systems-problems/</guid>
				<description>&lt;p&gt;Every system that communicates over a network is a distributed system, and distributed systems fail in ways that single-process applications don&amp;rsquo;t. This is not opinion — it&amp;rsquo;s physics. Networks drop packets. Clocks drift. Services restart. Disks fail. These things happen regardless of how carefully you write your application code.&lt;/p&gt;&#xA;&lt;p&gt;The teams that get distributed systems right don&amp;rsquo;t eliminate these failures. They design so that their systems remain correct despite them.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Modular Monolith: An Architecture Pattern That Deserves More Attention</title>
				<link>https://dplabs.tech/blog/modular-monolith-architecture/</link>
				<pubDate>Mon, 14 Oct 2024 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/modular-monolith-architecture/</guid>
				<description>&lt;p&gt;The software industry has a microservices fixation. Over the last decade, &amp;ldquo;monolith&amp;rdquo; became almost a pejorative, and teams moved to distributed architectures before they had the scale, team size, or operational maturity to justify them.&lt;/p&gt;&#xA;&lt;p&gt;The result has been widespread over-engineering: systems that are harder to understand, harder to debug, harder to change, and more expensive to operate — not because distributed systems are inherently bad, but because the problems they solve weren&amp;rsquo;t actually present.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
