<aside> ©️ IT: Từ A tới Á cho người ngoài ngành by @Rose Trinh
</aside>
Hơn 5 năm trong ngành IT này, làm ở những vị trí khác nhau như IT Comtor, BA, PM, mình đã làm qua mấy chục cái product khác nhau với vô số project phases, trong đó có không ít lần dự án yêu cầu migration – chuyển dữ liệu từ hệ thống cũ sang hệ thống mới.
Dưới đây thì mình xin liệt kê một số thuật ngữ liên quan tới data migration mà mọi người có thể gặp phải:



Xuất toàn bộ dữ liệu từ hệ thống cũ để chuẩn bị nhập vào hệ thống mới. Với các hệ thống lớn, việc dump toàn bộ dữ liệu có thể rất tốn thời gian lên đến vài tiếng thậm chí là vài ngày.
Trong một số trường hợp, hệ thống cũ và mới không thể trực tiếp chuyển đổi. Chẳng hạn, năm ngoái, team mình đã làm việc với sản phẩm B*, có tính năng Editor dùng để tạo các trang tĩnh. Khi nhận được yêu cầu đập đi xây lại (개편) sản phẩm, trong đó có việc đổi cả Editor, team nhận thấy rằng nhiều trang đã được tạo bằng phiên bản cũ vẫn cần được giữ lại trong hệ thống.
Sau khi dữ liệu được dump và crawl, bước quan trọng tiếp theo là map dữ liệu cũ sang hệ thống mới. Không phải lúc nào cấu trúc dữ liệu giữa hai hệ thống cũng giống nhau. Thông thường thì việc kiểm tra data và việc mapping này rất phức tạp và đòi hỏi sự kiểm tra tỉ mỉ để tránh sai sót. Dự án nào có data migration, trước khi migrate thật trên Production là bên mình phải test vụ mapping này trên môi trường pre-prod rất nhiều lần. Điều chỉnh lại các fields được map và thảo luận lại với khách hàng về những thay đổi sẽ xảy ra sau khi migration.
Vẫn là năm ngoái, team mình đã tiếp nhận một dự án P* (với tính năng Chat DM có data mới được tạo liên tục) yêu cầu đập đi xây lại sản phẩm từ cross-platform sang native Android và native iOS. Trong quá trình này, backend cũng được cải tiến, chuyển từ việc sử dụng Lambda sang việc viết API, dùng nhiều service hàng nhà hơn là hàng ngoài để giảm tri phí.
Dự án đặc biệt yêu cầu migration với near-zero downtime, trong suốt quá trình chuyển đổi người dùng vẫn phải có thể tiếp tục hoạt động bình thường mà không bị gián đoạn và khi chuyển đổi sang app mới là không có data nào bị bỏ sót. Để thực hiện điều này, team mình ngoài việc dump data cho đến thời điểm x.x.2023 ra thì còn áp dụng thêm đồng bộ hóa (dual-write) giữa hệ thống cũ và mới, đảm bảo tính toàn vẹn và liên tục của dữ liệu.