ElixirConf 2023 - Tyler Young - Rebuilding the Plane While It’s Still Flying

Rebuilding a legacy system while minimizing downtime and data loss, Tyler Young shares practical lessons learned from his experience in adding new features to mature applications.

Key takeaways
  • Sometimes a feature needs to be added to a legacy system, and this can be challenging.
  • It’s better to understand why a rule exists before ignoring it.
  • When introducing a new feature, be prepared for issues and have a plan to address them.
  • In rebuilding the plane, keep the IDs the same to maintain data consistency.
  • It’s okay to have a little downtime during the process.
  • Use a map to provide context and make it easier to understand.
  • It’s not ideal to have multiple layers, but it can be lived with.
  • The scheme of migrations is important.
  • Indicator fields are necessary to understand the data migration process.
  • When migrating data, it’s good to have a way to reference old and new data structure.
  • It’s not hard to undo a migration, but it has to be done carefully.
  • Communities of Practice are important for sharing knowledge.
  • Lean on safe ectomigrations and excellent migrations to make the process easier.
  • The worst case is that a migration runs slowly and has errors.
  • Downtime can be a band-aid over not being able to make a migration atomic.
  • It’s good to have a way to add more context to a map.
  • Working on a feature while trying to fix bugs is challenging.
  • Don’t reintegrate old data structure into the new one.
  • It’s better to make small changes and test them than to make a big change and hope it works.
  • It’s good to have a plan for what to do when something goes wrong.
  • Communities of Practice are important for learning from others.
  • Keep the IDs the same to maintain data consistency.
  • It’s not hard to undo a migration, but it has to be done carefully.
  • Downtime can be a band-aid over not being able to make a migration atomic.
  • Don’t reintegrate old data structure into the new one.
  • It’s better to make small changes and test them than to make a big change and hope it works.