<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Digital Craft Workshop</title>
    <description>The latest articles on DEV Community by Digital Craft Workshop (@danielrusnok).</description>
    <link>https://dev.to/danielrusnok</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F277448%2Fdf127f3b-f0f6-45fe-b25e-1608deb963fe.png</url>
      <title>DEV Community: Digital Craft Workshop</title>
      <link>https://dev.to/danielrusnok</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/danielrusnok"/>
    <language>en</language>
    <item>
      <title>How I Upgrade my Code-Style of MediatR Pipeline using .NET 6</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Wed, 08 Jul 2026 15:06:44 +0000</pubDate>
      <link>https://dev.to/danielrusnok/how-i-upgrade-my-code-style-of-mediatr-pipeline-using-net-6-271f</link>
      <guid>https://dev.to/danielrusnok/how-i-upgrade-my-code-style-of-mediatr-pipeline-using-net-6-271f</guid>
      <description>&lt;h4&gt;
  
  
  SOFTWARE ARCHITECTURE &amp;amp; REFACTORING
&lt;/h4&gt;

&lt;h3&gt;
  
  
  How I Upgrade my Code-Style of MediatR Pipeline using&amp;nbsp;.NET&amp;nbsp;6
&lt;/h3&gt;

&lt;h4&gt;
  
  
  I want to share with you how&amp;nbsp;.NET 6 features with the new &lt;a href="https://github.com/ITIXO/MediatR.Extensions.AttributedBehaviors" rel="noopener noreferrer"&gt;MediatR.Extensions.AttributedBehaviors&lt;/a&gt; NuGet package helped me polish my MediatR pipelines.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyzk0gpu99mjyep6uij0z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyzk0gpu99mjyep6uij0z.jpeg" alt="How I Upgrade my Code-Style of MediatR Pipeline using&amp;nbsp;.NET 6 cover image" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is&amp;nbsp;MediatR
&lt;/h3&gt;

&lt;p&gt;It is a popular &lt;a href="https://github.com/jbogard/MediatR" rel="noopener noreferrer"&gt;library&lt;/a&gt; for C# created by &lt;a href="https://jimmybogard.com/" rel="noopener noreferrer"&gt;Jimmy Boggard&lt;/a&gt;, which can be described as a simple &lt;a href="https://levelup.gitconnected.com/ugly-dependency-graph-the-mediator-design-pattern-is-the-solution-for-you-8b35df60558b" rel="noopener noreferrer"&gt;Mediator Pattern&lt;/a&gt; implementation in&amp;nbsp;.NET. MediatR &lt;a href="https://www.nuget.org/packages/MediatR/" rel="noopener noreferrer"&gt;NuGet package&lt;/a&gt; currently has almost &lt;strong&gt;50 million downloads&lt;/strong&gt; and still rising.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jbogard/MediatR/wiki" rel="noopener noreferrer"&gt;Wiki page&lt;/a&gt; on its GitHub says:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;MediatR is a low-ambition library trying to solve a simple problem — decoupling the in-process sending of messages from handling messages.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The word &lt;strong&gt;in-process&lt;/strong&gt; is essential. This is not a Message Broker as Kinesis or RabbitMQ. This is about sending the message from one place and handling such message in a different place, but still in one process.&lt;/p&gt;

&lt;p&gt;I use MediatR for decoupling Command and Query Requests. So In my case, the MediatR message is Query or Command, depending on the direction of data flow. This architectural design is called &lt;strong&gt;Command-Query Separation&lt;/strong&gt;, and I am explaining it in the first paragraph of blog-post &lt;a href="https://levelup.gitconnected.com/3-cqrs-architectures-that-every-software-architect-should-know-a7f69aae8b6c?source=friends_link&amp;amp;sk=b6dea517e74c8804f718418c834daa80" rel="noopener noreferrer"&gt;3 CQRS Architectures that Every Software Architect Should Know&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can see how I can handle HTTP GET by defining a &lt;code&gt;GetWarehousesQuery&lt;/code&gt; as a MediatR request (message), and &lt;code&gt;GetWarehousesQueryHandler&lt;/code&gt; as its Handler in the code sample below.&lt;/p&gt;

&lt;p&gt;Warehouses Query Handling&lt;/p&gt;




&lt;h3&gt;
  
  
  Upgrade Code with&amp;nbsp;.NET 6&amp;nbsp;Features
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Records
&lt;/h4&gt;

&lt;p&gt;Actually records are with us since&amp;nbsp;.NET 5 and C# 9, but it is related to the topic of a blog post so that I will introduce them to you too. The feature called &lt;a href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/record" rel="noopener noreferrer"&gt;Records&lt;/a&gt;. Records introduced a shorter syntax for defining an &lt;strong&gt;immutable class&lt;/strong&gt;. I find helpful when I am declaring Command or Query class.&lt;/p&gt;

&lt;p&gt;Look at line 8. The definition of &lt;code&gt;GetWarehousesQuery&lt;/code&gt; is now &lt;strong&gt;one-line code&lt;/strong&gt;. I like to have Query and Command classes with theirs Handler classes in one place, which makes my code cleaner.&lt;/p&gt;

&lt;p&gt;There is a &lt;strong&gt;drawback&lt;/strong&gt;. You will not be able to change the value of any property after Record initialization. It is an immutable object, and the setter of every property is defined with the &lt;code&gt;init&lt;/code&gt; keyword.&lt;/p&gt;

&lt;h4&gt;
  
  
  Global Usings
&lt;/h4&gt;

&lt;p&gt;Another sugar feature of&amp;nbsp;.NET 6 is &lt;a href="https://blog.jetbrains.com/dotnet/2021/11/18/global-usings-in-csharp-10/" rel="noopener noreferrer"&gt;Global Usings&lt;/a&gt;. The new keyword &lt;code&gt;global&lt;/code&gt; before Using directive is making it possible not to include &lt;code&gt;using MediatR&lt;/code&gt; in every file where we are implementing interfaces from the MediatR library.&lt;/p&gt;

&lt;p&gt;Global Usings are project-scoped, so I recommend you to &lt;strong&gt;create just one dedicated file for them&lt;/strong&gt; in the root of the project folder. Define your Global Usings only there. It can be a mess once you start to write &lt;code&gt;global using&lt;/code&gt; in a random file.&lt;/p&gt;

&lt;p&gt;Let’s create a &lt;code&gt;GlobalUsings.cs&lt;/code&gt; file with this line of code:&lt;/p&gt;

&lt;p&gt;global using MediatR;&lt;/p&gt;

&lt;p&gt;Now, we can remove &lt;code&gt;using MediatR;&lt;/code&gt; from the code sample.&lt;/p&gt;

&lt;h4&gt;
  
  
  File Scoped Namespaces
&lt;/h4&gt;

&lt;p&gt;File Scoped Namespace means defining &lt;strong&gt;one namespace per file&lt;/strong&gt; without curly brackets. So our code sample can be even cleaner. Take a look below.&lt;/p&gt;

&lt;p&gt;Query and Handler in one short file. That’s how I like it.&lt;/p&gt;




&lt;h3&gt;
  
  
  Upgrade Code with MediatR Attributed Behaviors
&lt;/h3&gt;

&lt;h4&gt;
  
  
  MediatR Pipeline
&lt;/h4&gt;

&lt;p&gt;Before moving to my last upgrade, I need to explain what MediatR Pipeline is. It is a pipeline defined for one MediatR Request (message). Pipelines execution starts with &lt;code&gt;Mediator.Send&lt;/code&gt; method invocation and passing an object of MediatR Request into it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faawz8aatu0oob2ib8yum.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faawz8aatu0oob2ib8yum.jpeg" alt="Illustration" width="272" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side note: if you enjoy small, practical ways to keep code clean like this, I share short free lessons in &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Simple pipeline&lt;/p&gt;

&lt;h4&gt;
  
  
  Pipeline Behaviors
&lt;/h4&gt;

&lt;p&gt;MediatR has a feature called &lt;strong&gt;Pipeline Behaviors&lt;/strong&gt;. Behaviors can be attached to the pipeline by defining a proper interface implementation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe4t6ajeghi6ibg0z20ut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe4t6ajeghi6ibg0z20ut.png" alt="Illustration" width="786" height="737"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pipeline with behaviors&lt;/p&gt;

&lt;p&gt;You can attach Behavior &lt;strong&gt;before or after Handler&lt;/strong&gt;, depends where you will invoke the &lt;code&gt;next()&lt;/code&gt; delegate. A typical example can be a Validation Behavior that will validate the MediatR Request form before Handler.&lt;/p&gt;

&lt;p&gt;Now some code. This is my new &lt;code&gt;CreateWarehouseCommand&lt;/code&gt; pipeline. The code in the Handler is not vital for proof of the concept. What it does is to persist the new Warehouse record into the database.&lt;/p&gt;

&lt;p&gt;Now let’s define Validation Behavior.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;ValidateCreateWarehouseBehavior&lt;/code&gt; will be executed before Handler because we are invoking &lt;code&gt;next&lt;/code&gt; delegate after validation. If the &lt;code&gt;await next()&lt;/code&gt; was at line 14 before &lt;code&gt;if&lt;/code&gt;, Handler would be invoked before validation. This is how you can manage the position of Behavior towards the Handler or another Behavior in the pipeline.&lt;/p&gt;

&lt;p&gt;Behaviors have to be registered into the DI container &lt;strong&gt;manually&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;services.AddScoped&amp;gt;, ValidateCreatedWarehouseBehavior&amp;gt;();&lt;/p&gt;

&lt;p&gt;By the way, if you have multiple Behaviors for one pipeline, their &lt;strong&gt;order of execution is defined by order of registrations&lt;/strong&gt; into the DI container. This is an unpleasantly hidden way of behaving by MediatR. But I have a nice fix for it in the next paragraph.&lt;/p&gt;

&lt;h4&gt;
  
  
  MediatR Attributed Behaviors
&lt;/h4&gt;

&lt;p&gt;The last upgrade is the extension library for MediatR called &lt;a href="https://github.com/ITIXO/MediatR.Extensions.AttributedBehaviors" rel="noopener noreferrer"&gt;MediatR Attributed Behaviors&lt;/a&gt;. The library helps you &lt;strong&gt;remove the responsibility of manual DI registrations&lt;/strong&gt; of Behaviors from the developer. Also, you can see the Behaviors of your pipeline right over the MediatR Request definition. Take a look at the last code sample.&lt;/p&gt;

&lt;p&gt;Another power of this extension library is defining the order and scope of behaviors and passing it as other parameters.&lt;/p&gt;

&lt;p&gt;[MediatRBehavior(typeof(MySingletonPipelineBehavior), serviceLifetime: ServiceLifetime.Singleton, order: 1)]&lt;br&gt;&lt;br&gt;
public class MyQuery : IRequest&lt;/p&gt;




&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://github.com/jbogard/MediatR" rel="noopener noreferrer"&gt;MediatR GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/ITIXO/MediatR.Extensions.AttributedBehaviors" rel="noopener noreferrer"&gt;MediatR Attributes GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Last Words
&lt;/h3&gt;

&lt;p&gt;I appreciate your attention. I have a list of non-restricted links for each of my blog-post &lt;a href="https://danielrusnok.medium.com/daniel-rusnok-publications-9bbe82df24ab" rel="noopener noreferrer"&gt;here&lt;/a&gt;. I am part of the &lt;a href="https://www.itixo.com" rel="noopener noreferrer"&gt;Itixo&lt;/a&gt; company organizing the biggest&amp;nbsp;.NET conference in Central Europe, &lt;a href="https://www.updateconference.net/en" rel="noopener noreferrer"&gt;Update Conference Prague&lt;/a&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Further Reading
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/from-monolith-to-microservices-in-5-minutes-83069677d021" rel="noopener noreferrer"&gt;&lt;strong&gt;From Monolith to Microservices in 5 Minutes&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
_a microservice architectural style is an approach to developing a single application as a suite of small services —…_levelup.gitconnected.com&lt;/a&gt;&lt;a href="https://levelup.gitconnected.com/from-monolith-to-microservices-in-5-minutes-83069677d021" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/let-me-hear-you-screaming-architecture-3adcc02f2ca3" rel="noopener noreferrer"&gt;&lt;strong&gt;Functional Organization of Folders &amp;amp; Screaming Architecture&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
_The architecture should scream the intent of the system — Uncle Bob_levelup.gitconnected.com&lt;/a&gt;&lt;a href="https://levelup.gitconnected.com/let-me-hear-you-screaming-architecture-3adcc02f2ca3" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/layers-in-software-architecture-that-every-sofware-architect-should-know-76b2452b9d9a" rel="noopener noreferrer"&gt;&lt;strong&gt;Layers in Software Architecture that Every Sofware Architect should Know&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
_“All architectures have the same objective - the separation of concerns. They all achieve it by dividing the software…_levelup.gitconnected.com&lt;/a&gt;&lt;a href="https://levelup.gitconnected.com/layers-in-software-architecture-that-every-sofware-architect-should-know-76b2452b9d9a" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/3-domain-centric-architectures-every-software-developer-should-know-a15727ada79f" rel="noopener noreferrer"&gt;&lt;strong&gt;3 Domain-Centric Architectures Every Software Developer Should Know&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
_The first concern of the architect is to make sure that the house is usable, it is not to ensure that the house is made…_levelup.gitconnected.com&lt;/a&gt;&lt;a href="https://levelup.gitconnected.com/3-domain-centric-architectures-every-software-developer-should-know-a15727ada79f" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;







&lt;p&gt;&lt;em&gt;If this was useful, you might also like &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/ugly-dependency-graph-the-mediator-design-pattern-is-the-solution-for-you-8b35df60558b" rel="noopener noreferrer"&gt;Ugly dependency graph? The Mediator Design Pattern is the solution for you.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/decoupling-with-chain-of-responsibility-pattern-in-c-1273329ed923" rel="noopener noreferrer"&gt;Decoupling with Chain of Responsibility Pattern in C#&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/3-cqrs-architectures-that-every-software-architect-should-know-a7f69aae8b6c" rel="noopener noreferrer"&gt;3 CQRS Architectures that Every Software Architect Should Know&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/3-different-ways-to-implement-value-object-in-csharp-10-d8f43e1fa4dc" rel="noopener noreferrer"&gt;3 Different Ways to Implement Value Object in C# 10&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>programming</category>
      <category>architecture</category>
    </item>
    <item>
      <title>How to Implement Azure Functions in any Language with Custom Handlers</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Mon, 06 Jul 2026 15:10:41 +0000</pubDate>
      <link>https://dev.to/danielrusnok/how-to-implement-azure-functions-in-any-language-with-custom-handlers-2b8k</link>
      <guid>https://dev.to/danielrusnok/how-to-implement-azure-functions-in-any-language-with-custom-handlers-2b8k</guid>
      <description>&lt;h3&gt;
  
  
  How&amp;nbsp;to&amp;nbsp;Implement&amp;nbsp;Azure&amp;nbsp;Functions&amp;nbsp;in&amp;nbsp;any&amp;nbsp;Language&amp;nbsp;with&amp;nbsp;Custom&amp;nbsp;Handlers
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Introduction&amp;nbsp;of&amp;nbsp;Custom&amp;nbsp;Handlers&amp;nbsp;with&amp;nbsp;Demo&amp;nbsp;using&amp;nbsp;Go&amp;nbsp;Language.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhloxx303whv6y3z5jcvd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhloxx303whv6y3z5jcvd.png" alt="How to Implement Azure Functions in any Language with Custom Handlers cover image" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;
Azure&amp;nbsp;Functions&amp;nbsp;with&amp;nbsp;Go&amp;nbsp;Language



&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Every&amp;nbsp;Azure&amp;nbsp;Function&amp;nbsp;has&amp;nbsp;its&amp;nbsp;handler.&amp;nbsp;Azure&amp;nbsp;Functions&amp;nbsp;supports&amp;nbsp;handler&amp;nbsp;implementations&amp;nbsp;in&amp;nbsp;many&amp;nbsp;different&amp;nbsp;languages&amp;nbsp;but&amp;nbsp;they&amp;nbsp;may&amp;nbsp;not&amp;nbsp;provide&amp;nbsp;a&amp;nbsp;native&amp;nbsp;implementation&amp;nbsp;in&amp;nbsp;your&amp;nbsp;favorite&amp;nbsp;language.&amp;nbsp;That&amp;nbsp;is&amp;nbsp;where&amp;nbsp;Custom&amp;nbsp;Handlers&amp;nbsp;comes&amp;nbsp;at&amp;nbsp;the&amp;nbsp;scene.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;language&amp;nbsp;of&amp;nbsp;your&amp;nbsp;choice&amp;nbsp;must&amp;nbsp;support&amp;nbsp;HTTP&amp;nbsp;communication&amp;nbsp;because&amp;nbsp;Custom&amp;nbsp;Handler&amp;nbsp;is&amp;nbsp;a&amp;nbsp;web&amp;nbsp;server&amp;nbsp;that&amp;nbsp;receives&amp;nbsp;events&amp;nbsp;from&amp;nbsp;Functions&amp;nbsp;Host&amp;nbsp;modified&amp;nbsp;into&amp;nbsp;HTTP&amp;nbsp;requests&amp;nbsp;with&amp;nbsp;JSON&amp;nbsp;payloads.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff6jb1j35zxj4jxlzzad5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff6jb1j35zxj4jxlzzad5.png" alt="Illustration" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;
Communication&amp;nbsp;Diagram



&lt;p&gt;&lt;strong&gt;Functions&amp;nbsp;Host&lt;/strong&gt;&amp;nbsp;is&amp;nbsp;a&amp;nbsp;bunch&amp;nbsp;of&amp;nbsp;JSON&amp;nbsp;configuration&amp;nbsp;files&amp;nbsp;where&amp;nbsp;you&amp;nbsp;will&amp;nbsp;define&amp;nbsp;which&amp;nbsp;trigger&amp;nbsp;and&amp;nbsp;bindings&amp;nbsp;you&amp;nbsp;want&amp;nbsp;to&amp;nbsp;use&amp;nbsp;and&amp;nbsp;of&amp;nbsp;course&amp;nbsp;the&amp;nbsp;path&amp;nbsp;to&amp;nbsp;the&amp;nbsp;executable&amp;nbsp;file,&amp;nbsp;which&amp;nbsp;is&amp;nbsp;our&amp;nbsp;&lt;strong&gt;Custom&amp;nbsp;Handler&lt;/strong&gt;&amp;nbsp;(Web&amp;nbsp;Server).&lt;/p&gt;

&lt;p&gt;Once&amp;nbsp;the&amp;nbsp;&lt;strong&gt;Trigger&lt;/strong&gt;&amp;nbsp;activates&amp;nbsp;by&amp;nbsp;event,&amp;nbsp;the&amp;nbsp;Functions&amp;nbsp;Host&amp;nbsp;sends&amp;nbsp;a&amp;nbsp;request&amp;nbsp;payload&amp;nbsp;to&amp;nbsp;the&amp;nbsp;Web&amp;nbsp;Server.&amp;nbsp;The&amp;nbsp;payload&amp;nbsp;can&amp;nbsp;hold&amp;nbsp;trigger&amp;nbsp;and&amp;nbsp;input&amp;nbsp;binding&amp;nbsp;data.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;&lt;strong&gt;Web&amp;nbsp;Server&lt;/strong&gt;&amp;nbsp;invokes&amp;nbsp;the&amp;nbsp;function&amp;nbsp;and&amp;nbsp;possibly&amp;nbsp;returns&amp;nbsp;a&amp;nbsp;response&amp;nbsp;payload.&amp;nbsp;A&amp;nbsp;response&amp;nbsp;payload&amp;nbsp;can&amp;nbsp;be&amp;nbsp;used&amp;nbsp;for&amp;nbsp;output&amp;nbsp;binding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo
&lt;/h3&gt;

&lt;p&gt;The&amp;nbsp;source&amp;nbsp;code&amp;nbsp;can&amp;nbsp;be&amp;nbsp;found&amp;nbsp;on&amp;nbsp;my&amp;nbsp;&lt;a href="https://github.com/DannyRusnok/CustomHandlerFunctionsApp" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Things&amp;nbsp;you&amp;nbsp;Need
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual&amp;nbsp;Studio&amp;nbsp;Code&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions" rel="noopener noreferrer"&gt;Azure&amp;nbsp;Functions&amp;nbsp;Extension&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local#v2" rel="noopener noreferrer"&gt;Azure&amp;nbsp;Functions&amp;nbsp;Core&amp;nbsp;Tools&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://golang.org/doc/install" rel="noopener noreferrer"&gt;Go&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Create&amp;nbsp;Project
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftq7tihmflx9q6o6oh7sa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftq7tihmflx9q6o6oh7sa.png" alt="Illustration" width="600" height="258"&gt;&lt;/a&gt;&lt;/p&gt;
Location&amp;nbsp;of&amp;nbsp;Create&amp;nbsp;New&amp;nbsp;Project&amp;nbsp;Button



&lt;ol&gt;
&lt;li&gt; Click&amp;nbsp;on&amp;nbsp;the&amp;nbsp;button&amp;nbsp;highlighted&amp;nbsp;in&amp;nbsp;the&amp;nbsp;image&amp;nbsp;to&amp;nbsp;create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;project.&lt;/li&gt;
&lt;li&gt; You&amp;nbsp;will&amp;nbsp;be&amp;nbsp;asked&amp;nbsp;to&amp;nbsp;choose&amp;nbsp;basic&amp;nbsp;settings.&amp;nbsp;Select&amp;nbsp;&lt;strong&gt;Custom&lt;/strong&gt;&amp;nbsp;language,&amp;nbsp;&lt;strong&gt;HTTP&amp;nbsp;Trigger&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;HttpExample&lt;/strong&gt;&amp;nbsp;as&amp;nbsp;a&amp;nbsp;name&amp;nbsp;of&amp;nbsp;the&amp;nbsp;function,&amp;nbsp;and&amp;nbsp;&lt;strong&gt;Anonymous&lt;/strong&gt;&amp;nbsp;authorization&amp;nbsp;level&amp;nbsp;to&amp;nbsp;define&amp;nbsp;Function&amp;nbsp;Host.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Create&amp;nbsp;a&amp;nbsp;Handler
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt; Create&amp;nbsp;a&amp;nbsp;file&amp;nbsp;in&amp;nbsp;the&amp;nbsp;root&amp;nbsp;folder&amp;nbsp;and&amp;nbsp;save&amp;nbsp;it&amp;nbsp;as&amp;nbsp;&lt;code&gt;handler.go.&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; Copy/Paste&amp;nbsp;this&amp;nbsp;code&amp;nbsp;into&amp;nbsp;the&amp;nbsp;file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The&amp;nbsp;function&amp;nbsp;&lt;code&gt;helloHandler&lt;/code&gt;&amp;nbsp;is&amp;nbsp;printing&amp;nbsp;a&amp;nbsp;simple&amp;nbsp;message&amp;nbsp;as&amp;nbsp;an&amp;nbsp;HTTP&amp;nbsp;response.&amp;nbsp;The&amp;nbsp;form&amp;nbsp;of&amp;nbsp;the&amp;nbsp;message&amp;nbsp;depends&amp;nbsp;on&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;&lt;code&gt;name&lt;/code&gt;parameter&amp;nbsp;in&amp;nbsp;the&amp;nbsp;HTTP&amp;nbsp;request.&lt;/p&gt;

&lt;p&gt;If&amp;nbsp;the&amp;nbsp;value&amp;nbsp;&lt;code&gt;name&lt;/code&gt;&amp;nbsp;is&amp;nbsp;set,&amp;nbsp;the&amp;nbsp;response&amp;nbsp;will&amp;nbsp;be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello, {name}. This HTTP triggered function executed successfully.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If&amp;nbsp;the&amp;nbsp;value&amp;nbsp;&lt;code&gt;name&lt;/code&gt;&amp;nbsp;is&amp;nbsp;&lt;strong&gt;NOT&lt;/strong&gt;&amp;nbsp;set,&amp;nbsp;the&amp;nbsp;response&amp;nbsp;will&amp;nbsp;look&amp;nbsp;like&amp;nbsp;this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3.&amp;nbsp;Open&amp;nbsp;a&amp;nbsp;command&amp;nbsp;line&amp;nbsp;or&amp;nbsp;PowerShell&amp;nbsp;and&amp;nbsp;compile&amp;nbsp;Custom&amp;nbsp;Handler&amp;nbsp;into&amp;nbsp;an&amp;nbsp;executable&amp;nbsp;file&amp;nbsp;named&amp;nbsp;&lt;code&gt;handler.exe&lt;/code&gt;&amp;nbsp;by&amp;nbsp;using&amp;nbsp;this&amp;nbsp;command&amp;nbsp;(installed&amp;nbsp;Go):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go build handler.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Modify&amp;nbsp;host.json
&lt;/h4&gt;

&lt;p&gt;Now&amp;nbsp;you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;specify&amp;nbsp;the&amp;nbsp;file&amp;nbsp;path&amp;nbsp;for&amp;nbsp;&lt;code&gt;customHandler:defaulteExecutablePath&lt;/code&gt;&amp;nbsp;property&amp;nbsp;in&amp;nbsp;host.json.&amp;nbsp;If&amp;nbsp;you&amp;nbsp;created&amp;nbsp;the&amp;nbsp;&lt;code&gt;*.exe&lt;/code&gt;&amp;nbsp;file&amp;nbsp;in&amp;nbsp;the&amp;nbsp;root&amp;nbsp;folder,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;set&amp;nbsp;the&amp;nbsp;value&amp;nbsp;to&amp;nbsp;&lt;code&gt;handler&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You&amp;nbsp;also&amp;nbsp;need&amp;nbsp;to&amp;nbsp;set&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;&lt;code&gt;customHandler:eneableForwardingHttpRequest&lt;/code&gt;&amp;nbsp;to&amp;nbsp;&lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;On a side note — if you like getting your tooling set up properly like this, I put together a short free email series, &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt;, on giving AI coding agents a persistent memory.&lt;/p&gt;

