Enterprise App Modernization
Long-term modernization of a large enterprise application. This was a mix of brownfield and greenfield work at various points by our small team. A large document storage database holding relational data was replaced with a relational database, making for performant reporting and ensuring data integrity with full ACID compliance. The frontend was migrated from a loose 'admin site template' to a modern, modular component system on a newer stack. Database migrations were added to both the old document db and the newer relational database. This work has allowed our organization (and others using the tool) to keep over 8 years of data in place and evolving alongside the system and its customers. Along with architectural guidance and implementation, I mentored the team on software development practices like writing idempotent migrations and understanding the differences and risks between schema and data migrations. The cutover for the relational db migration was handled by a dedicated migration tool that ran in its own container. It used a large batching relational db migration to copy data out of the document store and into the new SQL database. We did a blue/green cutover for hosted instances, standing up new instances and switching over once they were ready. Before any production run we pre-ran the whole migration against real customer data in staging environments and wrote targeted tests to reconcile the migrated data against the source. We kept backups in case we needed to roll back.