<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>serverless &amp;mdash; Solved by Code</title>
    <link>https://kono.sh/tag:serverless</link>
    <description>Musings of a software engineer, dad, and geek at heart.</description>
    <pubDate>Wed, 29 Apr 2026 13:27:25 +0000</pubDate>
    <image>
      <url>https://i.snap.as/9W6K3NhL.png</url>
      <title>serverless &amp;mdash; Solved by Code</title>
      <link>https://kono.sh/tag:serverless</link>
    </image>
    <item>
      <title>3 questions to ask when deciding between a relational DB and DynamoDB for your project</title>
      <link>https://kono.sh/3-questions-to-ask-when-deciding-between-a-relational-db-and-dynamodb-for-your?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[To DynamoDB or not to DynamoDB. That is the question. Here&#39;s 3 more questions to ask (and make a decision).&#xA;&#xA;!--more--&#xA;&#xA;Choice of persistence stores has an outsized impact on project design.&#xA;&#xA;Having architected many projects for the cloud, I&#39;ve wrestled with &#34;which persistence&#34; too many times to count. But it is a decision that needs to be made early and thoughtfully.&#xA;&#xA;Applying these 3 questions quickly narrows down the choices.&#xA;&#xA;1. Is the domain model highly normalized and relational?&#xA;&#xA;While most developers will automatically say yes, they&#39;re wrong.&#xA;&#xA;In my experience, this is very rare. These designs are usually because of a team&#39;s existing relational experience and mental models. Not actually because the domain needs it.&#xA;&#xA;But, if your domain really is highly normalized data, don&#39;t think twice. Go relational.&#xA;&#xA;2. Is it cloud native?&#xA;&#xA;If your project isn&#39;t already taking advantage of cloud native features, forcing in Dynamo might bring more pain than value. Think traditional web frameworks with built-in ORMs, apps on steady EC2 servers, and similar designs.&#xA;&#xA;On the flip side, if you&#39;re already living with fine-grained IAM permissions, async processors off SQS, or highly variable connections (like Lambdas spinning up and down), Dynamo will fit right in.&#xA;&#xA;3. How well do you know the access patterns?&#xA;&#xA;DynamoDB shines when you use access-patterns-first design.&#xA;&#xA;Always start with access patterns. If you don&#39;t know them, figure them out. If you can&#39;t, because they are truly unknowns, choose a relational DB.&#xA;&#xA;Starting with access patterns will lead to a very different design than data model first.&#xA;&#xA;And often times forcing a decision about the access patterns leads to changes in the application design. That&#39;s a good thing.&#xA;&#xA;Notice, I didn&#39;t talk about cost, scaling, or high-availability requirements. More often than not, the prior three questions bring an answer before bridging these topics. But if you&#39;re still on the fence, those are the next design decisions to make.&#xA;&#xA;Drop a comment if you&#39;ve struggled with the decision or have different criteria for picking persistence.&#xA;&#xA;This was the Day 21 #ship30for30 #atomicEssay.&#xA;&#xA;#crossPost #dynamodb #aws #serverless&#xA;&#xA;---&#xD;&#xA;&#xD;&#xA;Thanks for reading. If you enjoyed the article subscribe via RSS feed or enter your email in the box below 👇&#xD;&#xA;&#xD;&#xA;!--emailsub--]]&gt;</description>
      <content:encoded><![CDATA[<p>To DynamoDB or not to DynamoDB. That is the question. Here&#39;s 3 more questions to ask (and make a decision).</p>



<p>Choice of persistence stores has an outsized impact on project design.</p>

<p>Having architected <strong>many</strong> projects for the cloud, I&#39;ve wrestled with “which persistence” too many times to count. But it is a decision that needs to be made early and thoughtfully.</p>

<p>Applying these 3 questions quickly narrows down the choices.</p>

<h3 id="1-is-the-domain-model-highly-normalized-and-relational" id="1-is-the-domain-model-highly-normalized-and-relational">1. Is the domain model highly normalized and relational?</h3>

<p>While most developers will automatically say yes, they&#39;re wrong.</p>

<p>In my experience, this is <strong>very</strong> rare. These designs are usually because of a team&#39;s existing relational experience and mental models. Not actually because the domain needs it.</p>

<p>But, if your domain really is highly normalized data, don&#39;t think twice. Go relational.</p>

<h3 id="2-is-it-cloud-native" id="2-is-it-cloud-native">2. Is it cloud native?</h3>

<p>If your project isn&#39;t already taking advantage of cloud native features, forcing in Dynamo might bring more pain than value. Think traditional web frameworks with built-in ORMs, apps on steady EC2 servers, and similar designs.</p>

<p>On the flip side, if you&#39;re already living with fine-grained IAM permissions, async processors off SQS, or highly variable connections (like Lambdas spinning up and down), Dynamo will fit right in.</p>

<h3 id="3-how-well-do-you-know-the-access-patterns" id="3-how-well-do-you-know-the-access-patterns">3. How well do you know the access patterns?</h3>

<p>DynamoDB shines when you use access-patterns-first design.</p>

<p>Always start with access patterns. If you don&#39;t know them, figure them out. If you can&#39;t, because they are truly unknowns, choose a relational DB.</p>

<p>Starting with access patterns will lead to a very different design than data model first.</p>

<p>And often times forcing a decision about the access patterns leads to changes in the application design. That&#39;s a good thing.</p>

<p>Notice, I didn&#39;t talk about <strong>cost</strong>, <strong>scaling</strong>, or <strong>high-availability</strong> requirements. More often than not, the prior three questions bring an answer before bridging these topics. But if you&#39;re still on the fence, those are the next design decisions to make.</p>

<p>Drop a comment if you&#39;ve struggled with the decision or have different criteria for picking persistence.</p>

<p>This was the Day 21 <a href="https://kono.sh/tag:ship30for30" class="hashtag"><span>#</span><span class="p-category">ship30for30</span></a> <a href="https://kono.sh/tag:atomicEssay" class="hashtag"><span>#</span><span class="p-category">atomicEssay</span></a>.</p>

<p><a href="https://kono.sh/tag:crossPost" class="hashtag"><span>#</span><span class="p-category">crossPost</span></a> <a href="https://kono.sh/tag:dynamodb" class="hashtag"><span>#</span><span class="p-category">dynamodb</span></a> <a href="https://kono.sh/tag:aws" class="hashtag"><span>#</span><span class="p-category">aws</span></a> <a href="https://kono.sh/tag:serverless" class="hashtag"><span>#</span><span class="p-category">serverless</span></a></p>

<hr/>

<p>Thanks for reading. If you enjoyed the article subscribe via <a href="https://kono.sh/feed/">RSS feed</a> or enter your email in the box below 👇</p>


]]></content:encoded>
      <guid>https://kono.sh/3-questions-to-ask-when-deciding-between-a-relational-db-and-dynamodb-for-your</guid>
      <pubDate>Sun, 06 Nov 2022 23:04:14 +0000</pubDate>
    </item>
  </channel>
</rss>