Summary
Any software system that survives long enough will require some form of migration or evolution. When that system is responsible for the data layer the process becomes more challenging. Sriram Panyam has been involved in several projects that required migration of large volumes of data in high traffic environments. In this episode he shares some of the valuable lessons that he learned about how to make those projects successful.
Announcements
Hello and welcome to the Data Engineering Podcast, the show about modern data management
Data lakes are notoriously complex. For data engineers who battle to build and scale high quality data workflows on the data lake, Starburst is an end-to-end data lakehouse platform built on Trino, the query engine Apache Iceberg was designed for, with complete support for all table formats including Apache Iceberg, Hive, and Delta Lake. Trusted by teams of all sizes, including Comcast and Doordash. Want to see Starburst in action? Go to dataengineeringpodcast.com/starburst (https://www.dataengineeringpodcast.com/starburst) and get $500 in credits to try Starburst Galaxy today, the easiest and fastest way to get started using Trino.
This episode is supported by Code Comments, an original podcast from Red Hat. As someone who listens to the Data Engineering Podcast, you know that the road from tool selection to production readiness is anything but smooth or straight. In Code Comments, host Jamie Parker, Red Hatter and experienced engineer, shares the journey of technologists from across the industry and their hard-won lessons in implementing new technologies. I listened to the recent episode "Transforming Your Database" and appreciated the valuable advice on how to approach the selection and integration of new databases in applications and the impact on team dynamics. There are 3 seasons of great episodes and new ones landing everywhere you listen to podcasts. Search for "Code Commentst" in your podcast player or go to dataengineeringpodcast.com/codecomments (https://www.dataengineeringpodcast.com/codecomments) today to subscribe. My thanks to the team at Code Comments for their support.
Your host is Tobias Macey and today I'm interviewing Sriram Panyam about his experiences conducting large scale data migrations and the useful strategies that he learned in the process
Interview
Introduction
How did you get involved in the area of data management?
Can you start by sharing some of your experiences with data migration projects?
As you have gone through successive migration projects, how has that influenced the ways that you think about architecting data systems?
How would you categorize the different types and motivations of migrations?
How does the motivation for a migration influence the ways that you plan for and execute that work?
Can you talk us through one or two specific projects that you have taken part in?
Part 1: The Triggers
Section 1: Technical Limitations triggering Data Migration
Scaling bottlenecks: Performance issues with databases, storage, or network infrastructure
Legacy compatibility: Difficulties integrating with modern tools and cloud platforms
System upgrades: The need to migrate data during major software changes (e.g., SQL Server version upgrade)
Section 2: Types of Migrations for Infrastructure Focus
Storage migration: Moving data between systems (HDD to SSD, SAN to NAS, etc.)
Data center migration: Physical relocation or consolidation of data centers
Virtualization migration: Moving from physical servers to virtual machines (or vice versa)
Section 3: Technical Decisions Driving Data Migrations
End-of-life support: Forced migration when older software or hardware is sunsetted
Security and compliance: Adopting new platforms with better security postures
Cost Optimization: Potential savings of cloud vs. on-premise data centers
Part 2: Challenges (and Anxieties)
Section 1: Technical Challenges
Data transformation challenges: Schema changes, complex data mappings
Network bandwidth and latency: Transferring large datasets efficiently
Performance testing and load balancing: Ensuring new systems can handle the workload
Live data consistency: Maintaining data integrity while updates occur in the source system
Minimizing Lag: Techniques to reduce delays in replicating changes to the new system
Change data capture: Identifying and tracking changes to the source system during migration
Section 2: Operational Challenges
Minimizing downtime: Strategies for service continuity during migration
Change management and rollback plans: Dealing with unexpected issues
Technical skills and resources: In-house expertise/data teams/external help
Section 3: Security & Compliance Challenges
Data encryption and protection: Methods for both in-transit and at-rest data
Meeting audit requirements: Documenting data lineage & the chain of custody
Managing access controls: Adjusting identity and role-based access to the new systems
Part 3: Patterns
Section 1: Infrastructure Migration Strategies
Lift and shift: Migrating as-is vs. modernization and re-architecting during the move
Phased vs. big bang approaches: Tradeoffs in risk vs. disruption
Tools and automation: Using specialized software to streamline the process
Dual writes: Managing updates to both old and new systems for a time
Change data capture (CDC) methods: Log-based vs. trigger-based approaches for tracking changes
Data validation & reconciliation: Ensuring consistency between source and target
Section 2: Maintaining Performance and Reliability
Disaster recovery planning: Failover mechanisms for the new environment
Monitoring and alerting: Proactively identifying and addressing issues
Capacity planning and forecasting growth to scale the new infrastructure
Section 3: Data Consistency and Replication
Replication tools - strategies and specialized tooling
Data synchronization techniques, eg Pros and cons of different methods (incremental vs. full)
Testing/Verification Strategies for validating data correctness in a live environment
Implication of large scale systems/environments
Comparison of interesting strategies:
DBLog, Debezium, Databus, Goldengate etc
What are the most interesting, innovative, or unexpected approaches to data migrations that you have seen or participated in?
What are the most interesting, unexpected, or challenging lessons that you have learned while working on data migrations?
When is a migration the wrong choice?
What are the characteristics or features of data technologies and the overall ecosystem that can reduce the burden of data migration in the future?
Contact Info
LinkedIn (https://www.linkedin.com/in/srirampanyam/)
Parting Question
From your perspective, what is the biggest gap in the tooling or technology for data management today?
Closing Announcements
Thank you for listening! Don't forget to check out our other shows. Podcast.__init__ (https://www.pythonpodcast.com) covers the Python language, its community, and the innovative ways it is being used. The Machine Learning Podcast (https://www.themachinelearningpodcast.com) helps you go from idea to production with machine learning.
Visit the site (https://www.dataengineeringpodcast.com) to subscribe to the show, sign up for the mailing list, and read the show notes.
If you've learned something or tried out a project from the show then tell us about it! Email hosts@dataengineeringpodcast.com (mailto:hosts@dataengineeringpodcast.com)) with your story.
Links
DagKnows (https://dagknows.com)
Google Cloud Dataflow (https://cloud.google.com/dataflow)
Seinfeld Risk Management (https://www.youtube.com/watch)
ACL == Access Control List (https://en.wikipedia.org/wiki/Access-control_list)
LinkedIn Databus - Change Data Capture (https://github.com/linkedin/databus)
Espresso Storage (https://engineering.linkedin.com/data-replication/open-sourcing-databus-linkedins-low-latency-change-data-capture-system)
HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html)
Kafka (https://kafka.apache.org/)
Postgres Replication Slots (https://www.postgresql.org/docs/current/logical-replication.html)
Queueing Theory (https://en.wikipedia.org/wiki/Queueing_theory)
Apache Beam (https://beam.apache.org/)
Debezium (https://debezium.io/)
Airbyte (https://airbyte.com/)
Fivetran (fivetran.com)
Designing Data Intensive Applications (https://amzn.to/4aAztR1) by Martin Kleppman (https://martin.kleppmann.com/) (affiliate link)
Vector Databases (https://en.wikipedia.org/wiki/Vector_database)
Pinecone (https://www.pinecone.io/)
Weaviate (https://www.weveate.io/)
LAMP Stack (https://en.wikipedia.org/wiki/LAMP_(software_bundle))
Netflix DBLog (https://arxiv.org/abs/2010.12597)
The intro and outro music is from The Hug (http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/Love_death_and_a_drunken_monkey/04_-_The_Hug) by The Freak Fandango Orchestra (http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/) / CC BY-SA (http://creativecommons.org/licenses/by-sa/3.0/)