<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="21725" data-post-id="21725">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="slashdotdash" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/slashdotdash/120/3090_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  slashdotdash
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a href="http://files.movereem.nl/2017saner-eventsourcing.pdf" rel="noopener nofollow ugc">The Dark Side of Event Sourcing: Managing Data Conversion</a> is a good research paper covering the main strategies for versioning events.</p>
<ul>
<li>Multiple versions</li>
<li>Upcasting</li>
<li>Lazy transformation</li>
<li>In place transformation</li>
<li>Copy and transformation</li>
</ul>
<p>I wrote an Elixir library (<a href="https://github.com/slashdotdash/eventstore-migrator" rel="noopener nofollow ugc">eventstore-migrator</a>) that implements the copy and transform strategy for my own event store. It copies and mutates events into a new PostgreSQL database. You can transform, remove, aggregate, and alter the serialization format of the events.</p>
<p>Here’s an example of removing an unwanted event.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">EventStore.Migrator.migrate(fn stream -&gt;
  Stream.reject(
    stream,
    fn (event_data) -&gt; event_data.event_type == "UnwantedEvent" end
  )
end)
</code></pre>
<p>There are other examples in the README, including: upgrade an event; aggregate multiple events into one event; alter event serialization format.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="21725" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ddd-cqrs-es-nosql-and-functional-programming/519/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-21725" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="21725"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #31"></div>
  </section>
</div>
    <div class="postbit" id="21823" data-post-id="21823">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AndyL" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AndyL/120/3659_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AndyL
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you <a class="mention" href="/u/slashdotdash" rel="nofollow">@slashdotdash</a> - this paper is wonderful.  <a class="mention" href="/u/overminddl1" rel="nofollow">@OvermindDL1</a> thanks also for your versioning / reformatting tip.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="21823" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ddd-cqrs-es-nosql-and-functional-programming/519/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-21823" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="21823"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #32"></div>
  </section>
</div>
    <div class="postbit" id="21836" data-post-id="21836">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mkunikow" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mkunikow/120/235_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mkunikow
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="onebox allowlistedgeneric" data-onebox-src="https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-1-richardson/">
  <header class="source">
      <img src="https://cdn.infoq.com/statics_s2_20260630130257/favicon.ico" class="site-icon" alt="" width="32" height="32">

      <a href="https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-1-richardson/" target="_blank" rel="noopener nofollow ugc">InfoQ</a>
  </header>

  <article class="onebox-body">
    <img width="100" height="100" src="https://res.infoq.com/articles/microservices-aggregates-events-cqrs-part-1-richardson/en/smallimage/logo-cqrs.jpg" class="thumbnail onebox-avatar" alt="">

<h3><a href="https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-1-richardson/" target="_blank" rel="noopener nofollow ugc">Developing Transactional Microservices Using Aggregates, Event Sourcing and...</a></h3>

  <p>Developing transactional business applications using the microservice architecture is challenging, because domain models, transactions and queries are resistant to functional decomposition. This article describes a way to develop microservices that...</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson/">
  <header class="source">
      <img src="https://cdn.infoq.com/statics_s1_20260630130228/favicon.ico" class="site-icon" alt="" width="32" height="32">

      <a href="https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson/" target="_blank" rel="noopener nofollow ugc">InfoQ</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:592/590;"><img src="https://res.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson/en/headerimage/GettyImages-470995728.jpg" class="thumbnail" alt="" width="592" height="590"></div>

<h3><a href="https://www.infoq.com/articles/microservices-aggregates-events-cqrs-part-2-richardson/" target="_blank" rel="noopener nofollow ugc">Developing Transactional Microservices Using Aggregates, Event Sourcing and...</a></h3>

  <p>This article concludes the description of a way to develop microservices using Domain Driven Design, Event Sourcing and Command Query Responsibility Segregation (CQRS). The practical considerations and benefits of this approach are compared with...</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="21836" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ddd-cqrs-es-nosql-and-functional-programming/519/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-21836" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="21836"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #33"></div>
  </section>
</div>
    <div class="postbit" id="21872" data-post-id="21872">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="slashdotdash" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/slashdotdash/120/3090_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  slashdotdash
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Greg Young is writing a self-publish eBook on the subject too. It’s free to read online or $12.99 USD to buy.</p>
<ul>
<li><a href="https://leanpub.com/esversioning" rel="noopener nofollow ugc">Versioning in an Event Sourced System</a></li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="21872" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ddd-cqrs-es-nosql-and-functional-programming/519/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-21872" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="21872"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #34"></div>
  </section>
</div>
    <div class="postbit" id="29641" data-post-id="29641">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="slashdotdash" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/slashdotdash/120/3090_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  slashdotdash
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a href="https://tech.zilverline.com/2017/04/07/elixir_event_sourcing" rel="noopener nofollow ugc">Event Sourcing in Elixir</a> by Derek Kraan.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="29641" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ddd-cqrs-es-nosql-and-functional-programming/519/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-29641" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="29641"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #35"></div>
  </section>
</div>
    <div class="postbit" id="41884" data-post-id="41884">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="slashdotdash" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/slashdotdash/120/3090_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  slashdotdash
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve created an “awesome list” of Elixir and CQRS/ES resources: <a href="https://github.com/slashdotdash/awesome-elixir-cqrs" rel="noopener nofollow ugc">Awesome Elixir and CQRS</a>.</p>
<p>The list is designed for <em>only</em> CQRS/ES resources that explicitly target Elixir/Erlang, as there’s an existing awesome collection of general <a href="https://github.com/heynickc/awesome-ddd" rel="noopener nofollow ugc">domain-driven design</a> content.</p>
<p>Contributions via pull request most welcome.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="41884" data-batch-url="/posts/batch_likers">
                        9
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ddd-cqrs-es-nosql-and-functional-programming/519/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-41884" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="41884"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #36"></div>
  </section>
</div>
    <div class="postbit" id="45641" data-post-id="45641">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="slashdotdash" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/slashdotdash/120/3090_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  slashdotdash
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>“<a href="https://www.lightbend.com/blog/reactive-microsystems-the-evolution-of-microservices-at-scale-free-oreilly-report-by-jonas-boner" rel="noopener nofollow ugc">Reactive Microsystems - The Evolution Of Microservices At Scale</a>” by Jonas Bonér. Published by O’Reilly, and it’s free to download and read.</p>
<p>It’s a succinct introduction to reactive microservices and event driven architecture (CQRS/ES). Well worth a read.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="45641" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ddd-cqrs-es-nosql-and-functional-programming/519/38">Post #37</a>
	                </div>
	            </div>
              <div id="likers-container-45641" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="45641"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #37"></div>
  </section>
</div>
    <div class="postbit" id="74784" data-post-id="74784">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mkunikow" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mkunikow/120/235_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mkunikow
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>DDD + distributed systems</p><div class="youtube-onebox lazy-video-container" data-video-id="8Y-XPlXOWoA" data-video-title="DDD Today - Modeling Uncertainty • Vaughn Vernon • GOTO 2017" data-video-start-time="" data-provider-name="youtube">
  <a href="https://www.youtube.com/watch?v=8Y-XPlXOWoA" target="_blank" class="video-thumbnail" rel="noopener nofollow ugc">
    <img class="youtube-thumbnail" src="https://img.youtube.com/vi/8Y-XPlXOWoA/maxresdefault.jpg" title="DDD Today - Modeling Uncertainty • Vaughn Vernon • GOTO 2017" width="690" height="388">
  </a>
</div>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="74784" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ddd-cqrs-es-nosql-and-functional-programming/519/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-74784" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="74784"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>