How to Do a Full Rewrite
Completed a full rewrite of many components of the Kraken.com backend in about 4 years.<p>The new system is around 1.5M loc of Rust.  There was no serious alternative to rewriting, sometimes you find yourself in a corner and need to fix issues, and pay the price.<p>I wrote about it 3 years ago here <a href="https:&#x2F;&#x2F;blog.kraken.com&#x2F;product&#x2F;engineering&#x2F;oxidizing-kraken-improving-kraken-infrastructure-using-rust" rel="nofollow noreferrer">https:&#x2F;&#x2F;blog.kraken.com&#x2F;product&#x2F;engineering&#x2F;oxidizing-kraken...</a><p>Everything in that blog post still rings true and hindsight is that it were were right.  But it was a massive grind and required extreme dedication to get it done, for a variety of reasons that work was very taxing.<p>We also didn&#x27;t stop feature development and kept the two systems running concurrently (which explains why it took so long, also growing and training a new team 10x the size took time, so there are many factors).<p>I&#x27;m also against rewrites if I can help it, but reality is complex and sometimes we can&#x27;t help it.  Now however, since we removed the last pieces of legacy that were preventing larger DB schema changes (or required massive, unreasonable changes to the legacy systems), we&#x27;ve been shipping faster and easier than ever and caught-up on a lot of the accumulated backlog, including some of the more ambitious projects that were unthinkable in the legacy systems due to limitations.