Kafka can be used to smoothly migrate a legacy monolithic application to a new microservices-oriented architecture. The migration occurs gradually with no big bang or production stop. Features are gradually swapped from the legacy application to new microservices. The legacy application and microservices run side by side and can concurrently modify the same data conflictlessly. The migration involves two steps - first pushing changes from the legacy application to the microservices using Kafka streams, and then pushing changes from the microservices back to the legacy application. This allows for an ability to rollback and derisks the data migration process.