&lt;h4&gt;
  
  
  Run&amp;nbsp;the&amp;nbsp;function
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt; Open&amp;nbsp;a&amp;nbsp;command&amp;nbsp;line&amp;nbsp;or&amp;nbsp;PowerShell&amp;nbsp;again&amp;nbsp;and&amp;nbsp;run&amp;nbsp;this&amp;nbsp;command&amp;nbsp;(installed&amp;nbsp;Azure&amp;nbsp;Function&amp;nbsp;Core&amp;nbsp;Tools)&amp;nbsp;in&amp;nbsp;the&amp;nbsp;root&amp;nbsp;folder:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;func start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.&amp;nbsp;Navigate&amp;nbsp;to&amp;nbsp;the&amp;nbsp;following&amp;nbsp;URL&amp;nbsp;to&amp;nbsp;execute&amp;nbsp;the&amp;nbsp;function:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[http://localhost:7071/api/HttpExample?name=medium](http://localhost:7071/api/HttpExample?name=medium)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhhd0smmzteoh2376rn3t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhhd0smmzteoh2376rn3t.png" alt="Illustration" width="518" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If&amp;nbsp;you&amp;nbsp;get&amp;nbsp;a&amp;nbsp;similar&amp;nbsp;response&amp;nbsp;as&amp;nbsp;me,&amp;nbsp;you&amp;nbsp;were&amp;nbsp;successful.&lt;/p&gt;

&lt;p&gt;3.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;also&amp;nbsp;take&amp;nbsp;a&amp;nbsp;look&amp;nbsp;into&amp;nbsp;the&amp;nbsp;console&amp;nbsp;and&amp;nbsp;see&amp;nbsp;if&amp;nbsp;your&amp;nbsp;function&amp;nbsp;was&amp;nbsp;executed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fckvj31tp3kqtynqg9vx9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fckvj31tp3kqtynqg9vx9.png" alt="Illustration" width="799" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;We&amp;nbsp;found&amp;nbsp;out&amp;nbsp;what&amp;nbsp;Custom&amp;nbsp;Handlers&amp;nbsp;of&amp;nbsp;Azure&amp;nbsp;Functions&amp;nbsp;are,&amp;nbsp;how&amp;nbsp;they&amp;nbsp;work,&amp;nbsp;and&amp;nbsp;how&amp;nbsp;we&amp;nbsp;can&amp;nbsp;easily&amp;nbsp;implement&amp;nbsp;them&amp;nbsp;with&amp;nbsp;Go&amp;nbsp;language.&amp;nbsp;As&amp;nbsp;a&amp;nbsp;next&amp;nbsp;step,&amp;nbsp;I&amp;nbsp;would&amp;nbsp;recommend&amp;nbsp;that&amp;nbsp;you&amp;nbsp;should&amp;nbsp;try&amp;nbsp;to&amp;nbsp;publish&amp;nbsp;function&amp;nbsp;into&amp;nbsp;the&amp;nbsp;Azure.&lt;/p&gt;

&lt;p&gt;If&amp;nbsp;you&amp;nbsp;like&amp;nbsp;the&amp;nbsp;article,&amp;nbsp;give&amp;nbsp;it&amp;nbsp;a&amp;nbsp;few&amp;nbsp;claps.&amp;nbsp;Thank&amp;nbsp;you&amp;nbsp;for&amp;nbsp;your&amp;nbsp;time.&lt;/p&gt;

&lt;p&gt;If a topic like this is your kind of thing, you might also enjoy my free email series &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a few short lessons on giving AI coding tools a memory that sticks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-custom-handlers" rel="noopener noreferrer"&gt;Microsoft&amp;nbsp;documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  Pluralsight&amp;nbsp;course&amp;nbsp;by&amp;nbsp;Mark&amp;nbsp;Heath&amp;nbsp;—&amp;nbsp;&lt;a href="https://app.pluralsight.com/library/courses/microsoft-azure-developer-implement-azure-functions" rel="noopener noreferrer"&gt;Microsoft&amp;nbsp;Azure&amp;nbsp;Developer:&amp;nbsp;Implement&amp;nbsp;Azure&amp;nbsp;Functions.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Further&amp;nbsp;Reading
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;Free&amp;nbsp;Azure&amp;nbsp;Account&amp;nbsp;Step&amp;nbsp;by&amp;nbsp;Step&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;Guide&amp;nbsp;for&amp;nbsp;creating&amp;nbsp;a&amp;nbsp;free&amp;nbsp;Azure&amp;nbsp;account.&amp;nbsp;What&amp;nbsp;services&amp;nbsp;you&amp;nbsp;can&amp;nbsp;use&amp;nbsp;for&amp;nbsp;free?&amp;nbsp;What&amp;nbsp;is&amp;nbsp;Directory&amp;nbsp;or&amp;nbsp;subscription&amp;nbsp;and&amp;nbsp;what…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;levelup.gitconnected.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Cloud&amp;nbsp;computing&amp;nbsp;is&amp;nbsp;the&amp;nbsp;present&amp;nbsp;and&amp;nbsp;future&amp;nbsp;of&amp;nbsp;software&amp;nbsp;utilization,&amp;nbsp;development&amp;nbsp;and&amp;nbsp;hosting.&amp;nbsp;Let&amp;nbsp;me&amp;nbsp;introduce&amp;nbsp;you&amp;nbsp;its…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;levelup.gitconnected.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://danielrusnok.medium.com/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6" rel="noopener noreferrer"&gt;Understanding&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Groups&amp;nbsp;and&amp;nbsp;Azure&amp;nbsp;Resources&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://danielrusnok.medium.com/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6" rel="noopener noreferrer"&gt;Also&amp;nbsp;with&amp;nbsp;Guide&amp;nbsp;How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;your&amp;nbsp;First&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Group&amp;nbsp;and&amp;nbsp;Add&amp;nbsp;your&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Into&amp;nbsp;it.&lt;/a&gt;&lt;/em&gt;&lt;a href="https://danielrusnok.medium.com/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6" rel="noopener noreferrer"&gt;danielrusnok.medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://danielrusnok.medium.com/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;Choose&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Region&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://danielrusnok.medium.com/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;What&amp;nbsp;you&amp;nbsp;should&amp;nbsp;consider&amp;nbsp;before&amp;nbsp;choosing&amp;nbsp;Azure&amp;nbsp;Region?&amp;nbsp;How&amp;nbsp;Microsoft&amp;nbsp;geographically&amp;nbsp;divide&amp;nbsp;datacentres&amp;nbsp;position&amp;nbsp;to…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://danielrusnok.medium.com/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;danielrusnok.medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/danielrusnok" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tm54rf5555ym89o2ne4.png" alt="Illustration" width="200" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/introduction-to-cloud-computing-235e530b9fe0%5D%C2%A0%E2%80%94%C2%A0_Introduction%C2%A0to%C2%A0Cloud%C2%A0Computing_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/introduction-to-cloud-computing-235e530b9fe0]&amp;nbsp;—&amp;nbsp;_Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6%5D%C2%A0%E2%80%94%C2%A0_Understanding%C2%A0the%C2%A0Azure%C2%A0Resource%C2%A0Groups%C2%A0and%C2%A0Azure%C2%A0Resources_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6]&amp;nbsp;—&amp;nbsp;_Understanding&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Groups&amp;nbsp;and&amp;nbsp;Azure&amp;nbsp;Resources_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/from-monolith-to-microservices-in-5-minutes-83069677d021%5D%C2%A0%E2%80%94%C2%A0_From%C2%A0Monolith%C2%A0to%C2%A0Microservices%C2%A0in%C2%A05%C2%A0Minutes_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/from-monolith-to-microservices-in-5-minutes-83069677d021]&amp;nbsp;—&amp;nbsp;_From&amp;nbsp;Monolith&amp;nbsp;to&amp;nbsp;Microservices&amp;nbsp;in&amp;nbsp;5&amp;nbsp;Minutes_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/my-introduction-into-azure-service-fabric-de65cc72a7b5%5D%C2%A0%E2%80%94%C2%A0_My%C2%A0introduction%C2%A0into%C2%A0Azure%C2%A0Service%C2%A0Fabric_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/my-introduction-into-azure-service-fabric-de65cc72a7b5]&amp;nbsp;—&amp;nbsp;_My&amp;nbsp;introduction&amp;nbsp;into&amp;nbsp;Azure&amp;nbsp;Service&amp;nbsp;Fabric_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/no-more-mess-in-my-head-around-phrases-related-to-identity-in-computing-482cd0f8cad3%5D%C2%A0%E2%80%94%C2%A0_No%C2%A0More%C2%A0Mess%C2%A0in%C2%A0my%C2%A0Head%C2%A0Around%C2%A0Phrases%C2%A0Related%C2%A0to%C2%A0Identity%C2%A0in%C2%A0Computing_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/no-more-mess-in-my-head-around-phrases-related-to-identity-in-computing-482cd0f8cad3]&amp;nbsp;—&amp;nbsp;_No&amp;nbsp;More&amp;nbsp;Mess&amp;nbsp;in&amp;nbsp;my&amp;nbsp;Head&amp;nbsp;Around&amp;nbsp;Phrases&amp;nbsp;Related&amp;nbsp;to&amp;nbsp;Identity&amp;nbsp;in&amp;nbsp;Computing_&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>azure</category>
      <category>go</category>
      <category>serverless</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>3 Things that Change my Way of Thinking in 2020</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Sat, 04 Jul 2026 15:19:33 +0000</pubDate>
      <link>https://dev.to/danielrusnok/3-things-that-change-my-way-of-thinking-in-2020-24hb</link>
      <guid>https://dev.to/danielrusnok/3-things-that-change-my-way-of-thinking-in-2020-24hb</guid>
      <description>&lt;h3&gt;
  
  
  3&amp;nbsp;Things&amp;nbsp;that&amp;nbsp;Change&amp;nbsp;my&amp;nbsp;Way&amp;nbsp;of&amp;nbsp;Thinking&amp;nbsp;in&amp;nbsp;2020
&lt;/h3&gt;

&lt;h4&gt;
  
  
  This&amp;nbsp;is&amp;nbsp;a&amp;nbsp;list&amp;nbsp;of&amp;nbsp;things&amp;nbsp;that&amp;nbsp;completely&amp;nbsp;changed&amp;nbsp;me&amp;nbsp;in&amp;nbsp;2020,&amp;nbsp;and&amp;nbsp;it&amp;nbsp;was&amp;nbsp;not&amp;nbsp;the&amp;nbsp;COVID-19.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2o6y5sn70ajyxgg4hwc2.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2o6y5sn70ajyxgg4hwc2.jpeg" alt="3 Things that Change my Way of Thinking in 2020 cover image" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This&amp;nbsp;year&amp;nbsp;is&amp;nbsp;hard&amp;nbsp;for&amp;nbsp;all&amp;nbsp;of&amp;nbsp;us.&amp;nbsp;When&amp;nbsp;everybody&amp;nbsp;is&amp;nbsp;scared&amp;nbsp;of&amp;nbsp;how&amp;nbsp;global&amp;nbsp;warming&amp;nbsp;affects&amp;nbsp;humanity's&amp;nbsp;future,&amp;nbsp;other&amp;nbsp;catastrophes&amp;nbsp;came&amp;nbsp;by.&amp;nbsp;Large&amp;nbsp;fires&amp;nbsp;in&amp;nbsp;Australia,&amp;nbsp;COVID-19&amp;nbsp;Pandemic,&amp;nbsp;American&amp;nbsp;Riots,&amp;nbsp;and&amp;nbsp;recent&amp;nbsp;events,&amp;nbsp;the&amp;nbsp;Islamic&amp;nbsp;state’s&amp;nbsp;strikes&amp;nbsp;in&amp;nbsp;France&amp;nbsp;and&amp;nbsp;Austria.&lt;/p&gt;

&lt;p&gt;But&amp;nbsp;from&amp;nbsp;my&amp;nbsp;individual&amp;nbsp;perspective,&amp;nbsp;I&amp;nbsp;love&amp;nbsp;the&amp;nbsp;year&amp;nbsp;2020.&amp;nbsp;This&amp;nbsp;year&amp;nbsp;was&amp;nbsp;groundbreaking&amp;nbsp;for&amp;nbsp;my&amp;nbsp;career.&amp;nbsp;My&amp;nbsp;long-term&amp;nbsp;relationship&amp;nbsp;with&amp;nbsp;the&amp;nbsp;love&amp;nbsp;of&amp;nbsp;my&amp;nbsp;life&amp;nbsp;could&amp;nbsp;not&amp;nbsp;be&amp;nbsp;better,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;doubled&amp;nbsp;my&amp;nbsp;incomes&amp;nbsp;in&amp;nbsp;nine&amp;nbsp;months.&amp;nbsp;Here&amp;nbsp;is&amp;nbsp;what&amp;nbsp;happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Entrepreneurship
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzrm298r0y6vkqpopumj7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzrm298r0y6vkqpopumj7.jpeg" alt="Illustration" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last&amp;nbsp;year&amp;nbsp;was&amp;nbsp;the&amp;nbsp;last&amp;nbsp;time&amp;nbsp;I&amp;nbsp;was&amp;nbsp;an&amp;nbsp;employee.&amp;nbsp;I&amp;nbsp;quit&amp;nbsp;and&amp;nbsp;concluded&amp;nbsp;a&amp;nbsp;new&amp;nbsp;contract&amp;nbsp;with&amp;nbsp;the&amp;nbsp;same&amp;nbsp;company&amp;nbsp;I&amp;nbsp;worked&amp;nbsp;for,&amp;nbsp;but&amp;nbsp;this&amp;nbsp;time&amp;nbsp;as&amp;nbsp;a&amp;nbsp;hired&amp;nbsp;entrepreneur.&lt;/p&gt;

&lt;p&gt;Becoming&amp;nbsp;an&amp;nbsp;entrepreneur&amp;nbsp;was&amp;nbsp;not&amp;nbsp;my&amp;nbsp;idea.&amp;nbsp;The&amp;nbsp;origin&amp;nbsp;of&amp;nbsp;it&amp;nbsp;comes&amp;nbsp;from&amp;nbsp;the&amp;nbsp;CEO&amp;nbsp;of&amp;nbsp;the&amp;nbsp;mentioned&amp;nbsp;company&amp;nbsp;and&amp;nbsp;also&amp;nbsp;my&amp;nbsp;good&amp;nbsp;friend.&amp;nbsp;“It&amp;nbsp;will&amp;nbsp;suit&amp;nbsp;you&amp;nbsp;and&amp;nbsp;open&amp;nbsp;doors&amp;nbsp;for&amp;nbsp;you.&amp;nbsp;You’ll&amp;nbsp;see.”&amp;nbsp;He&amp;nbsp;told&amp;nbsp;me.&amp;nbsp;And&amp;nbsp;in&amp;nbsp;a&amp;nbsp;few&amp;nbsp;months,&amp;nbsp;I&amp;nbsp;find&amp;nbsp;out&amp;nbsp;he&amp;nbsp;was&amp;nbsp;right.&lt;/p&gt;

&lt;p&gt;In&amp;nbsp;the&amp;nbsp;spring,&amp;nbsp;the&amp;nbsp;company's&amp;nbsp;IT&amp;nbsp;specialist,&amp;nbsp;where&amp;nbsp;my&amp;nbsp;beloved&amp;nbsp;works,&amp;nbsp;suddenly&amp;nbsp;end&amp;nbsp;his&amp;nbsp;contract,&amp;nbsp;and&amp;nbsp;that&amp;nbsp;company&amp;nbsp;needs&amp;nbsp;to&amp;nbsp;find&amp;nbsp;someone&amp;nbsp;immediately&amp;nbsp;to&amp;nbsp;take&amp;nbsp;his&amp;nbsp;place.&lt;/p&gt;

&lt;p&gt;Once&amp;nbsp;you&amp;nbsp;are&amp;nbsp;an&amp;nbsp;entrepreneur,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;have&amp;nbsp;as&amp;nbsp;many&amp;nbsp;customers&amp;nbsp;as&amp;nbsp;you&amp;nbsp;can&amp;nbsp;handle.&amp;nbsp;So&amp;nbsp;I&amp;nbsp;immediately&amp;nbsp;took&amp;nbsp;his&amp;nbsp;place&amp;nbsp;and&amp;nbsp;migrated&amp;nbsp;all&amp;nbsp;of&amp;nbsp;the&amp;nbsp;company’s&amp;nbsp;IT&amp;nbsp;obligations&amp;nbsp;under&amp;nbsp;my&amp;nbsp;wings.&lt;/p&gt;

&lt;p&gt;After&amp;nbsp;a&amp;nbsp;tough&amp;nbsp;week&amp;nbsp;of&amp;nbsp;work,&amp;nbsp;the&amp;nbsp;work&amp;nbsp;was&amp;nbsp;done,&amp;nbsp;and&amp;nbsp;now&amp;nbsp;it&amp;nbsp;cost&amp;nbsp;me&amp;nbsp;a&amp;nbsp;few&amp;nbsp;hours&amp;nbsp;of&amp;nbsp;work&amp;nbsp;every&amp;nbsp;month,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;am&amp;nbsp;paid&amp;nbsp;more&amp;nbsp;than&amp;nbsp;well.&amp;nbsp;I&amp;nbsp;couldn’t&amp;nbsp;achieve&amp;nbsp;it&amp;nbsp;if&amp;nbsp;I&amp;nbsp;stay&amp;nbsp;an&amp;nbsp;employee.&lt;/p&gt;

&lt;p&gt;Entrepreneurship&amp;nbsp;brings&amp;nbsp;you&amp;nbsp;the&amp;nbsp;freedom&amp;nbsp;to&amp;nbsp;do&amp;nbsp;more&amp;nbsp;and&amp;nbsp;help&amp;nbsp;others&amp;nbsp;more.&amp;nbsp;It&amp;nbsp;unlocks&amp;nbsp;a&amp;nbsp;different&amp;nbsp;way&amp;nbsp;of&amp;nbsp;thinking&amp;nbsp;about&amp;nbsp;work-life.&lt;/p&gt;

&lt;h3&gt;
  
  
  Psychology
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F86diki88jrlm7ohykqqf.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F86diki88jrlm7ohykqqf.jpeg" alt="Illustration" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I&amp;nbsp;am&amp;nbsp;Youtube&amp;nbsp;addicted.&amp;nbsp;Especially&amp;nbsp;when&amp;nbsp;it&amp;nbsp;comes&amp;nbsp;to&amp;nbsp;stand-up&amp;nbsp;comedy&amp;nbsp;or&amp;nbsp;TED&amp;nbsp;talks.&amp;nbsp;Someday&amp;nbsp;in&amp;nbsp;February,&amp;nbsp;I&amp;nbsp;came&amp;nbsp;across&amp;nbsp;the&amp;nbsp;famous&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=aMcjxSThD54&amp;amp;ab_channel=Channel4News" rel="noopener noreferrer"&gt;interview&amp;nbsp;of&amp;nbsp;Cathy&amp;nbsp;Newman&amp;nbsp;with&amp;nbsp;Dr.&amp;nbsp;Jordan&amp;nbsp;B.&amp;nbsp;Peterson&lt;/a&gt;.&amp;nbsp;The&amp;nbsp;interview&amp;nbsp;topic&amp;nbsp;should&amp;nbsp;be&amp;nbsp;the&amp;nbsp;doctor’s&amp;nbsp;new&amp;nbsp;book,&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/12_Rules_for_Life" rel="noopener noreferrer"&gt;The&amp;nbsp;12&amp;nbsp;Rules&amp;nbsp;for&amp;nbsp;Life&amp;nbsp;—&amp;nbsp;An&amp;nbsp;Antidote&amp;nbsp;to&amp;nbsp;Chaos&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;From&amp;nbsp;my&amp;nbsp;perspective,&amp;nbsp;it&amp;nbsp;was&amp;nbsp;obvious&amp;nbsp;that&amp;nbsp;the&amp;nbsp;interviewer&amp;nbsp;does&amp;nbsp;not&amp;nbsp;read&amp;nbsp;the&amp;nbsp;book&amp;nbsp;nor&amp;nbsp;read&amp;nbsp;it&amp;nbsp;with&amp;nbsp;an&amp;nbsp;open&amp;nbsp;mind.&amp;nbsp;Peterson’s&amp;nbsp;comments&amp;nbsp;on&amp;nbsp;young&amp;nbsp;men’s&amp;nbsp;mindsets&amp;nbsp;touched&amp;nbsp;me,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;decided&amp;nbsp;to&amp;nbsp;search&amp;nbsp;for&amp;nbsp;another&amp;nbsp;his&amp;nbsp;interviews&amp;nbsp;or&amp;nbsp;lectures.&lt;/p&gt;

&lt;p&gt;Therefore,&amp;nbsp;I&amp;nbsp;found&amp;nbsp;out&amp;nbsp;that&amp;nbsp;he&amp;nbsp;uploads&amp;nbsp;all&amp;nbsp;of&amp;nbsp;his&amp;nbsp;psychology&amp;nbsp;lectures&amp;nbsp;for&amp;nbsp;free,&amp;nbsp;and&amp;nbsp;now&amp;nbsp;I&amp;nbsp;can’t&amp;nbsp;be&amp;nbsp;more&amp;nbsp;thankful.&amp;nbsp;It&amp;nbsp;answers&amp;nbsp;so&amp;nbsp;many&amp;nbsp;questions&amp;nbsp;every&amp;nbsp;young&amp;nbsp;man&amp;nbsp;has.&amp;nbsp;I&amp;nbsp;recommend&amp;nbsp;you&amp;nbsp;read&amp;nbsp;his&amp;nbsp;book&amp;nbsp;or&amp;nbsp;play&amp;nbsp;one&amp;nbsp;of&amp;nbsp;those&amp;nbsp;videos.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;main&amp;nbsp;thought&amp;nbsp;I&amp;nbsp;learn&amp;nbsp;from&amp;nbsp;him&amp;nbsp;is&amp;nbsp;that&amp;nbsp;life's&amp;nbsp;meaning&amp;nbsp;can&amp;nbsp;be&amp;nbsp;found&amp;nbsp;in&amp;nbsp;responsibility.&amp;nbsp;How&amp;nbsp;much&amp;nbsp;responsibility&amp;nbsp;you&amp;nbsp;can&amp;nbsp;take,&amp;nbsp;that&amp;nbsp;much&amp;nbsp;is&amp;nbsp;your&amp;nbsp;life&amp;nbsp;meaningful&amp;nbsp;for&amp;nbsp;you,&amp;nbsp;your&amp;nbsp;loved&amp;nbsp;ones,&amp;nbsp;your&amp;nbsp;community,&amp;nbsp;and&amp;nbsp;even&amp;nbsp;for&amp;nbsp;the&amp;nbsp;world.&lt;/p&gt;

&lt;p&gt;Take&amp;nbsp;responsibility&amp;nbsp;for&amp;nbsp;your&amp;nbsp;life&amp;nbsp;on&amp;nbsp;your&amp;nbsp;shoulders.&amp;nbsp;Stop&amp;nbsp;accusing&amp;nbsp;the&amp;nbsp;law,&amp;nbsp;the&amp;nbsp;rich&amp;nbsp;people,&amp;nbsp;or&amp;nbsp;the&amp;nbsp;economy&amp;nbsp;for&amp;nbsp;your&amp;nbsp;problems.&amp;nbsp;You&amp;nbsp;are&amp;nbsp;the&amp;nbsp;one&amp;nbsp;who&amp;nbsp;can&amp;nbsp;change&amp;nbsp;everything&amp;nbsp;in&amp;nbsp;your&amp;nbsp;life.&lt;/p&gt;

&lt;p&gt;Don’t&amp;nbsp;wait&amp;nbsp;until&amp;nbsp;some&amp;nbsp;politicians&amp;nbsp;discuss&amp;nbsp;the&amp;nbsp;problems&amp;nbsp;of&amp;nbsp;groups&amp;nbsp;in&amp;nbsp;society&amp;nbsp;you&amp;nbsp;are&amp;nbsp;part&amp;nbsp;of.&amp;nbsp;The&amp;nbsp;solution&amp;nbsp;to&amp;nbsp;your&amp;nbsp;problem&amp;nbsp;can&amp;nbsp;be&amp;nbsp;only&amp;nbsp;one&amp;nbsp;google&amp;nbsp;search&amp;nbsp;away.&lt;/p&gt;

&lt;h3&gt;
  
  
  Physical&amp;nbsp;Health
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fewkd4cpqfwcw4yhta8yl.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fewkd4cpqfwcw4yhta8yl.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I&amp;nbsp;was&amp;nbsp;good&amp;nbsp;at&amp;nbsp;sports&amp;nbsp;in&amp;nbsp;my&amp;nbsp;whole&amp;nbsp;childhood.&amp;nbsp;I&amp;nbsp;played&amp;nbsp;hockey&amp;nbsp;for&amp;nbsp;ten&amp;nbsp;years.&amp;nbsp;Hockey&amp;nbsp;is&amp;nbsp;a&amp;nbsp;big&amp;nbsp;deal&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Czech&amp;nbsp;Republic,&amp;nbsp;and&amp;nbsp;many&amp;nbsp;young&amp;nbsp;men&amp;nbsp;start&amp;nbsp;with&amp;nbsp;hockey&amp;nbsp;at&amp;nbsp;a&amp;nbsp;really&amp;nbsp;young&amp;nbsp;age.&lt;/p&gt;

&lt;p&gt;More&amp;nbsp;precisely,&amp;nbsp;I&amp;nbsp;was&amp;nbsp;a&amp;nbsp;goalie.&amp;nbsp;I&amp;nbsp;wasn’t&amp;nbsp;in&amp;nbsp;a&amp;nbsp;stable&amp;nbsp;form,&amp;nbsp;once&amp;nbsp;I&amp;nbsp;catch&amp;nbsp;every&amp;nbsp;puck,&amp;nbsp;once&amp;nbsp;I&amp;nbsp;got&amp;nbsp;15&amp;nbsp;goals&amp;nbsp;in&amp;nbsp;one&amp;nbsp;match.&amp;nbsp;Today&amp;nbsp;I&amp;nbsp;think&amp;nbsp;it&amp;nbsp;was&amp;nbsp;unstable&amp;nbsp;self-esteem.&amp;nbsp;In&amp;nbsp;the&amp;nbsp;last&amp;nbsp;two&amp;nbsp;years&amp;nbsp;of&amp;nbsp;my&amp;nbsp;career,&amp;nbsp;I&amp;nbsp;was&amp;nbsp;bullied&amp;nbsp;by&amp;nbsp;the&amp;nbsp;team&amp;nbsp;members&amp;nbsp;for&amp;nbsp;my&amp;nbsp;bad&amp;nbsp;results&amp;nbsp;on&amp;nbsp;the&amp;nbsp;ice.&lt;/p&gt;

&lt;p&gt;Suddenly,&amp;nbsp;I&amp;nbsp;quit&amp;nbsp;hockey.&amp;nbsp;It&amp;nbsp;was&amp;nbsp;a&amp;nbsp;busy&amp;nbsp;childhood.&amp;nbsp;Four&amp;nbsp;pieces&amp;nbsp;of&amp;nbsp;training&amp;nbsp;weekly&amp;nbsp;plus&amp;nbsp;match&amp;nbsp;on&amp;nbsp;the&amp;nbsp;weekend&amp;nbsp;in&amp;nbsp;winter&amp;nbsp;and&amp;nbsp;five&amp;nbsp;pieces&amp;nbsp;of&amp;nbsp;training&amp;nbsp;in&amp;nbsp;summer.&amp;nbsp;It&amp;nbsp;was&amp;nbsp;a&amp;nbsp;relief.&lt;/p&gt;

&lt;p&gt;Since&amp;nbsp;then,&amp;nbsp;I&amp;nbsp;never&amp;nbsp;workout&amp;nbsp;for&amp;nbsp;more&amp;nbsp;than&amp;nbsp;one&amp;nbsp;week.&amp;nbsp;But&amp;nbsp;this&amp;nbsp;year,&amp;nbsp;I&amp;nbsp;find&amp;nbsp;out&amp;nbsp;through&amp;nbsp;my&amp;nbsp;study&amp;nbsp;that&amp;nbsp;mental&amp;nbsp;health&amp;nbsp;relies&amp;nbsp;heavily&amp;nbsp;on&amp;nbsp;physical&amp;nbsp;health,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;want&amp;nbsp;to&amp;nbsp;work&amp;nbsp;a&amp;nbsp;whole&amp;nbsp;day&amp;nbsp;and&amp;nbsp;don’t&amp;nbsp;feel&amp;nbsp;tired&amp;nbsp;the&amp;nbsp;next&amp;nbsp;morning.&amp;nbsp;So&amp;nbsp;I&amp;nbsp;want&amp;nbsp;to&amp;nbsp;do&amp;nbsp;something&amp;nbsp;about&amp;nbsp;it.&lt;/p&gt;

&lt;p&gt;First,&amp;nbsp;I&amp;nbsp;cut&amp;nbsp;the&amp;nbsp;amount&amp;nbsp;of&amp;nbsp;alcohol&amp;nbsp;consumption&amp;nbsp;to&amp;nbsp;almost&amp;nbsp;zero.&amp;nbsp;As&amp;nbsp;a&amp;nbsp;Czech&amp;nbsp;man,&amp;nbsp;I&amp;nbsp;don’t&amp;nbsp;count&amp;nbsp;one&amp;nbsp;beer&amp;nbsp;after&amp;nbsp;lunch&amp;nbsp;into&amp;nbsp;it.&amp;nbsp;But&amp;nbsp;these&amp;nbsp;situations&amp;nbsp;or&amp;nbsp;rarer&amp;nbsp;than&amp;nbsp;ever&amp;nbsp;before.&lt;/p&gt;

&lt;p&gt;Second,&amp;nbsp;I&amp;nbsp;talked&amp;nbsp;to&amp;nbsp;my&amp;nbsp;girlfriend&amp;nbsp;about&amp;nbsp;the&amp;nbsp;food,&amp;nbsp;and&amp;nbsp;she&amp;nbsp;taught&amp;nbsp;me&amp;nbsp;the&amp;nbsp;basics&amp;nbsp;of&amp;nbsp;balancing&amp;nbsp;my&amp;nbsp;daily&amp;nbsp;food&amp;nbsp;income.&amp;nbsp;Now&amp;nbsp;I&amp;nbsp;am&amp;nbsp;eating&amp;nbsp;mashed&amp;nbsp;eggs&amp;nbsp;every&amp;nbsp;morning&amp;nbsp;and&amp;nbsp;dine&amp;nbsp;a&amp;nbsp;tuna&amp;nbsp;salad&amp;nbsp;every&amp;nbsp;evening,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;feel&amp;nbsp;so&amp;nbsp;light&amp;nbsp;every&amp;nbsp;morning&amp;nbsp;I&amp;nbsp;couldn't&amp;nbsp;believe&amp;nbsp;it.&lt;/p&gt;

&lt;p&gt;Third,&amp;nbsp;I&amp;nbsp;am&amp;nbsp;daily&amp;nbsp;consuming&amp;nbsp;a&amp;nbsp;dietary&amp;nbsp;supplement.&amp;nbsp;As&amp;nbsp;a&amp;nbsp;central-Europeans,&amp;nbsp;we&amp;nbsp;are&amp;nbsp;lacking&amp;nbsp;Omega&amp;nbsp;3&amp;nbsp;acids&amp;nbsp;from&amp;nbsp;seafood,&amp;nbsp;and&amp;nbsp;almost&amp;nbsp;every&amp;nbsp;individual&amp;nbsp;lacks&amp;nbsp;Magnesium.&amp;nbsp;Plus,&amp;nbsp;some&amp;nbsp;complex&amp;nbsp;vitamins,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;feel&amp;nbsp;healthy&amp;nbsp;like&amp;nbsp;never&amp;nbsp;before.&amp;nbsp;But&amp;nbsp;this&amp;nbsp;is&amp;nbsp;a&amp;nbsp;recipe&amp;nbsp;for&amp;nbsp;me,&amp;nbsp;read&amp;nbsp;something&amp;nbsp;about&amp;nbsp;it&amp;nbsp;or&amp;nbsp;talk&amp;nbsp;to&amp;nbsp;your&amp;nbsp;doctor&amp;nbsp;before&amp;nbsp;you&amp;nbsp;take&amp;nbsp;any&amp;nbsp;action.&lt;/p&gt;

&lt;p&gt;Now&amp;nbsp;I&amp;nbsp;feel&amp;nbsp;physically&amp;nbsp;capable&amp;nbsp;of&amp;nbsp;anything,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;even&amp;nbsp;started&amp;nbsp;with&amp;nbsp;a&amp;nbsp;light&amp;nbsp;daily&amp;nbsp;work-out.&amp;nbsp;It&amp;nbsp;has&amp;nbsp;been&amp;nbsp;two&amp;nbsp;months&amp;nbsp;now,&amp;nbsp;and&amp;nbsp;my&amp;nbsp;back&amp;nbsp;hurts&amp;nbsp;are&amp;nbsp;gone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Educate&amp;nbsp;yourself.&amp;nbsp;Take&amp;nbsp;responsibility&amp;nbsp;for&amp;nbsp;your&amp;nbsp;life.&amp;nbsp;Don’t&amp;nbsp;rely&amp;nbsp;on&amp;nbsp;any&amp;nbsp;system&amp;nbsp;or&amp;nbsp;anyone&amp;nbsp;else.&lt;/p&gt;

&lt;p&gt;Study&amp;nbsp;your&amp;nbsp;body&amp;nbsp;more&amp;nbsp;and&amp;nbsp;find&amp;nbsp;your&amp;nbsp;own&amp;nbsp;recipe&amp;nbsp;to&amp;nbsp;improve&amp;nbsp;it.&amp;nbsp;We&amp;nbsp;are&amp;nbsp;all&amp;nbsp;ecosystems&amp;nbsp;as&amp;nbsp;our&amp;nbsp;planet.&amp;nbsp;We&amp;nbsp;want&amp;nbsp;all&amp;nbsp;to&amp;nbsp;take&amp;nbsp;care&amp;nbsp;of&amp;nbsp;the&amp;nbsp;planet&amp;nbsp;more,&amp;nbsp;but&amp;nbsp;how&amp;nbsp;about&amp;nbsp;start&amp;nbsp;with&amp;nbsp;yourself.&amp;nbsp;Once&amp;nbsp;you&amp;nbsp;have&amp;nbsp;no&amp;nbsp;limits,&amp;nbsp;you&amp;nbsp;will&amp;nbsp;help&amp;nbsp;the&amp;nbsp;planet&amp;nbsp;more&amp;nbsp;than&amp;nbsp;the&amp;nbsp;only&amp;nbsp;wave&amp;nbsp;with&amp;nbsp;signs&amp;nbsp;in&amp;nbsp;protesters'&amp;nbsp;crowd.&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/developers-are-introverts-domain-driven-design-can-help-669510b6930d" rel="noopener noreferrer"&gt;Developers are introverts. Domain-driven design can help.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/i-spent-4-years-working-from-home-now-i-miss-corporate-sprints-c64345e42929" rel="noopener noreferrer"&gt;I Spent 4 Years Working From Home. Now I Miss Corporate Sprints.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/four-reason-to-change-your-software-bf535916152d" rel="noopener noreferrer"&gt;Four Reason to Change your Software&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mindset</category>
      <category>productivity</category>
      <category>career</category>
      <category>health</category>
    </item>
    <item>
      <title>No More Mess in my Head Around Phrases Related to Identity in Computing</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Thu, 02 Jul 2026 15:04:36 +0000</pubDate>
      <link>https://dev.to/danielrusnok/no-more-mess-in-my-head-around-phrases-related-to-identity-in-computing-3inb</link>
      <guid>https://dev.to/danielrusnok/no-more-mess-in-my-head-around-phrases-related-to-identity-in-computing-3inb</guid>
      <description>&lt;h4&gt;
  
  
  Azure
&lt;/h4&gt;

&lt;h3&gt;
  
  
  No&amp;nbsp;More&amp;nbsp;Mess&amp;nbsp;in&amp;nbsp;my&amp;nbsp;Head&amp;nbsp;Around&amp;nbsp;Phrases&amp;nbsp;Related&amp;nbsp;to&amp;nbsp;Identity&amp;nbsp;in&amp;nbsp;Computing
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What&amp;nbsp;is&amp;nbsp;Identity?&amp;nbsp;Azure&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;is&amp;nbsp;just&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;in&amp;nbsp;Azure?&amp;nbsp;Microsoft&amp;nbsp;Graph&amp;nbsp;is&amp;nbsp;a&amp;nbsp;Data&amp;nbsp;Visualization&amp;nbsp;Framework&amp;nbsp;or&amp;nbsp;What?
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffmsdupp8elr0nu41xq0h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffmsdupp8elr0nu41xq0h.png" alt="No More Mess in my Head Around Phrases Related to Identity in Computing cover image" width="782" height="522"&gt;&lt;/a&gt;&lt;/p&gt;
Credits&amp;nbsp;of&amp;nbsp;logos&amp;nbsp;for&amp;nbsp;[Microsoft](https://microsoft.com).



&lt;h3&gt;
  
  
  Identity
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What&amp;nbsp;is&amp;nbsp;Identity&amp;nbsp;in&amp;nbsp;Cloud
&lt;/h4&gt;

&lt;p&gt;Identity&amp;nbsp;is&amp;nbsp;a&amp;nbsp;unique&amp;nbsp;identification&amp;nbsp;of&amp;nbsp;an&amp;nbsp;object.&amp;nbsp;Such&amp;nbsp;an&amp;nbsp;object&amp;nbsp;can&amp;nbsp;be&amp;nbsp;a&amp;nbsp;human&amp;nbsp;being,&amp;nbsp;machine,&amp;nbsp;or&amp;nbsp;a&amp;nbsp;combination&amp;nbsp;of&amp;nbsp;it.&amp;nbsp;When&amp;nbsp;we&amp;nbsp;talk&amp;nbsp;in&amp;nbsp;the&amp;nbsp;cloud&amp;nbsp;computing&amp;nbsp;context,&amp;nbsp;identity&amp;nbsp;means&amp;nbsp;a&amp;nbsp;set&amp;nbsp;of&amp;nbsp;properties&amp;nbsp;about&amp;nbsp;this&amp;nbsp;object&amp;nbsp;stored&amp;nbsp;in&amp;nbsp;the&amp;nbsp;cloud's&amp;nbsp;datacentre.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Cloud&amp;nbsp;computing&amp;nbsp;is&amp;nbsp;the&amp;nbsp;present&amp;nbsp;and&amp;nbsp;future&amp;nbsp;of&amp;nbsp;software&amp;nbsp;utilization,&amp;nbsp;development,&amp;nbsp;and&amp;nbsp;hosting.&amp;nbsp;Let&amp;nbsp;me&amp;nbsp;introduce&amp;nbsp;you&amp;nbsp;to&amp;nbsp;its…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;levelup.gitconnected.com&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Identity&amp;nbsp;&amp;amp;&amp;nbsp;Access&amp;nbsp;Management
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Identity&amp;nbsp;Management&lt;/strong&gt;&amp;nbsp;(IdM)&amp;nbsp;and&amp;nbsp;&lt;strong&gt;Identity&amp;nbsp;and&amp;nbsp;Access&amp;nbsp;Management&lt;/strong&gt;&amp;nbsp;(IAM)&amp;nbsp;is&amp;nbsp;an&amp;nbsp;interchangeable&amp;nbsp;term&amp;nbsp;in&amp;nbsp;identity&amp;nbsp;access&amp;nbsp;management.&amp;nbsp;So&amp;nbsp;if&amp;nbsp;you&amp;nbsp;are&amp;nbsp;reading&amp;nbsp;about&amp;nbsp;one,&amp;nbsp;you&amp;nbsp;are&amp;nbsp;probably&amp;nbsp;reading&amp;nbsp;about&amp;nbsp;the&amp;nbsp;second&amp;nbsp;term&amp;nbsp;too.&lt;/p&gt;

&lt;p&gt;IAM&amp;nbsp;is&amp;nbsp;a&amp;nbsp;framework&amp;nbsp;of&amp;nbsp;policies&amp;nbsp;that&amp;nbsp;tell&amp;nbsp;what&amp;nbsp;users&amp;nbsp;can&amp;nbsp;do&amp;nbsp;in&amp;nbsp;their&amp;nbsp;restricted&amp;nbsp;area&amp;nbsp;and&amp;nbsp;what&amp;nbsp;he&amp;nbsp;needs&amp;nbsp;from&amp;nbsp;the&amp;nbsp;user&amp;nbsp;to&amp;nbsp;operate&amp;nbsp;properly.&amp;nbsp;Such&amp;nbsp;systems&amp;nbsp;identify,&amp;nbsp;authenticate,&amp;nbsp;and&amp;nbsp;authorize&amp;nbsp;individuals&amp;nbsp;or&amp;nbsp;hardware&amp;nbsp;applications&amp;nbsp;to&amp;nbsp;use&amp;nbsp;restricted&amp;nbsp;resources.&lt;/p&gt;

&lt;p&gt;IAM&amp;nbsp;exists&amp;nbsp;in&amp;nbsp;the&amp;nbsp;world&amp;nbsp;without&amp;nbsp;the&amp;nbsp;internet&amp;nbsp;too.&amp;nbsp;It&amp;nbsp;appears&amp;nbsp;in&amp;nbsp;different&amp;nbsp;forms.&amp;nbsp;For&amp;nbsp;example,&amp;nbsp;the&amp;nbsp;“Staff&amp;nbsp;Only”&amp;nbsp;label&amp;nbsp;at&amp;nbsp;doors&amp;nbsp;in&amp;nbsp;markets,&amp;nbsp;id&amp;nbsp;card&amp;nbsp;pinned&amp;nbsp;at&amp;nbsp;employees&amp;nbsp;suit,&amp;nbsp;or&amp;nbsp;doorman&amp;nbsp;as&amp;nbsp;a&amp;nbsp;profession&amp;nbsp;by&amp;nbsp;itself.&amp;nbsp;Even&amp;nbsp;your&amp;nbsp;dog&amp;nbsp;protecting&amp;nbsp;yard&amp;nbsp;is&amp;nbsp;some&amp;nbsp;Access&amp;nbsp;Management&amp;nbsp;of&amp;nbsp;your&amp;nbsp;property.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fko6smfs0jaue1uecfzlm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fko6smfs0jaue1uecfzlm.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Dog&amp;nbsp;protecting&amp;nbsp;an&amp;nbsp;off-limits&amp;nbsp;area.



&lt;p&gt;Every&amp;nbsp;IAM&amp;nbsp;operates&amp;nbsp;in&amp;nbsp;its&amp;nbsp;defined&amp;nbsp;context.&amp;nbsp;The&amp;nbsp;context&amp;nbsp;of&amp;nbsp;IAM&amp;nbsp;specifies&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;properties&amp;nbsp;it&amp;nbsp;needs&amp;nbsp;from&amp;nbsp;the&amp;nbsp;Identity.&amp;nbsp;For&amp;nbsp;example,&amp;nbsp;every&amp;nbsp;patient&amp;nbsp;has&amp;nbsp;a&amp;nbsp;folder&amp;nbsp;with&amp;nbsp;properties&amp;nbsp;about&amp;nbsp;his&amp;nbsp;identity&amp;nbsp;at&amp;nbsp;the&amp;nbsp;doctor's&amp;nbsp;office.&lt;/p&gt;

&lt;h3&gt;
  
  
  Identity&amp;nbsp;Platform
&lt;/h3&gt;

&lt;p&gt;Identity&amp;nbsp;Platform&amp;nbsp;is&amp;nbsp;an&amp;nbsp;IAM&amp;nbsp;service&amp;nbsp;provided&amp;nbsp;by&amp;nbsp;third-parties&amp;nbsp;such&amp;nbsp;as&amp;nbsp;Microsoft&amp;nbsp;or&amp;nbsp;Amazon&amp;nbsp;(&lt;a href="https://aws.amazon.com/cognito/" rel="noopener noreferrer"&gt;Amazon&amp;nbsp;Cognito&lt;/a&gt;).&lt;/p&gt;

&lt;h4&gt;
  
  
  Using&amp;nbsp;External&amp;nbsp;vs.&amp;nbsp;Internal&amp;nbsp;Identity&amp;nbsp;Platform
&lt;/h4&gt;

&lt;p&gt;External&amp;nbsp;identity&amp;nbsp;platform&amp;nbsp;(IP)&amp;nbsp;helps&amp;nbsp;you&amp;nbsp;build&amp;nbsp;applications&amp;nbsp;without&amp;nbsp;its&amp;nbsp;own&amp;nbsp;identity&amp;nbsp;management&amp;nbsp;service&amp;nbsp;such&amp;nbsp;as&amp;nbsp;&lt;a href="https://identityserver.io/" rel="noopener noreferrer"&gt;Identity&amp;nbsp;Server&lt;/a&gt;.&amp;nbsp;Authorization&amp;nbsp;and&amp;nbsp;authentication&amp;nbsp;can&amp;nbsp;be&amp;nbsp;handled&amp;nbsp;externally,&amp;nbsp;and&amp;nbsp;the&amp;nbsp;only&amp;nbsp;thing&amp;nbsp;you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;do&amp;nbsp;is&amp;nbsp;integrate&amp;nbsp;between&amp;nbsp;your&amp;nbsp;system&amp;nbsp;and&amp;nbsp;MIP.&lt;/p&gt;

&lt;p&gt;Integration&amp;nbsp;with&amp;nbsp;an&amp;nbsp;external&amp;nbsp;identity&amp;nbsp;platform&amp;nbsp;does&amp;nbsp;not&amp;nbsp;make&amp;nbsp;sense&amp;nbsp;if&amp;nbsp;you&amp;nbsp;are&amp;nbsp;not&amp;nbsp;using&amp;nbsp;third-party&amp;nbsp;software,&amp;nbsp;and&amp;nbsp;most&amp;nbsp;of&amp;nbsp;your&amp;nbsp;companies&amp;nbsp;applications&amp;nbsp;were&amp;nbsp;built&amp;nbsp;in-house.&amp;nbsp;For&amp;nbsp;example,&amp;nbsp;if&amp;nbsp;the&amp;nbsp;whole&amp;nbsp;company&amp;nbsp;is&amp;nbsp;using&amp;nbsp;Windows&amp;nbsp;and&amp;nbsp;Office&amp;nbsp;365,&amp;nbsp;it&amp;nbsp;does&amp;nbsp;make&amp;nbsp;sense&amp;nbsp;to&amp;nbsp;integrate&amp;nbsp;your&amp;nbsp;system&amp;nbsp;with&amp;nbsp;Microsoft&amp;nbsp;Identity&amp;nbsp;Platform.&lt;/p&gt;

&lt;h4&gt;
  
  
  Microsoft&amp;nbsp;Identity&amp;nbsp;Platform
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;The&amp;nbsp;Microsoft&amp;nbsp;identity&amp;nbsp;platform&amp;nbsp;helps&amp;nbsp;you&amp;nbsp;build&amp;nbsp;applications&amp;nbsp;your&amp;nbsp;users&amp;nbsp;and&amp;nbsp;customers&amp;nbsp;can&amp;nbsp;sign&amp;nbsp;in&amp;nbsp;to&amp;nbsp;using&amp;nbsp;their&amp;nbsp;Microsoft&amp;nbsp;identities&amp;nbsp;or&amp;nbsp;social&amp;nbsp;accounts,&amp;nbsp;and&amp;nbsp;provide&amp;nbsp;authorized&amp;nbsp;access&amp;nbsp;to&amp;nbsp;your&amp;nbsp;own&amp;nbsp;APIs&amp;nbsp;or&amp;nbsp;Microsoft&amp;nbsp;APIs&amp;nbsp;like&amp;nbsp;Microsoft&amp;nbsp;Graph.&amp;nbsp;—&amp;nbsp;docs.microsoft.com&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Components&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Microsoft&amp;nbsp;Identity&amp;nbsp;Platform?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  OAuth&amp;nbsp;2.0&amp;nbsp;and&amp;nbsp;OpenID&amp;nbsp;Connect&amp;nbsp;standard-compliant&amp;nbsp;authentication&amp;nbsp;service.&amp;nbsp;—&amp;nbsp;Possibility&amp;nbsp;of&amp;nbsp;secured&amp;nbsp;work&amp;nbsp;or&amp;nbsp;school&amp;nbsp;accounts&amp;nbsp;authentications.&lt;/li&gt;
&lt;li&gt;  Microsoft&amp;nbsp;Authentication&amp;nbsp;Libraries&amp;nbsp;or&amp;nbsp;MSAL.&amp;nbsp;—&amp;nbsp;Microsoft&amp;nbsp;MVP&amp;nbsp;and&amp;nbsp;my&amp;nbsp;friend&amp;nbsp;&lt;a href="https://twitter.com/DKrzyczkowski" rel="noopener noreferrer"&gt;Daniel&amp;nbsp;Krzyczkowski&lt;/a&gt;&amp;nbsp;have&amp;nbsp;great&amp;nbsp;&lt;a href="https://github.com/Daniel-Krzyczkowski/IdentityDeveloperTemplates" rel="noopener noreferrer"&gt;GitHub&amp;nbsp;repo&lt;/a&gt;&amp;nbsp;with&amp;nbsp;guidelines&amp;nbsp;for&amp;nbsp;using&amp;nbsp;MSAL.&lt;/li&gt;
&lt;li&gt;  Application&amp;nbsp;management&amp;nbsp;portal.&amp;nbsp;—&amp;nbsp;Registration&amp;nbsp;and&amp;nbsp;configuration&amp;nbsp;of&amp;nbsp;applications&amp;nbsp;in&amp;nbsp;the&amp;nbsp;&lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;Azure&amp;nbsp;portal&lt;/a&gt;.&amp;nbsp;Management&amp;nbsp;is&amp;nbsp;also&amp;nbsp;possible&amp;nbsp;through&amp;nbsp;PowerShell&amp;nbsp;or&amp;nbsp;configuration&amp;nbsp;API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Microsoft&amp;nbsp;Graph
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Microsoft&amp;nbsp;Graph&amp;nbsp;is&amp;nbsp;the&amp;nbsp;gateway&amp;nbsp;to&amp;nbsp;data&amp;nbsp;and&amp;nbsp;intelligence.&amp;nbsp;It&amp;nbsp;provides&amp;nbsp;a&amp;nbsp;unified&amp;nbsp;programmability&amp;nbsp;model&amp;nbsp;that&amp;nbsp;you&amp;nbsp;can&amp;nbsp;use&amp;nbsp;to&amp;nbsp;access&amp;nbsp;the&amp;nbsp;tremendous&amp;nbsp;amount&amp;nbsp;of&amp;nbsp;data&amp;nbsp;in&amp;nbsp;Microsoft&amp;nbsp;365,&amp;nbsp;Windows&amp;nbsp;10,&amp;nbsp;and&amp;nbsp;Enterprise&amp;nbsp;Mobility&amp;nbsp;+&amp;nbsp;Security.&amp;nbsp;—&amp;nbsp;docs.microsoft.com&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F15h7pwecrekjhb00d752.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F15h7pwecrekjhb00d752.png" alt="Illustration" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
Downloaded&amp;nbsp;from&amp;nbsp;[https://docs.microsoft.com/en-us/graph/overview](https://docs.microsoft.com/en-us/graph/overview).&amp;nbsp;Credits&amp;nbsp;for&amp;nbsp;[Microsoft](https://microsoft.com).



&lt;p&gt;Mostly&amp;nbsp;when&amp;nbsp;you&amp;nbsp;are&amp;nbsp;sign-in&amp;nbsp;or&amp;nbsp;up&amp;nbsp;with&amp;nbsp;your&amp;nbsp;Microsoft&amp;nbsp;account&amp;nbsp;and&amp;nbsp;you&amp;nbsp;tracked&amp;nbsp;the&amp;nbsp;communication,&amp;nbsp;you&amp;nbsp;will&amp;nbsp;find&amp;nbsp;out&amp;nbsp;that&amp;nbsp;the&amp;nbsp;browser&amp;nbsp;is&amp;nbsp;talking&amp;nbsp;a&amp;nbsp;lot&amp;nbsp;to&amp;nbsp;&lt;a href="https://graph.microsoft." rel="noopener noreferrer"&gt;https://graph.microsoft.&lt;/a&gt;com,&amp;nbsp;which&amp;nbsp;is&amp;nbsp;a&amp;nbsp;single&amp;nbsp;endpoint&amp;nbsp;of&amp;nbsp;Microsoft&amp;nbsp;Graph&amp;nbsp;API.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side note: I also write short, free lessons on getting more out of AI coding tools — if that's your thing, &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; is a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once&amp;nbsp;you&amp;nbsp;are&amp;nbsp;integrating&amp;nbsp;your&amp;nbsp;application&amp;nbsp;with&amp;nbsp;the&amp;nbsp;Microsoft&amp;nbsp;Identity&amp;nbsp;Platform,&amp;nbsp;you&amp;nbsp;will&amp;nbsp;communicate&amp;nbsp;through&amp;nbsp;this&amp;nbsp;API.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;do&amp;nbsp;it&amp;nbsp;directly&amp;nbsp;or&amp;nbsp;with&amp;nbsp;MSAL,&amp;nbsp;which&amp;nbsp;encapsulates&amp;nbsp;the&amp;nbsp;HTTP&amp;nbsp;communication&amp;nbsp;with&amp;nbsp;API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Active&amp;nbsp;Directory&amp;nbsp;vs.&amp;nbsp;Azure&amp;nbsp;Active&amp;nbsp;Directory
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Active&amp;nbsp;Directory
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Active&amp;nbsp;Directory&amp;nbsp;(AD)&amp;nbsp;is&amp;nbsp;a&amp;nbsp;directory&amp;nbsp;service&amp;nbsp;developed&amp;nbsp;by&amp;nbsp;Microsoft&amp;nbsp;for&amp;nbsp;Windows&amp;nbsp;domain&amp;nbsp;networks.&amp;nbsp;—&amp;nbsp;Wikipedia&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Physically&amp;nbsp;it&amp;nbsp;is&amp;nbsp;nothing&amp;nbsp;else&amp;nbsp;than&amp;nbsp;an&amp;nbsp;on-premise&amp;nbsp;private&amp;nbsp;server.&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;or&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;Domain&amp;nbsp;Services&amp;nbsp;is&amp;nbsp;a&amp;nbsp;database&amp;nbsp;of&amp;nbsp;your&amp;nbsp;company’s&amp;nbsp;users&amp;nbsp;and&amp;nbsp;computers.&amp;nbsp;It&amp;nbsp;provides&amp;nbsp;authentication&amp;nbsp;and&amp;nbsp;authorizations&amp;nbsp;for&amp;nbsp;applications&amp;nbsp;or&amp;nbsp;users.&amp;nbsp;It&amp;nbsp;uses&amp;nbsp;dinosaur&amp;nbsp;protocols&amp;nbsp;like&amp;nbsp;Kerberos&amp;nbsp;and&amp;nbsp;NTLM.&lt;/p&gt;

&lt;h4&gt;
  
  
  Azure&amp;nbsp;Active&amp;nbsp;Directory
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Azure&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;(Azure&amp;nbsp;AD)&amp;nbsp;is&amp;nbsp;Microsoft’s&amp;nbsp;cloud-based&amp;nbsp;identity&amp;nbsp;and&amp;nbsp;access&amp;nbsp;management&amp;nbsp;service.&amp;nbsp;—&amp;nbsp;docs.microsoft.com&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fih4o2iko6iivo0ctcxd9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fih4o2iko6iivo0ctcxd9.png" alt="Illustration" width="500" height="504"&gt;&lt;/a&gt;&lt;/p&gt;
Credits&amp;nbsp;of&amp;nbsp;the&amp;nbsp;logo&amp;nbsp;to&amp;nbsp;[Microsoft](https://microsoft.com).



&lt;p&gt;Azure&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;(Azure&amp;nbsp;AD)&amp;nbsp;takes&amp;nbsp;AD&amp;nbsp;approaches,&amp;nbsp;expands&amp;nbsp;them,&amp;nbsp;and&amp;nbsp;brings&amp;nbsp;them&amp;nbsp;to&amp;nbsp;the&amp;nbsp;next&amp;nbsp;level,&amp;nbsp;the&amp;nbsp;cloud&amp;nbsp;level.&amp;nbsp;Azure&amp;nbsp;AD&amp;nbsp;provides&amp;nbsp;organizations&amp;nbsp;with&amp;nbsp;an&amp;nbsp;&lt;a href="https://auth0.com/blog/what-is-idaas/" rel="noopener noreferrer"&gt;Identity&amp;nbsp;as&amp;nbsp;a&amp;nbsp;Service&amp;nbsp;(IDaaS)&lt;/a&gt;&amp;nbsp;solution&amp;nbsp;for&amp;nbsp;applications&amp;nbsp;across&amp;nbsp;Azure&amp;nbsp;and&amp;nbsp;on-premise&amp;nbsp;servers&amp;nbsp;too.&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;vs.&amp;nbsp;Microsoft&amp;nbsp;Graph
&lt;/h3&gt;

&lt;p&gt;Azure&amp;nbsp;Active&amp;nbsp;Directory&amp;nbsp;is&amp;nbsp;a&amp;nbsp;security&amp;nbsp;token&amp;nbsp;server&amp;nbsp;which&amp;nbsp;analogous&amp;nbsp;to&amp;nbsp;a&amp;nbsp;directory&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Cloud.&amp;nbsp;When&amp;nbsp;organizations&amp;nbsp;want&amp;nbsp;to&amp;nbsp;move&amp;nbsp;their&amp;nbsp;on-premise&amp;nbsp;directories&amp;nbsp;to&amp;nbsp;the&amp;nbsp;cloud&amp;nbsp;and&amp;nbsp;make&amp;nbsp;their&amp;nbsp;applications&amp;nbsp;securely&amp;nbsp;accessible&amp;nbsp;anywhere&amp;nbsp;from&amp;nbsp;the&amp;nbsp;internet,&amp;nbsp;they&amp;nbsp;can&amp;nbsp;take&amp;nbsp;advantage&amp;nbsp;of&amp;nbsp;Azure&amp;nbsp;AD.&lt;/p&gt;

&lt;p&gt;Azure&amp;nbsp;AD&amp;nbsp;has&amp;nbsp;two&amp;nbsp;versions.&amp;nbsp;The&amp;nbsp;V1&amp;nbsp;endpoint&amp;nbsp;and&amp;nbsp;the&amp;nbsp;V2&amp;nbsp;endpoint&amp;nbsp;and&amp;nbsp;Microsoft&amp;nbsp;Identity&amp;nbsp;Platform&amp;nbsp;is&amp;nbsp;made&amp;nbsp;of&amp;nbsp;the&amp;nbsp;V2&amp;nbsp;endpoint,&amp;nbsp;documentation,&amp;nbsp;and&amp;nbsp;application&amp;nbsp;registration&amp;nbsp;tools&amp;nbsp;like&amp;nbsp;App&amp;nbsp;Registrations&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;portal.&amp;nbsp;The&amp;nbsp;Microsoft&amp;nbsp;Identity&amp;nbsp;Platform&amp;nbsp;contains&amp;nbsp;part&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Active&amp;nbsp;Directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://en.wikipedia.org/wiki/Identity_management" rel="noopener noreferrer"&gt;Identity&amp;nbsp;management&amp;nbsp;by&amp;nbsp;Wikipedia&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.youtube.com/watch?v=zDEC7A5ZS2Q&amp;amp;ab_channel=MicrosoftAzure" rel="noopener noreferrer"&gt;What’s&amp;nbsp;the&amp;nbsp;role&amp;nbsp;of&amp;nbsp;AAD&amp;nbsp;in&amp;nbsp;the&amp;nbsp;MIP&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-overview" rel="noopener noreferrer"&gt;Microsoft&amp;nbsp;Identity&amp;nbsp;Platform&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.microsoft.com/en-us/graph/overview" rel="noopener noreferrer"&gt;Microsoft&amp;nbsp;Graph&amp;nbsp;in&amp;nbsp;Microsoft&amp;nbsp;docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://en.wikipedia.org/wiki/Active_Directory" rel="noopener noreferrer"&gt;Active&amp;nbsp;Directory&amp;nbsp;by&amp;nbsp;Wikipedia&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.compete366.com/blog-posts/the-difference-between-ad-and-azure-ad-explained/" rel="noopener noreferrer"&gt;The&amp;nbsp;blog&amp;nbsp;post&amp;nbsp;about&amp;nbsp;differences&amp;nbsp;between&amp;nbsp;AD&amp;nbsp;&amp;amp;&amp;nbsp;AAD&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/active-directory-compare-azure-ad-to-ad" rel="noopener noreferrer"&gt;Compare&amp;nbsp;Azure&amp;nbsp;AD&amp;nbsp;with&amp;nbsp;ADDS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  More&amp;nbsp;about&amp;nbsp;Azure
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Cloud&amp;nbsp;computing&amp;nbsp;is&amp;nbsp;the&amp;nbsp;present&amp;nbsp;and&amp;nbsp;future&amp;nbsp;of&amp;nbsp;software&amp;nbsp;utilization,&amp;nbsp;development,&amp;nbsp;and&amp;nbsp;hosting.&amp;nbsp;Let&amp;nbsp;me&amp;nbsp;introduce&amp;nbsp;you&amp;nbsp;to&amp;nbsp;its…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;levelup.gitconnected.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;Free&amp;nbsp;Azure&amp;nbsp;Account&amp;nbsp;Step&amp;nbsp;by&amp;nbsp;Step&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;Guide&amp;nbsp;for&amp;nbsp;creating&amp;nbsp;a&amp;nbsp;free&amp;nbsp;Azure&amp;nbsp;account.&amp;nbsp;What&amp;nbsp;services&amp;nbsp;can&amp;nbsp;you&amp;nbsp;use&amp;nbsp;for&amp;nbsp;free?&amp;nbsp;What&amp;nbsp;is&amp;nbsp;Directory&amp;nbsp;or&amp;nbsp;subscription&amp;nbsp;and&amp;nbsp;what…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;levelup.gitconnected.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://danielrusnok.medium.com/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;Choose&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Region&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://danielrusnok.medium.com/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;What&amp;nbsp;should&amp;nbsp;you&amp;nbsp;consider&amp;nbsp;before&amp;nbsp;choosing&amp;nbsp;Azure&amp;nbsp;Region?&amp;nbsp;How&amp;nbsp;Microsoft&amp;nbsp;geographically&amp;nbsp;divide&amp;nbsp;datacentres&amp;nbsp;position&amp;nbsp;to…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://danielrusnok.medium.com/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;danielrusnok.medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://danielrusnok.medium.com/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6" rel="noopener noreferrer"&gt;Understanding&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Groups&amp;nbsp;and&amp;nbsp;Azure&amp;nbsp;Resources&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://danielrusnok.medium.com/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6" rel="noopener noreferrer"&gt;Also&amp;nbsp;with&amp;nbsp;Guide&amp;nbsp;How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;your&amp;nbsp;First&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Group&amp;nbsp;and&amp;nbsp;Add&amp;nbsp;your&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Into&amp;nbsp;it.&lt;/a&gt;&lt;/em&gt;&lt;a href="https://danielrusnok.medium.com/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6" rel="noopener noreferrer"&gt;danielrusnok.medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Daniel&amp;nbsp;Rusnok’s&amp;nbsp;Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Every&amp;nbsp;month&amp;nbsp;I&amp;nbsp;will&amp;nbsp;send&amp;nbsp;you&amp;nbsp;an&amp;nbsp;email&amp;nbsp;about&amp;nbsp;a&amp;nbsp;list&amp;nbsp;of&amp;nbsp;my&amp;nbsp;newest&amp;nbsp;articles.&amp;nbsp;It&amp;nbsp;will&amp;nbsp;be,&amp;nbsp;of&amp;nbsp;course,&amp;nbsp;the&amp;nbsp;friendly&amp;nbsp;links…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;www.danielrusnok.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/danielrusnok" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tm54rf5555ym89o2ne4.png" alt="Illustration" width="200" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this helped clear things up, you might also like &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short, free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/introduction-to-cloud-computing-235e530b9fe0%5D%C2%A0%E2%80%94%C2%A0_Introduction%C2%A0to%C2%A0Cloud%C2%A0Computing_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/introduction-to-cloud-computing-235e530b9fe0]&amp;nbsp;—&amp;nbsp;_Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Create%C2%A0a%C2%A0Free%C2%A0Azure%C2%A0Account%C2%A0Step%C2%A0by%C2%A0Step_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;Free&amp;nbsp;Azure&amp;nbsp;Account&amp;nbsp;Step&amp;nbsp;by&amp;nbsp;Step_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6%5D%C2%A0%E2%80%94%C2%A0_Understanding%C2%A0the%C2%A0Azure%C2%A0Resource%C2%A0Groups%C2%A0and%C2%A0Azure%C2%A0Resources_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6]&amp;nbsp;—&amp;nbsp;_Understanding&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Groups&amp;nbsp;and&amp;nbsp;Azure&amp;nbsp;Resources_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-implement-azure-functions-in-any-language-with-custom-handlers-78e627264ccb%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Implement%C2%A0Azure%C2%A0Functions%C2%A0in%C2%A0any%C2%A0Language%C2%A0with%C2%A0Custom%C2%A0Handlers_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-implement-azure-functions-in-any-language-with-custom-handlers-78e627264ccb]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Implement&amp;nbsp;Azure&amp;nbsp;Functions&amp;nbsp;in&amp;nbsp;any&amp;nbsp;Language&amp;nbsp;with&amp;nbsp;Custom&amp;nbsp;Handlers_&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>azure</category>
      <category>identity</category>
      <category>dotnet</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Understanding the Azure Resource Groups and Azure Resources</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Tue, 30 Jun 2026 15:04:02 +0000</pubDate>
      <link>https://dev.to/danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-1poc</link>
      <guid>https://dev.to/danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-1poc</guid>
      <description>&lt;h4&gt;
  
  
  AZURE&amp;nbsp;&amp;amp;&amp;nbsp;CLOUD
&lt;/h4&gt;

&lt;h3&gt;
  
  
  Understanding&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Groups&amp;nbsp;and&amp;nbsp;Azure&amp;nbsp;Resources
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Introduction&amp;nbsp;to&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Groups&amp;nbsp;and&amp;nbsp;Azure&amp;nbsp;Resources.&amp;nbsp;How&amp;nbsp;they&amp;nbsp;are&amp;nbsp;related&amp;nbsp;and&amp;nbsp;what&amp;nbsp;are&amp;nbsp;they&amp;nbsp;capable&amp;nbsp;of.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70b4exis0mkpq72m5o66.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F70b4exis0mkpq72m5o66.jpeg" alt="Understanding the Azure Resource Groups and Azure Resources cover image" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Once&amp;nbsp;you&amp;nbsp;have&amp;nbsp;your&amp;nbsp;Azure&amp;nbsp;account&amp;nbsp;and&amp;nbsp;access&amp;nbsp;into&amp;nbsp;Azure&amp;nbsp;portal,&amp;nbsp;you&amp;nbsp;are&amp;nbsp;ready&amp;nbsp;to&amp;nbsp;create&amp;nbsp;your&amp;nbsp;first&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Group&amp;nbsp;and&amp;nbsp;add&amp;nbsp;some&amp;nbsp;resources&amp;nbsp;into&amp;nbsp;it.&amp;nbsp;You&amp;nbsp;will&amp;nbsp;also&amp;nbsp;need&amp;nbsp;a&amp;nbsp;subscription.&amp;nbsp;If&amp;nbsp;you&amp;nbsp;don’t&amp;nbsp;have&amp;nbsp;any&amp;nbsp;of&amp;nbsp;those&amp;nbsp;things&amp;nbsp;then&amp;nbsp;I&amp;nbsp;would&amp;nbsp;recommend&amp;nbsp;you&amp;nbsp;to&amp;nbsp;see&amp;nbsp;my&amp;nbsp;tutorial&amp;nbsp;&lt;em&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;an&amp;nbsp;Azure&amp;nbsp;Account&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;Free&amp;nbsp;Azure&amp;nbsp;Account&amp;nbsp;Step&amp;nbsp;by&amp;nbsp;Step&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;Guide&amp;nbsp;for&amp;nbsp;creating&amp;nbsp;a&amp;nbsp;free&amp;nbsp;Azure&amp;nbsp;account.&amp;nbsp;What&amp;nbsp;services&amp;nbsp;you&amp;nbsp;can&amp;nbsp;use&amp;nbsp;for&amp;nbsp;free?&amp;nbsp;What&amp;nbsp;is&amp;nbsp;Directory&amp;nbsp;or&amp;nbsp;subscription&amp;nbsp;and&amp;nbsp;what…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://levelup.gitconnected.com/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;levelup.gitconnected.com&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure&amp;nbsp;Resource
&lt;/h3&gt;

&lt;p&gt;Azure&amp;nbsp;Resource&amp;nbsp;is&amp;nbsp;the&amp;nbsp;manageable&amp;nbsp;item&amp;nbsp;in&amp;nbsp;Azure.&amp;nbsp;It&amp;nbsp;includes&amp;nbsp;things&amp;nbsp;like&amp;nbsp;Virtual&amp;nbsp;Machines,&amp;nbsp;Azure&amp;nbsp;Storage&amp;nbsp;Accounts&amp;nbsp;or&amp;nbsp;Azure&amp;nbsp;Web&amp;nbsp;Service.&amp;nbsp;The&amp;nbsp;Azure&amp;nbsp;resource&amp;nbsp;is&amp;nbsp;an&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;Azure&amp;nbsp;Services.&lt;/p&gt;

&lt;p&gt;There&amp;nbsp;are&amp;nbsp;three&amp;nbsp;basic&amp;nbsp;divisions&amp;nbsp;of&amp;nbsp;Azure&amp;nbsp;Services.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Infrastructure&amp;nbsp;as&amp;nbsp;a&amp;nbsp;Service&amp;nbsp;(IaaS)&lt;/li&gt;
&lt;li&gt;  Platform&amp;nbsp;as&amp;nbsp;a&amp;nbsp;Service&amp;nbsp;(PaaS)&lt;/li&gt;
&lt;li&gt;  Software&amp;nbsp;as&amp;nbsp;a&amp;nbsp;Service&amp;nbsp;(SaaS)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You&amp;nbsp;can&amp;nbsp;find&amp;nbsp;more&amp;nbsp;about&amp;nbsp;divisions&amp;nbsp;in&amp;nbsp;my&amp;nbsp;&lt;em&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing&lt;/a&gt;&lt;/em&gt;&amp;nbsp;article.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Cloud&amp;nbsp;computing&amp;nbsp;is&amp;nbsp;the&amp;nbsp;present&amp;nbsp;and&amp;nbsp;future&amp;nbsp;of&amp;nbsp;software&amp;nbsp;utilization,&amp;nbsp;development&amp;nbsp;and&amp;nbsp;hosting.&amp;nbsp;Let&amp;nbsp;me&amp;nbsp;introduce&amp;nbsp;you&amp;nbsp;its…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;levelup.gitconnected.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whenever&amp;nbsp;Azure&amp;nbsp;Service&amp;nbsp;you&amp;nbsp;want&amp;nbsp;to&amp;nbsp;use,&amp;nbsp;you&amp;nbsp;will&amp;nbsp;find&amp;nbsp;the&amp;nbsp;resource&amp;nbsp;for&amp;nbsp;it.&amp;nbsp;But&amp;nbsp;first,&amp;nbsp;you&amp;nbsp;need&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Group.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side note: if you also lean on AI tooling while you build, I share short, free lessons on getting more out of it in &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt;, a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure&amp;nbsp;Resource&amp;nbsp;Group
&lt;/h3&gt;

&lt;p&gt;Azure&amp;nbsp;Resource&amp;nbsp;Group&amp;nbsp;is&amp;nbsp;basically&amp;nbsp;a&amp;nbsp;container&amp;nbsp;for&amp;nbsp;Azure&amp;nbsp;Resources.&amp;nbsp;The&amp;nbsp;resource&amp;nbsp;can&amp;nbsp;only&amp;nbsp;exist&amp;nbsp;in&amp;nbsp;one&amp;nbsp;resource&amp;nbsp;group.&amp;nbsp;Resources&amp;nbsp;are&amp;nbsp;not&amp;nbsp;limited&amp;nbsp;by&amp;nbsp;region&amp;nbsp;and&amp;nbsp;can&amp;nbsp;be&amp;nbsp;from&amp;nbsp;different&amp;nbsp;regions.&amp;nbsp;The&amp;nbsp;resource&amp;nbsp;group&amp;nbsp;is&amp;nbsp;not&amp;nbsp;a&amp;nbsp;physical&amp;nbsp;grouping&amp;nbsp;of&amp;nbsp;resources.&amp;nbsp;I&amp;nbsp;covered&amp;nbsp;the&amp;nbsp;topic&amp;nbsp;Azure&amp;nbsp;Regions&amp;nbsp;in&amp;nbsp;my&amp;nbsp;article&amp;nbsp;&lt;em&gt;&lt;a href="https://medium.com/@danielrusnok/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;Choose&amp;nbsp;Azure&amp;nbsp;Region&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@danielrusnok/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;Choose&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Region&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://medium.com/@danielrusnok/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;What&amp;nbsp;you&amp;nbsp;should&amp;nbsp;consider&amp;nbsp;before&amp;nbsp;choosing&amp;nbsp;Azure&amp;nbsp;Region?&amp;nbsp;How&amp;nbsp;Microsoft&amp;nbsp;geographically&amp;nbsp;divide&amp;nbsp;datacentres&amp;nbsp;position&amp;nbsp;to…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://medium.com/@danielrusnok/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Resources&amp;nbsp;in&amp;nbsp;the&amp;nbsp;resource&amp;nbsp;group&amp;nbsp;shared&amp;nbsp;the&amp;nbsp;same&amp;nbsp;lifecycle,&amp;nbsp;which&amp;nbsp;means&amp;nbsp;you&amp;nbsp;can&amp;nbsp;deploy,&amp;nbsp;update&amp;nbsp;and&amp;nbsp;delete&amp;nbsp;them&amp;nbsp;together.&amp;nbsp;Such&amp;nbsp;operations&amp;nbsp;are&amp;nbsp;possible&amp;nbsp;to&amp;nbsp;do&amp;nbsp;at&amp;nbsp;the&amp;nbsp;resource&amp;nbsp;level&amp;nbsp;too,&amp;nbsp;but&amp;nbsp;general&amp;nbsp;guidance&amp;nbsp;is&amp;nbsp;that&amp;nbsp;if&amp;nbsp;the&amp;nbsp;resource&amp;nbsp;needs&amp;nbsp;to&amp;nbsp;exist&amp;nbsp;on&amp;nbsp;the&amp;nbsp;different&amp;nbsp;deployment&amp;nbsp;cycle,&amp;nbsp;it&amp;nbsp;should&amp;nbsp;be&amp;nbsp;in&amp;nbsp;another&amp;nbsp;resource&amp;nbsp;group.&lt;/p&gt;

&lt;p&gt;Resources&amp;nbsp;and&amp;nbsp;resource&amp;nbsp;group&amp;nbsp;can&amp;nbsp;communicate&amp;nbsp;across.&amp;nbsp;For&amp;nbsp;example,&amp;nbsp;you&amp;nbsp;have&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Web&amp;nbsp;Service&amp;nbsp;in&amp;nbsp;one&amp;nbsp;resource&amp;nbsp;group&amp;nbsp;and&amp;nbsp;still&amp;nbsp;can&amp;nbsp;communicate&amp;nbsp;with&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;SQL&amp;nbsp;Database&amp;nbsp;from&amp;nbsp;different&amp;nbsp;resource&amp;nbsp;group.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm56ov4o2moj4vzx1clx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm56ov4o2moj4vzx1clx2.png" alt="Illustration" width="300" height="300"&gt;&lt;/a&gt;&lt;/p&gt;
Azure&amp;nbsp;Resource&amp;nbsp;Group&amp;nbsp;icon&amp;nbsp;created&amp;nbsp;by&amp;nbsp;[vecta.io](https://vecta.io/symbols/27/microsoft-azure-mono/110/resourcegroup)



&lt;p&gt;The&amp;nbsp;resource&amp;nbsp;group&amp;nbsp;is&amp;nbsp;also&amp;nbsp;suitable&amp;nbsp;to&amp;nbsp;set&amp;nbsp;security&amp;nbsp;boundaries&amp;nbsp;for&amp;nbsp;the&amp;nbsp;whole&amp;nbsp;group.&amp;nbsp;What&amp;nbsp;can&amp;nbsp;be&amp;nbsp;done&amp;nbsp;with&amp;nbsp;security&amp;nbsp;can&amp;nbsp;also&amp;nbsp;be&amp;nbsp;done&amp;nbsp;with&amp;nbsp;access&amp;nbsp;control.&amp;nbsp;You&amp;nbsp;are&amp;nbsp;able&amp;nbsp;to&amp;nbsp;assign&amp;nbsp;access&amp;nbsp;for&amp;nbsp;the&amp;nbsp;whole&amp;nbsp;group&amp;nbsp;and&amp;nbsp;not&amp;nbsp;for&amp;nbsp;every&amp;nbsp;resource&amp;nbsp;separately.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;pretty&amp;nbsp;cool&amp;nbsp;feature&amp;nbsp;is&amp;nbsp;an&amp;nbsp;export&amp;nbsp;Infrastructure-as-code&amp;nbsp;using&amp;nbsp;Resource&amp;nbsp;Manager&amp;nbsp;Templates.&amp;nbsp;But&amp;nbsp;this&amp;nbsp;I&amp;nbsp;will&amp;nbsp;save&amp;nbsp;for&amp;nbsp;the&amp;nbsp;next&amp;nbsp;time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://app.pluralsight.com/library/courses/microsoft-azure-services-concepts/table-of-contents" rel="noopener noreferrer"&gt;Pluralsight&amp;nbsp;course&amp;nbsp;by&amp;nbsp;Neil&amp;nbsp;Morrissey.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.microsoft.com/en-us/learn/paths/azure-fundamentals/" rel="noopener noreferrer"&gt;Microsoft&amp;nbsp;Learn&amp;nbsp;Platform.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Daniel&amp;nbsp;Rusnok's&amp;nbsp;Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Every&amp;nbsp;month&amp;nbsp;I&amp;nbsp;will&amp;nbsp;send&amp;nbsp;you&amp;nbsp;an&amp;nbsp;email&amp;nbsp;about&amp;nbsp;with&amp;nbsp;list&amp;nbsp;of&amp;nbsp;my&amp;nbsp;newest&amp;nbsp;articles.&amp;nbsp;It&amp;nbsp;will&amp;nbsp;be&amp;nbsp;ofcourse&amp;nbsp;the&amp;nbsp;friendly&amp;nbsp;links…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;www.danielrusnok.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/danielrusnok" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tm54rf5555ym89o2ne4.png" alt="Illustration" width="200" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this was useful, you might also enjoy &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/introduction-to-cloud-computing-235e530b9fe0%5D%C2%A0%E2%80%94%C2%A0_Introduction%C2%A0to%C2%A0Cloud%C2%A0Computing_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/introduction-to-cloud-computing-235e530b9fe0]&amp;nbsp;—&amp;nbsp;_Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Create%C2%A0a%C2%A0Free%C2%A0Azure%C2%A0Account%C2%A0Step%C2%A0by%C2%A0Step_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;Free&amp;nbsp;Azure&amp;nbsp;Account&amp;nbsp;Step&amp;nbsp;by&amp;nbsp;Step_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-choose-the-azure-region-2a7bfd5ef864%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Choose%C2%A0the%C2%A0Azure%C2%A0Region_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-choose-the-azure-region-2a7bfd5ef864]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Choose&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Region_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-implement-azure-functions-in-any-language-with-custom-handlers-78e627264ccb%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Implement%C2%A0Azure%C2%A0Functions%C2%A0in%C2%A0any%C2%A0Language%C2%A0with%C2%A0Custom%C2%A0Handlers_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-implement-azure-functions-in-any-language-with-custom-handlers-78e627264ccb]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Implement&amp;nbsp;Azure&amp;nbsp;Functions&amp;nbsp;in&amp;nbsp;any&amp;nbsp;Language&amp;nbsp;with&amp;nbsp;Custom&amp;nbsp;Handlers_&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Choose the Azure Region</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Sun, 28 Jun 2026 15:04:43 +0000</pubDate>
      <link>https://dev.to/danielrusnok/how-to-choose-the-azure-region-50kb</link>
      <guid>https://dev.to/danielrusnok/how-to-choose-the-azure-region-50kb</guid>
      <description>&lt;h4&gt;
  
  
  AZURE&amp;nbsp;&amp;amp;&amp;nbsp;CLOUD
&lt;/h4&gt;

&lt;h3&gt;
  
  
  How&amp;nbsp;to&amp;nbsp;Choose&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Region
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What&amp;nbsp;you&amp;nbsp;should&amp;nbsp;consider&amp;nbsp;before&amp;nbsp;choosing&amp;nbsp;Azure&amp;nbsp;Region?&amp;nbsp;How&amp;nbsp;Microsoft&amp;nbsp;geographically&amp;nbsp;divide&amp;nbsp;datacentres&amp;nbsp;position&amp;nbsp;to&amp;nbsp;secure&amp;nbsp;high&amp;nbsp;availability&amp;nbsp;and&amp;nbsp;disaster&amp;nbsp;recovery?
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fexd8erhp3nq18vyfsb90.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fexd8erhp3nq18vyfsb90.jpeg" alt="How to Choose the Azure Region cover image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Most&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;resources&amp;nbsp;demand&amp;nbsp;the&amp;nbsp;region&amp;nbsp;to&amp;nbsp;be&amp;nbsp;specified.&amp;nbsp;I&amp;nbsp;was&amp;nbsp;struggling&amp;nbsp;with&amp;nbsp;this&amp;nbsp;choice&amp;nbsp;and&amp;nbsp;always&amp;nbsp;picked&amp;nbsp;the&amp;nbsp;one&amp;nbsp;nearest&amp;nbsp;to&amp;nbsp;my&amp;nbsp;location.&amp;nbsp;Lately,&amp;nbsp;I&amp;nbsp;found&amp;nbsp;out&amp;nbsp;that&amp;nbsp;the&amp;nbsp;choice&amp;nbsp;should&amp;nbsp;be&amp;nbsp;made&amp;nbsp;more&amp;nbsp;based&amp;nbsp;on&amp;nbsp;the&amp;nbsp;physical&amp;nbsp;location&amp;nbsp;of&amp;nbsp;resource&amp;nbsp;users&amp;nbsp;than&amp;nbsp;the&amp;nbsp;location&amp;nbsp;of&amp;nbsp;me,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;changed&amp;nbsp;it.&lt;/p&gt;

&lt;p&gt;After&amp;nbsp;a&amp;nbsp;while,&amp;nbsp;one&amp;nbsp;question&amp;nbsp;still&amp;nbsp;bothers&amp;nbsp;me&amp;nbsp;—&amp;nbsp;&lt;em&gt;Does&amp;nbsp;the&amp;nbsp;choice&amp;nbsp;of&amp;nbsp;region&amp;nbsp;matter&amp;nbsp;more&amp;nbsp;than&amp;nbsp;I&amp;nbsp;think?&lt;/em&gt;&amp;nbsp;Then,&amp;nbsp;I&amp;nbsp;started&amp;nbsp;to&amp;nbsp;dig&amp;nbsp;deeper&amp;nbsp;into&amp;nbsp;this&amp;nbsp;topic&amp;nbsp;and&amp;nbsp;boy.&amp;nbsp;It&amp;nbsp;really&amp;nbsp;matters,&amp;nbsp;especially&amp;nbsp;on&amp;nbsp;enterprise&amp;nbsp;application&amp;nbsp;levels.&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure&amp;nbsp;Regions
&lt;/h3&gt;

&lt;p&gt;Azure&amp;nbsp;regions&amp;nbsp;approximately&amp;nbsp;specified&amp;nbsp;Azure&amp;nbsp;Resource’s&amp;nbsp;physical&amp;nbsp;location.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;not&amp;nbsp;the&amp;nbsp;precise&amp;nbsp;location&amp;nbsp;of&amp;nbsp;the&amp;nbsp;machine&amp;nbsp;your&amp;nbsp;resource&amp;nbsp;is&amp;nbsp;hosted&amp;nbsp;on&amp;nbsp;but&amp;nbsp;it’s&amp;nbsp;more&amp;nbsp;the&amp;nbsp;scope&amp;nbsp;where&amp;nbsp;you&amp;nbsp;expect&amp;nbsp;the&amp;nbsp;majority&amp;nbsp;of&amp;nbsp;requests.&amp;nbsp;So,&amp;nbsp;the&amp;nbsp;first&amp;nbsp;question&amp;nbsp;you&amp;nbsp;should&amp;nbsp;ask&amp;nbsp;yourself&amp;nbsp;is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where&amp;nbsp;is&amp;nbsp;most&amp;nbsp;service&amp;nbsp;users?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some&amp;nbsp;services&amp;nbsp;are&amp;nbsp;not&amp;nbsp;available&amp;nbsp;in&amp;nbsp;every&amp;nbsp;region.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;find&amp;nbsp;out&amp;nbsp;which&amp;nbsp;service&amp;nbsp;is&amp;nbsp;available&amp;nbsp;where&amp;nbsp;at&amp;nbsp;&lt;a href="https://azure.microsoft.com/cs-cz/global-infrastructure/services/" rel="noopener noreferrer"&gt;Microsoft&amp;nbsp;webpage&lt;/a&gt;.&amp;nbsp;Few&amp;nbsp;of&amp;nbsp;services&amp;nbsp;from&amp;nbsp;Azure&amp;nbsp;portfolio&amp;nbsp;is&amp;nbsp;defined&amp;nbsp;as&amp;nbsp;global.&amp;nbsp;Which&amp;nbsp;means&amp;nbsp;they&amp;nbsp;are&amp;nbsp;highly&amp;nbsp;available&amp;nbsp;in&amp;nbsp;every&amp;nbsp;region.&amp;nbsp;For&amp;nbsp;example,&amp;nbsp;Azure&amp;nbsp;Active&amp;nbsp;Directory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi5pmp4dhvfeonmds4k4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi5pmp4dhvfeonmds4k4s.png" alt="Illustration" width="800" height="217"&gt;&lt;/a&gt;&lt;/p&gt;
[Source](https://azure.microsoft.com/cs-cz/global-infrastructure/services/)



&lt;p&gt;If&amp;nbsp;you&amp;nbsp;are&amp;nbsp;designing&amp;nbsp;the&amp;nbsp;whole&amp;nbsp;cloud&amp;nbsp;infrastructure,&amp;nbsp;you&amp;nbsp;should&amp;nbsp;check&amp;nbsp;the&amp;nbsp;availability&amp;nbsp;of&amp;nbsp;each&amp;nbsp;service&amp;nbsp;in&amp;nbsp;the&amp;nbsp;region&amp;nbsp;you&amp;nbsp;planned&amp;nbsp;to&amp;nbsp;use.&amp;nbsp;So,&amp;nbsp;the&amp;nbsp;second&amp;nbsp;question&amp;nbsp;you&amp;nbsp;should&amp;nbsp;ask&amp;nbsp;yourself&amp;nbsp;is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is&amp;nbsp;each&amp;nbsp;of&amp;nbsp;service&amp;nbsp;you&amp;nbsp;need&amp;nbsp;available&amp;nbsp;in&amp;nbsp;the&amp;nbsp;region&amp;nbsp;you&amp;nbsp;want&amp;nbsp;to&amp;nbsp;use?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another&amp;nbsp;reason&amp;nbsp;to&amp;nbsp;pick&amp;nbsp;different&amp;nbsp;region&amp;nbsp;can&amp;nbsp;be&amp;nbsp;regulatory&amp;nbsp;and&amp;nbsp;compliance&amp;nbsp;reasons&amp;nbsp;with&amp;nbsp;regards&amp;nbsp;to&amp;nbsp;data&amp;nbsp;residency.&amp;nbsp;Data&amp;nbsp;residency&amp;nbsp;refers&amp;nbsp;to&amp;nbsp;the&amp;nbsp;physical&amp;nbsp;location&amp;nbsp;of&amp;nbsp;information&amp;nbsp;in&amp;nbsp;environments&amp;nbsp;such&amp;nbsp;as&amp;nbsp;the&amp;nbsp;cloud&amp;nbsp;or&amp;nbsp;on-premises&amp;nbsp;servers.&lt;/p&gt;

&lt;p&gt;If&amp;nbsp;your&amp;nbsp;company&amp;nbsp;or&amp;nbsp;industry&amp;nbsp;is&amp;nbsp;heavily&amp;nbsp;regulated,&amp;nbsp;you&amp;nbsp;might&amp;nbsp;need&amp;nbsp;to&amp;nbsp;look&amp;nbsp;at&amp;nbsp;the&amp;nbsp;specific&amp;nbsp;requirements.&amp;nbsp;There&amp;nbsp;is&amp;nbsp;a&amp;nbsp;chance&amp;nbsp;you&amp;nbsp;might&amp;nbsp;need&amp;nbsp;to&amp;nbsp;do&amp;nbsp;some&amp;nbsp;extra&amp;nbsp;encryption&amp;nbsp;of&amp;nbsp;your&amp;nbsp;data.&amp;nbsp;This&amp;nbsp;is&amp;nbsp;a&amp;nbsp;tough&amp;nbsp;topic&amp;nbsp;and&amp;nbsp;Microsoft&amp;nbsp;created&amp;nbsp;a&amp;nbsp;document&amp;nbsp;to&amp;nbsp;help&amp;nbsp;you&amp;nbsp;with&amp;nbsp;it.&amp;nbsp;Take&amp;nbsp;a&amp;nbsp;look&amp;nbsp;&lt;a href="https://azure.microsoft.com/en-us/global-infrastructure/data-residency/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We&amp;nbsp;figured&amp;nbsp;out&amp;nbsp;the&amp;nbsp;third&amp;nbsp;question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do&amp;nbsp;I&amp;nbsp;need&amp;nbsp;to&amp;nbsp;consider&amp;nbsp;regulations&amp;nbsp;or&amp;nbsp;compliance&amp;nbsp;reasons&amp;nbsp;relating&amp;nbsp;to&amp;nbsp;data&amp;nbsp;residency?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Azure&amp;nbsp;Geographies&amp;nbsp;and&amp;nbsp;Azure&amp;nbsp;Region&amp;nbsp;Pairs
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Side note: if you also lean on AI tooling while you build, I share short, free lessons on getting more out of it in &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt;, a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now,&amp;nbsp;when&amp;nbsp;we&amp;nbsp;know,&amp;nbsp;what&amp;nbsp;we&amp;nbsp;need&amp;nbsp;to&amp;nbsp;consider&amp;nbsp;when&amp;nbsp;choosing&amp;nbsp;the&amp;nbsp;region,&amp;nbsp;let’s&amp;nbsp;talk&amp;nbsp;more&amp;nbsp;about&amp;nbsp;Azure&amp;nbsp;geographies&amp;nbsp;and&amp;nbsp;region&amp;nbsp;pairs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foaae2petci0fg8s5lbx1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foaae2petci0fg8s5lbx1.png" alt="Illustration" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;
Image&amp;nbsp;download&amp;nbsp;and&amp;nbsp;converted&amp;nbsp;to&amp;nbsp;PNG&amp;nbsp;from&amp;nbsp;[https://azure.microsoft.com/en-us/global-infrastructure/geographies/](https://azure.microsoft.com/en-us/global-infrastructure/geographies/)



&lt;p&gt;&lt;strong&gt;Azure&amp;nbsp;Geography&lt;/strong&gt;&amp;nbsp;contains&amp;nbsp;one&amp;nbsp;or&amp;nbsp;more&amp;nbsp;regions.&amp;nbsp;Every&amp;nbsp;geography&amp;nbsp;has&amp;nbsp;its&amp;nbsp;specific&amp;nbsp;data&amp;nbsp;residency&amp;nbsp;and&amp;nbsp;compliance&amp;nbsp;requirements.&amp;nbsp;There&amp;nbsp;exist&amp;nbsp;some&amp;nbsp;automatic&amp;nbsp;processes&amp;nbsp;like&amp;nbsp;replication&amp;nbsp;which&amp;nbsp;you&amp;nbsp;might&amp;nbsp;want&amp;nbsp;to&amp;nbsp;forbid.&amp;nbsp;Go&amp;nbsp;to&amp;nbsp;&lt;a href="https://azure.microsoft.com/en-us/global-infrastructure/geographies/" rel="noopener noreferrer"&gt;Microsoft’s&amp;nbsp;webpage&amp;nbsp;with&amp;nbsp;geographies&lt;/a&gt;&amp;nbsp;and&amp;nbsp;use&amp;nbsp;filter&amp;nbsp;to&amp;nbsp;get&amp;nbsp;&lt;em&gt;Azure&amp;nbsp;compliance&amp;nbsp;offerings&lt;/em&gt;&amp;nbsp;and&amp;nbsp;&lt;em&gt;data&amp;nbsp;residency&lt;/em&gt;&amp;nbsp;information&amp;nbsp;for&amp;nbsp;your&amp;nbsp;chosen&amp;nbsp;geography.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fizg8bbihrr70qvp5hk31.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fizg8bbihrr70qvp5hk31.png" alt="Illustration" width="558" height="583"&gt;&lt;/a&gt;&lt;/p&gt;
Snipped&amp;nbsp;out&amp;nbsp;from&amp;nbsp;[https://azure.microsoft.com/en-us/global-infrastructure/geographies/](https://azure.microsoft.com/en-us/global-infrastructure/geographies/)



&lt;p&gt;An&amp;nbsp;&lt;strong&gt;Azure&amp;nbsp;Region&amp;nbsp;Pair&lt;/strong&gt;&amp;nbsp;is&amp;nbsp;a&amp;nbsp;relationship&amp;nbsp;between&amp;nbsp;two&amp;nbsp;azure&amp;nbsp;Regions&amp;nbsp;within&amp;nbsp;the&amp;nbsp;same&amp;nbsp;geographic&amp;nbsp;region&amp;nbsp;for&amp;nbsp;disaster&amp;nbsp;recovery&amp;nbsp;purposes.&amp;nbsp;The&amp;nbsp;datacentres&amp;nbsp;in&amp;nbsp;region&amp;nbsp;pair&amp;nbsp;are&amp;nbsp;tactically&amp;nbsp;minimally&amp;nbsp;300&amp;nbsp;miles&amp;nbsp;apart&amp;nbsp;of&amp;nbsp;each&amp;nbsp;other.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;a&amp;nbsp;reasonable&amp;nbsp;distance&amp;nbsp;from&amp;nbsp;possible&amp;nbsp;natural&amp;nbsp;disaster&amp;nbsp;or&amp;nbsp;blackout&amp;nbsp;events.&lt;/p&gt;

&lt;p&gt;Microsoft&amp;nbsp;decided&amp;nbsp;which&amp;nbsp;regions&amp;nbsp;are&amp;nbsp;impaired&amp;nbsp;and&amp;nbsp;you&amp;nbsp;can’t&amp;nbsp;decide&amp;nbsp;it&amp;nbsp;for&amp;nbsp;yourself.&amp;nbsp;To&amp;nbsp;ensure&amp;nbsp;high&amp;nbsp;availability,&amp;nbsp;Microsoft&amp;nbsp;always&amp;nbsp;updates&amp;nbsp;only&amp;nbsp;one&amp;nbsp;region&amp;nbsp;from&amp;nbsp;pair&amp;nbsp;in&amp;nbsp;one&amp;nbsp;time.&amp;nbsp;During&amp;nbsp;possible&amp;nbsp;multiple&amp;nbsp;outages,&amp;nbsp;there&amp;nbsp;is&amp;nbsp;one&amp;nbsp;region&amp;nbsp;prioritized&amp;nbsp;for&amp;nbsp;disaster&amp;nbsp;recovery.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F72eieb5hiajgrc4j8qqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F72eieb5hiajgrc4j8qqw.png" alt="Illustration" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some&amp;nbsp;services&amp;nbsp;have&amp;nbsp;a&amp;nbsp;built-in&amp;nbsp;option&amp;nbsp;for&amp;nbsp;failover&amp;nbsp;and&amp;nbsp;in&amp;nbsp;an&amp;nbsp;inconvenient&amp;nbsp;event,&amp;nbsp;it&amp;nbsp;handles&amp;nbsp;the&amp;nbsp;situation&amp;nbsp;by&amp;nbsp;itself&amp;nbsp;for&amp;nbsp;you.&amp;nbsp;Some&amp;nbsp;services&amp;nbsp;do&amp;nbsp;not&amp;nbsp;have&amp;nbsp;a&amp;nbsp;failover&amp;nbsp;option.&amp;nbsp;You&amp;nbsp;should&amp;nbsp;design&amp;nbsp;your&amp;nbsp;own&amp;nbsp;solution&amp;nbsp;for&amp;nbsp;disaster&amp;nbsp;recovery&amp;nbsp;and&amp;nbsp;high&amp;nbsp;availability&amp;nbsp;for&amp;nbsp;such&amp;nbsp;services.&amp;nbsp;Keeping&amp;nbsp;in&amp;nbsp;mind&amp;nbsp;which&amp;nbsp;regions&amp;nbsp;are&amp;nbsp;in&amp;nbsp;pair&amp;nbsp;helps&amp;nbsp;you&amp;nbsp;to&amp;nbsp;design&amp;nbsp;such&amp;nbsp;solutions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure&amp;nbsp;Availability&amp;nbsp;Zone
&lt;/h3&gt;

&lt;p&gt;Availability&amp;nbsp;Zones&amp;nbsp;are&amp;nbsp;unique&amp;nbsp;physical&amp;nbsp;locations&amp;nbsp;in&amp;nbsp;a&amp;nbsp;single&amp;nbsp;region.&amp;nbsp;It&amp;nbsp;can&amp;nbsp;contain&amp;nbsp;more&amp;nbsp;datacentres&amp;nbsp;with&amp;nbsp;independent&amp;nbsp;power,&amp;nbsp;cooling,&amp;nbsp;and&amp;nbsp;networking.&amp;nbsp;Minimum&amp;nbsp;for&amp;nbsp;one&amp;nbsp;region&amp;nbsp;is&amp;nbsp;three&amp;nbsp;separated&amp;nbsp;zones.&lt;/p&gt;

&lt;p&gt;When&amp;nbsp;you&amp;nbsp;are&amp;nbsp;creating&amp;nbsp;a&amp;nbsp;Virtual&amp;nbsp;Machine&amp;nbsp;Service,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;specify&amp;nbsp;the&amp;nbsp;availability&amp;nbsp;zone.&amp;nbsp;That&amp;nbsp;gives&amp;nbsp;you&amp;nbsp;the&amp;nbsp;power&amp;nbsp;to&amp;nbsp;create&amp;nbsp;a&amp;nbsp;more&amp;nbsp;virtual&amp;nbsp;machine&amp;nbsp;in&amp;nbsp;different&amp;nbsp;zones&amp;nbsp;and&amp;nbsp;setup&amp;nbsp;load&amp;nbsp;balance&amp;nbsp;or&amp;nbsp;data&amp;nbsp;replication&amp;nbsp;between&amp;nbsp;them.&amp;nbsp;This&amp;nbsp;can&amp;nbsp;protect&amp;nbsp;you&amp;nbsp;from&amp;nbsp;a&amp;nbsp;natural&amp;nbsp;disaster&amp;nbsp;in&amp;nbsp;one&amp;nbsp;region.&lt;/p&gt;

&lt;p&gt;Some&amp;nbsp;services&amp;nbsp;like&amp;nbsp;Zone&amp;nbsp;Redundant&amp;nbsp;Storage&amp;nbsp;will&amp;nbsp;replicate&amp;nbsp;your&amp;nbsp;data&amp;nbsp;automatically&amp;nbsp;across&amp;nbsp;zones&amp;nbsp;and&amp;nbsp;you&amp;nbsp;don’t&amp;nbsp;have&amp;nbsp;to&amp;nbsp;take&amp;nbsp;care&amp;nbsp;of&amp;nbsp;it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://app.pluralsight.com/library/courses/microsoft-azure-services-concepts/table-of-contents" rel="noopener noreferrer"&gt;Pluralsight&amp;nbsp;course&amp;nbsp;by&amp;nbsp;Neil&amp;nbsp;Morrissey.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.microsoft.com/en-us/learn/paths/azure-fundamentals/" rel="noopener noreferrer"&gt;Microsoft&amp;nbsp;Learn&amp;nbsp;Platform.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://azure.microsoft.com/cs-cz/global-infrastructure/geographies/" rel="noopener noreferrer"&gt;Microsoft&amp;nbsp;docs&amp;nbsp;about&amp;nbsp;Azure&amp;nbsp;Infrastructure.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Daniel&amp;nbsp;Rusnok's&amp;nbsp;Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Every&amp;nbsp;month&amp;nbsp;I&amp;nbsp;will&amp;nbsp;send&amp;nbsp;you&amp;nbsp;an&amp;nbsp;email&amp;nbsp;about&amp;nbsp;with&amp;nbsp;a&amp;nbsp;list&amp;nbsp;of&amp;nbsp;my&amp;nbsp;newest&amp;nbsp;articles.&amp;nbsp;It&amp;nbsp;will&amp;nbsp;be&amp;nbsp;of&amp;nbsp;course&amp;nbsp;the&amp;nbsp;friendly&amp;nbsp;links…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;www.danielrusnok.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/danielrusnok" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tm54rf5555ym89o2ne4.png" alt="Illustration" width="200" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this was useful, you might also enjoy &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/introduction-to-cloud-computing-235e530b9fe0%5D%C2%A0%E2%80%94%C2%A0_Introduction%C2%A0to%C2%A0Cloud%C2%A0Computing_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/introduction-to-cloud-computing-235e530b9fe0]&amp;nbsp;—&amp;nbsp;_Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Create%C2%A0a%C2%A0Free%C2%A0Azure%C2%A0Account%C2%A0Step%C2%A0by%C2%A0Step_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;Free&amp;nbsp;Azure&amp;nbsp;Account&amp;nbsp;Step&amp;nbsp;by&amp;nbsp;Step_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6%5D%C2%A0%E2%80%94%C2%A0_Understanding%C2%A0the%C2%A0Azure%C2%A0Resource%C2%A0Groups%C2%A0and%C2%A0Azure%C2%A0Resources_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6]&amp;nbsp;—&amp;nbsp;_Understanding&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Groups&amp;nbsp;and&amp;nbsp;Azure&amp;nbsp;Resources_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/my-introduction-into-azure-service-fabric-de65cc72a7b5%5D%C2%A0%E2%80%94%C2%A0_My%C2%A0introduction%C2%A0into%C2%A0Azure%C2%A0Service%C2%A0Fabric_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/my-introduction-into-azure-service-fabric-de65cc72a7b5]&amp;nbsp;—&amp;nbsp;_My&amp;nbsp;introduction&amp;nbsp;into&amp;nbsp;Azure&amp;nbsp;Service&amp;nbsp;Fabric_&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Create a Free Azure Account Step by Step</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Fri, 26 Jun 2026 15:06:47 +0000</pubDate>
      <link>https://dev.to/danielrusnok/how-to-create-a-free-azure-account-step-by-step-c6j</link>
      <guid>https://dev.to/danielrusnok/how-to-create-a-free-azure-account-step-by-step-c6j</guid>
      <description>&lt;h4&gt;
  
  
  AZURE &amp;amp;&amp;nbsp;CLOUD
&lt;/h4&gt;

&lt;h3&gt;
  
  
  How to Create a Free Azure Account Step by&amp;nbsp;Step
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Guide for creating a free Azure account. What services can you use for free? What is Directory or subscription and what type of subscription Azure&amp;nbsp;offers?
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6mogfwgp5es3yvvdh5mu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6mogfwgp5es3yvvdh5mu.png" alt="How to Create a Free Azure Account Step by Step cover image" width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;official &lt;a href="https://azure.microsoft.com/" rel="noopener noreferrer"&gt;Azure&lt;/a&gt; logo downloaded from &lt;a href="https://seeklogo.com/vector-logo/326269/microsoft-azure" rel="noopener noreferrer"&gt;seeklogo.com&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is&amp;nbsp;Azure
&lt;/h3&gt;

&lt;p&gt;Azure is a cloud provider developed by Microsoft. If you are not familiar with Cloud Computing I recommend you to read my &lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0?source=friends_link&amp;amp;sk=9c99063a197df858c8d24a296620ccbc" rel="noopener noreferrer"&gt;Introduction to Cloud Computing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;&lt;strong&gt;Introduction to Cloud Computing&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
_Cloud computing is the present and future of software utilization, development and hosting. Let me introduce you its…_levelup.gitconnected.com&lt;/a&gt;&lt;a href="https://levelup.gitconnected.com/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating the Free Azure&amp;nbsp;account
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; Go to &lt;a href="https://azure.microsoft.com/free" rel="noopener noreferrer"&gt;https://azure.microsoft.com/free&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; Click on “Start for free” button.&lt;/li&gt;
&lt;li&gt; You will be redirected to a sign-in form. You need the Microsoft account. If you don’t have any, created one or there is also the possibility to use &lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; account since Microsoft bought it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdznx6ksltlcclrqnwshm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdznx6ksltlcclrqnwshm.png" alt="Illustration" width="415" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft sign-in&amp;nbsp;form&lt;/p&gt;

&lt;p&gt;4. After your successful authorization you will be redirected to Identity verification by card form. For those who also do not like to give credit card initials, I have a little tip for you. Use service &lt;a href="https://www.revolut.com/" rel="noopener noreferrer"&gt;Revolut&lt;/a&gt; to create the international bank account for free and then generate a virtual credit card. It is completely free.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkig2s4yzh15c08pz8jlj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkig2s4yzh15c08pz8jlj.png" alt="Illustration" width="665" height="787"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Identity verification by card&amp;nbsp;form&lt;/p&gt;

&lt;p&gt;5. Now that only remains is checking the agreement, click sign up and your Azure account is created. Congratulations!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshz4p44czzuzuoevonii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshz4p44czzuzuoevonii.png" alt="Illustration" width="661" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agreement and sign up&amp;nbsp;button&lt;/p&gt;

&lt;p&gt;6. If you weren’t have been redirected to &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;Azure Portal, please use this link.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Free Services with Free&amp;nbsp;Account
&lt;/h3&gt;

&lt;p&gt;With your first registration, Microsoft is more than generous to us. You will be provided with:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;€170 or $200 free credit&lt;/strong&gt; for the duration of the first month. When your first month ends, the credit expires and you will be asked to choose one of the available subscriptions. We will talk about them soon.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;12 months of popular services for free.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;25 services independently for free.&lt;/strong&gt; Offer might differ in different regions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The structural list of free services and advantages can be found on &lt;a href="https://portal.azure.com/free" rel="noopener noreferrer"&gt;the same page which we used for registration&lt;/a&gt;. Scroll down and you should find it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Directory
&lt;/h3&gt;

&lt;p&gt;Each Microsoft account or Microsoft service is associated with the Azure Active Directory (AAD). AAD is Microsoft’s cloud-based identity and access management service.&lt;/p&gt;

&lt;p&gt;From Xbox account to Office365, if you are using one of Microsoft’s services, you have an account associated AAD and there is the directory (Tenant) dedicated just for you.&lt;/p&gt;

&lt;p&gt;The directory is a cloud-based identity and it always has its human-readable identifier which ends with &lt;em&gt;onmicrosoft.com&lt;/em&gt; suffix. Such an identifier is globally unique. You can see the name of your AAD after clicking your name at top right corner and then click at &lt;em&gt;switch directory&lt;/em&gt; link.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frnyea83kouuy14gqp9nu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frnyea83kouuy14gqp9nu.png" alt="Illustration" width="727" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Displaying the name of your directory in Azure&amp;nbsp;Portal&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscriptions
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Quick aside: if you like picking up new tools one clear step at a time like this, I share short, free lessons in that spirit over at &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One Directory can hold multiple subscriptions. It serves as a single billing unit for Azure resources. This is the most often used subscription types:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Pay-as-you-go&lt;/strong&gt; — As the title refers, you will be billed monthly for resources you used in the current month. This is an obvious choice after one-month free trial. If you want to use just free services, you have nothing to worry about.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Azure Open Licencing&lt;/strong&gt; — Credits bought from third-party retailers. You will obtain the code which one you going to apply threw online form in Azure Portal.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Visual Studio Enterprise Subscription&lt;/strong&gt; — if you are a user of VS Enterprise, you are provided with free monthly credits in the amount of $200.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are also more enterprise subscriptions which include the Azure support services. What is worth mentioning is that you cannot deploy any service without the active subscription.&lt;/p&gt;

&lt;p&gt;If you are not interested in the free trial month, you can immediately upgrade your subscription threw button &lt;em&gt;Upgrade&lt;/em&gt; in top left corner of Azure Portal home page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgi79ni6x473nj8p7jyoh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgi79ni6x473nj8p7jyoh.png" alt="Illustration" width="484" height="49"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upgrade button in Azure&amp;nbsp;Portal&lt;/p&gt;

&lt;p&gt;Subscription can also be added threw page subscription. You can be navigated there threw interactive search field at the top.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv5gwny22ba7vv7b4w11f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv5gwny22ba7vv7b4w11f.png" alt="Illustration" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Search subscriptions&lt;/p&gt;

&lt;p&gt;Or, if you are really newbie and doesn’t play with the settings of your homepage, you should be able to see the link to the subscriptions page in &lt;em&gt;Azure services&lt;/em&gt; section and also in &lt;em&gt;Navigate&lt;/em&gt; section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhzvs513x5z2ynhyshsch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhzvs513x5z2ynhyshsch.png" alt="Illustration" width="740" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Subscription links at Azure Portal&amp;nbsp;homepage&lt;/p&gt;

&lt;p&gt;Once you will be at Subscriptions page, use the button &lt;em&gt;Add&lt;/em&gt;. You will be redirected to page with subscription offers. As you can see in the image below, I have disabled the Pay-As-You-Go &lt;em&gt;Select offer&lt;/em&gt; button, because my free trial month is still running. But I would be able to upgrade my account threw provide link next to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F89nffseznsh9wzlazhzh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F89nffseznsh9wzlazhzh.png" alt="Illustration" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;I hope that everything was clear and you are now ready to create your free account and start to play with Azure. Azure is really huge playground and it is worthwhile.&lt;/p&gt;




&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://app.pluralsight.com/library/courses/microsoft-azure-services-concepts/table-of-contents" rel="noopener noreferrer"&gt;Pluralsight course by Neil Morrissey.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.microsoft.com/en-us/learn/paths/azure-fundamentals/" rel="noopener noreferrer"&gt;Microsoft Learn Platform.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://azure.microsoft.com/free" rel="noopener noreferrer"&gt;Azure getting started.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;Azure Portal.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;&lt;strong&gt;Daniel Rusnok's Newsletter&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
_Every month I will send you an email about with list of my newest articles. It will be ofcourse the friendly links…_www.danielrusnok.com&lt;/a&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/danielrusnok" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tm54rf5555ym89o2ne4.png" alt="Illustration" width="200" height="56"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Level Up&amp;nbsp;Coding
&lt;/h3&gt;

&lt;p&gt;Thanks for being a part of our community! Level Up is transforming teach recruiting. &lt;a href="https://jobs.levelup.dev/talent" rel="noopener noreferrer"&gt;&lt;strong&gt;Find your perfect job&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;at the best companies&lt;/strong&gt;, not just your &lt;em&gt;next job&lt;/em&gt;. Click “Apply to join” if you’re a dev or “Start hiring” if you’re a company.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jobs.levelup.dev/talent" rel="noopener noreferrer"&gt;&lt;strong&gt;Level Up — Transforming the Hiring Process&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
_🔥 Enabling software engineers to find the perfect role that they love 🧠 Finding talent is the most painful part of…_jobs.levelup.dev&lt;/a&gt;&lt;a href="https://jobs.levelup.dev/talent" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;







&lt;p&gt;&lt;em&gt;If this was useful, you might also enjoy &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short, free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/introduction-to-cloud-computing-235e530b9fe0" rel="noopener noreferrer"&gt;Introduction to Cloud Computing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/how-to-choose-the-azure-region-2a7bfd5ef864" rel="noopener noreferrer"&gt;How to Choose the Azure Region&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6" rel="noopener noreferrer"&gt;Understanding the Azure Resource Groups and Azure Resources&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://medium.com/@danielrusnok/how-to-implement-azure-functions-in-any-language-with-custom-handlers-78e627264ccb" rel="noopener noreferrer"&gt;How to Implement Azure Functions in any Language with Custom Handlers&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Introduction to Cloud Computing</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Wed, 24 Jun 2026 15:05:24 +0000</pubDate>
      <link>https://dev.to/danielrusnok/introduction-to-cloud-computing-35ac</link>
      <guid>https://dev.to/danielrusnok/introduction-to-cloud-computing-35ac</guid>
      <description>&lt;h4&gt;
  
  
  Azure&amp;nbsp;&amp;amp;&amp;nbsp;Cloud
&lt;/h4&gt;

&lt;h3&gt;
  
  
  Introduction&amp;nbsp;to&amp;nbsp;Cloud&amp;nbsp;Computing
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Cloud&amp;nbsp;computing&amp;nbsp;is&amp;nbsp;the&amp;nbsp;present&amp;nbsp;and&amp;nbsp;future&amp;nbsp;of&amp;nbsp;software&amp;nbsp;utilization,&amp;nbsp;development&amp;nbsp;and&amp;nbsp;hosting.&amp;nbsp;Let&amp;nbsp;me&amp;nbsp;introduce&amp;nbsp;you&amp;nbsp;its&amp;nbsp;basics.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvru3q8dmv8gmwzzemkzt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvru3q8dmv8gmwzzemkzt.jpeg" alt="Introduction to Cloud Computing cover image" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Early&amp;nbsp;Evolution&amp;nbsp;of&amp;nbsp;Cloud&amp;nbsp;Computing
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Datacentres&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Past
&lt;/h4&gt;

&lt;p&gt;Until&amp;nbsp;recently,&amp;nbsp;maybe&amp;nbsp;10&amp;nbsp;to&amp;nbsp;15&amp;nbsp;years&amp;nbsp;in&amp;nbsp;the&amp;nbsp;past,&amp;nbsp;each&amp;nbsp;company&amp;nbsp;had&amp;nbsp;its&amp;nbsp;own&amp;nbsp;datacentres&amp;nbsp;with&amp;nbsp;servers&amp;nbsp;for&amp;nbsp;a&amp;nbsp;different&amp;nbsp;purpose,&amp;nbsp;maybe&amp;nbsp;running&amp;nbsp;on&amp;nbsp;different&amp;nbsp;hardware,&amp;nbsp;and&amp;nbsp;even&amp;nbsp;with&amp;nbsp;a&amp;nbsp;different&amp;nbsp;operating&amp;nbsp;system.&lt;/p&gt;

&lt;p&gt;Each&amp;nbsp;of&amp;nbsp;these&amp;nbsp;servers&amp;nbsp;has&amp;nbsp;its&amp;nbsp;own&amp;nbsp;CPU,&amp;nbsp;hard&amp;nbsp;drive,&amp;nbsp;and&amp;nbsp;RAM&amp;nbsp;memory&amp;nbsp;and&amp;nbsp;every&amp;nbsp;one&amp;nbsp;of&amp;nbsp;them&amp;nbsp;need&amp;nbsp;enough&amp;nbsp;resources&amp;nbsp;for&amp;nbsp;utilization&amp;nbsp;at&amp;nbsp;peak&amp;nbsp;time.&lt;/p&gt;

&lt;p&gt;It&amp;nbsp;also&amp;nbsp;means,&amp;nbsp;that&amp;nbsp;on&amp;nbsp;average,&amp;nbsp;most&amp;nbsp;servers&amp;nbsp;were&amp;nbsp;really&amp;nbsp;underutilized,&amp;nbsp;and&amp;nbsp;organizations&amp;nbsp;were&amp;nbsp;spending&amp;nbsp;a&amp;nbsp;ton&amp;nbsp;of&amp;nbsp;money&amp;nbsp;on&amp;nbsp;hardware&amp;nbsp;that&amp;nbsp;most&amp;nbsp;of&amp;nbsp;the&amp;nbsp;time&amp;nbsp;was&amp;nbsp;not&amp;nbsp;even&amp;nbsp;used&amp;nbsp;at&amp;nbsp;10%&amp;nbsp;of&amp;nbsp;its&amp;nbsp;capability.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0aizslvxmnu6n4d86jok.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0aizslvxmnu6n4d86jok.jpeg" alt="Illustration" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Virtualization
&lt;/h4&gt;

&lt;p&gt;Then,&amp;nbsp;we&amp;nbsp;started&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;virtualization,&amp;nbsp;which&amp;nbsp;allows&amp;nbsp;us&amp;nbsp;to&amp;nbsp;run&amp;nbsp;multiple&amp;nbsp;virtual&amp;nbsp;machines&amp;nbsp;at&amp;nbsp;a&amp;nbsp;single&amp;nbsp;virtual&amp;nbsp;host&amp;nbsp;(physical&amp;nbsp;server).&amp;nbsp;So,&amp;nbsp;we&amp;nbsp;were&amp;nbsp;able&amp;nbsp;to&amp;nbsp;get&amp;nbsp;more&amp;nbsp;usage&amp;nbsp;out&amp;nbsp;of&amp;nbsp;hardware,&amp;nbsp;cut&amp;nbsp;down&amp;nbsp;space&amp;nbsp;cooling&amp;nbsp;and&amp;nbsp;of&amp;nbsp;course,&amp;nbsp;the&amp;nbsp;costs.&lt;/p&gt;

&lt;p&gt;However,&amp;nbsp;even&amp;nbsp;with&amp;nbsp;virtualization,&amp;nbsp;we&amp;nbsp;still&amp;nbsp;had&amp;nbsp;a&amp;nbsp;few&amp;nbsp;disadvantages,&amp;nbsp;such&amp;nbsp;as&amp;nbsp;high&amp;nbsp;upfront&amp;nbsp;cost.&amp;nbsp;So,&amp;nbsp;we&amp;nbsp;needed&amp;nbsp;to&amp;nbsp;buy&amp;nbsp;powerful&amp;nbsp;virtual&amp;nbsp;hosts,&amp;nbsp;which&amp;nbsp;we&amp;nbsp;would&amp;nbsp;then&amp;nbsp;kept&amp;nbsp;for&amp;nbsp;five&amp;nbsp;years&amp;nbsp;for&amp;nbsp;the&amp;nbsp;amortization&amp;nbsp;of&amp;nbsp;cost.&lt;/p&gt;

&lt;p&gt;We&amp;nbsp;still&amp;nbsp;had&amp;nbsp;to&amp;nbsp;pay&amp;nbsp;for&amp;nbsp;space&amp;nbsp;in&amp;nbsp;the&amp;nbsp;datacentre,&amp;nbsp;as&amp;nbsp;well&amp;nbsp;as&amp;nbsp;electricity&amp;nbsp;and&amp;nbsp;utility&amp;nbsp;costs&amp;nbsp;for&amp;nbsp;cooling&amp;nbsp;and&amp;nbsp;other&amp;nbsp;server’s&amp;nbsp;needs.&amp;nbsp;Furthermore,&amp;nbsp;hardware&amp;nbsp;maintenance&amp;nbsp;is&amp;nbsp;still&amp;nbsp;required&amp;nbsp;as&amp;nbsp;this&amp;nbsp;can&amp;nbsp;breakdown,&amp;nbsp;network&amp;nbsp;cards&amp;nbsp;can&amp;nbsp;go&amp;nbsp;bad,&amp;nbsp;and&amp;nbsp;so&amp;nbsp;on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyw3oqqr0ldgwsbm83pw8.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyw3oqqr0ldgwsbm83pw8.jpeg" alt="Illustration" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Virtualization&amp;nbsp;is&amp;nbsp;more&amp;nbsp;cost-efficient&amp;nbsp;than&amp;nbsp;dedicated&amp;nbsp;hardware,&amp;nbsp;but&amp;nbsp;there&amp;nbsp;still&amp;nbsp;was&amp;nbsp;space&amp;nbsp;for&amp;nbsp;improvement.&amp;nbsp;This&amp;nbsp;is&amp;nbsp;where&amp;nbsp;Cloud&amp;nbsp;Computing&amp;nbsp;came&amp;nbsp;in.&lt;/p&gt;

&lt;h4&gt;
  
  
  Cloud&amp;nbsp;Computing
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://searchcloudcomputing.techtarget.com/definition/cloud-computing" rel="noopener noreferrer"&gt;Cloud&amp;nbsp;Computing&lt;/a&gt;&amp;nbsp;enables&amp;nbsp;companies&amp;nbsp;to&amp;nbsp;consume&amp;nbsp;a&amp;nbsp;compute&amp;nbsp;resource&amp;nbsp;such&amp;nbsp;as&amp;nbsp;a&amp;nbsp;virtual&amp;nbsp;machine,&amp;nbsp;storage,&amp;nbsp;or&amp;nbsp;an&amp;nbsp;application,&amp;nbsp;as&amp;nbsp;a&amp;nbsp;utility&amp;nbsp;—&amp;nbsp;just&amp;nbsp;like&amp;nbsp;electricity&amp;nbsp;—&amp;nbsp;rather&amp;nbsp;than&amp;nbsp;having&amp;nbsp;to&amp;nbsp;build&amp;nbsp;and&amp;nbsp;maintain&amp;nbsp;computing&amp;nbsp;infrastructures&amp;nbsp;in&amp;nbsp;house.&lt;/em&gt;&amp;nbsp;&lt;a href="https://searchcloudcomputing.techtarget.com/definition/cloud-computing" rel="noopener noreferrer"&gt;Source&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;Free&amp;nbsp;Azure&amp;nbsp;Account&amp;nbsp;Step&amp;nbsp;by&amp;nbsp;Step&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;Guide&amp;nbsp;for&amp;nbsp;creating&amp;nbsp;a&amp;nbsp;free&amp;nbsp;Azure&amp;nbsp;account.&amp;nbsp;What&amp;nbsp;services&amp;nbsp;you&amp;nbsp;can&amp;nbsp;use&amp;nbsp;for&amp;nbsp;free?&amp;nbsp;What&amp;nbsp;is&amp;nbsp;Directory&amp;nbsp;or&amp;nbsp;subscription&amp;nbsp;and&amp;nbsp;what…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e" rel="noopener noreferrer"&gt;medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In&amp;nbsp;the&amp;nbsp;cloud&amp;nbsp;environment,&amp;nbsp;you&amp;nbsp;have&amp;nbsp;the&amp;nbsp;cloud&amp;nbsp;provider&amp;nbsp;which&amp;nbsp;owns&amp;nbsp;their&amp;nbsp;datacentre&amp;nbsp;and&amp;nbsp;manages&amp;nbsp;all&amp;nbsp;their&amp;nbsp;hardware,&amp;nbsp;networking&amp;nbsp;and,&amp;nbsp;of&amp;nbsp;course,&amp;nbsp;virtualization.&amp;nbsp;Cloud&amp;nbsp;is&amp;nbsp;fully&amp;nbsp;built&amp;nbsp;on&amp;nbsp;the&amp;nbsp;principle&amp;nbsp;of&amp;nbsp;virtualization.&amp;nbsp;No&amp;nbsp;client&amp;nbsp;has&amp;nbsp;direct&amp;nbsp;access&amp;nbsp;to&amp;nbsp;the&amp;nbsp;hardware.&amp;nbsp;Simply,&amp;nbsp;its&amp;nbsp;virtualized&amp;nbsp;environment.&lt;/p&gt;

&lt;p&gt;All&amp;nbsp;resources&amp;nbsp;are&amp;nbsp;pulled&amp;nbsp;together&amp;nbsp;and&amp;nbsp;then&amp;nbsp;shared&amp;nbsp;to&amp;nbsp;multiple&amp;nbsp;clients&amp;nbsp;that&amp;nbsp;all&amp;nbsp;consume&amp;nbsp;that&amp;nbsp;shared&amp;nbsp;hardware.&amp;nbsp;Such&amp;nbsp;clients&amp;nbsp;do&amp;nbsp;not&amp;nbsp;need&amp;nbsp;to&amp;nbsp;know&amp;nbsp;what&amp;nbsp;server&amp;nbsp;they&amp;nbsp;are&amp;nbsp;run&amp;nbsp;on&amp;nbsp;or&amp;nbsp;on&amp;nbsp;how&amp;nbsp;many&amp;nbsp;servers&amp;nbsp;their&amp;nbsp;environment&amp;nbsp;is&amp;nbsp;running.&amp;nbsp;They&amp;nbsp;simply&amp;nbsp;consume&amp;nbsp;a&amp;nbsp;service&amp;nbsp;and&amp;nbsp;the&amp;nbsp;cloud&amp;nbsp;provider&amp;nbsp;is&amp;nbsp;the&amp;nbsp;one&amp;nbsp;making&amp;nbsp;sure&amp;nbsp;there&amp;nbsp;are&amp;nbsp;enough&amp;nbsp;shared&amp;nbsp;resources&amp;nbsp;to&amp;nbsp;handle&amp;nbsp;requirements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp5v79es9ii927okhcoob.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp5v79es9ii927okhcoob.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Users&amp;nbsp;select&amp;nbsp;only&amp;nbsp;the&amp;nbsp;services&amp;nbsp;they&amp;nbsp;want&amp;nbsp;to&amp;nbsp;use.&amp;nbsp;Each&amp;nbsp;service&amp;nbsp;has&amp;nbsp;its&amp;nbsp;own&amp;nbsp;definition&amp;nbsp;of&amp;nbsp;utilization.&amp;nbsp;Once&amp;nbsp;you&amp;nbsp;can&amp;nbsp;be&amp;nbsp;billed&amp;nbsp;per&amp;nbsp;user,&amp;nbsp;once&amp;nbsp;it&amp;nbsp;can&amp;nbsp;be&amp;nbsp;per&amp;nbsp;minute.&amp;nbsp;Cloud&amp;nbsp;infrastructure&amp;nbsp;should&amp;nbsp;be&amp;nbsp;self-serviced&amp;nbsp;by&amp;nbsp;the&amp;nbsp;user&amp;nbsp;and&amp;nbsp;provisioning&amp;nbsp;should&amp;nbsp;be&amp;nbsp;fully&amp;nbsp;automated&amp;nbsp;by&amp;nbsp;the&amp;nbsp;cloud&amp;nbsp;provider&amp;nbsp;and&amp;nbsp;delivered&amp;nbsp;at&amp;nbsp;almost&amp;nbsp;instant&amp;nbsp;fashion.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side note: I send short, free lessons on building and shipping software in &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fundamental&amp;nbsp;Division&amp;nbsp;of&amp;nbsp;Cloud&amp;nbsp;Services
&lt;/h3&gt;

&lt;p&gt;Each&amp;nbsp;cloud&amp;nbsp;provider&amp;nbsp;has&amp;nbsp;its&amp;nbsp;own&amp;nbsp;list&amp;nbsp;of&amp;nbsp;services&amp;nbsp;to&amp;nbsp;offer,&amp;nbsp;but&amp;nbsp;these&amp;nbsp;services&amp;nbsp;can&amp;nbsp;be&amp;nbsp;always&amp;nbsp;divided&amp;nbsp;into&amp;nbsp;two&amp;nbsp;basic&amp;nbsp;ones.&lt;/p&gt;

&lt;h4&gt;
  
  
  Compute&amp;nbsp;Power
&lt;/h4&gt;

&lt;p&gt;Compute&amp;nbsp;power&amp;nbsp;is&amp;nbsp;how&amp;nbsp;much&amp;nbsp;processing&amp;nbsp;computer&amp;nbsp;can&amp;nbsp;do.&amp;nbsp;For&amp;nbsp;example,&amp;nbsp;when&amp;nbsp;you&amp;nbsp;are&amp;nbsp;buying&amp;nbsp;new&amp;nbsp;home&amp;nbsp;computer,&amp;nbsp;you&amp;nbsp;may&amp;nbsp;choose&amp;nbsp;a&amp;nbsp;computer&amp;nbsp;with&amp;nbsp;8&amp;nbsp;GB&amp;nbsp;of&amp;nbsp;RAM&amp;nbsp;and&amp;nbsp;the&amp;nbsp;latest&amp;nbsp;processor&amp;nbsp;to&amp;nbsp;run&amp;nbsp;today’s&amp;nbsp;software.&amp;nbsp;But,&amp;nbsp;as&amp;nbsp;a&amp;nbsp;load&amp;nbsp;of&amp;nbsp;computer&amp;nbsp;grows,&amp;nbsp;you&amp;nbsp;will&amp;nbsp;find&amp;nbsp;that&amp;nbsp;it&amp;nbsp;slows&amp;nbsp;down.&lt;/p&gt;

&lt;p&gt;With&amp;nbsp;Cloud&amp;nbsp;Computing&amp;nbsp;you&amp;nbsp;can&amp;nbsp;add&amp;nbsp;or&amp;nbsp;remove&amp;nbsp;compute&amp;nbsp;power&amp;nbsp;as&amp;nbsp;you&amp;nbsp;need.&amp;nbsp;This&amp;nbsp;can&amp;nbsp;save&amp;nbsp;your&amp;nbsp;costs,&amp;nbsp;since&amp;nbsp;you&amp;nbsp;are&amp;nbsp;paying&amp;nbsp;only&amp;nbsp;for&amp;nbsp;the&amp;nbsp;resources&amp;nbsp;you&amp;nbsp;use.&lt;/p&gt;

&lt;h4&gt;
  
  
  Storage
&lt;/h4&gt;

&lt;p&gt;Storage&amp;nbsp;is&amp;nbsp;a&amp;nbsp;volume&amp;nbsp;of&amp;nbsp;data&amp;nbsp;you&amp;nbsp;can&amp;nbsp;store&amp;nbsp;on&amp;nbsp;your&amp;nbsp;computer.&amp;nbsp;Traditional&amp;nbsp;computer&amp;nbsp;has&amp;nbsp;a&amp;nbsp;limited&amp;nbsp;hard&amp;nbsp;drive&amp;nbsp;for&amp;nbsp;space.&amp;nbsp;With&amp;nbsp;cloud&amp;nbsp;computing&amp;nbsp;you&amp;nbsp;can&amp;nbsp;request&amp;nbsp;more&amp;nbsp;storage&amp;nbsp;as&amp;nbsp;you&amp;nbsp;need.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fltwfvo5bqkiziw2sqdv2.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fltwfvo5bqkiziw2sqdv2.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Furthermore,&amp;nbsp;we&amp;nbsp;can&amp;nbsp;divide&amp;nbsp;cloud&amp;nbsp;services&amp;nbsp;more&amp;nbsp;by&amp;nbsp;its&amp;nbsp;user’s&amp;nbsp;needs&amp;nbsp;into&amp;nbsp;three&amp;nbsp;categories.&lt;/p&gt;

&lt;h4&gt;
  
  
  Infrastructure&amp;nbsp;as&amp;nbsp;Service(IaaS)
&lt;/h4&gt;

&lt;p&gt;IaaS&amp;nbsp;aims&amp;nbsp;to&amp;nbsp;provide&amp;nbsp;control&amp;nbsp;over&amp;nbsp;hardware&amp;nbsp;directly&amp;nbsp;to&amp;nbsp;the&amp;nbsp;customer.&amp;nbsp;This&amp;nbsp;does&amp;nbsp;not&amp;nbsp;mean&amp;nbsp;control&amp;nbsp;over&amp;nbsp;the&amp;nbsp;physical&amp;nbsp;machines.&amp;nbsp;This&amp;nbsp;means&amp;nbsp;full&amp;nbsp;control&amp;nbsp;over&amp;nbsp;hardware&amp;nbsp;threw&amp;nbsp;online&amp;nbsp;interfaces.&amp;nbsp;Customer&amp;nbsp;will&amp;nbsp;gain&amp;nbsp;control&amp;nbsp;over&amp;nbsp;virtual&amp;nbsp;machines,&amp;nbsp;storages,&amp;nbsp;or&amp;nbsp;operating&amp;nbsp;systems.&lt;/p&gt;

&lt;p&gt;Common&amp;nbsp;usage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Load&amp;nbsp;migration.&lt;/li&gt;
&lt;li&gt;  Storages.&lt;/li&gt;
&lt;li&gt;  Backups&amp;nbsp;and&amp;nbsp;recovers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Platform&amp;nbsp;as&amp;nbsp;Service(PaaS)
&lt;/h4&gt;

&lt;p&gt;PaaS&amp;nbsp;is&amp;nbsp;providing&amp;nbsp;an&amp;nbsp;environment&amp;nbsp;for&amp;nbsp;development,&amp;nbsp;testing&amp;nbsp;and&amp;nbsp;deploying&amp;nbsp;of&amp;nbsp;software&amp;nbsp;applications.&amp;nbsp;Target&amp;nbsp;is&amp;nbsp;to&amp;nbsp;create&amp;nbsp;application&amp;nbsp;quickly&amp;nbsp;without&amp;nbsp;infrastructure&amp;nbsp;concerns.&lt;/p&gt;

&lt;p&gt;Common&amp;nbsp;usage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Development&amp;nbsp;framework(Software&amp;nbsp;resources&amp;nbsp;such&amp;nbsp;as&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/my-introduction-into-azure-service-fabric-de65cc72a7b5" rel="noopener noreferrer"&gt;Azure&amp;nbsp;Fabric&amp;nbsp;Service&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  Analytics&amp;nbsp;and&amp;nbsp;Bussiness&amp;nbsp;inteligence.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Software&amp;nbsp;as&amp;nbsp;Service(SaaS)
&lt;/h4&gt;

&lt;p&gt;SaaS&amp;nbsp;is&amp;nbsp;supplying&amp;nbsp;companies&amp;nbsp;without&amp;nbsp;software&amp;nbsp;focus&amp;nbsp;business.&amp;nbsp;So&amp;nbsp;we&amp;nbsp;are&amp;nbsp;talking&amp;nbsp;about&amp;nbsp;software&amp;nbsp;like&amp;nbsp;Office365&amp;nbsp;or&amp;nbsp;Skype.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Table&amp;nbsp;of&amp;nbsp;Responsibility&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F66tji1tmdz31bhhm6ulr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F66tji1tmdz31bhhm6ulr.png" alt="Illustration" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
[Source](https://docs.microsoft.com/en-us/learn/modules/principles-cloud-computing/media/5-layer-diagram.png)



&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;IaaS&lt;/strong&gt;&amp;nbsp;—&amp;nbsp;Requires&amp;nbsp;the&amp;nbsp;most&amp;nbsp;of&amp;nbsp;user’s&amp;nbsp;management&amp;nbsp;over&amp;nbsp;all&amp;nbsp;of&amp;nbsp;cloud&amp;nbsp;services.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;PaaS&lt;/strong&gt;&amp;nbsp;—&amp;nbsp;Requires&amp;nbsp;less&amp;nbsp;of&amp;nbsp;user’s&amp;nbsp;management.&amp;nbsp;Cloud&amp;nbsp;is&amp;nbsp;providing&amp;nbsp;operation&amp;nbsp;system&amp;nbsp;and&amp;nbsp;user&amp;nbsp;is&amp;nbsp;responsible&amp;nbsp;for&amp;nbsp;applications&amp;nbsp;and&amp;nbsp;data.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;SaaS&lt;/strong&gt;&amp;nbsp;—&amp;nbsp;All&amp;nbsp;of&amp;nbsp;responsibility&amp;nbsp;relies&amp;nbsp;on&amp;nbsp;cloud&amp;nbsp;provider.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;If this was a useful primer, you might also enjoy &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short, free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Create%C2%A0a%C2%A0Free%C2%A0Azure%C2%A0Account%C2%A0Step%C2%A0by%C2%A0Step_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-create-a-free-azure-account-step-by-step-348d4991ae6e]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;Free&amp;nbsp;Azure&amp;nbsp;Account&amp;nbsp;Step&amp;nbsp;by&amp;nbsp;Step_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-choose-the-azure-region-2a7bfd5ef864%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Choose%C2%A0the%C2%A0Azure%C2%A0Region_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-choose-the-azure-region-2a7bfd5ef864]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Choose&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Region_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6%5D%C2%A0%E2%80%94%C2%A0_Understanding%C2%A0the%C2%A0Azure%C2%A0Resource%C2%A0Groups%C2%A0and%C2%A0Azure%C2%A0Resources_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/understanding-the-azure-resource-groups-and-azure-resources-d89ce92d25a6]&amp;nbsp;—&amp;nbsp;_Understanding&amp;nbsp;the&amp;nbsp;Azure&amp;nbsp;Resource&amp;nbsp;Groups&amp;nbsp;and&amp;nbsp;Azure&amp;nbsp;Resources_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/my-introduction-into-azure-service-fabric-de65cc72a7b5%5D%C2%A0%E2%80%94%C2%A0_My%C2%A0introduction%C2%A0into%C2%A0Azure%C2%A0Service%C2%A0Fabric_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/my-introduction-into-azure-service-fabric-de65cc72a7b5]&amp;nbsp;—&amp;nbsp;_My&amp;nbsp;introduction&amp;nbsp;into&amp;nbsp;Azure&amp;nbsp;Service&amp;nbsp;Fabric_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/from-monolith-to-microservices-in-5-minutes-83069677d021%5D%C2%A0%E2%80%94%C2%A0_From%C2%A0Monolith%C2%A0to%C2%A0Microservices%C2%A0in%C2%A05%C2%A0Minutes_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/from-monolith-to-microservices-in-5-minutes-83069677d021]&amp;nbsp;—&amp;nbsp;_From&amp;nbsp;Monolith&amp;nbsp;to&amp;nbsp;Microservices&amp;nbsp;in&amp;nbsp;5&amp;nbsp;Minutes_&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cloud</category>
      <category>azure</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Rewrite your Code to Achieve More Flexible Design</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Mon, 22 Jun 2026 15:03:47 +0000</pubDate>
      <link>https://dev.to/danielrusnok/how-to-rewrite-your-code-to-achieve-more-flexible-design-3m2p</link>
      <guid>https://dev.to/danielrusnok/how-to-rewrite-your-code-to-achieve-more-flexible-design-3m2p</guid>
      <description>&lt;h4&gt;
  
  
  CLEAN&amp;nbsp;CODE&amp;nbsp;&amp;amp;&amp;nbsp;REFACTORING&amp;nbsp;|&amp;nbsp;SOLID&amp;nbsp;SERIES
&lt;/h4&gt;

&lt;h3&gt;
  
  
  How&amp;nbsp;to&amp;nbsp;Rewrite&amp;nbsp;your&amp;nbsp;Code&amp;nbsp;to&amp;nbsp;Achieve&amp;nbsp;More&amp;nbsp;Flexible&amp;nbsp;Design
&lt;/h3&gt;

&lt;h4&gt;
  
  
  The&amp;nbsp;ultimate&amp;nbsp;guide&amp;nbsp;with&amp;nbsp;an&amp;nbsp;example&amp;nbsp;of&amp;nbsp;how&amp;nbsp;to&amp;nbsp;break&amp;nbsp;class&amp;nbsp;and&amp;nbsp;separate&amp;nbsp;concerns&amp;nbsp;using&amp;nbsp;the&amp;nbsp;Single&amp;nbsp;Responsibility&amp;nbsp;Principle
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk23sps4ifaudxkyef5zk.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk23sps4ifaudxkyef5zk.jpeg" alt="How to Rewrite your Code to Achieve More Flexible Design cover image" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;
[Clean&amp;nbsp;code](https://www.amazon.com/gp/product/B001GSTOAM/ref=dbs_a_def_rwt_hsch_vapi_taft_p1_i0)&amp;nbsp;_is&amp;nbsp;a&amp;nbsp;software&amp;nbsp;development&amp;nbsp;discipline&amp;nbsp;that&amp;nbsp;aims&amp;nbsp;to&amp;nbsp;raise&amp;nbsp;the&amp;nbsp;IT&amp;nbsp;company’s&amp;nbsp;vitality&amp;nbsp;by&amp;nbsp;introducing&amp;nbsp;practices,&amp;nbsp;principles,&amp;nbsp;and&amp;nbsp;patterns&amp;nbsp;to&amp;nbsp;improve&amp;nbsp;developer’s&amp;nbsp;programming&amp;nbsp;skills.&amp;nbsp;Programmers&amp;nbsp;who&amp;nbsp;follow&amp;nbsp;the_&amp;nbsp;Clean&amp;nbsp;Code&amp;nbsp;_becomes&amp;nbsp;professionals&amp;nbsp;and&amp;nbsp;leaders&amp;nbsp;in&amp;nbsp;their&amp;nbsp;fields._



&lt;p&gt;Single&amp;nbsp;Responsibility&amp;nbsp;Principle&amp;nbsp;or&amp;nbsp;SRP&amp;nbsp;stands&amp;nbsp;for&amp;nbsp;the&amp;nbsp;idea&amp;nbsp;that&amp;nbsp;every&amp;nbsp;class&amp;nbsp;or&amp;nbsp;module&amp;nbsp;should&amp;nbsp;have&amp;nbsp;one&amp;nbsp;and&amp;nbsp;only&amp;nbsp;one&amp;nbsp;&lt;em&gt;responsibility&lt;/em&gt;.&amp;nbsp;In&amp;nbsp;other&amp;nbsp;words,&amp;nbsp;each&amp;nbsp;class&amp;nbsp;or&amp;nbsp;module&amp;nbsp;should&amp;nbsp;do&amp;nbsp;one&amp;nbsp;thing&amp;nbsp;and&amp;nbsp;do&amp;nbsp;it&amp;nbsp;well.&lt;/p&gt;

&lt;h3&gt;
  
  
  What&amp;nbsp;Means&amp;nbsp;Responsibility&amp;nbsp;in&amp;nbsp;Software&amp;nbsp;Engineering?
&lt;/h3&gt;

&lt;p&gt;Robert&amp;nbsp;C.&amp;nbsp;Martin&amp;nbsp;defined&amp;nbsp;responsibility&amp;nbsp;as&amp;nbsp;a&amp;nbsp;&lt;em&gt;reason&amp;nbsp;to&amp;nbsp;change&lt;/em&gt;.&amp;nbsp;Don’t&amp;nbsp;mistake&amp;nbsp;it&amp;nbsp;with&amp;nbsp;the&amp;nbsp;four&amp;nbsp;main&amp;nbsp;reasons&amp;nbsp;to&amp;nbsp;change&amp;nbsp;your&amp;nbsp;software&amp;nbsp;I&amp;nbsp;blogged&amp;nbsp;about&amp;nbsp;before.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/swlh/four-reason-to-change-your-software-bf535916152d" rel="noopener noreferrer"&gt;Four&amp;nbsp;Reason&amp;nbsp;to&amp;nbsp;Change&amp;nbsp;your&amp;nbsp;Software&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://medium.com/swlh/four-reason-to-change-your-software-bf535916152d" rel="noopener noreferrer"&gt;Michael&amp;nbsp;Feathers&amp;nbsp;defines&amp;nbsp;four&amp;nbsp;main&amp;nbsp;reasons&amp;nbsp;to&amp;nbsp;change&amp;nbsp;your&amp;nbsp;code&amp;nbsp;in&amp;nbsp;the&amp;nbsp;book&amp;nbsp;Working&amp;nbsp;Effectively&amp;nbsp;with&amp;nbsp;Legacy&amp;nbsp;Code.&amp;nbsp;I…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://medium.com/swlh/four-reason-to-change-your-software-bf535916152d" rel="noopener noreferrer"&gt;medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This&amp;nbsp;&lt;em&gt;reason&amp;nbsp;to&amp;nbsp;change&lt;/em&gt;&amp;nbsp;is&amp;nbsp;more&amp;nbsp;related&amp;nbsp;to&amp;nbsp;module&amp;nbsp;or&amp;nbsp;application&amp;nbsp;features.&amp;nbsp;In&amp;nbsp;an&amp;nbsp;ideal&amp;nbsp;world,&amp;nbsp;one&amp;nbsp;feature’s&amp;nbsp;behavior&amp;nbsp;change&amp;nbsp;means&amp;nbsp;one&amp;nbsp;class&amp;nbsp;or&amp;nbsp;module&amp;nbsp;to&amp;nbsp;modify.&lt;/p&gt;

&lt;h3&gt;
  
  
  SRP&amp;nbsp;in&amp;nbsp;Unix
&lt;/h3&gt;

&lt;p&gt;SRP&amp;nbsp;is&amp;nbsp;a&amp;nbsp;well-known&amp;nbsp;principle&amp;nbsp;in&amp;nbsp;software&amp;nbsp;design,&amp;nbsp;and&amp;nbsp;we’ve&amp;nbsp;known&amp;nbsp;for&amp;nbsp;decades&amp;nbsp;that&amp;nbsp;this&amp;nbsp;works&amp;nbsp;very&amp;nbsp;well.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Unix&lt;/em&gt;&amp;nbsp;is&amp;nbsp;based&amp;nbsp;on&amp;nbsp;this&amp;nbsp;principle&amp;nbsp;of&amp;nbsp;doing&amp;nbsp;one&amp;nbsp;thing&amp;nbsp;and&amp;nbsp;does&amp;nbsp;it&amp;nbsp;well.&amp;nbsp;&lt;em&gt;Unix&lt;/em&gt;&amp;nbsp;is&amp;nbsp;based&amp;nbsp;on&amp;nbsp;the&amp;nbsp;command&amp;nbsp;line,&amp;nbsp;so&amp;nbsp;each&amp;nbsp;command&amp;nbsp;is&amp;nbsp;a&amp;nbsp;small&amp;nbsp;executable&amp;nbsp;program.&amp;nbsp;It&amp;nbsp;has&amp;nbsp;a&amp;nbsp;way&amp;nbsp;to&amp;nbsp;compose&amp;nbsp;those&amp;nbsp;executables&amp;nbsp;into&amp;nbsp;larger-scale&amp;nbsp;programs.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;success&amp;nbsp;of&amp;nbsp;&lt;em&gt;Unix&amp;nbsp;continues&lt;/em&gt;&amp;nbsp;by&amp;nbsp;the&amp;nbsp;success&amp;nbsp;of&amp;nbsp;&lt;em&gt;Linux&lt;/em&gt;,&amp;nbsp;so&amp;nbsp;we&amp;nbsp;know&amp;nbsp;that&amp;nbsp;there&amp;nbsp;are&amp;nbsp;examples&amp;nbsp;of&amp;nbsp;this&amp;nbsp;principle&amp;nbsp;leading&amp;nbsp;to&amp;nbsp;systems&amp;nbsp;that&amp;nbsp;are&amp;nbsp;very&amp;nbsp;stable&amp;nbsp;and&amp;nbsp;very&amp;nbsp;long-lived.&lt;/p&gt;

&lt;p&gt;I&amp;nbsp;found&amp;nbsp;a&amp;nbsp;&lt;a href="https://github.com/dspinellis/unix-history-repo" rel="noopener noreferrer"&gt;repository&lt;/a&gt;&amp;nbsp;with&amp;nbsp;historical&amp;nbsp;commits&amp;nbsp;since&amp;nbsp;1970&amp;nbsp;if&amp;nbsp;you&amp;nbsp;are&amp;nbsp;more&amp;nbsp;interested.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why&amp;nbsp;is&amp;nbsp;SRP&amp;nbsp;Hard&amp;nbsp;to&amp;nbsp;Implement?
&lt;/h3&gt;

&lt;p&gt;On&amp;nbsp;my&amp;nbsp;hunt&amp;nbsp;for&amp;nbsp;the&amp;nbsp;answer,&amp;nbsp;I&amp;nbsp;came&amp;nbsp;across&amp;nbsp;a&amp;nbsp;great&amp;nbsp;&lt;a href="https://www.quora.com/What-is-Single-Responsibility-Principle?q=what%20is%20Single%20Responsibility%20" rel="noopener noreferrer"&gt;Quora&amp;nbsp;answer&lt;/a&gt;&amp;nbsp;from&amp;nbsp;user&amp;nbsp;&lt;a href="https://www.quora.com/profile/Pawan-Bhadauria" rel="noopener noreferrer"&gt;Pawan&amp;nbsp;Bhadauria&lt;/a&gt;,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;want&amp;nbsp;to&amp;nbsp;quote&amp;nbsp;the&amp;nbsp;piece&amp;nbsp;of&amp;nbsp;it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Consider&amp;nbsp;following&amp;nbsp;sentence:&amp;nbsp;“Tihs&amp;nbsp;snetnece&amp;nbsp;is&amp;nbsp;hrad&amp;nbsp;to&amp;nbsp;raed”.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I&amp;nbsp;bet,&amp;nbsp;you&amp;nbsp;will&amp;nbsp;be&amp;nbsp;able&amp;nbsp;to&amp;nbsp;read&amp;nbsp;this&amp;nbsp;sentence&amp;nbsp;since&amp;nbsp;you&amp;nbsp;comprehend&amp;nbsp;the&amp;nbsp;word&amp;nbsp;as&amp;nbsp;a&amp;nbsp;whole&amp;nbsp;rather&amp;nbsp;than&amp;nbsp;linking&amp;nbsp;each&amp;nbsp;alphabet&amp;nbsp;and&amp;nbsp;making&amp;nbsp;a&amp;nbsp;sentence&amp;nbsp;out&amp;nbsp;of&amp;nbsp;it.&amp;nbsp;Though&amp;nbsp;it&amp;nbsp;directly&amp;nbsp;doesn’t&amp;nbsp;relate&amp;nbsp;to&amp;nbsp;the&amp;nbsp;principle&amp;nbsp;but&amp;nbsp;gives&amp;nbsp;a&amp;nbsp;glimpse&amp;nbsp;into&amp;nbsp;how&amp;nbsp;our&amp;nbsp;brain&amp;nbsp;processes&amp;nbsp;things.&amp;nbsp;Our&amp;nbsp;minds&amp;nbsp;are&amp;nbsp;excellent&amp;nbsp;at&amp;nbsp;seeing&amp;nbsp;a&amp;nbsp;set&amp;nbsp;of&amp;nbsp;behaviour&amp;nbsp;and&amp;nbsp;grouping&amp;nbsp;those&amp;nbsp;together,&amp;nbsp;even&amp;nbsp;when&amp;nbsp;those&amp;nbsp;constitute&amp;nbsp;different&amp;nbsp;responsibilities.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We&amp;nbsp;tend&amp;nbsp;to&amp;nbsp;group&amp;nbsp;behaviors&amp;nbsp;by&amp;nbsp;our&amp;nbsp;nature.&amp;nbsp;The&amp;nbsp;human&amp;nbsp;brain’s&amp;nbsp;strength&amp;nbsp;is&amp;nbsp;also&amp;nbsp;a&amp;nbsp;developer’s&amp;nbsp;kryptonite&amp;nbsp;when&amp;nbsp;he&amp;nbsp;is&amp;nbsp;trying&amp;nbsp;to&amp;nbsp;apply&amp;nbsp;SRP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Indicators&amp;nbsp;of&amp;nbsp;Violation&amp;nbsp;SRP
&lt;/h3&gt;

&lt;p&gt;The&amp;nbsp;most&amp;nbsp;significant&amp;nbsp;indicator&amp;nbsp;is&amp;nbsp;the&amp;nbsp;size&amp;nbsp;of&amp;nbsp;the&amp;nbsp;class&amp;nbsp;or&amp;nbsp;function.&amp;nbsp;&lt;em&gt;Count&amp;nbsp;of&amp;nbsp;physical&amp;nbsp;lines&lt;/em&gt;&amp;nbsp;of&amp;nbsp;code&amp;nbsp;measures&amp;nbsp;functions&amp;nbsp;size.&amp;nbsp;On&amp;nbsp;the&amp;nbsp;other&amp;nbsp;hand,&amp;nbsp;the&amp;nbsp;&lt;em&gt;number&amp;nbsp;of&lt;/em&gt;&amp;nbsp;&lt;em&gt;responsibilities&lt;/em&gt;&amp;nbsp;measures&amp;nbsp;the&amp;nbsp;class&amp;nbsp;size.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The&amp;nbsp;first&amp;nbsp;rule&amp;nbsp;of&amp;nbsp;classes&amp;nbsp;is&amp;nbsp;that&amp;nbsp;they&amp;nbsp;should&amp;nbsp;be&amp;nbsp;small.&amp;nbsp;The&amp;nbsp;second&amp;nbsp;rule&amp;nbsp;of&amp;nbsp;the&amp;nbsp;class&amp;nbsp;is&amp;nbsp;that&amp;nbsp;they&amp;nbsp;should&amp;nbsp;be&amp;nbsp;smaller&amp;nbsp;than&amp;nbsp;that.”&amp;nbsp;—&amp;nbsp;Robert&amp;nbsp;C.&amp;nbsp;Martin&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Troubles&amp;nbsp;to&amp;nbsp;name&amp;nbsp;the&amp;nbsp;class&amp;nbsp;correctly&amp;nbsp;is&amp;nbsp;one&amp;nbsp;of&amp;nbsp;the&amp;nbsp;indicators&amp;nbsp;as&amp;nbsp;well.&amp;nbsp;The&amp;nbsp;name&amp;nbsp;should&amp;nbsp;be&amp;nbsp;maximally&amp;nbsp;25&amp;nbsp;characters&amp;nbsp;long&amp;nbsp;without&amp;nbsp;using&amp;nbsp;words&amp;nbsp;like&amp;nbsp;“if”,&amp;nbsp;“and”,&amp;nbsp;“or”&amp;nbsp;or&amp;nbsp;“but”.&lt;/p&gt;

&lt;p&gt;Sometimes,&amp;nbsp;problems&amp;nbsp;with&amp;nbsp;naming&amp;nbsp;the&amp;nbsp;class&amp;nbsp;end&amp;nbsp;by&amp;nbsp;raising&amp;nbsp;a&amp;nbsp;point&amp;nbsp;of&amp;nbsp;view&amp;nbsp;and&amp;nbsp;using&amp;nbsp;the&amp;nbsp;most&amp;nbsp;common&amp;nbsp;name&amp;nbsp;that&amp;nbsp;comes&amp;nbsp;up&amp;nbsp;to&amp;nbsp;the&amp;nbsp;programmer’s&amp;nbsp;mind&amp;nbsp;like&amp;nbsp;&lt;code&gt;OrderService.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;order&amp;nbsp;is&amp;nbsp;processed&amp;nbsp;from&amp;nbsp;filling&amp;nbsp;the&amp;nbsp;basket&amp;nbsp;to&amp;nbsp;receiving&amp;nbsp;a&amp;nbsp;receipt,&amp;nbsp;and&amp;nbsp;it&amp;nbsp;can’t&amp;nbsp;be&amp;nbsp;defined&amp;nbsp;with&amp;nbsp;such&amp;nbsp;a&amp;nbsp;simple&amp;nbsp;name.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tutorial
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;The&amp;nbsp;reader&amp;nbsp;should&amp;nbsp;have&amp;nbsp;basic&amp;nbsp;knowledge&amp;nbsp;about&amp;nbsp;&lt;em&gt;Object-oriented&amp;nbsp;Programming&amp;nbsp;or&lt;/em&gt;&amp;nbsp;OOP.&amp;nbsp;Basic&amp;nbsp;understanding&amp;nbsp;of&amp;nbsp;&lt;em&gt;Unit&amp;nbsp;Testing&lt;/em&gt;&amp;nbsp;is&amp;nbsp;also&amp;nbsp;appropriate,&amp;nbsp;but&amp;nbsp;not&amp;nbsp;necessary.&amp;nbsp;I&amp;nbsp;am&amp;nbsp;programming&amp;nbsp;in&amp;nbsp;C#&amp;nbsp;language,&amp;nbsp;but&amp;nbsp;Java&amp;nbsp;or&amp;nbsp;other&amp;nbsp;OOP&amp;nbsp;language&amp;nbsp;developers&amp;nbsp;should&amp;nbsp;not&amp;nbsp;have&amp;nbsp;a&amp;nbsp;problem&amp;nbsp;understanding&amp;nbsp;the&amp;nbsp;concept.&lt;/p&gt;

&lt;h4&gt;
  
  
  Introduction&amp;nbsp;of&amp;nbsp;Project
&lt;/h4&gt;

&lt;p&gt;The&amp;nbsp;&lt;a href="https://github.com/DannyRusnok/Single.Responsibility.Principle.Example" rel="noopener noreferrer"&gt;repository&lt;/a&gt;&amp;nbsp;consists&amp;nbsp;of&amp;nbsp;two&amp;nbsp;projects.&amp;nbsp;First&amp;nbsp;one&amp;nbsp;is&amp;nbsp;the&amp;nbsp;Class&amp;nbsp;Library&amp;nbsp;named&amp;nbsp;&lt;code&gt;BusinessLogic.&lt;/code&gt;&amp;nbsp;It&amp;nbsp;includes&amp;nbsp;two&amp;nbsp;folders;&amp;nbsp;&lt;code&gt;Before&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;After.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Folder&amp;nbsp;&lt;code&gt;Before&lt;/code&gt;&amp;nbsp;contains&amp;nbsp;the&amp;nbsp;class&amp;nbsp;&lt;code&gt;FileStore&lt;/code&gt;,&amp;nbsp;which&amp;nbsp;is&amp;nbsp;taking&amp;nbsp;care&amp;nbsp;of&amp;nbsp;storing&amp;nbsp;messages&amp;nbsp;into&amp;nbsp;text&amp;nbsp;files.&lt;/p&gt;

&lt;p&gt;Folder&amp;nbsp;&lt;code&gt;After&lt;/code&gt;&amp;nbsp;contains&amp;nbsp;module&amp;nbsp;consists&amp;nbsp;of&amp;nbsp;three&amp;nbsp;class&amp;nbsp;with&amp;nbsp;the&amp;nbsp;very&amp;nbsp;same&amp;nbsp;responsibilities,&amp;nbsp;as&amp;nbsp;a&amp;nbsp;&lt;code&gt;Before/FileStore&lt;/code&gt;&amp;nbsp;class.&amp;nbsp;The&amp;nbsp;content&amp;nbsp;of&amp;nbsp;the&amp;nbsp;directory&amp;nbsp;is&amp;nbsp;the&amp;nbsp;resulting&amp;nbsp;representation&amp;nbsp;of&amp;nbsp;applying&amp;nbsp;the&amp;nbsp;SRP&amp;nbsp;process.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;second&amp;nbsp;project&amp;nbsp;&lt;code&gt;Tests&lt;/code&gt;&amp;nbsp;also&amp;nbsp;holds&amp;nbsp;two&amp;nbsp;folders&amp;nbsp;with&amp;nbsp;the&amp;nbsp;same&amp;nbsp;names.&amp;nbsp;Each&amp;nbsp;folder&amp;nbsp;has&amp;nbsp;one&amp;nbsp;class&amp;nbsp;with&amp;nbsp;the&amp;nbsp;very&amp;nbsp;same&amp;nbsp;Unit&amp;nbsp;Tests.&amp;nbsp;The&amp;nbsp;test&amp;nbsp;class&amp;nbsp;&lt;code&gt;Before/FileStoreUnitTests&lt;/code&gt;&amp;nbsp;is&amp;nbsp;almost&amp;nbsp;identical&amp;nbsp;to&amp;nbsp;the&amp;nbsp;test&amp;nbsp;class&amp;nbsp;&lt;code&gt;After/MessageStoreUnitTests,&lt;/code&gt;&amp;nbsp;but&amp;nbsp;its&amp;nbsp;tests&amp;nbsp;aim&amp;nbsp;to&amp;nbsp;the&amp;nbsp;different&amp;nbsp;&lt;a href="https://en.m.wikipedia.org/wiki/System_under_test" rel="noopener noreferrer"&gt;system&amp;nbsp;under&amp;nbsp;test&lt;/a&gt;&amp;nbsp;as&amp;nbsp;its&amp;nbsp;names&amp;nbsp;suggest.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side note: if you like thinking about the craft itself — when to refactor, when to leave code alone — I share short, free lessons like that in &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt;, a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Identifying&amp;nbsp;the&amp;nbsp;Responsibilities
&lt;/h4&gt;

&lt;p&gt;Gist&amp;nbsp;bellow&amp;nbsp;shows&amp;nbsp;how&amp;nbsp;&lt;code&gt;Before/FileStore.cs&lt;/code&gt;&amp;nbsp;the&amp;nbsp;class&amp;nbsp;looks&amp;nbsp;like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DannyRusnok/Single.Responsibility.Principle.Example/blob/master/Single.Responsibility.Principle.Example/Before/FileStore.cs" rel="noopener noreferrer"&gt;FileStore.cs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most&amp;nbsp;of&amp;nbsp;you&amp;nbsp;can&amp;nbsp;identify&amp;nbsp;what’s&amp;nbsp;the&amp;nbsp;FileStore&amp;nbsp;class&amp;nbsp;responsibilities.&amp;nbsp;First,&amp;nbsp;that&amp;nbsp;should&amp;nbsp;come&amp;nbsp;at&amp;nbsp;the&amp;nbsp;top&amp;nbsp;of&amp;nbsp;your&amp;nbsp;head&amp;nbsp;is&amp;nbsp;&lt;em&gt;Storing&amp;nbsp;Messages&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Another&amp;nbsp;more&amp;nbsp;obvious&amp;nbsp;responsibility&amp;nbsp;is&amp;nbsp;&lt;em&gt;Logging&lt;/em&gt;.&amp;nbsp;Both&amp;nbsp;command&amp;nbsp;methods,&amp;nbsp;&lt;code&gt;Read&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;Save&lt;/code&gt;&amp;nbsp;invokes&amp;nbsp;the&amp;nbsp;&lt;a href="https://nlog-project.org/" rel="noopener noreferrer"&gt;NLog&lt;/a&gt;&amp;nbsp;functions&amp;nbsp;to&amp;nbsp;log&amp;nbsp;what&amp;nbsp;is&amp;nbsp;currently&amp;nbsp;happening.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;last&amp;nbsp;is&amp;nbsp;not&amp;nbsp;that&amp;nbsp;clear&amp;nbsp;so&amp;nbsp;I’ll&amp;nbsp;tell&amp;nbsp;you.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;what&amp;nbsp;I&amp;nbsp;call&amp;nbsp;an&amp;nbsp;&lt;em&gt;Orchestration&lt;/em&gt;.&amp;nbsp;The&amp;nbsp;way&amp;nbsp;of&amp;nbsp;control&amp;nbsp;how&amp;nbsp;the&amp;nbsp;previous&amp;nbsp;two&amp;nbsp;aspects&amp;nbsp;play&amp;nbsp;with&amp;nbsp;each&amp;nbsp;other&amp;nbsp;is&amp;nbsp;also&amp;nbsp;the&amp;nbsp;responsibility.&lt;/p&gt;

&lt;p&gt;That’s&amp;nbsp;it!&amp;nbsp;We&amp;nbsp;identified&amp;nbsp;all&amp;nbsp;three,&amp;nbsp;and&amp;nbsp;let’s&amp;nbsp;repeat&amp;nbsp;them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Storing&amp;nbsp;Messages&lt;/li&gt;
&lt;li&gt;  Logging&amp;nbsp;Events&lt;/li&gt;
&lt;li&gt;  Orchestrating&amp;nbsp;interactions&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Break&amp;nbsp;the&amp;nbsp;Class
&lt;/h4&gt;

&lt;p&gt;Breaking&amp;nbsp;the&amp;nbsp;class&amp;nbsp;is&amp;nbsp;practically&amp;nbsp;an&amp;nbsp;applying&amp;nbsp;of&amp;nbsp;another&amp;nbsp;well-known&amp;nbsp;principle&amp;nbsp;called&amp;nbsp;the&amp;nbsp;&lt;em&gt;&lt;a href="https://en.m.wikipedia.org/wiki/Separation_of_concerns" rel="noopener noreferrer"&gt;Separation&amp;nbsp;of&amp;nbsp;Concerns&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I&amp;nbsp;like&amp;nbsp;&lt;a href="https://www.quora.com/What-is-separation-of-concerns-in-software-engineering" rel="noopener noreferrer"&gt;Quora&amp;nbsp;answer&lt;/a&gt;&amp;nbsp;by&amp;nbsp;architecture&amp;nbsp;mentor&amp;nbsp;&lt;a href="https://www.quora.com/profile/Victor-Kane" rel="noopener noreferrer"&gt;Victor&amp;nbsp;Kane&lt;/a&gt;&amp;nbsp;to&amp;nbsp;the&amp;nbsp;question&amp;nbsp;“What&amp;nbsp;is&amp;nbsp;Separation&amp;nbsp;of&amp;nbsp;Concerns&amp;nbsp;in&amp;nbsp;Software&amp;nbsp;Engineering?”&lt;/p&gt;

&lt;p&gt;Let&amp;nbsp;me&amp;nbsp;quote&amp;nbsp;the&amp;nbsp;beginning&amp;nbsp;of&amp;nbsp;the&amp;nbsp;answer;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The&amp;nbsp;philosophy&amp;nbsp;of&amp;nbsp;separation&amp;nbsp;of&amp;nbsp;concerns&amp;nbsp;in&amp;nbsp;IT&amp;nbsp;is&amp;nbsp;aimed&amp;nbsp;at&amp;nbsp;preventing&amp;nbsp;“pathological”&amp;nbsp;dependencies&amp;nbsp;between&amp;nbsp;code&amp;nbsp;“concerned”&amp;nbsp;with&amp;nbsp;different&amp;nbsp;domains&amp;nbsp;while&amp;nbsp;attempting&amp;nbsp;to&amp;nbsp;isolate&amp;nbsp;all&amp;nbsp;code&amp;nbsp;concerned&amp;nbsp;with&amp;nbsp;a&amp;nbsp;single&amp;nbsp;“concern”.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;“..isolate&amp;nbsp;all&amp;nbsp;code&amp;nbsp;concerned&amp;nbsp;with&amp;nbsp;a&amp;nbsp;&lt;em&gt;single&amp;nbsp;concern&lt;/em&gt;.”&amp;nbsp;Sounds&amp;nbsp;familiar&amp;nbsp;right?&amp;nbsp;Now,&amp;nbsp;let’s&amp;nbsp;break&amp;nbsp;the&amp;nbsp;&lt;code&gt;FileStore.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I&amp;nbsp;began&amp;nbsp;with&amp;nbsp;the&amp;nbsp;extraction&amp;nbsp;of&amp;nbsp;&lt;em&gt;Logging&lt;/em&gt;&amp;nbsp;concerns.&amp;nbsp;The&amp;nbsp;new&amp;nbsp;&lt;code&gt;StoreLogger&lt;/code&gt;&amp;nbsp;class&amp;nbsp;encapsulates&amp;nbsp;implementation&amp;nbsp;details&amp;nbsp;about&amp;nbsp;logging&amp;nbsp;events&amp;nbsp;into&amp;nbsp;its&amp;nbsp;methods.&amp;nbsp;The&amp;nbsp;initialization&amp;nbsp;of&amp;nbsp;&lt;code&gt;StoreLogger&lt;/code&gt;&amp;nbsp;is&amp;nbsp;in&amp;nbsp;&lt;code&gt;FileStore&lt;/code&gt;&amp;nbsp;constructor&amp;nbsp;and&amp;nbsp;methods&amp;nbsp;are&amp;nbsp;called&amp;nbsp;from&amp;nbsp;the&amp;nbsp;same&amp;nbsp;places&amp;nbsp;as&amp;nbsp;where&amp;nbsp;NLog&amp;nbsp;functions&amp;nbsp;invocations&amp;nbsp;were&amp;nbsp;before.&lt;/p&gt;

&lt;p&gt;Interstate&amp;nbsp;Before&amp;nbsp;and&amp;nbsp;After&amp;nbsp;of&amp;nbsp;FileStore.cs&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DannyRusnok/Single.Responsibility.Principle.Example/blob/master/Single.Responsibility.Principle.Example/After/StoreLogger.cs" rel="noopener noreferrer"&gt;StoreLogger.cs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now,&amp;nbsp;we&amp;nbsp;need&amp;nbsp;to&amp;nbsp;separate&amp;nbsp;&lt;em&gt;Storing&amp;nbsp;Messages&lt;/em&gt;&amp;nbsp;and&amp;nbsp;&lt;em&gt;Orchestration&lt;/em&gt;.&amp;nbsp;Let’s&amp;nbsp;logically&amp;nbsp;in&amp;nbsp;our&amp;nbsp;minds&amp;nbsp;separate&amp;nbsp;two&amp;nbsp;implementation&amp;nbsp;details;&amp;nbsp;&lt;em&gt;Storage&lt;/em&gt;&amp;nbsp;and&amp;nbsp;&lt;em&gt;Data&lt;/em&gt;.&amp;nbsp;In&amp;nbsp;our&amp;nbsp;particular&amp;nbsp;case,&amp;nbsp;the&amp;nbsp;storage&amp;nbsp;is&amp;nbsp;a&amp;nbsp;file&amp;nbsp;system,&amp;nbsp;and&amp;nbsp;the&amp;nbsp;data&amp;nbsp;are&amp;nbsp;messages.&lt;/p&gt;

&lt;p&gt;When&amp;nbsp;we&amp;nbsp;consider&amp;nbsp;the&amp;nbsp;dependencies,&amp;nbsp;it&amp;nbsp;appears&amp;nbsp;that&amp;nbsp;the&amp;nbsp;messages&amp;nbsp;should&amp;nbsp;be&amp;nbsp;dependent&amp;nbsp;on&amp;nbsp;its&amp;nbsp;storage,&amp;nbsp;but&amp;nbsp;storage&amp;nbsp;does&amp;nbsp;not&amp;nbsp;need&amp;nbsp;to&amp;nbsp;know&amp;nbsp;anything&amp;nbsp;about&amp;nbsp;the&amp;nbsp;form&amp;nbsp;of&amp;nbsp;data.&amp;nbsp;We&amp;nbsp;can&amp;nbsp;achieve&amp;nbsp;it&amp;nbsp;by&amp;nbsp;extracting&amp;nbsp;the&amp;nbsp;orchestration&amp;nbsp;around&amp;nbsp;the&amp;nbsp;message&amp;nbsp;and&amp;nbsp;let&amp;nbsp;concerns&amp;nbsp;about&amp;nbsp;storage&amp;nbsp;on&amp;nbsp;&lt;code&gt;FileStore.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I&amp;nbsp;separated&amp;nbsp;the&amp;nbsp;original&amp;nbsp;&lt;code&gt;FileStore&lt;/code&gt;&amp;nbsp;class&amp;nbsp;into&amp;nbsp;the&amp;nbsp;two&amp;nbsp;new&amp;nbsp;classes;&amp;nbsp;&lt;code&gt;FileStore&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;MessageStore.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DannyRusnok/Single.Responsibility.Principle.Example/blob/master/Single.Responsibility.Principle.Example/After/FileStore.cs" rel="noopener noreferrer"&gt;After/FileStore.cs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MessageStore&lt;/code&gt;&amp;nbsp;orchestrates&amp;nbsp;the&amp;nbsp;messages,&amp;nbsp;logging,&amp;nbsp;and&amp;nbsp;storage&amp;nbsp;processes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DannyRusnok/Single.Responsibility.Principle.Example/blob/master/Single.Responsibility.Principle.Example/After/MessageStore.cs" rel="noopener noreferrer"&gt;MessageStore.cs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This&amp;nbsp;time&amp;nbsp;I&amp;nbsp;stuck&amp;nbsp;with&amp;nbsp;the&amp;nbsp;word&amp;nbsp;“store”&amp;nbsp;in&amp;nbsp;the&amp;nbsp;name&amp;nbsp;because&amp;nbsp;it&amp;nbsp;is&amp;nbsp;more&amp;nbsp;precise.&amp;nbsp;Sometimes&amp;nbsp;I&amp;nbsp;struggle&amp;nbsp;to&amp;nbsp;pick&amp;nbsp;the&amp;nbsp;right&amp;nbsp;name&amp;nbsp;for&amp;nbsp;the&amp;nbsp;orchestration&amp;nbsp;responsible&amp;nbsp;classes.&amp;nbsp;So&amp;nbsp;usually&amp;nbsp;I&amp;nbsp;choose&amp;nbsp;the&amp;nbsp;word&amp;nbsp;“Processor”,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;add&amp;nbsp;a&amp;nbsp;prefix&amp;nbsp;which&amp;nbsp;defines&amp;nbsp;the&amp;nbsp;responsibility-for&amp;nbsp;example,&amp;nbsp;a&amp;nbsp;&lt;code&gt;MessageStoringProcessor.&lt;/code&gt;&amp;nbsp;The&amp;nbsp;&lt;code&gt;MessageStore&lt;/code&gt;&amp;nbsp;name&amp;nbsp;sounds&amp;nbsp;more&amp;nbsp;precise.&lt;/p&gt;

&lt;p&gt;I&amp;nbsp;would&amp;nbsp;love&amp;nbsp;to&amp;nbsp;hear&amp;nbsp;how&amp;nbsp;you&amp;nbsp;are&amp;nbsp;dealing&amp;nbsp;with&amp;nbsp;this&amp;nbsp;problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;We&amp;nbsp;looked&amp;nbsp;at&amp;nbsp;&lt;code&gt;FileStore&lt;/code&gt;&amp;nbsp;class&amp;nbsp;and&amp;nbsp;identify&amp;nbsp;its&amp;nbsp;three&amp;nbsp;responsibilities.&amp;nbsp;First,&amp;nbsp;we&amp;nbsp;extracted&amp;nbsp;the&amp;nbsp;easiest&amp;nbsp;one,&amp;nbsp;the&amp;nbsp;&lt;em&gt;Logging&lt;/em&gt;&amp;nbsp;responsibility.&amp;nbsp;Therefore,&amp;nbsp;we&amp;nbsp;separated&amp;nbsp;remaining&amp;nbsp;concerns,&amp;nbsp;&lt;em&gt;Storring&amp;nbsp;Messages,&lt;/em&gt;&amp;nbsp;and&amp;nbsp;&lt;em&gt;Orchestration&lt;/em&gt;,&amp;nbsp;into&amp;nbsp;the&amp;nbsp;two&amp;nbsp;new&amp;nbsp;classes;&amp;nbsp;&lt;code&gt;MessageStore&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;FileStore.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;repository&amp;nbsp;also&amp;nbsp;contains&amp;nbsp;the&amp;nbsp;project&amp;nbsp;with&amp;nbsp;unit&amp;nbsp;tests&amp;nbsp;which&amp;nbsp;you&amp;nbsp;can&amp;nbsp;try&amp;nbsp;to&amp;nbsp;run&amp;nbsp;and&amp;nbsp;see&amp;nbsp;if&amp;nbsp;any&amp;nbsp;dropped&amp;nbsp;behavior&amp;nbsp;or&amp;nbsp;function.&amp;nbsp;The&amp;nbsp;green&amp;nbsp;test&amp;nbsp;will&amp;nbsp;prove&amp;nbsp;that&amp;nbsp;we&amp;nbsp;did&amp;nbsp;just&amp;nbsp;right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Daniel&amp;nbsp;Rusnok's&amp;nbsp;Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Every&amp;nbsp;month&amp;nbsp;I&amp;nbsp;will&amp;nbsp;send&amp;nbsp;you&amp;nbsp;an&amp;nbsp;email&amp;nbsp;about&amp;nbsp;with&amp;nbsp;list&amp;nbsp;of&amp;nbsp;my&amp;nbsp;newest&amp;nbsp;articles.&amp;nbsp;It&amp;nbsp;will&amp;nbsp;be&amp;nbsp;ofcourse&amp;nbsp;the&amp;nbsp;friendly&amp;nbsp;links…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;www.danielrusnok.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/danielrusnok" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tm54rf5555ym89o2ne4.png" alt="Illustration" width="200" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this resonated, you might also enjoy &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/four-reason-to-change-your-software-bf535916152d%5D%C2%A0%E2%80%94%C2%A0_Four%C2%A0Reason%C2%A0to%C2%A0Change%C2%A0your%C2%A0Software_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/four-reason-to-change-your-software-bf535916152d]&amp;nbsp;—&amp;nbsp;_Four&amp;nbsp;Reason&amp;nbsp;to&amp;nbsp;Change&amp;nbsp;your&amp;nbsp;Software_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-dynamically-add-behaviors-with-decorator-pattern-6a130c41b7d4%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Dynamically%C2%A0Add%C2%A0Behaviors%C2%A0With%C2%A0Decorator%C2%A0Pattern_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-dynamically-add-behaviors-with-decorator-pattern-6a130c41b7d4]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Dynamically&amp;nbsp;Add&amp;nbsp;Behaviors&amp;nbsp;With&amp;nbsp;Decorator&amp;nbsp;Pattern_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-switch-the-algorithms-at-runtime-with-strategy-pattern-in-c-43fec29a1702%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Switch%C2%A0the%C2%A0Algorithms%C2%A0at%C2%A0Runtime%C2%A0with%C2%A0Strategy%C2%A0Pattern_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-switch-the-algorithms-at-runtime-with-strategy-pattern-in-c-43fec29a1702]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Switch&amp;nbsp;the&amp;nbsp;Algorithms&amp;nbsp;at&amp;nbsp;Runtime&amp;nbsp;with&amp;nbsp;Strategy&amp;nbsp;Pattern_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/what-is-anemic-domain-model-and-why-it-can-be-harmful-2677b1b0a79a%5D%C2%A0%E2%80%94%C2%A0_What%C2%A0is%C2%A0Anemic%C2%A0Domain%C2%A0Model%C2%A0and%C2%A0why%C2%A0it%C2%A0can%C2%A0be%C2%A0harmful?_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/what-is-anemic-domain-model-and-why-it-can-be-harmful-2677b1b0a79a]&amp;nbsp;—&amp;nbsp;_What&amp;nbsp;is&amp;nbsp;Anemic&amp;nbsp;Domain&amp;nbsp;Model&amp;nbsp;and&amp;nbsp;why&amp;nbsp;it&amp;nbsp;can&amp;nbsp;be&amp;nbsp;harmful?_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-safely-extend-your-legacy-code-part-i-af98b49e913b%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0safely%C2%A0extend%C2%A0your%C2%A0legacy%C2%A0code?%C2%A0Part%C2%A0I_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-safely-extend-your-legacy-code-part-i-af98b49e913b]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;safely&amp;nbsp;extend&amp;nbsp;your&amp;nbsp;legacy&amp;nbsp;code?&amp;nbsp;Part&amp;nbsp;I_&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>refactoring</category>
      <category>csharp</category>
      <category>programming</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>How to Dynamically Add Behaviors With Decorator Pattern</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Sat, 20 Jun 2026 15:04:10 +0000</pubDate>
      <link>https://dev.to/danielrusnok/how-to-dynamically-add-behaviors-with-decorator-pattern-3ee0</link>
      <guid>https://dev.to/danielrusnok/how-to-dynamically-add-behaviors-with-decorator-pattern-3ee0</guid>
      <description>&lt;h4&gt;
  
  
  DESIGN&amp;nbsp;PATTERNS&amp;nbsp;SERIES
&lt;/h4&gt;

&lt;h3&gt;
  
  
  How&amp;nbsp;to&amp;nbsp;Dynamically&amp;nbsp;Add&amp;nbsp;Behaviors&amp;nbsp;With&amp;nbsp;Decorator&amp;nbsp;Pattern
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Everything&amp;nbsp;you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;know&amp;nbsp;about&amp;nbsp;Decorator
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1vbysp0ob5uecvfligel.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1vbysp0ob5uecvfligel.jpeg" alt="How to Dynamically Add Behaviors With Decorator Pattern cover image" width="523" height="523"&gt;&lt;/a&gt;&lt;/p&gt;
Created&amp;nbsp;by&amp;nbsp;[www.freepik.com](http://www.freepik.com/)



&lt;h3&gt;
  
  
  What&amp;nbsp;is&amp;nbsp;the&amp;nbsp;Decorator&amp;nbsp;Pattern?
&lt;/h3&gt;

&lt;p&gt;The&amp;nbsp;Decorator&amp;nbsp;Pattern&amp;nbsp;is&amp;nbsp;a&amp;nbsp;&lt;a href="https://en.m.wikipedia.org/wiki/Structural_pattern" rel="noopener noreferrer"&gt;structural&amp;nbsp;design&amp;nbsp;pattern&lt;/a&gt;&amp;nbsp;that&amp;nbsp;allows&amp;nbsp;you&amp;nbsp;to&amp;nbsp;dynamically&amp;nbsp;add&amp;nbsp;behavior&amp;nbsp;to&amp;nbsp;a&amp;nbsp;class&amp;nbsp;without&amp;nbsp;making&amp;nbsp;changes&amp;nbsp;to&amp;nbsp;that&amp;nbsp;class.&amp;nbsp;In&amp;nbsp;other&amp;nbsp;words,&amp;nbsp;it&amp;nbsp;uses&amp;nbsp;&lt;a href="https://en.m.wikipedia.org/wiki/Object_composition" rel="noopener noreferrer"&gt;composition&lt;/a&gt;&amp;nbsp;instead&amp;nbsp;of&amp;nbsp;inheritance&amp;nbsp;to&amp;nbsp;add&amp;nbsp;the&amp;nbsp;functionality&amp;nbsp;of&amp;nbsp;an&amp;nbsp;object.&lt;/p&gt;

&lt;h3&gt;
  
  
  Elements&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Decorator&amp;nbsp;Pattern
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl3kkfsmdylgawm0msa6f.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl3kkfsmdylgawm0msa6f.jpeg" alt="Illustration" width="548" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  IComponent
&lt;/h4&gt;

&lt;p&gt;IComponent&amp;nbsp;is&amp;nbsp;an&amp;nbsp;interface.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;an&amp;nbsp;abstraction&amp;nbsp;of&amp;nbsp;what&amp;nbsp;we&amp;nbsp;want&amp;nbsp;to&amp;nbsp;decorate.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;also&amp;nbsp;use&amp;nbsp;an&amp;nbsp;abstract&amp;nbsp;class.&lt;/p&gt;

&lt;h4&gt;
  
  
  Component
&lt;/h4&gt;

&lt;p&gt;The&amp;nbsp;component&amp;nbsp;is&amp;nbsp;a&amp;nbsp;class&amp;nbsp;that&amp;nbsp;you&amp;nbsp;want&amp;nbsp;to&amp;nbsp;add&amp;nbsp;behavior.&amp;nbsp;The&amp;nbsp;component&amp;nbsp;needs&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;an&amp;nbsp;interface&amp;nbsp;or&amp;nbsp;extend&amp;nbsp;an&amp;nbsp;abstract&amp;nbsp;class.&lt;/p&gt;

&lt;h4&gt;
  
  
  Decorator
&lt;/h4&gt;

&lt;p&gt;The&amp;nbsp;decorator&amp;nbsp;class&amp;nbsp;will&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;same&amp;nbsp;interface&amp;nbsp;or&amp;nbsp;abstract&amp;nbsp;class&amp;nbsp;as&amp;nbsp;the&amp;nbsp;Component&amp;nbsp;class.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;decorator’s&amp;nbsp;constructor&amp;nbsp;always&amp;nbsp;takes&amp;nbsp;an&amp;nbsp;object&amp;nbsp;implementing&amp;nbsp;the&amp;nbsp;same&amp;nbsp;interface&amp;nbsp;as&amp;nbsp;a&amp;nbsp;parameter.&amp;nbsp;Then&amp;nbsp;the&amp;nbsp;object&amp;nbsp;of&amp;nbsp;Component&amp;nbsp;is&amp;nbsp;introduced&amp;nbsp;into&amp;nbsp;the&amp;nbsp;class&amp;nbsp;attribute&amp;nbsp;in&amp;nbsp;Component’s&amp;nbsp;constructor.&amp;nbsp;Like&amp;nbsp;this.&lt;/p&gt;

&lt;p&gt;When&amp;nbsp;Decorator&amp;nbsp;implements&amp;nbsp;an&amp;nbsp;interface&amp;nbsp;IComponent,&amp;nbsp;you&amp;nbsp;must&amp;nbsp;implement&amp;nbsp;methods&amp;nbsp;&lt;code&gt;SomeMethod()&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;AnotherMethod()&lt;/code&gt;.&amp;nbsp;Into&amp;nbsp;those&amp;nbsp;methods,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;add&amp;nbsp;new&amp;nbsp;behavior.&lt;/p&gt;

&lt;p&gt;When&amp;nbsp;you&amp;nbsp;do&amp;nbsp;not&amp;nbsp;invoke&amp;nbsp;an&amp;nbsp;inner&amp;nbsp;method&amp;nbsp;of&amp;nbsp;Component,&amp;nbsp;it&amp;nbsp;is&amp;nbsp;no&amp;nbsp;longer&amp;nbsp;a&amp;nbsp;Decorator&amp;nbsp;Pattern.&amp;nbsp;You&amp;nbsp;will&amp;nbsp;not&amp;nbsp;add&amp;nbsp;new&amp;nbsp;behavior.&amp;nbsp;You&amp;nbsp;will&amp;nbsp;code&amp;nbsp;a&amp;nbsp;new&amp;nbsp;implementation&amp;nbsp;of&amp;nbsp;the&amp;nbsp;IComponent&amp;nbsp;interface.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multiple&amp;nbsp;Decorators
&lt;/h3&gt;

&lt;p&gt;You&amp;nbsp;are&amp;nbsp;not&amp;nbsp;limited&amp;nbsp;to&amp;nbsp;just&amp;nbsp;one&amp;nbsp;Decorator&amp;nbsp;object&amp;nbsp;per&amp;nbsp;Component&amp;nbsp;class.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;define&amp;nbsp;Decorator&amp;nbsp;which&amp;nbsp;decorates&amp;nbsp;another&amp;nbsp;Decorator&amp;nbsp;which&amp;nbsp;decorates&amp;nbsp;Components&amp;nbsp;and&amp;nbsp;so&amp;nbsp;on.&amp;nbsp;Look&amp;nbsp;at&amp;nbsp;the&amp;nbsp;image&amp;nbsp;below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpvm87sxrguyx0ky4mb73.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpvm87sxrguyx0ky4mb73.jpeg" alt="Illustration" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both&amp;nbsp;pictured&amp;nbsp;Decorators&amp;nbsp;must&amp;nbsp;implement&amp;nbsp;both&amp;nbsp;methods&amp;nbsp;defined&amp;nbsp;in&amp;nbsp;the&amp;nbsp;IComponent&amp;nbsp;interface.&lt;/p&gt;

&lt;p&gt;Block&amp;nbsp;named&amp;nbsp;Code&amp;nbsp;represents&amp;nbsp;a&amp;nbsp;place&amp;nbsp;in&amp;nbsp;the&amp;nbsp;codebase&amp;nbsp;where&amp;nbsp;I&amp;nbsp;am&amp;nbsp;operating&amp;nbsp;with&amp;nbsp;Component.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;code&amp;nbsp;will&amp;nbsp;always&amp;nbsp;invoke&amp;nbsp;methods&amp;nbsp;of&amp;nbsp;the&amp;nbsp;most&amp;nbsp;outer&amp;nbsp;Decorator&amp;nbsp;firstly.&amp;nbsp;To&amp;nbsp;bubbled&amp;nbsp;into&amp;nbsp;a&amp;nbsp;Component&amp;nbsp;class,&amp;nbsp;you&amp;nbsp;must&amp;nbsp;call&amp;nbsp;the&amp;nbsp;same-titled&amp;nbsp;method&amp;nbsp;of&amp;nbsp;an&amp;nbsp;inner&amp;nbsp;Decorator&amp;nbsp;in&amp;nbsp;every&amp;nbsp;Decorator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzvmhinzstmg6phltl9ym.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzvmhinzstmg6phltl9ym.jpeg" alt="Illustration" width="800" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If&amp;nbsp;you&amp;nbsp;want&amp;nbsp;to&amp;nbsp;use&amp;nbsp;new&amp;nbsp;behaviors&amp;nbsp;of&amp;nbsp;both&amp;nbsp;Decorators&amp;nbsp;at&amp;nbsp;the&amp;nbsp;same&amp;nbsp;time,&amp;nbsp;you&amp;nbsp;must&amp;nbsp;change&amp;nbsp;the&amp;nbsp;initialization&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Component&amp;nbsp;object&amp;nbsp;in&amp;nbsp;the&amp;nbsp;calling&amp;nbsp;code.&amp;nbsp;It&amp;nbsp;can&amp;nbsp;be&amp;nbsp;done&amp;nbsp;in&amp;nbsp;three&amp;nbsp;steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Initialization&amp;nbsp;of&amp;nbsp;DecoratorTwo.&lt;/li&gt;
&lt;li&gt; Initialization&amp;nbsp;of&amp;nbsp;DecoratorOne&amp;nbsp;and&amp;nbsp;passing&amp;nbsp;into&amp;nbsp;the&amp;nbsp;constructor&amp;nbsp;of&amp;nbsp;DecoratorTwo.&lt;/li&gt;
&lt;li&gt; Initialization&amp;nbsp;of&amp;nbsp;Component&amp;nbsp;and&amp;nbsp;passing&amp;nbsp;into&amp;nbsp;the&amp;nbsp;constructor&amp;nbsp;of&amp;nbsp;DecoratorOne.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s&amp;nbsp;it!&amp;nbsp;You&amp;nbsp;don’t&amp;nbsp;have&amp;nbsp;to&amp;nbsp;modify&amp;nbsp;any&amp;nbsp;more&amp;nbsp;code.&amp;nbsp;The&amp;nbsp;word&amp;nbsp;dynamic&amp;nbsp;gets&amp;nbsp;its&amp;nbsp;value.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tutorial
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;The&amp;nbsp;tutorial&amp;nbsp;assumes&amp;nbsp;basic&amp;nbsp;knowledge&amp;nbsp;of&amp;nbsp;.NET&amp;nbsp;and&amp;nbsp;Object-Oriented&amp;nbsp;Programming.&lt;/p&gt;

&lt;h4&gt;
  
  
  Introduction&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Sample&amp;nbsp;project
&lt;/h4&gt;

&lt;p&gt;The&amp;nbsp;sample&amp;nbsp;project&amp;nbsp;is&amp;nbsp;a&amp;nbsp;web&amp;nbsp;application&amp;nbsp;that&amp;nbsp;collects&amp;nbsp;data&amp;nbsp;about&amp;nbsp;the&amp;nbsp;location&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Company's&amp;nbsp;cars.&amp;nbsp;An&amp;nbsp;external&amp;nbsp;API&amp;nbsp;provides&amp;nbsp;data.&lt;/p&gt;

&lt;h4&gt;
  
  
  Your&amp;nbsp;role&amp;nbsp;at&amp;nbsp;the&amp;nbsp;project
&lt;/h4&gt;

&lt;p&gt;Imagine&amp;nbsp;you&amp;nbsp;are&amp;nbsp;working&amp;nbsp;as&amp;nbsp;a&amp;nbsp;support&amp;nbsp;developer,&amp;nbsp;and&amp;nbsp;the&amp;nbsp;Sample&amp;nbsp;project&amp;nbsp;is&amp;nbsp;your&amp;nbsp;responsibility.&amp;nbsp;Suddenly,&amp;nbsp;you&amp;nbsp;have&amp;nbsp;got&amp;nbsp;a&amp;nbsp;phone&amp;nbsp;call&amp;nbsp;from&amp;nbsp;the&amp;nbsp;customer;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Hello,&amp;nbsp;Mr.&amp;nbsp;AwesomeReader,&amp;nbsp;I&amp;nbsp;would&amp;nbsp;like&amp;nbsp;to&amp;nbsp;report&amp;nbsp;that&amp;nbsp;the&amp;nbsp;data&amp;nbsp;location&amp;nbsp;page&amp;nbsp;ends&amp;nbsp;with&amp;nbsp;the&amp;nbsp;timeout&amp;nbsp;error.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Or&amp;nbsp;maybe&amp;nbsp;he&amp;nbsp;is&amp;nbsp;not&amp;nbsp;that&amp;nbsp;polite.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqab8p1ngri67x0ebuqdh.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqab8p1ngri67x0ebuqdh.jpeg" alt="Illustration" width="800" height="556"&gt;&lt;/a&gt;&lt;/p&gt;
created&amp;nbsp;Kues1&amp;nbsp;—&amp;nbsp;[www.freepik.com](http://www.freepik.com/)



&lt;p&gt;You&amp;nbsp;are&amp;nbsp;going&amp;nbsp;to&amp;nbsp;ask&amp;nbsp;for&amp;nbsp;advice&amp;nbsp;from&amp;nbsp;colleagues.&amp;nbsp;They&amp;nbsp;advise&amp;nbsp;you&amp;nbsp;to&amp;nbsp;measure&amp;nbsp;a&amp;nbsp;time&amp;nbsp;of&amp;nbsp;how&amp;nbsp;long&amp;nbsp;it&amp;nbsp;application&amp;nbsp;takes&amp;nbsp;to&amp;nbsp;collect&amp;nbsp;data.&lt;/p&gt;

&lt;h4&gt;
  
  
  LocationService&amp;nbsp;class
&lt;/h4&gt;

&lt;p&gt;LocationService&amp;nbsp;class&amp;nbsp;is&amp;nbsp;taking&amp;nbsp;care&amp;nbsp;of&amp;nbsp;requesting&amp;nbsp;an&amp;nbsp;API&amp;nbsp;and&amp;nbsp;serialize&amp;nbsp;collected&amp;nbsp;data&amp;nbsp;into&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/Data_transfer_object" rel="noopener noreferrer"&gt;Data-Transfer&amp;nbsp;objects&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Class&amp;nbsp;implements&amp;nbsp;interface&amp;nbsp;ILocationService.&amp;nbsp;The&amp;nbsp;interface&amp;nbsp;contains&amp;nbsp;a&amp;nbsp;definition&amp;nbsp;of&amp;nbsp;the&amp;nbsp;method&amp;nbsp;&lt;code&gt;GetLocation()&lt;/code&gt;.&amp;nbsp;The&amp;nbsp;implementation&amp;nbsp;looks&amp;nbsp;like&amp;nbsp;this.&lt;/p&gt;

&lt;p&gt;Maybe&amp;nbsp;you&amp;nbsp;get&amp;nbsp;an&amp;nbsp;idea&amp;nbsp;to&amp;nbsp;add&amp;nbsp;a&amp;nbsp;logging&amp;nbsp;code&amp;nbsp;directly&amp;nbsp;into&amp;nbsp;the&amp;nbsp;method.&amp;nbsp;Let&amp;nbsp;me&amp;nbsp;tell&amp;nbsp;you&amp;nbsp;why&amp;nbsp;it&amp;nbsp;is&amp;nbsp;a&amp;nbsp;bad&amp;nbsp;idea.&lt;/p&gt;

&lt;p&gt;First,&amp;nbsp;it&amp;nbsp;will&amp;nbsp;make&amp;nbsp;the&amp;nbsp;class&amp;nbsp;a&amp;nbsp;lot&amp;nbsp;harder&amp;nbsp;to&amp;nbsp;read.&amp;nbsp;More&amp;nbsp;importantly,&amp;nbsp;when&amp;nbsp;you&amp;nbsp;are&amp;nbsp;modifying&amp;nbsp;the&amp;nbsp;existing&amp;nbsp;code,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;quickly&amp;nbsp;introduce&amp;nbsp;an&amp;nbsp;error&amp;nbsp;to&amp;nbsp;the&amp;nbsp;application.&lt;/p&gt;

&lt;p&gt;Another&amp;nbsp;reason&amp;nbsp;for&amp;nbsp;not&amp;nbsp;doing&amp;nbsp;this&amp;nbsp;is&amp;nbsp;a&amp;nbsp;violation&amp;nbsp;of&amp;nbsp;the&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/Single-responsibility_principle" rel="noopener noreferrer"&gt;Single&amp;nbsp;Responsibility&amp;nbsp;Principle&lt;/a&gt;.&amp;nbsp;The&amp;nbsp;meaning&amp;nbsp;of&amp;nbsp;principle&amp;nbsp;can&amp;nbsp;be&amp;nbsp;expressed&amp;nbsp;in&amp;nbsp;one&amp;nbsp;sentence.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A&amp;nbsp;class&amp;nbsp;should&amp;nbsp;have&amp;nbsp;only&amp;nbsp;one&amp;nbsp;reason&amp;nbsp;to&amp;nbsp;change.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because&amp;nbsp;you&amp;nbsp;are&amp;nbsp;a&amp;nbsp;great&amp;nbsp;developer&amp;nbsp;and&amp;nbsp;thanks&amp;nbsp;to&amp;nbsp;the&amp;nbsp;&lt;a href="https://www.medium.com/@danielrusnok" rel="noopener noreferrer"&gt;great&amp;nbsp;author&lt;/a&gt;,&amp;nbsp;who&amp;nbsp;tell&amp;nbsp;you&amp;nbsp;why&amp;nbsp;is&amp;nbsp;it&amp;nbsp;a&amp;nbsp;bad&amp;nbsp;idea,&amp;nbsp;you&amp;nbsp;decide&amp;nbsp;to&amp;nbsp;use&amp;nbsp;Decorator&amp;nbsp;Pattern.&lt;/p&gt;

&lt;p&gt;Making&amp;nbsp;that&amp;nbsp;decision&amp;nbsp;allows&amp;nbsp;you&amp;nbsp;to&amp;nbsp;extend&amp;nbsp;LocationService&amp;nbsp;without&amp;nbsp;modification&amp;nbsp;of&amp;nbsp;class.&amp;nbsp;This&amp;nbsp;reminds&amp;nbsp;me&amp;nbsp;of&amp;nbsp;another&amp;nbsp;&lt;a href="https://en.m.wikipedia.org/wiki/SOLID" rel="noopener noreferrer"&gt;SOLID&lt;/a&gt;&amp;nbsp;principle&amp;nbsp;and&amp;nbsp;it&amp;nbsp;is&amp;nbsp;an&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/Open%E2%80%93closed_principle" rel="noopener noreferrer"&gt;Open-Closed&amp;nbsp;Principle&lt;/a&gt;.&amp;nbsp;The&amp;nbsp;main&amp;nbsp;thought&amp;nbsp;of&amp;nbsp;this&amp;nbsp;principle&amp;nbsp;sounds&amp;nbsp;like&amp;nbsp;this.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side note: if you enjoy thinking about design patterns and clean, flexible code, I share short, free lessons like that in &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt;, a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Software&amp;nbsp;entities&amp;nbsp;(classes,&amp;nbsp;modules,&amp;nbsp;functions,&amp;nbsp;etc.)&amp;nbsp;should&amp;nbsp;be&amp;nbsp;open&amp;nbsp;for&amp;nbsp;extension,&amp;nbsp;but&amp;nbsp;closed&amp;nbsp;for&amp;nbsp;modification.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The&amp;nbsp;decorator&amp;nbsp;supports&amp;nbsp;the&amp;nbsp;Open-Closed&amp;nbsp;Principle&amp;nbsp;by&amp;nbsp;its&amp;nbsp;nature.&amp;nbsp;What&amp;nbsp;a&amp;nbsp;great&amp;nbsp;pattern.&lt;/p&gt;

&lt;h4&gt;
  
  
  Logging&amp;nbsp;Decorator
&lt;/h4&gt;

&lt;p&gt;You&amp;nbsp;are&amp;nbsp;going&amp;nbsp;to&amp;nbsp;create&amp;nbsp;a&amp;nbsp;LoggingLocationService&amp;nbsp;which&amp;nbsp;is&amp;nbsp;the&amp;nbsp;Decorator&amp;nbsp;of&amp;nbsp;your&amp;nbsp;Component&amp;nbsp;LocationService.&lt;/p&gt;

&lt;p&gt;Nice.&amp;nbsp;I&amp;nbsp;noticed&amp;nbsp;that&amp;nbsp;you&amp;nbsp;are&amp;nbsp;using&amp;nbsp;a&amp;nbsp;built-in&amp;nbsp;&lt;a href="https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.stopwatch?view=netframework-4.8" rel="noopener noreferrer"&gt;Stopwatch&amp;nbsp;class&lt;/a&gt;&amp;nbsp;to&amp;nbsp;measure&amp;nbsp;elapsed&amp;nbsp;time&amp;nbsp;in&amp;nbsp;milliseconds.&amp;nbsp;It’s&amp;nbsp;much&amp;nbsp;better&amp;nbsp;than&amp;nbsp;my&amp;nbsp;solution&amp;nbsp;to&amp;nbsp;deducting&amp;nbsp;two&amp;nbsp;variables&amp;nbsp;with&amp;nbsp;different&amp;nbsp;&lt;code&gt;DateTime.Now&lt;/code&gt;&amp;nbsp;values.&lt;/p&gt;

&lt;p&gt;Now&amp;nbsp;you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;do&amp;nbsp;a&amp;nbsp;little&amp;nbsp;change&amp;nbsp;to&amp;nbsp;calling&amp;nbsp;code,&amp;nbsp;which&amp;nbsp;you&amp;nbsp;can&amp;nbsp;found&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Index.cshtml.cs&amp;nbsp;class.&amp;nbsp;LocationService&amp;nbsp;initialization&amp;nbsp;looks&amp;nbsp;like&amp;nbsp;this.&lt;/p&gt;

&lt;p&gt;You&amp;nbsp;need&amp;nbsp;to&amp;nbsp;replace&amp;nbsp;the&amp;nbsp;&lt;code&gt;new&amp;nbsp;LocationService(apiKey]&lt;/code&gt;&amp;nbsp;with&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;LoggingLocationService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;LocationService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;_loggerFactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateLogger&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;LocationService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and&amp;nbsp;that’s&amp;nbsp;it.&amp;nbsp;You&amp;nbsp;are&amp;nbsp;ready&amp;nbsp;to&amp;nbsp;go.&lt;/p&gt;

&lt;h4&gt;
  
  
  Story&amp;nbsp;continues
&lt;/h4&gt;

&lt;p&gt;Thankfully&amp;nbsp;of&amp;nbsp;implemented&amp;nbsp;logging,&amp;nbsp;you&amp;nbsp;were&amp;nbsp;able&amp;nbsp;to&amp;nbsp;find&amp;nbsp;a&amp;nbsp;cause&amp;nbsp;of&amp;nbsp;long&amp;nbsp;loading&amp;nbsp;time.&amp;nbsp;You&amp;nbsp;did&amp;nbsp;some&amp;nbsp;magic&amp;nbsp;as&amp;nbsp;developers&amp;nbsp;do&amp;nbsp;and&amp;nbsp;bug&amp;nbsp;no&amp;nbsp;longer&amp;nbsp;exists.&lt;/p&gt;

&lt;p&gt;While&amp;nbsp;you&amp;nbsp;were&amp;nbsp;coding,&amp;nbsp;a&amp;nbsp;wild&amp;nbsp;idea&amp;nbsp;came&amp;nbsp;into&amp;nbsp;your&amp;nbsp;mind;&amp;nbsp;“Maybe&amp;nbsp;I&amp;nbsp;can&amp;nbsp;cache&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;of&amp;nbsp;locations&amp;nbsp;into&amp;nbsp;memory&amp;nbsp;and&amp;nbsp;short&amp;nbsp;loading&amp;nbsp;time&amp;nbsp;even&amp;nbsp;more”.&lt;/p&gt;

&lt;h4&gt;
  
  
  CachingLocationService
&lt;/h4&gt;

&lt;p&gt;After&amp;nbsp;a&amp;nbsp;conversation&amp;nbsp;with&amp;nbsp;teammates,&amp;nbsp;you&amp;nbsp;decide&amp;nbsp;to&amp;nbsp;cache&amp;nbsp;data&amp;nbsp;for&amp;nbsp;one&amp;nbsp;hour.&amp;nbsp;It&amp;nbsp;sounds&amp;nbsp;like&amp;nbsp;a&amp;nbsp;reasonable&amp;nbsp;amount&amp;nbsp;of&amp;nbsp;time.&amp;nbsp;Time&amp;nbsp;for&amp;nbsp;another&amp;nbsp;Decorator.&lt;/p&gt;

&lt;p&gt;Looking&amp;nbsp;good.&amp;nbsp;I&amp;nbsp;see&amp;nbsp;you&amp;nbsp;are&amp;nbsp;using&amp;nbsp;a&amp;nbsp;built-in&amp;nbsp;&lt;a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.caching.memorycache?view=netframework-4.8" rel="noopener noreferrer"&gt;MemoryCache&amp;nbsp;class&lt;/a&gt;.&amp;nbsp;Also,&amp;nbsp;there&amp;nbsp;is&amp;nbsp;no&amp;nbsp;need&amp;nbsp;to&amp;nbsp;generate&amp;nbsp;a&amp;nbsp;random&amp;nbsp;cache&amp;nbsp;key&amp;nbsp;because&amp;nbsp;you&amp;nbsp;are&amp;nbsp;loading&amp;nbsp;a&amp;nbsp;whole&amp;nbsp;collection,&amp;nbsp;right?&lt;/p&gt;

&lt;p&gt;In&amp;nbsp;the&amp;nbsp;first&amp;nbsp;&lt;code&gt;if&lt;/code&gt;&amp;nbsp;statement,&amp;nbsp;you&amp;nbsp;simply&amp;nbsp;try&amp;nbsp;to&amp;nbsp;get&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;locations&amp;nbsp;collection&amp;nbsp;by&amp;nbsp;cache&amp;nbsp;key.&amp;nbsp;If&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;is&amp;nbsp;empty,&amp;nbsp;new&amp;nbsp;data&amp;nbsp;will&amp;nbsp;be&amp;nbsp;loaded.&amp;nbsp;Therefore,&amp;nbsp;you&amp;nbsp;set&amp;nbsp;a&amp;nbsp;new&amp;nbsp;record&amp;nbsp;into&amp;nbsp;the&amp;nbsp;cache&amp;nbsp;with&amp;nbsp;the&amp;nbsp;expiration&amp;nbsp;of&amp;nbsp;the&amp;nbsp;hour.&lt;/p&gt;

&lt;p&gt;Now&amp;nbsp;I&amp;nbsp;guess&amp;nbsp;you&amp;nbsp;would&amp;nbsp;like&amp;nbsp;to&amp;nbsp;combine&amp;nbsp;both&amp;nbsp;new&amp;nbsp;decorators.&amp;nbsp;Logging&amp;nbsp;Decorator&amp;nbsp;and&amp;nbsp;Caching&amp;nbsp;Decorator&amp;nbsp;together.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;_locationService&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;CachingLocationService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;LoggingLocationService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;LocationService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;memoryCache&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You&amp;nbsp;wrapped&amp;nbsp;the&amp;nbsp;initialization&amp;nbsp;of&amp;nbsp;LoggingLocationService&amp;nbsp;with&amp;nbsp;the&amp;nbsp;initialization&amp;nbsp;of&amp;nbsp;CachingLocationService.&amp;nbsp;It&amp;nbsp;looks&amp;nbsp;a&amp;nbsp;little&amp;nbsp;bit&amp;nbsp;unreadable.&amp;nbsp;Try&amp;nbsp;to&amp;nbsp;use&amp;nbsp;multiple&amp;nbsp;variables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;withLocationService&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;LocationService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;withLoggingLocationService&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;LoggingLocationService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;withLocationService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;cachingLocationService&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;CachingLocationService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;withLoggingLocationService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;memoryCache&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Much&amp;nbsp;better.&amp;nbsp;When&amp;nbsp;I&amp;nbsp;see&amp;nbsp;code&amp;nbsp;where&amp;nbsp;you&amp;nbsp;can&amp;nbsp;initialize&amp;nbsp;instance&amp;nbsp;with&amp;nbsp;different&amp;nbsp;behaviors,&amp;nbsp;I&amp;nbsp;am&amp;nbsp;using&amp;nbsp;a&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/Builder_pattern" rel="noopener noreferrer"&gt;Builder&amp;nbsp;Pattern&lt;/a&gt;.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;explore&amp;nbsp;it,&amp;nbsp;but&amp;nbsp;not&amp;nbsp;now.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;final&amp;nbsp;class&amp;nbsp;diagram&amp;nbsp;after&amp;nbsp;our&amp;nbsp;changes&amp;nbsp;looks&amp;nbsp;like&amp;nbsp;this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc6wmqflrjzgzs53z1p5f.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc6wmqflrjzgzs53z1p5f.jpeg" alt="Illustration" width="800" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Decorator&amp;nbsp;and&amp;nbsp;Dependency&amp;nbsp;Injection
&lt;/h3&gt;

&lt;p&gt;Before&amp;nbsp;any&amp;nbsp;Decorator&amp;nbsp;implementations,&amp;nbsp;registration&amp;nbsp;into&amp;nbsp;the&amp;nbsp;container&amp;nbsp;of&amp;nbsp;LoggingService&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Sample&amp;nbsp;project&amp;nbsp;looked&amp;nbsp;like&amp;nbsp;an&amp;nbsp;example&amp;nbsp;below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddScoped&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ILocationService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="n"&gt;serviceProvider&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; 
  &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;LocationService&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In&amp;nbsp;this&amp;nbsp;case,&amp;nbsp;we&amp;nbsp;are&amp;nbsp;using&amp;nbsp;a&amp;nbsp;&lt;a href="https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-3.1" rel="noopener noreferrer"&gt;build-in&amp;nbsp;.NET&amp;nbsp;Core&amp;nbsp;IoC&amp;nbsp;container&lt;/a&gt;.&amp;nbsp;This&amp;nbsp;registration&amp;nbsp;means&amp;nbsp;that&amp;nbsp;injected&amp;nbsp;ILocationService&amp;nbsp;via&amp;nbsp;constructor&amp;nbsp;will&amp;nbsp;always&amp;nbsp;provide&amp;nbsp;an&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;LocationService&amp;nbsp;object.&amp;nbsp;But&amp;nbsp;you&amp;nbsp;want&amp;nbsp;an&amp;nbsp;instance&amp;nbsp;of&amp;nbsp;CachingLocationService.&lt;/p&gt;

&lt;p&gt;You&amp;nbsp;can&amp;nbsp;take&amp;nbsp;a&amp;nbsp;code&amp;nbsp;of&amp;nbsp;multiple&amp;nbsp;initializations&amp;nbsp;shown&amp;nbsp;at&amp;nbsp;the&amp;nbsp;end&amp;nbsp;of&amp;nbsp;the&amp;nbsp;tutorial&amp;nbsp;and&amp;nbsp;use&amp;nbsp;it&amp;nbsp;in&amp;nbsp;registration&amp;nbsp;like&amp;nbsp;this.&lt;/p&gt;

&lt;p&gt;There&amp;nbsp;is&amp;nbsp;a&amp;nbsp;third&amp;nbsp;option.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;use&amp;nbsp;a&amp;nbsp;great&amp;nbsp;&lt;a href="https://www.nuget.org/packages/Scrutor/" rel="noopener noreferrer"&gt;NuGet&amp;nbsp;package&amp;nbsp;named&amp;nbsp;Scrutor&lt;/a&gt;.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;an&amp;nbsp;extension&amp;nbsp;of&amp;nbsp;dependency&amp;nbsp;injection&amp;nbsp;in&amp;nbsp;.NET.&amp;nbsp;It&amp;nbsp;adds&amp;nbsp;methods&amp;nbsp;for&amp;nbsp;registration&amp;nbsp;to&amp;nbsp;make&amp;nbsp;registrations&amp;nbsp;more&amp;nbsp;fluently&amp;nbsp;readable.&amp;nbsp;Cool,&amp;nbsp;right?&lt;/p&gt;

&lt;h3&gt;
  
  
  Decorator&amp;nbsp;in&amp;nbsp;.NET
&lt;/h3&gt;

&lt;p&gt;You&amp;nbsp;can&amp;nbsp;find&amp;nbsp;the&amp;nbsp;Decorator&amp;nbsp;Pattern&amp;nbsp;also&amp;nbsp;in&amp;nbsp;the&amp;nbsp;guts&amp;nbsp;of&amp;nbsp;.NET.&amp;nbsp;A&amp;nbsp;prime&amp;nbsp;example&amp;nbsp;is&amp;nbsp;a&amp;nbsp;&lt;a href="https://docs.microsoft.com/en-us/dotnet/api/system.io.stream?view=netframework-4.8" rel="noopener noreferrer"&gt;Stream&amp;nbsp;class&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At&amp;nbsp;the&amp;nbsp;top&amp;nbsp;of&amp;nbsp;the&amp;nbsp;hierarchy,&amp;nbsp;we&amp;nbsp;have&amp;nbsp;the&amp;nbsp;Stream&amp;nbsp;class.&amp;nbsp;This&amp;nbsp;is&amp;nbsp;an&amp;nbsp;abstract&amp;nbsp;class&amp;nbsp;and&amp;nbsp;requires&amp;nbsp;you&amp;nbsp;to&amp;nbsp;provide&amp;nbsp;implementations&amp;nbsp;for&amp;nbsp;several&amp;nbsp;methods,&amp;nbsp;mainly&amp;nbsp;the&amp;nbsp;Read&amp;nbsp;and&amp;nbsp;Write&amp;nbsp;method.&amp;nbsp;Sounds&amp;nbsp;familiar,&amp;nbsp;right?&lt;/p&gt;

&lt;p&gt;Then&amp;nbsp;we&amp;nbsp;have&amp;nbsp;several&amp;nbsp;concrete&amp;nbsp;implementations&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Stream&amp;nbsp;class,&amp;nbsp;including&amp;nbsp;FileStream,&amp;nbsp;MemoryStream,&amp;nbsp;and&amp;nbsp;NetworkStream.&amp;nbsp;Each&amp;nbsp;of&amp;nbsp;these&amp;nbsp;classes&amp;nbsp;would&amp;nbsp;be&amp;nbsp;equivalent&amp;nbsp;to&amp;nbsp;the&amp;nbsp;LocationService&amp;nbsp;class&lt;/p&gt;

&lt;p&gt;Finally,&amp;nbsp;we&amp;nbsp;have&amp;nbsp;several&amp;nbsp;classes&amp;nbsp;that&amp;nbsp;act&amp;nbsp;is&amp;nbsp;decorators.&amp;nbsp;These&amp;nbsp;include&amp;nbsp;the&amp;nbsp;BufferedStream,&amp;nbsp;GZipStream,&amp;nbsp;and&amp;nbsp;CryptoStream&amp;nbsp;classes.&lt;/p&gt;

&lt;h3&gt;
  
  
  How&amp;nbsp;to&amp;nbsp;recognize&amp;nbsp;when&amp;nbsp;to&amp;nbsp;use&amp;nbsp;a&amp;nbsp;Decorator?
&lt;/h3&gt;

&lt;p&gt;Cross-cutting&amp;nbsp;concerns.&amp;nbsp;These&amp;nbsp;are&amp;nbsp;things&amp;nbsp;like&amp;nbsp;logging,&amp;nbsp;performance&amp;nbsp;tracking,&amp;nbsp;caching,&amp;nbsp;and&amp;nbsp;authorization.&amp;nbsp;Whenever&amp;nbsp;you&amp;nbsp;have&amp;nbsp;these&amp;nbsp;cross-cutting&amp;nbsp;concerns&amp;nbsp;come&amp;nbsp;up,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;implement&amp;nbsp;them&amp;nbsp;using&amp;nbsp;a&amp;nbsp;Decorator&amp;nbsp;Pattern.&lt;/p&gt;

&lt;p&gt;Another&amp;nbsp;typical&amp;nbsp;situation&amp;nbsp;is&amp;nbsp;the&amp;nbsp;modification&amp;nbsp;of&amp;nbsp;data&amp;nbsp;before&amp;nbsp;being&amp;nbsp;passed&amp;nbsp;into&amp;nbsp;the&amp;nbsp;Component.&amp;nbsp;For&amp;nbsp;example,&amp;nbsp;encrypt&amp;nbsp;and&amp;nbsp;decrypt&amp;nbsp;data&amp;nbsp;or&amp;nbsp;conversion&amp;nbsp;of&amp;nbsp;units.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build-in&amp;nbsp;shortcut&amp;nbsp;in&amp;nbsp;Visual&amp;nbsp;Studio
&lt;/h3&gt;

&lt;p&gt;There&amp;nbsp;is&amp;nbsp;a&amp;nbsp;built‑in&amp;nbsp;refactoring&amp;nbsp;tool&amp;nbsp;in&amp;nbsp;Visual&amp;nbsp;Studio,&amp;nbsp;either&amp;nbsp;with&amp;nbsp;the&amp;nbsp;keyboard&amp;nbsp;shortcut&amp;nbsp;of&amp;nbsp;&lt;strong&gt;Ctrl+R&amp;nbsp;and&amp;nbsp;then&amp;nbsp;Ctrl+I&lt;/strong&gt;.&amp;nbsp;Visual&amp;nbsp;Studio&amp;nbsp;will&amp;nbsp;create&amp;nbsp;a&amp;nbsp;Decorator&amp;nbsp;class&amp;nbsp;from&amp;nbsp;the&amp;nbsp;selected&amp;nbsp;interface.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Remember,&amp;nbsp;patterns&amp;nbsp;are&amp;nbsp;just&amp;nbsp;guiding&amp;nbsp;rails,&amp;nbsp;not&amp;nbsp;prescriptive&amp;nbsp;implementation&amp;nbsp;rules.&amp;nbsp;They&amp;nbsp;are&amp;nbsp;not&amp;nbsp;set&amp;nbsp;into&amp;nbsp;stone.&amp;nbsp;Decorator&amp;nbsp;Pattern&amp;nbsp;is&amp;nbsp;dynamic,&amp;nbsp;clean,&amp;nbsp;beloved&amp;nbsp;principles&amp;nbsp;supportive,&amp;nbsp;and&amp;nbsp;you&amp;nbsp;should&amp;nbsp;consider&amp;nbsp;it&amp;nbsp;as&amp;nbsp;a&amp;nbsp;new&amp;nbsp;tool&amp;nbsp;to&amp;nbsp;your&amp;nbsp;toolbox.&amp;nbsp;The&amp;nbsp;sample&amp;nbsp;project&amp;nbsp;can&amp;nbsp;be&amp;nbsp;found&amp;nbsp;at&amp;nbsp;&lt;a href="https://github.com/DannyRusnok/DecoratorSampleProject" rel="noopener noreferrer"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Daniel&amp;nbsp;Rusnok's&amp;nbsp;Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Every&amp;nbsp;month&amp;nbsp;I&amp;nbsp;will&amp;nbsp;send&amp;nbsp;you&amp;nbsp;an&amp;nbsp;email&amp;nbsp;about&amp;nbsp;with&amp;nbsp;list&amp;nbsp;of&amp;nbsp;my&amp;nbsp;newest&amp;nbsp;articles.&amp;nbsp;It&amp;nbsp;will&amp;nbsp;be&amp;nbsp;ofcourse&amp;nbsp;the&amp;nbsp;friendly&amp;nbsp;links…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;www.danielrusnok.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/danielrusnok" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tm54rf5555ym89o2ne4.png" alt="Illustration" width="200" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this clicked for you, you might also enjoy &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-switch-the-algorithms-at-runtime-with-strategy-pattern-in-c-43fec29a1702%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Switch%C2%A0the%C2%A0Algorithms%C2%A0at%C2%A0Runtime%C2%A0with%C2%A0Strategy%C2%A0Pattern%C2%A0in%C2%A0C#_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-switch-the-algorithms-at-runtime-with-strategy-pattern-in-c-43fec29a1702]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Switch&amp;nbsp;the&amp;nbsp;Algorithms&amp;nbsp;at&amp;nbsp;Runtime&amp;nbsp;with&amp;nbsp;Strategy&amp;nbsp;Pattern&amp;nbsp;in&amp;nbsp;C#_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-manage-states-with-state-design-pattern-in-c-d4ca47ec6aa%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0manage%C2%A0states%C2%A0with%C2%A0State%C2%A0Design%C2%A0Pattern%C2%A0in%C2%A0C#?_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-manage-states-with-state-design-pattern-in-c-d4ca47ec6aa]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;manage&amp;nbsp;states&amp;nbsp;with&amp;nbsp;State&amp;nbsp;Design&amp;nbsp;Pattern&amp;nbsp;in&amp;nbsp;C#?_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/ugly-dependency-graph-the-mediator-design-pattern-is-the-solution-for-you-8b35df60558b%5D%C2%A0%E2%80%94%C2%A0_Ugly%C2%A0dependency%C2%A0graph?%C2%A0The%C2%A0Mediator%C2%A0Design%C2%A0Pattern%C2%A0is%C2%A0the%C2%A0solution%C2%A0for%C2%A0you._" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/ugly-dependency-graph-the-mediator-design-pattern-is-the-solution-for-you-8b35df60558b]&amp;nbsp;—&amp;nbsp;_Ugly&amp;nbsp;dependency&amp;nbsp;graph?&amp;nbsp;The&amp;nbsp;Mediator&amp;nbsp;Design&amp;nbsp;Pattern&amp;nbsp;is&amp;nbsp;the&amp;nbsp;solution&amp;nbsp;for&amp;nbsp;you._&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/decoupling-with-chain-of-responsibility-pattern-in-c-1273329ed923%5D%C2%A0%E2%80%94%C2%A0_Decoupling%C2%A0with%C2%A0Chain%C2%A0of%C2%A0Responsibility%C2%A0Pattern%C2%A0in%C2%A0C#_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/decoupling-with-chain-of-responsibility-pattern-in-c-1273329ed923]&amp;nbsp;—&amp;nbsp;_Decoupling&amp;nbsp;with&amp;nbsp;Chain&amp;nbsp;of&amp;nbsp;Responsibility&amp;nbsp;Pattern&amp;nbsp;in&amp;nbsp;C#_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-rewrite-your-code-to-achieve-more-flexible-design-3c86dad822e%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Rewrite%C2%A0your%C2%A0Code%C2%A0to%C2%A0Achieve%C2%A0More%C2%A0Flexible%C2%A0Design_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-rewrite-your-code-to-achieve-more-flexible-design-3c86dad822e]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Rewrite&amp;nbsp;your&amp;nbsp;Code&amp;nbsp;to&amp;nbsp;Achieve&amp;nbsp;More&amp;nbsp;Flexible&amp;nbsp;Design_&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>designpatterns</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>programming</category>
    </item>
    <item>
      <title>Four Reason to Change your Software</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Thu, 18 Jun 2026 15:07:15 +0000</pubDate>
      <link>https://dev.to/danielrusnok/four-reason-to-change-your-software-1pc</link>
      <guid>https://dev.to/danielrusnok/four-reason-to-change-your-software-1pc</guid>
      <description>&lt;h4&gt;
  
  
  CLEAN&amp;nbsp;CODE&amp;nbsp;&amp;amp;&amp;nbsp;REFACTORING
&lt;/h4&gt;

&lt;h3&gt;
  
  
  Four&amp;nbsp;Reasons&amp;nbsp;to&amp;nbsp;Change&amp;nbsp;your&amp;nbsp;Software
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftq7wyj2467juibb31vtw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftq7wyj2467juibb31vtw.jpeg" alt="Four Reason to Change your Software cover image" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;
Created&amp;nbsp;by&amp;nbsp;[Stories](https://www.freepik.com/stories)



&lt;p&gt;&lt;a href="http://Michael%20Feathers" rel="noopener noreferrer"&gt;Michael&amp;nbsp;Feathers&lt;/a&gt;&amp;nbsp;defines&amp;nbsp;four&amp;nbsp;main&amp;nbsp;reasons&amp;nbsp;to&amp;nbsp;change&amp;nbsp;your&amp;nbsp;code&amp;nbsp;in&amp;nbsp;the&amp;nbsp;book&amp;nbsp;&lt;a href="https://www.goodreads.com/book/show/44919.Working_Effectively_with_Legacy_Code" rel="noopener noreferrer"&gt;Working&amp;nbsp;Effectively&amp;nbsp;with&amp;nbsp;Legacy&amp;nbsp;Code&lt;/a&gt;.&amp;nbsp;I&amp;nbsp;found&amp;nbsp;those&amp;nbsp;few&amp;nbsp;paragraphs&amp;nbsp;interesting,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;would&amp;nbsp;like&amp;nbsp;to&amp;nbsp;share&amp;nbsp;them&amp;nbsp;with&amp;nbsp;you&amp;nbsp;from&amp;nbsp;my&amp;nbsp;perspective.&lt;/p&gt;

&lt;h4&gt;
  
  
  Four&amp;nbsp;main&amp;nbsp;reasons&amp;nbsp;to&amp;nbsp;change&amp;nbsp;are
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Adding&amp;nbsp;a&amp;nbsp;feature&lt;/li&gt;
&lt;li&gt;  Fixing&amp;nbsp;a&amp;nbsp;bug&lt;/li&gt;
&lt;li&gt;  Improving&amp;nbsp;design&lt;/li&gt;
&lt;li&gt;  Optimising&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fosi8fqjje78c8kkmoo93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fosi8fqjje78c8kkmoo93.png" alt="Illustration" width="800" height="46"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding&amp;nbsp;Feature&amp;nbsp;and&amp;nbsp;Bug&amp;nbsp;Fixing
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6n5puxw0f7mkqtuwyg22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6n5puxw0f7mkqtuwyg22.png" alt="Illustration" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;
original&amp;nbsp;pictures&amp;nbsp;by&amp;nbsp;[Stories](https://www.freepik.com/stories)



&lt;p&gt;The&amp;nbsp;most&amp;nbsp;typical&amp;nbsp;reason&amp;nbsp;to&amp;nbsp;change&amp;nbsp;software&amp;nbsp;is&amp;nbsp;an&amp;nbsp;adding&amp;nbsp;of&amp;nbsp;the&amp;nbsp;feature.&amp;nbsp;Your&amp;nbsp;software&amp;nbsp;is&amp;nbsp;acting&amp;nbsp;one&amp;nbsp;way,&amp;nbsp;and&amp;nbsp;the&amp;nbsp;boss&amp;nbsp;or&amp;nbsp;client&amp;nbsp;needs&amp;nbsp;it&amp;nbsp;to&amp;nbsp;do&amp;nbsp;something&amp;nbsp;else.&lt;/p&gt;

&lt;p&gt;At&amp;nbsp;first,&amp;nbsp;adding&amp;nbsp;a&amp;nbsp;feature&amp;nbsp;may&amp;nbsp;look&amp;nbsp;like&amp;nbsp;an&amp;nbsp;easy&amp;nbsp;task&amp;nbsp;for&amp;nbsp;both&amp;nbsp;sides.&amp;nbsp;Friction&amp;nbsp;between&amp;nbsp;the&amp;nbsp;developer&amp;nbsp;and&amp;nbsp;the&amp;nbsp;task&amp;nbsp;assigner&amp;nbsp;began&amp;nbsp;when&amp;nbsp;the&amp;nbsp;assigner&amp;nbsp;thinks&amp;nbsp;it&amp;nbsp;is&amp;nbsp;a&amp;nbsp;bug,&amp;nbsp;but&amp;nbsp;the&amp;nbsp;developer&amp;nbsp;sees&amp;nbsp;it&amp;nbsp;as&amp;nbsp;a&amp;nbsp;completely&amp;nbsp;new&amp;nbsp;feature.&lt;/p&gt;

&lt;p&gt;At&amp;nbsp;the&amp;nbsp;moment&amp;nbsp;when&amp;nbsp;I&amp;nbsp;am&amp;nbsp;writing&amp;nbsp;this&amp;nbsp;article,&amp;nbsp;I&amp;nbsp;am&amp;nbsp;also&amp;nbsp;working&amp;nbsp;on&amp;nbsp;a&amp;nbsp;form-based&amp;nbsp;information&amp;nbsp;system,&amp;nbsp;and&amp;nbsp;new&amp;nbsp;task&amp;nbsp;recently&amp;nbsp;appeared&amp;nbsp;in&amp;nbsp;the&amp;nbsp;mailbox.&amp;nbsp;The&amp;nbsp;client&amp;nbsp;wants&amp;nbsp;me&amp;nbsp;to&amp;nbsp;fix&amp;nbsp;the&amp;nbsp;focus&amp;nbsp;behaviour&amp;nbsp;of&amp;nbsp;textboxes.&amp;nbsp;He&amp;nbsp;thinks&amp;nbsp;that&amp;nbsp;every&amp;nbsp;time&amp;nbsp;he&amp;nbsp;clicks&amp;nbsp;or&amp;nbsp;tabs&amp;nbsp;into&amp;nbsp;a&amp;nbsp;textbox&amp;nbsp;which&amp;nbsp;contains&amp;nbsp;a&amp;nbsp;text,&amp;nbsp;the&amp;nbsp;whole&amp;nbsp;text&amp;nbsp;should&amp;nbsp;be&amp;nbsp;already&amp;nbsp;selected&amp;nbsp;or&amp;nbsp;as&amp;nbsp;he&amp;nbsp;said;&amp;nbsp;“it&amp;nbsp;should&amp;nbsp;be&amp;nbsp;blue”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk2xovt5nnuj3cptnzoor.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk2xovt5nnuj3cptnzoor.gif" alt="Illustration" width="436" height="55"&gt;&lt;/a&gt;&lt;/p&gt;
selection&amp;nbsp;of&amp;nbsp;text



&lt;p&gt;As&amp;nbsp;the&amp;nbsp;developer,&amp;nbsp;you&amp;nbsp;know&amp;nbsp;that&amp;nbsp;this&amp;nbsp;is&amp;nbsp;not&amp;nbsp;typical&amp;nbsp;behaviour&amp;nbsp;of&amp;nbsp;textbox&amp;nbsp;and&amp;nbsp;you&amp;nbsp;will&amp;nbsp;have&amp;nbsp;to&amp;nbsp;make&amp;nbsp;changes.&amp;nbsp;Depends&amp;nbsp;on&amp;nbsp;the&amp;nbsp;framework&amp;nbsp;you&amp;nbsp;are&amp;nbsp;work&amp;nbsp;with,&amp;nbsp;the&amp;nbsp;task&amp;nbsp;can&amp;nbsp;take&amp;nbsp;a&amp;nbsp;few&amp;nbsp;minutes&amp;nbsp;or&amp;nbsp;a&amp;nbsp;few&amp;nbsp;hours,&amp;nbsp;and&amp;nbsp;you&amp;nbsp;may&amp;nbsp;come&amp;nbsp;out&amp;nbsp;without&amp;nbsp;a&amp;nbsp;solution.&lt;/p&gt;

&lt;p&gt;It&amp;nbsp;might&amp;nbsp;seem&amp;nbsp;that&amp;nbsp;difference&amp;nbsp;between&amp;nbsp;adding&amp;nbsp;a&amp;nbsp;feature&amp;nbsp;and&amp;nbsp;bug&amp;nbsp;fixing&amp;nbsp;is&amp;nbsp;just&amp;nbsp;the&amp;nbsp;dilemma&amp;nbsp;about&amp;nbsp;the&amp;nbsp;contrast&amp;nbsp;of&amp;nbsp;the&amp;nbsp;point&amp;nbsp;of&amp;nbsp;view.&amp;nbsp;A&amp;nbsp;task&amp;nbsp;stays&amp;nbsp;the&amp;nbsp;same,&amp;nbsp;and&amp;nbsp;you&amp;nbsp;still&amp;nbsp;have&amp;nbsp;to&amp;nbsp;complete&amp;nbsp;it&amp;nbsp;one&amp;nbsp;or&amp;nbsp;another.&lt;/p&gt;

&lt;p&gt;But&amp;nbsp;some&amp;nbsp;companies&amp;nbsp;are&amp;nbsp;tracking&amp;nbsp;developers&amp;nbsp;time,&amp;nbsp;for&amp;nbsp;example,&amp;nbsp;for&amp;nbsp;invoice&amp;nbsp;calculations&amp;nbsp;or&amp;nbsp;quality&amp;nbsp;initiatives.&amp;nbsp;Such&amp;nbsp;difference&amp;nbsp;decides&amp;nbsp;if&amp;nbsp;the&amp;nbsp;company&amp;nbsp;will&amp;nbsp;bill&amp;nbsp;the&amp;nbsp;customer&amp;nbsp;for&amp;nbsp;a&amp;nbsp;new&amp;nbsp;feature&amp;nbsp;or&amp;nbsp;not.&amp;nbsp;Bug&amp;nbsp;fixing&amp;nbsp;can&amp;nbsp;be&amp;nbsp;part&amp;nbsp;of&amp;nbsp;the&amp;nbsp;contract&amp;nbsp;with&amp;nbsp;the&amp;nbsp;customer.&amp;nbsp;In&amp;nbsp;this&amp;nbsp;situation,&amp;nbsp;the&amp;nbsp;determination&amp;nbsp;of&amp;nbsp;difference&amp;nbsp;crucial.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fosi8fqjje78c8kkmoo93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fosi8fqjje78c8kkmoo93.png" alt="Illustration" width="800" height="46"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Design&amp;nbsp;Improvement&amp;nbsp;and&amp;nbsp;Optimisation
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiesjgd0j3ts3zi5czgd8.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiesjgd0j3ts3zi5czgd8.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Created&amp;nbsp;by&amp;nbsp;[Stories](https://www.freepik.com/stories)



&lt;p&gt;First&amp;nbsp;of&amp;nbsp;all,&amp;nbsp;don’t&amp;nbsp;get&amp;nbsp;me&amp;nbsp;wrong.&amp;nbsp;By&amp;nbsp;saying&amp;nbsp;word&amp;nbsp;design,&amp;nbsp;I&amp;nbsp;mean&amp;nbsp;a&amp;nbsp;code&amp;nbsp;design,&amp;nbsp;no&amp;nbsp;design&amp;nbsp;of&amp;nbsp;user&amp;nbsp;interface.&lt;/p&gt;

&lt;p&gt;Design&amp;nbsp;improvement&amp;nbsp;is&amp;nbsp;a&amp;nbsp;different&amp;nbsp;kind&amp;nbsp;of&amp;nbsp;software&amp;nbsp;change.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;driven&amp;nbsp;by&amp;nbsp;the&amp;nbsp;goodwill&amp;nbsp;of&amp;nbsp;the&amp;nbsp;developer,&amp;nbsp;no&amp;nbsp;by&amp;nbsp;the&amp;nbsp;boss&amp;nbsp;task.&lt;/p&gt;

&lt;p&gt;When&amp;nbsp;we&amp;nbsp;want&amp;nbsp;to&amp;nbsp;alter&amp;nbsp;the&amp;nbsp;software’s&amp;nbsp;design&amp;nbsp;to&amp;nbsp;make&amp;nbsp;it&amp;nbsp;more&amp;nbsp;maintainable,&amp;nbsp;we&amp;nbsp;want&amp;nbsp;software&amp;nbsp;behaviour&amp;nbsp;to&amp;nbsp;keep&amp;nbsp;untouched.&amp;nbsp;By&amp;nbsp;changing&amp;nbsp;a&amp;nbsp;design,&amp;nbsp;we&amp;nbsp;may&amp;nbsp;introduce&amp;nbsp;a&amp;nbsp;bug.&amp;nbsp;Fear&amp;nbsp;of&amp;nbsp;introducing&amp;nbsp;a&amp;nbsp;bug&amp;nbsp;leads&amp;nbsp;to&amp;nbsp;intact&amp;nbsp;code&amp;nbsp;segments&amp;nbsp;which&amp;nbsp;stay&amp;nbsp;the&amp;nbsp;same&amp;nbsp;since&amp;nbsp;the&amp;nbsp;beginning&amp;nbsp;and&amp;nbsp;will&amp;nbsp;rot.&lt;/p&gt;

&lt;p&gt;As&amp;nbsp;developers,&amp;nbsp;we&amp;nbsp;grow&amp;nbsp;and&amp;nbsp;knowledge&amp;nbsp;of&amp;nbsp;our&amp;nbsp;craft&amp;nbsp;rise.&amp;nbsp;Time&amp;nbsp;goes,&amp;nbsp;design&amp;nbsp;of&amp;nbsp;new&amp;nbsp;code&amp;nbsp;is&amp;nbsp;better,&amp;nbsp;and&amp;nbsp;one&amp;nbsp;day&amp;nbsp;task&amp;nbsp;will&amp;nbsp;appear&amp;nbsp;for&amp;nbsp;adding&amp;nbsp;a&amp;nbsp;new&amp;nbsp;feature&amp;nbsp;into&amp;nbsp;old&amp;nbsp;code&amp;nbsp;parts.&amp;nbsp;We&amp;nbsp;can&amp;nbsp;clearly&amp;nbsp;say&amp;nbsp;that&amp;nbsp;such&amp;nbsp;situations&amp;nbsp;will&amp;nbsp;once&amp;nbsp;in&amp;nbsp;a&amp;nbsp;while&amp;nbsp;come&amp;nbsp;out.&amp;nbsp;Such&amp;nbsp;a&amp;nbsp;position&amp;nbsp;always&amp;nbsp;motivate&amp;nbsp;me&amp;nbsp;to&amp;nbsp;improve&amp;nbsp;the&amp;nbsp;design,&amp;nbsp;but&amp;nbsp;I&amp;nbsp;am&amp;nbsp;too&amp;nbsp;afraid&amp;nbsp;of&amp;nbsp;dropping&amp;nbsp;behaviours,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;will&amp;nbsp;not&amp;nbsp;do&amp;nbsp;any.&amp;nbsp;Again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fby95e3omb2sdtfxnupzh.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fby95e3omb2sdtfxnupzh.jpeg" alt="Illustration" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;
Created&amp;nbsp;by&amp;nbsp;[Stories](https://www.freepik.com/stories)



&lt;p&gt;&lt;em&gt;Side note: if you like thinking about the craft itself — when to refactor, when to leave code alone — I share short, free lessons like that in &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt;, a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Refactoring
&lt;/h4&gt;

&lt;p&gt;Developers&amp;nbsp;fear&amp;nbsp;of&amp;nbsp;changing&amp;nbsp;code&amp;nbsp;drives&amp;nbsp;the&amp;nbsp;creation&amp;nbsp;of&amp;nbsp;whole&amp;nbsp;the&amp;nbsp;discipline&amp;nbsp;named&amp;nbsp;refactoring.&amp;nbsp;Refactoring&amp;nbsp;is&amp;nbsp;also&amp;nbsp;the&amp;nbsp;main&amp;nbsp;topic&amp;nbsp;of&amp;nbsp;the&amp;nbsp;earlier&amp;nbsp;mentioned&amp;nbsp;&lt;a href="http://working%20effectively%20with%20legacy%20code" rel="noopener noreferrer"&gt;book&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;idea&amp;nbsp;behind&amp;nbsp;refactoring&amp;nbsp;is&amp;nbsp;that&amp;nbsp;we&amp;nbsp;can&amp;nbsp;make&amp;nbsp;the&amp;nbsp;software&amp;nbsp;more&amp;nbsp;maintainable&amp;nbsp;without&amp;nbsp;changing&amp;nbsp;behaviour&amp;nbsp;if&amp;nbsp;we&amp;nbsp;write&amp;nbsp;tests.&amp;nbsp;Tests&amp;nbsp;will&amp;nbsp;serve&amp;nbsp;as&amp;nbsp;watchdogs.&amp;nbsp;If&amp;nbsp;any&amp;nbsp;test&amp;nbsp;fails&amp;nbsp;while&amp;nbsp;you&amp;nbsp;improve&amp;nbsp;a&amp;nbsp;design,&amp;nbsp;it&amp;nbsp;indicates&amp;nbsp;that&amp;nbsp;you&amp;nbsp;unwillingly&amp;nbsp;drop&amp;nbsp;a&amp;nbsp;behaviour.&lt;/p&gt;

&lt;p&gt;Code&amp;nbsp;should&amp;nbsp;be&amp;nbsp;cover&amp;nbsp;by&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;of&amp;nbsp;tests&amp;nbsp;which&amp;nbsp;will&amp;nbsp;keep&amp;nbsp;watch&amp;nbsp;on&amp;nbsp;application&amp;nbsp;behaviours.&amp;nbsp;We&amp;nbsp;should&amp;nbsp;refactor&amp;nbsp;in&amp;nbsp;small&amp;nbsp;steps,&amp;nbsp;and&amp;nbsp;continuously&amp;nbsp;run&amp;nbsp;a&amp;nbsp;set&amp;nbsp;of&amp;nbsp;tests&amp;nbsp;that&amp;nbsp;will&amp;nbsp;keep&amp;nbsp;us&amp;nbsp;informed.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;critical&amp;nbsp;thing&amp;nbsp;about&amp;nbsp;refactoring&amp;nbsp;from&amp;nbsp;a&amp;nbsp;change&amp;nbsp;point&amp;nbsp;of&amp;nbsp;view&amp;nbsp;is&amp;nbsp;that&amp;nbsp;there&amp;nbsp;aren’t&amp;nbsp;supposed&amp;nbsp;to&amp;nbsp;be&amp;nbsp;any&amp;nbsp;functional&amp;nbsp;changes&amp;nbsp;when&amp;nbsp;you&amp;nbsp;refactor.&lt;/p&gt;

&lt;h4&gt;
  
  
  Optimisation
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvy9dr7iwe2ltdbfrxugz.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvy9dr7iwe2ltdbfrxugz.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Created&amp;nbsp;by&amp;nbsp;[Stories](https://www.freepik.com/stories)



&lt;p&gt;The&amp;nbsp;optimisation&amp;nbsp;is&amp;nbsp;like&amp;nbsp;refactoring,&amp;nbsp;but&amp;nbsp;with&amp;nbsp;a&amp;nbsp;different&amp;nbsp;goal.&amp;nbsp;We&amp;nbsp;want&amp;nbsp;the&amp;nbsp;functionality&amp;nbsp;to&amp;nbsp;stay&amp;nbsp;the&amp;nbsp;same,&amp;nbsp;but&amp;nbsp;the&amp;nbsp;goal&amp;nbsp;is&amp;nbsp;to&amp;nbsp;increase&amp;nbsp;performance.&amp;nbsp;Optimising&amp;nbsp;can&amp;nbsp;lead&amp;nbsp;to&amp;nbsp;dropping&amp;nbsp;a&amp;nbsp;behaviour&amp;nbsp;and&amp;nbsp;introduction&amp;nbsp;of&amp;nbsp;bugs&amp;nbsp;too.&amp;nbsp;We&amp;nbsp;must&amp;nbsp;apply&amp;nbsp;the&amp;nbsp;very&amp;nbsp;same&amp;nbsp;rules&amp;nbsp;as&amp;nbsp;in&amp;nbsp;the&amp;nbsp;refactoring&amp;nbsp;process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fosi8fqjje78c8kkmoo93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fosi8fqjje78c8kkmoo93.png" alt="Illustration" width="800" height="46"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Fight&amp;nbsp;between&amp;nbsp;“it’s&amp;nbsp;a&amp;nbsp;feature”&amp;nbsp;and&amp;nbsp;“it’s&amp;nbsp;a&amp;nbsp;bug”&amp;nbsp;is&amp;nbsp;endless.&amp;nbsp;Correct&amp;nbsp;identification&amp;nbsp;of&amp;nbsp;the&amp;nbsp;problem&amp;nbsp;could&amp;nbsp;lead&amp;nbsp;to&amp;nbsp;the&amp;nbsp;rise&amp;nbsp;of&amp;nbsp;the&amp;nbsp;company’s&amp;nbsp;income&amp;nbsp;or&amp;nbsp;vice&amp;nbsp;versa.&lt;/p&gt;

&lt;p&gt;Refactoring&amp;nbsp;and&amp;nbsp;Optimizing&amp;nbsp;are&amp;nbsp;essential&amp;nbsp;disciplines&amp;nbsp;of&amp;nbsp;code&amp;nbsp;improvement&amp;nbsp;and&amp;nbsp;reasons&amp;nbsp;for&amp;nbsp;changing&amp;nbsp;code.&amp;nbsp;It&amp;nbsp;has&amp;nbsp;to&amp;nbsp;be&amp;nbsp;done&amp;nbsp;slowly,&amp;nbsp;wisely,&amp;nbsp;and&amp;nbsp;with&amp;nbsp;the&amp;nbsp;collection&amp;nbsp;of&amp;nbsp;tests&amp;nbsp;which&amp;nbsp;are&amp;nbsp;going&amp;nbsp;to&amp;nbsp;watch&amp;nbsp;your&amp;nbsp;back.&lt;/p&gt;

&lt;p&gt;One&amp;nbsp;way&amp;nbsp;of&amp;nbsp;improving&amp;nbsp;code&amp;nbsp;design&amp;nbsp;is&amp;nbsp;to&amp;nbsp;take&amp;nbsp;advantage&amp;nbsp;of&amp;nbsp;design&amp;nbsp;patterns.&amp;nbsp;I&amp;nbsp;wrote&amp;nbsp;a&amp;nbsp;few&amp;nbsp;pieces,&amp;nbsp;and&amp;nbsp;you&amp;nbsp;might&amp;nbsp;find&amp;nbsp;an&amp;nbsp;interested&amp;nbsp;in&amp;nbsp;reading&amp;nbsp;them&amp;nbsp;as&amp;nbsp;well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/net-core/decoupling-with-chain-of-responsibility-pattern-in-c-1273329ed923" rel="noopener noreferrer"&gt;Decoupling&amp;nbsp;with&amp;nbsp;Chain&amp;nbsp;of&amp;nbsp;Responsibility&amp;nbsp;Pattern&amp;nbsp;in&amp;nbsp;C#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://medium.com/net-core/decoupling-with-chain-of-responsibility-pattern-in-c-1273329ed923" rel="noopener noreferrer"&gt;The&amp;nbsp;Chain&amp;nbsp;of&amp;nbsp;Responsibility&amp;nbsp;Pattern&amp;nbsp;allows&amp;nbsp;us&amp;nbsp;to&amp;nbsp;easily&amp;nbsp;separate&amp;nbsp;dependent&amp;nbsp;parts&amp;nbsp;to&amp;nbsp;make&amp;nbsp;code&amp;nbsp;more&amp;nbsp;extensible&amp;nbsp;and…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://medium.com/net-core/decoupling-with-chain-of-responsibility-pattern-in-c-1273329ed923" rel="noopener noreferrer"&gt;medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://medium.com/net-core/how-to-manage-states-with-state-design-pattern-in-c-d4ca47ec6aa" rel="noopener noreferrer"&gt;How&amp;nbsp;to&amp;nbsp;manage&amp;nbsp;states&amp;nbsp;with&amp;nbsp;State&amp;nbsp;Design&amp;nbsp;Pattern&amp;nbsp;in&amp;nbsp;C#?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://medium.com/net-core/how-to-manage-states-with-state-design-pattern-in-c-d4ca47ec6aa" rel="noopener noreferrer"&gt;Everything&amp;nbsp;you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;know&amp;nbsp;about&amp;nbsp;State&amp;nbsp;Design&amp;nbsp;Pattern&amp;nbsp;in&amp;nbsp;C#&amp;nbsp;at&amp;nbsp;one&amp;nbsp;place.&lt;/a&gt;&lt;/em&gt;&lt;a href="https://medium.com/net-core/how-to-manage-states-with-state-design-pattern-in-c-d4ca47ec6aa" rel="noopener noreferrer"&gt;medium.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fosi8fqjje78c8kkmoo93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fosi8fqjje78c8kkmoo93.png" alt="Illustration" width="800" height="46"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Daniel&amp;nbsp;Rusnok's&amp;nbsp;Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Every&amp;nbsp;month&amp;nbsp;I&amp;nbsp;will&amp;nbsp;send&amp;nbsp;you&amp;nbsp;an&amp;nbsp;email&amp;nbsp;about&amp;nbsp;with&amp;nbsp;list&amp;nbsp;of&amp;nbsp;my&amp;nbsp;newest&amp;nbsp;articles.&amp;nbsp;It&amp;nbsp;will&amp;nbsp;be&amp;nbsp;ofcourse&amp;nbsp;the&amp;nbsp;friendly&amp;nbsp;links…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;www.danielrusnok.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/danielrusnok" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tm54rf5555ym89o2ne4.png" alt="Illustration" width="200" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this resonated, you might also enjoy &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-rewrite-your-code-to-achieve-more-flexible-design-3c86dad822e%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Rewrite%C2%A0your%C2%A0Code%C2%A0to%C2%A0Achieve%C2%A0More%C2%A0Flexible%C2%A0Design_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-rewrite-your-code-to-achieve-more-flexible-design-3c86dad822e]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Rewrite&amp;nbsp;your&amp;nbsp;Code&amp;nbsp;to&amp;nbsp;Achieve&amp;nbsp;More&amp;nbsp;Flexible&amp;nbsp;Design_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-safely-extend-your-legacy-code-part-i-af98b49e913b%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0safely%C2%A0extend%C2%A0your%C2%A0legacy%C2%A0code?%C2%A0Part%C2%A0I_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-safely-extend-your-legacy-code-part-i-af98b49e913b]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;safely&amp;nbsp;extend&amp;nbsp;your&amp;nbsp;legacy&amp;nbsp;code?&amp;nbsp;Part&amp;nbsp;I_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-did-i-reduce-the-load-time-of-my-application-37f418289d7b%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0did%C2%A0I%C2%A0reduce%C2%A0the%C2%A0load%C2%A0time%C2%A0of%C2%A0my%C2%A0application?_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-did-i-reduce-the-load-time-of-my-application-37f418289d7b]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;did&amp;nbsp;I&amp;nbsp;reduce&amp;nbsp;the&amp;nbsp;load&amp;nbsp;time&amp;nbsp;of&amp;nbsp;my&amp;nbsp;application?_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-dynamically-add-behaviors-with-decorator-pattern-6a130c41b7d4%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Dynamically%C2%A0Add%C2%A0Behaviors%C2%A0With%C2%A0Decorator%C2%A0Pattern_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-dynamically-add-behaviors-with-decorator-pattern-6a130c41b7d4]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Dynamically&amp;nbsp;Add&amp;nbsp;Behaviors&amp;nbsp;With&amp;nbsp;Decorator&amp;nbsp;Pattern_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/how-to-switch-the-algorithms-at-runtime-with-strategy-pattern-in-c-43fec29a1702%5D%C2%A0%E2%80%94%C2%A0_How%C2%A0to%C2%A0Switch%C2%A0the%C2%A0Algorithms%C2%A0at%C2%A0Runtime%C2%A0with%C2%A0Strategy%C2%A0Pattern_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/how-to-switch-the-algorithms-at-runtime-with-strategy-pattern-in-c-43fec29a1702]&amp;nbsp;—&amp;nbsp;_How&amp;nbsp;to&amp;nbsp;Switch&amp;nbsp;the&amp;nbsp;Algorithms&amp;nbsp;at&amp;nbsp;Runtime&amp;nbsp;with&amp;nbsp;Strategy&amp;nbsp;Pattern_&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>refactoring</category>
      <category>csharp</category>
      <category>programming</category>
      <category>cleancode</category>
    </item>
    <item>
      <title>Developers are introverts. Domain-driven design can help.</title>
      <dc:creator>Digital Craft Workshop</dc:creator>
      <pubDate>Tue, 16 Jun 2026 15:07:44 +0000</pubDate>
      <link>https://dev.to/danielrusnok/developers-are-introverts-domain-driven-design-can-help-2bn1</link>
      <guid>https://dev.to/danielrusnok/developers-are-introverts-domain-driven-design-can-help-2bn1</guid>
      <description>&lt;h3&gt;
  
  
  Developers&amp;nbsp;are&amp;nbsp;introverts.&amp;nbsp;Domain-driven&amp;nbsp;design&amp;nbsp;can&amp;nbsp;help&amp;nbsp;to&amp;nbsp;change&amp;nbsp;it.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  As&amp;nbsp;developers,&amp;nbsp;we&amp;nbsp;are&amp;nbsp;writing&amp;nbsp;code&amp;nbsp;to&amp;nbsp;build&amp;nbsp;software,&amp;nbsp;but&amp;nbsp;we&amp;nbsp;can’t&amp;nbsp;make&amp;nbsp;good&amp;nbsp;software&amp;nbsp;without&amp;nbsp;talking&amp;nbsp;to&amp;nbsp;clients.
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Developers&amp;nbsp;aren’t&amp;nbsp;chatty.
&lt;/h4&gt;

&lt;p&gt;Most&amp;nbsp;of&amp;nbsp;the&amp;nbsp;time&amp;nbsp;software&amp;nbsp;developers&amp;nbsp;are&amp;nbsp;struggling&amp;nbsp;in&amp;nbsp;communication&amp;nbsp;with&amp;nbsp;clients&amp;nbsp;and&amp;nbsp;also&amp;nbsp;with&amp;nbsp;the&amp;nbsp;outer&amp;nbsp;world.&amp;nbsp;Many&amp;nbsp;of&amp;nbsp;us&amp;nbsp;choose&amp;nbsp;this&amp;nbsp;career&amp;nbsp;to&amp;nbsp;avoid&amp;nbsp;meeting&amp;nbsp;with&amp;nbsp;people,&amp;nbsp;and&amp;nbsp;that&amp;nbsp;is&amp;nbsp;why&amp;nbsp;companies&amp;nbsp;hire&amp;nbsp;managers&amp;nbsp;who&amp;nbsp;are&amp;nbsp;doing&amp;nbsp;instead&amp;nbsp;of&amp;nbsp;us.&lt;/p&gt;

&lt;p&gt;If&amp;nbsp;you&amp;nbsp;are&amp;nbsp;one&amp;nbsp;of&amp;nbsp;these&amp;nbsp;introverts,&amp;nbsp;then&amp;nbsp;I&amp;nbsp;have&amp;nbsp;bad&amp;nbsp;news&amp;nbsp;for&amp;nbsp;you.&amp;nbsp;You&amp;nbsp;may&amp;nbsp;end&amp;nbsp;up&amp;nbsp;stuck&amp;nbsp;with&amp;nbsp;buggy&amp;nbsp;code&amp;nbsp;forever.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03jxxwn61ndvz8l0bngg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03jxxwn61ndvz8l0bngg.jpeg" alt="Developers are introverts. Domain-driven design can help. cover image" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;
Created&amp;nbsp;by&amp;nbsp;rawpixel.com&amp;nbsp;—&amp;nbsp;[www.freepik.com](http://www.freepik.com)



&lt;p&gt;If&amp;nbsp;you&amp;nbsp;are&amp;nbsp;going&amp;nbsp;to&amp;nbsp;build&amp;nbsp;software&amp;nbsp;for&amp;nbsp;business,&amp;nbsp;you&amp;nbsp;need&amp;nbsp;to&amp;nbsp;understand&amp;nbsp;every&amp;nbsp;detail&amp;nbsp;because&amp;nbsp;you&amp;nbsp;are&amp;nbsp;translating&amp;nbsp;business&amp;nbsp;processes&amp;nbsp;into&amp;nbsp;code.&amp;nbsp;And&amp;nbsp;you&amp;nbsp;don’t&amp;nbsp;want&amp;nbsp;to&amp;nbsp;lose&amp;nbsp;important&amp;nbsp;information&amp;nbsp;in&amp;nbsp;translation.&lt;/p&gt;

&lt;h4&gt;
  
  
  Domain-driven&amp;nbsp;design&amp;nbsp;intervention
&lt;/h4&gt;

&lt;p&gt;One&amp;nbsp;of&amp;nbsp;the&amp;nbsp;critical&amp;nbsp;pieces&amp;nbsp;of&amp;nbsp;Domain-driven&amp;nbsp;design(DDD)&amp;nbsp;is&amp;nbsp;to&amp;nbsp;encourage&amp;nbsp;developers&amp;nbsp;for&amp;nbsp;better&amp;nbsp;interaction&amp;nbsp;with&amp;nbsp;domain&amp;nbsp;experts.&amp;nbsp;The&amp;nbsp;&lt;strong&gt;domain&amp;nbsp;expert&lt;/strong&gt;&amp;nbsp;is&amp;nbsp;one&amp;nbsp;who&amp;nbsp;knows&amp;nbsp;the&amp;nbsp;client’s&amp;nbsp;business&amp;nbsp;needs&amp;nbsp;and&amp;nbsp;processes.&lt;/p&gt;

&lt;p&gt;Developers&amp;nbsp;need&amp;nbsp;to&amp;nbsp;understand&amp;nbsp;their&amp;nbsp;clients&amp;nbsp;more&amp;nbsp;than&amp;nbsp;their&amp;nbsp;partners.&amp;nbsp;If&amp;nbsp;you&amp;nbsp;are&amp;nbsp;a&amp;nbsp;man,&amp;nbsp;you&amp;nbsp;probably&amp;nbsp;are&amp;nbsp;more&amp;nbsp;successful&amp;nbsp;in&amp;nbsp;understanding&amp;nbsp;your&amp;nbsp;client&amp;nbsp;than&amp;nbsp;your&amp;nbsp;precious&amp;nbsp;one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fns4e2lpouj5on4zeb30m.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fns4e2lpouj5on4zeb30m.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Photo&amp;nbsp;by&amp;nbsp;yanalya&amp;nbsp;—&amp;nbsp;[www.freepik.com](http://www.freepik.com)



&lt;p&gt;You&amp;nbsp;may&amp;nbsp;say&amp;nbsp;you&amp;nbsp;already&amp;nbsp;talk&amp;nbsp;to&amp;nbsp;them,&amp;nbsp;but&amp;nbsp;maybe&amp;nbsp;in&amp;nbsp;a&amp;nbsp;different&amp;nbsp;language.&amp;nbsp;Maybe&amp;nbsp;you&amp;nbsp;are&amp;nbsp;using&amp;nbsp;your&amp;nbsp;terms&amp;nbsp;like&amp;nbsp;tables&amp;nbsp;in&amp;nbsp;the&amp;nbsp;database&amp;nbsp;rather&amp;nbsp;than&amp;nbsp;domain&amp;nbsp;concepts.&lt;/p&gt;

&lt;p&gt;DDD&amp;nbsp;guides&amp;nbsp;us&amp;nbsp;to&amp;nbsp;find&amp;nbsp;a&amp;nbsp;common&amp;nbsp;language&amp;nbsp;with&amp;nbsp;Domain&amp;nbsp;Experts&amp;nbsp;and&amp;nbsp;understand&amp;nbsp;each&amp;nbsp;other&amp;nbsp;at&amp;nbsp;a&amp;nbsp;much&amp;nbsp;higher&amp;nbsp;level.&lt;/p&gt;

&lt;h4&gt;
  
  
  Ubiquitous&amp;nbsp;language
&lt;/h4&gt;

&lt;p&gt;Ubiquitous.&amp;nbsp;Terrible&amp;nbsp;word.&amp;nbsp;If&amp;nbsp;you&amp;nbsp;don’t&amp;nbsp;know&amp;nbsp;how&amp;nbsp;to&amp;nbsp;pronounce&amp;nbsp;it,&amp;nbsp;this&amp;nbsp;might&amp;nbsp;help&amp;nbsp;[yo͞oˈbikwətəs].&amp;nbsp;For&amp;nbsp;me,&amp;nbsp;it&amp;nbsp;doesn’t.&amp;nbsp;I&amp;nbsp;had&amp;nbsp;to&amp;nbsp;use&amp;nbsp;Google&amp;nbsp;Translator&amp;nbsp;for&amp;nbsp;listening&amp;nbsp;to&amp;nbsp;the&amp;nbsp;pronunciation.&amp;nbsp;It&amp;nbsp;doesn’t&amp;nbsp;help&amp;nbsp;either.&lt;/p&gt;

&lt;p&gt;A&amp;nbsp;simple&amp;nbsp;definition&amp;nbsp;of&amp;nbsp;a&amp;nbsp;ubiquitous&amp;nbsp;language&amp;nbsp;is&amp;nbsp;to&amp;nbsp;come&amp;nbsp;up&amp;nbsp;with&amp;nbsp;terms&amp;nbsp;that&amp;nbsp;will&amp;nbsp;be&amp;nbsp;commonly&amp;nbsp;used&amp;nbsp;when&amp;nbsp;discussing&amp;nbsp;a&amp;nbsp;particular&amp;nbsp;subdomain.&amp;nbsp;What&amp;nbsp;subdomain&amp;nbsp;is,&amp;nbsp;will&amp;nbsp;be&amp;nbsp;introduced&amp;nbsp;in&amp;nbsp;the&amp;nbsp;next&amp;nbsp;paragraph.&amp;nbsp;Hold&amp;nbsp;tight.&lt;/p&gt;

&lt;p&gt;There&amp;nbsp;will&amp;nbsp;most&amp;nbsp;likely&amp;nbsp;be&amp;nbsp;terms&amp;nbsp;that&amp;nbsp;come&amp;nbsp;from&amp;nbsp;the&amp;nbsp;business&amp;nbsp;space,&amp;nbsp;not&amp;nbsp;the&amp;nbsp;software&amp;nbsp;world.&amp;nbsp;But&amp;nbsp;those&amp;nbsp;terms&amp;nbsp;have&amp;nbsp;to&amp;nbsp;be&amp;nbsp;agreed&amp;nbsp;by&amp;nbsp;both&amp;nbsp;sides,&amp;nbsp;domain&amp;nbsp;expert&amp;nbsp;and&amp;nbsp;developer.&amp;nbsp;Make&amp;nbsp;sure&amp;nbsp;there&amp;nbsp;is&amp;nbsp;no&amp;nbsp;confusion&amp;nbsp;or&amp;nbsp;misunderstanding&amp;nbsp;created&amp;nbsp;by&amp;nbsp;the&amp;nbsp;terminology&amp;nbsp;used&amp;nbsp;by&amp;nbsp;various&amp;nbsp;members&amp;nbsp;of&amp;nbsp;the&amp;nbsp;team.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhs78i7jpppxar8yi4or1.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhs78i7jpppxar8yi4or1.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Photo&amp;nbsp;by&amp;nbsp;pressfoto&amp;nbsp;—&amp;nbsp;[www.freepik.co](http://www.freepik.com)m



&lt;h4&gt;
  
  
  Domain&amp;nbsp;and&amp;nbsp;subdomains
&lt;/h4&gt;

&lt;p&gt;The&amp;nbsp;core&amp;nbsp;domain&amp;nbsp;is&amp;nbsp;a&amp;nbsp;field&amp;nbsp;of&amp;nbsp;study&amp;nbsp;that&amp;nbsp;defines&amp;nbsp;a&amp;nbsp;set&amp;nbsp;of&amp;nbsp;common&amp;nbsp;requirements,&amp;nbsp;terminology,&amp;nbsp;and&amp;nbsp;functionality&amp;nbsp;for&amp;nbsp;any&amp;nbsp;software&amp;nbsp;program.&amp;nbsp;DDD&amp;nbsp;teaches&amp;nbsp;us&amp;nbsp;how&amp;nbsp;to&amp;nbsp;divide&amp;nbsp;the&amp;nbsp;core&amp;nbsp;domain&amp;nbsp;into&amp;nbsp;smaller&amp;nbsp;subdomains.&lt;/p&gt;

&lt;p&gt;Imagine&amp;nbsp;a&amp;nbsp;company.&amp;nbsp;It&amp;nbsp;can&amp;nbsp;be&amp;nbsp;divided&amp;nbsp;into&amp;nbsp;smaller&amp;nbsp;pieces,&amp;nbsp;departments,&amp;nbsp;for&amp;nbsp;example.&amp;nbsp;With&amp;nbsp;subdomains,&amp;nbsp;the&amp;nbsp;logic&amp;nbsp;stays&amp;nbsp;the&amp;nbsp;same.&amp;nbsp;They&amp;nbsp;are&amp;nbsp;filled&amp;nbsp;with&amp;nbsp;their&amp;nbsp;complexity,&amp;nbsp;terminology,&amp;nbsp;tasks,&amp;nbsp;and&amp;nbsp;challenges.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom84ux83e60vdboyb72a.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom84ux83e60vdboyb72a.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Image&amp;nbsp;by&amp;nbsp;Starline&amp;nbsp;—&amp;nbsp;[www.freepik.com](http://www.freepik.com)



&lt;p&gt;Many&amp;nbsp;applications&amp;nbsp;just&amp;nbsp;try&amp;nbsp;to&amp;nbsp;do&amp;nbsp;many&amp;nbsp;things&amp;nbsp;at&amp;nbsp;once&amp;nbsp;and&amp;nbsp;introducing&amp;nbsp;new&amp;nbsp;features&amp;nbsp;getting&amp;nbsp;more&amp;nbsp;difficult.&amp;nbsp;With&amp;nbsp;DDD,&amp;nbsp;you&amp;nbsp;will&amp;nbsp;&lt;strong&gt;divide&amp;nbsp;and&amp;nbsp;conquer&lt;/strong&gt;.&amp;nbsp;By&amp;nbsp;tearing&amp;nbsp;software&amp;nbsp;to&amp;nbsp;separated&amp;nbsp;subdomains,&amp;nbsp;we&amp;nbsp;can&amp;nbsp;achieve&amp;nbsp;dividing&amp;nbsp;problems&amp;nbsp;that&amp;nbsp;are&amp;nbsp;much&amp;nbsp;easier&amp;nbsp;to&amp;nbsp;solve.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;principle&amp;nbsp;of&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/Separation_of_concerns" rel="noopener noreferrer"&gt;Separation&amp;nbsp;of&amp;nbsp;Concerns&lt;/a&gt;(SoC)&amp;nbsp;not&amp;nbsp;only&amp;nbsp;plays&amp;nbsp;a&amp;nbsp;critical&amp;nbsp;role&amp;nbsp;in&amp;nbsp;identifying&amp;nbsp;the&amp;nbsp;subdomains&amp;nbsp;but&amp;nbsp;within&amp;nbsp;each&amp;nbsp;subdomain,&amp;nbsp;we&amp;nbsp;use&amp;nbsp;it&amp;nbsp;as&amp;nbsp;well.&lt;/p&gt;

&lt;p&gt;Many&amp;nbsp;applications&amp;nbsp;spread&amp;nbsp;domain&amp;nbsp;logic&amp;nbsp;across&amp;nbsp;the&amp;nbsp;entire&amp;nbsp;project.&amp;nbsp;Across&amp;nbsp;the&amp;nbsp;persistence&amp;nbsp;layer,&amp;nbsp;across&amp;nbsp;the&amp;nbsp;user&amp;nbsp;interface.&amp;nbsp;Such&amp;nbsp;spreading&amp;nbsp;makes&amp;nbsp;it&amp;nbsp;much&amp;nbsp;more&amp;nbsp;difficult&amp;nbsp;to&amp;nbsp;keep&amp;nbsp;all&amp;nbsp;of&amp;nbsp;the&amp;nbsp;business&amp;nbsp;logic&amp;nbsp;consistent.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you want to keep going on the meta-skill side of building software — I'm publishing short, free lessons in &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt;, a tiny email series you can join in one click.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;DDD&amp;nbsp;applies&amp;nbsp;an&amp;nbsp;SoC&amp;nbsp;to&amp;nbsp;help&amp;nbsp;direct&amp;nbsp;you&amp;nbsp;by&amp;nbsp;focusing&amp;nbsp;on&amp;nbsp;the&amp;nbsp;domain.&amp;nbsp;Not&amp;nbsp;on&amp;nbsp;details&amp;nbsp;like&amp;nbsp;how&amp;nbsp;to&amp;nbsp;persist&amp;nbsp;data&amp;nbsp;into&amp;nbsp;the&amp;nbsp;database&amp;nbsp;or&amp;nbsp;how&amp;nbsp;to&amp;nbsp;connect&amp;nbsp;to&amp;nbsp;external&amp;nbsp;API.&amp;nbsp;Those&amp;nbsp;become&amp;nbsp;implementation&amp;nbsp;details&amp;nbsp;that&amp;nbsp;you&amp;nbsp;can&amp;nbsp;ve&amp;nbsp;worry&amp;nbsp;about&amp;nbsp;later.&lt;/p&gt;

&lt;h4&gt;
  
  
  Benefits
&lt;/h4&gt;

&lt;p&gt;The&amp;nbsp;first&amp;nbsp;main&amp;nbsp;benefit&amp;nbsp;is&amp;nbsp;flexibility.&amp;nbsp;Because&amp;nbsp;DDD&amp;nbsp;guides&amp;nbsp;us&amp;nbsp;to&amp;nbsp;focus&amp;nbsp;on&amp;nbsp;small,&amp;nbsp;individual&amp;nbsp;nearly&amp;nbsp;autonomous&amp;nbsp;pieces&amp;nbsp;of&amp;nbsp;our&amp;nbsp;domain,&amp;nbsp;our&amp;nbsp;process&amp;nbsp;and&amp;nbsp;the&amp;nbsp;resulting&amp;nbsp;software&amp;nbsp;is&amp;nbsp;more&amp;nbsp;flexible.&amp;nbsp;We&amp;nbsp;can&amp;nbsp;easily&amp;nbsp;move&amp;nbsp;or&amp;nbsp;modify&amp;nbsp;the&amp;nbsp;small&amp;nbsp;parts&amp;nbsp;with&amp;nbsp;little&amp;nbsp;or&amp;nbsp;no&amp;nbsp;side&amp;nbsp;effects.&amp;nbsp;The&amp;nbsp;project&amp;nbsp;is&amp;nbsp;stable&amp;nbsp;and&amp;nbsp;flexible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0npai0e5yf748fwgtylj.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0npai0e5yf748fwgtylj.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Image&amp;nbsp;by&amp;nbsp;master1305&amp;nbsp;—&amp;nbsp;[www.freepik.com](http://www.freepik.com)



&lt;p&gt;Another&amp;nbsp;benefit&amp;nbsp;is&amp;nbsp;that&amp;nbsp;code&amp;nbsp;is&amp;nbsp;closely&amp;nbsp;mapped&amp;nbsp;to&amp;nbsp;the&amp;nbsp;customer’s&amp;nbsp;understanding&amp;nbsp;of&amp;nbsp;the&amp;nbsp;problem.&amp;nbsp;DDD&amp;nbsp;gives&amp;nbsp;you&amp;nbsp;a&amp;nbsp;clear&amp;nbsp;and&amp;nbsp;manageable&amp;nbsp;path&amp;nbsp;through&amp;nbsp;a&amp;nbsp;very&amp;nbsp;complex&amp;nbsp;problem.&amp;nbsp;When&amp;nbsp;you&amp;nbsp;look&amp;nbsp;at&amp;nbsp;the&amp;nbsp;code,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;see&amp;nbsp;that&amp;nbsp;it’s&amp;nbsp;generally&amp;nbsp;well&amp;nbsp;organized&amp;nbsp;and&amp;nbsp;business&amp;nbsp;logic&amp;nbsp;all&amp;nbsp;lives&amp;nbsp;in&amp;nbsp;one&amp;nbsp;place.&lt;/p&gt;

&lt;p&gt;DDD&amp;nbsp;is&amp;nbsp;not&amp;nbsp;a&amp;nbsp;path&amp;nbsp;for&amp;nbsp;every&amp;nbsp;project,&amp;nbsp;but&amp;nbsp;there&amp;nbsp;are&amp;nbsp;many&amp;nbsp;principles&amp;nbsp;and&amp;nbsp;patterns&amp;nbsp;from&amp;nbsp;which&amp;nbsp;you&amp;nbsp;can&amp;nbsp;benefit.&amp;nbsp;Its&amp;nbsp;real&amp;nbsp;benefit&amp;nbsp;is&amp;nbsp;for&amp;nbsp;complex&amp;nbsp;domains.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;describe&amp;nbsp;domain&amp;nbsp;as&amp;nbsp;complex&amp;nbsp;when&amp;nbsp;it&amp;nbsp;gets&amp;nbsp;challenging&amp;nbsp;to&amp;nbsp;domain&amp;nbsp;experts&amp;nbsp;to&amp;nbsp;express&amp;nbsp;their&amp;nbsp;needs.&amp;nbsp;You&amp;nbsp;know.&amp;nbsp;Like&amp;nbsp;women.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcb2osfzitschf4g69a3p.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcb2osfzitschf4g69a3p.jpeg" alt="Illustration" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
Image&amp;nbsp;by&amp;nbsp;Jcomp&amp;nbsp;—&amp;nbsp;[www.freepik.com](http://www.freepik.com)



&lt;p&gt;DDD&amp;nbsp;provides&amp;nbsp;principles&amp;nbsp;and&amp;nbsp;patterns&amp;nbsp;that&amp;nbsp;help&amp;nbsp;us&amp;nbsp;tackle&amp;nbsp;difficult&amp;nbsp;software&amp;nbsp;problems&amp;nbsp;and&amp;nbsp;even&amp;nbsp;business&amp;nbsp;problems.&amp;nbsp;These&amp;nbsp;patterns&amp;nbsp;are&amp;nbsp;historically&amp;nbsp;successful&amp;nbsp;in&amp;nbsp;solving&amp;nbsp;very&amp;nbsp;complex&amp;nbsp;problems.&lt;/p&gt;

&lt;p&gt;The&amp;nbsp;ultimate&amp;nbsp;goal&amp;nbsp;is&amp;nbsp;not&amp;nbsp;to&amp;nbsp;write&amp;nbsp;code,&amp;nbsp;not&amp;nbsp;even&amp;nbsp;building&amp;nbsp;software,&amp;nbsp;but&amp;nbsp;to&amp;nbsp;solve&amp;nbsp;problems.&amp;nbsp;Nobody&amp;nbsp;wants&amp;nbsp;your&amp;nbsp;software;&amp;nbsp;they&amp;nbsp;want&amp;nbsp;what&amp;nbsp;it&amp;nbsp;can&amp;nbsp;give&amp;nbsp;them.&lt;/p&gt;

&lt;h4&gt;
  
  
  Disadvantages
&lt;/h4&gt;

&lt;p&gt;You&amp;nbsp;will&amp;nbsp;spend&amp;nbsp;a&amp;nbsp;lot&amp;nbsp;of&amp;nbsp;time&amp;nbsp;talking&amp;nbsp;about&amp;nbsp;the&amp;nbsp;domain&amp;nbsp;and&amp;nbsp;the&amp;nbsp;problems&amp;nbsp;that&amp;nbsp;need&amp;nbsp;to&amp;nbsp;be&amp;nbsp;solved.&amp;nbsp;And&amp;nbsp;you&amp;nbsp;will&amp;nbsp;spend&amp;nbsp;plenty&amp;nbsp;of&amp;nbsp;time&amp;nbsp;sorting&amp;nbsp;out&amp;nbsp;what&amp;nbsp;is&amp;nbsp;truly&amp;nbsp;domain&amp;nbsp;logic&amp;nbsp;and&amp;nbsp;what&amp;nbsp;is&amp;nbsp;just&amp;nbsp;infrastructure.&lt;/p&gt;

&lt;p&gt;DDD&amp;nbsp;is&amp;nbsp;not&amp;nbsp;always&amp;nbsp;the&amp;nbsp;right&amp;nbsp;path&amp;nbsp;for&amp;nbsp;your&amp;nbsp;applications.&amp;nbsp;And&amp;nbsp;it’s&amp;nbsp;helpful&amp;nbsp;to&amp;nbsp;keep&amp;nbsp;in&amp;nbsp;mind&amp;nbsp;that&amp;nbsp;exist&amp;nbsp;some&amp;nbsp;scenarios&amp;nbsp;where&amp;nbsp;DDD&amp;nbsp;is&amp;nbsp;an&amp;nbsp;overkill.&amp;nbsp;If&amp;nbsp;you&amp;nbsp;have&amp;nbsp;an&amp;nbsp;application&amp;nbsp;or&amp;nbsp;subdomain&amp;nbsp;that&amp;nbsp;is&amp;nbsp;just&amp;nbsp;a&amp;nbsp;data-driven&amp;nbsp;app&amp;nbsp;and&amp;nbsp;doesn’t&amp;nbsp;do&amp;nbsp;much&amp;nbsp;more&amp;nbsp;than&amp;nbsp;a&amp;nbsp;lot&amp;nbsp;of&amp;nbsp;crud&amp;nbsp;logic,&amp;nbsp;there&amp;nbsp;is&amp;nbsp;no&amp;nbsp;needs&amp;nbsp;to&amp;nbsp;use&amp;nbsp;DDD.&amp;nbsp;It&amp;nbsp;would&amp;nbsp;be&amp;nbsp;a&amp;nbsp;waste&amp;nbsp;of&amp;nbsp;time&amp;nbsp;and&amp;nbsp;effort.&lt;/p&gt;

&lt;p&gt;Technical&amp;nbsp;complexity&amp;nbsp;doesn’t&amp;nbsp;mean&amp;nbsp;business&amp;nbsp;domain&amp;nbsp;complexity.&amp;nbsp;DDD&amp;nbsp;may&amp;nbsp;not&amp;nbsp;just&amp;nbsp;be&amp;nbsp;a&amp;nbsp;path&amp;nbsp;because&amp;nbsp;your&amp;nbsp;project&amp;nbsp;is&amp;nbsp;technically&amp;nbsp;challenging.&lt;/p&gt;

&lt;h4&gt;
  
  
  The&amp;nbsp;Book
&lt;/h4&gt;

&lt;p&gt;DDD&amp;nbsp;was&amp;nbsp;presented&amp;nbsp;in&amp;nbsp;2003&amp;nbsp;by&amp;nbsp;&lt;a href="https://twitter.com/ericevans0" rel="noopener noreferrer"&gt;Eric&amp;nbsp;Evans&lt;/a&gt;&amp;nbsp;in&amp;nbsp;a&amp;nbsp;book&amp;nbsp;titled&amp;nbsp;Domain-Driven&amp;nbsp;Design.&amp;nbsp;The&amp;nbsp;book&amp;nbsp;was&amp;nbsp;written&amp;nbsp;for&amp;nbsp;one&amp;nbsp;major&amp;nbsp;reason,&amp;nbsp;and&amp;nbsp;that&amp;nbsp;is&amp;nbsp;for&amp;nbsp;solving&amp;nbsp;complex&amp;nbsp;problems.&amp;nbsp;That’s&amp;nbsp;why&amp;nbsp;a&amp;nbsp;subtitle&amp;nbsp;of&amp;nbsp;Evans's&amp;nbsp;book&amp;nbsp;is&amp;nbsp;“Tackling&amp;nbsp;Complexity&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Heart&amp;nbsp;of&amp;nbsp;Software”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzyh8qdbfqn471bmeaanp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzyh8qdbfqn471bmeaanp.jpeg" alt="Illustration" width="377" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Summary
&lt;/h4&gt;

&lt;p&gt;Domain-Driven&amp;nbsp;Design&amp;nbsp;helps&amp;nbsp;man&amp;nbsp;to&amp;nbsp;understand&amp;nbsp;women&amp;nbsp;fully.&amp;nbsp;No.&amp;nbsp;I&amp;nbsp;am&amp;nbsp;joking.&amp;nbsp;One&amp;nbsp;book&amp;nbsp;could&amp;nbsp;not&amp;nbsp;be&amp;nbsp;enough.&lt;/p&gt;

&lt;p&gt;What&amp;nbsp;I&amp;nbsp;want&amp;nbsp;you&amp;nbsp;to&amp;nbsp;take&amp;nbsp;with&amp;nbsp;you&amp;nbsp;is&amp;nbsp;this.&amp;nbsp;Be&amp;nbsp;more&amp;nbsp;chatty&amp;nbsp;with&amp;nbsp;your&amp;nbsp;clients&amp;nbsp;and&amp;nbsp;always&amp;nbsp;try&amp;nbsp;to&amp;nbsp;understand&amp;nbsp;their&amp;nbsp;needs.&amp;nbsp;If&amp;nbsp;you&amp;nbsp;don’t&amp;nbsp;understand&amp;nbsp;each&amp;nbsp;other,&amp;nbsp;define&amp;nbsp;your&amp;nbsp;ubiquitous&amp;nbsp;language.&lt;/p&gt;

&lt;p&gt;Divide&amp;nbsp;and&amp;nbsp;conquer&amp;nbsp;your&amp;nbsp;business&amp;nbsp;logic.&amp;nbsp;Separation&amp;nbsp;of&amp;nbsp;Concerns,&amp;nbsp;loose&amp;nbsp;coupling,&amp;nbsp;subdomains.&amp;nbsp;So&amp;nbsp;many&amp;nbsp;titles&amp;nbsp;for&amp;nbsp;one&amp;nbsp;thought.&amp;nbsp;Divide&amp;nbsp;your&amp;nbsp;code&amp;nbsp;into&amp;nbsp;smaller&amp;nbsp;pieces&amp;nbsp;on&amp;nbsp;every&amp;nbsp;level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Daniel&amp;nbsp;Rusnok's&amp;nbsp;Newsletter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;Every&amp;nbsp;month&amp;nbsp;I&amp;nbsp;will&amp;nbsp;send&amp;nbsp;you&amp;nbsp;an&amp;nbsp;email&amp;nbsp;about&amp;nbsp;with&amp;nbsp;list&amp;nbsp;of&amp;nbsp;my&amp;nbsp;newest&amp;nbsp;articles.&amp;nbsp;It&amp;nbsp;will&amp;nbsp;be&amp;nbsp;ofcourse&amp;nbsp;the&amp;nbsp;friendly&amp;nbsp;links…&lt;/a&gt;&lt;/em&gt;&lt;a href="https://www.danielrusnok.com/daniel-rusnoks-newsletter" rel="noopener noreferrer"&gt;www.danielrusnok.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/danielrusnok" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tm54rf5555ym89o2ne4.png" alt="Illustration" width="200" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this resonated, you might also like &lt;a href="https://drippery.app/subscribe/6e302973-cf5f-47ff-8803-22122ac3bd9d" rel="noopener noreferrer"&gt;The Claude Code Memory Starter&lt;/a&gt; — a short free email series, one bite-sized lesson at a time.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;nbsp;Related&amp;nbsp;Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/what-is-anemic-domain-model-and-why-it-can-be-harmful-2677b1b0a79a%5D%C2%A0%E2%80%94%C2%A0_What%C2%A0is%C2%A0Anemic%C2%A0Domain%C2%A0Model%C2%A0and%C2%A0why%C2%A0it%C2%A0can%C2%A0be%C2%A0harmful?_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/what-is-anemic-domain-model-and-why-it-can-be-harmful-2677b1b0a79a]&amp;nbsp;—&amp;nbsp;_What&amp;nbsp;is&amp;nbsp;Anemic&amp;nbsp;Domain&amp;nbsp;Model&amp;nbsp;and&amp;nbsp;why&amp;nbsp;it&amp;nbsp;can&amp;nbsp;be&amp;nbsp;harmful?_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/3-domain-centric-architectures-every-software-developer-should-know-a15727ada79f%5D%C2%A0%E2%80%94%C2%A0_3%C2%A0Domain-Centric%C2%A0Architectures%C2%A0Every%C2%A0Software%C2%A0Developer%C2%A0Should%C2%A0Know_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/3-domain-centric-architectures-every-software-developer-should-know-a15727ada79f]&amp;nbsp;—&amp;nbsp;_3&amp;nbsp;Domain-Centric&amp;nbsp;Architectures&amp;nbsp;Every&amp;nbsp;Software&amp;nbsp;Developer&amp;nbsp;Should&amp;nbsp;Know_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/3-cqrs-architectures-that-every-software-architect-should-know-a7f69aae8b6c%5D%C2%A0%E2%80%94%C2%A0_3%C2%A0CQRS%C2%A0Architectures%C2%A0that%C2%A0Every%C2%A0Software%C2%A0Architect%C2%A0Should%C2%A0Know_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/3-cqrs-architectures-that-every-software-architect-should-know-a7f69aae8b6c]&amp;nbsp;—&amp;nbsp;_3&amp;nbsp;CQRS&amp;nbsp;Architectures&amp;nbsp;that&amp;nbsp;Every&amp;nbsp;Software&amp;nbsp;Architect&amp;nbsp;Should&amp;nbsp;Know_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://ai.plainenglish.io/domain-driven-design-is-the-architecture-ai-agents-were-waiting-for-4742509a44db%5D%C2%A0%E2%80%94%C2%A0_Domain-Driven%C2%A0Design%C2%A0Is%C2%A0the%C2%A0Architecture%C2%A0AI%C2%A0Agents%C2%A0Were%C2%A0Waiting%C2%A0For_" rel="noopener noreferrer"&gt;https://ai.plainenglish.io/domain-driven-design-is-the-architecture-ai-agents-were-waiting-for-4742509a44db]&amp;nbsp;—&amp;nbsp;_Domain-Driven&amp;nbsp;Design&amp;nbsp;Is&amp;nbsp;the&amp;nbsp;Architecture&amp;nbsp;AI&amp;nbsp;Agents&amp;nbsp;Were&amp;nbsp;Waiting&amp;nbsp;For_&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  [LINK&amp;nbsp;PLACEHOLDER&amp;nbsp;-&amp;nbsp;&lt;a href="https://medium.com/@danielrusnok/3-things-that-change-my-way-of-thinking-in-2020-c87d8cf137bd%5D%C2%A0%E2%80%94%C2%A0_3%C2%A0Things%C2%A0that%C2%A0Change%C2%A0my%C2%A0Way%C2%A0of%C2%A0Thinking%C2%A0in%C2%A02020_" rel="noopener noreferrer"&gt;https://medium.com/@danielrusnok/3-things-that-change-my-way-of-thinking-in-2020-c87d8cf137bd]&amp;nbsp;—&amp;nbsp;_3&amp;nbsp;Things&amp;nbsp;that&amp;nbsp;Change&amp;nbsp;my&amp;nbsp;Way&amp;nbsp;of&amp;nbsp;Thinking&amp;nbsp;in&amp;nbsp;2020_&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ddd</category>
      <category>softwareengineering</category>
      <category>architecture</category>
      <category>csharp</category>
    </item>
  </channel>
</rss>
