بلاگ همرانیک مدرن‌سازی و بازطراحی نرم‌افزار ۴ دقیقه

مهاجرت از اکسل به نرم‌افزار تحت وب؛ چطور بدون قطع عملیات منتقل شویم؟

مهاجرت یعنی انتقال قابل دفاع—نه کپی یک‌شبه فایل. با پاکسازی، محیط staging و اجرای موازی، عملیات روزمره قطع نمی‌شود.

میز کار مهاجرت؛ پرینت اکسل، سینی staging و لپ‌تاپ نوار پیشرفت ایمپورت

مهاجرت از اکسل و سیستم قدیمی به وب‌اپ، اگر یک‌شبه و بدون نقشه باشد، عملیات را قطع می‌کند. مهاجرت داده از اکسل به وب‌اپ باید انتقال قابل دفاع باشد—با پاکسازی، staging و اجرای موازی.

در همرانیک مهاجرت را بخشی از مدرن‌سازی می‌بینیم، نه کپی فایل. زمینه را در مدرن‌سازی نرم‌افزار قدیمی ببینید.

مرز مهم مقاله

هدف صفر قطعی عملیات است؛ نه سرعت نمایشی ایمپورت. اگر داده کثیف است، اول پاکسازی—بعد ابزار.

نقشه انتقال بدون قطع عملیات چه اجزایی دارد؟

فهرست منبع‌ها (فایل‌ها، جداول، مالک)، نگاشت فیلدها، قواعد تبدیل، و معیار پذیرش هر موجودیت. بدون نگاشت، ایمپورت فقط آشفتگی را جابه‌جا می‌کند.

نسخهٔ اول وب‌اپ را کوچک نگه دارید تا مهاجرت دامنهٔ محدودی داشته باشد—هم‌راستا با تعریف MVP.

پاکسازی قبل از ایمپورت

قبل از ورود به سیستم جدید، این‌ها را حل کنید:

۱. یکتایی

کلید تکراری و مشتری دوبل

بدون قاعدهٔ ادغام، گزارش جدید بی‌اعتماد می‌شود.

۲. فیلد اجباری

خالی‌های پنهان در اکسل

آنچه در شیت «اوکی» بود، در سیستم سخت‌گیرانه می‌شکند.

۳. واحد و تاریخ

فرمت‌های ناسازگار

تاریخ، ارز و واحد باید قبل از load استاندارد شوند.

۴. مالک داده

چه کسی اختلاف را تصمیم می‌گیرد

مهاجرت بدون مالک کسب‌وکار در صف اختلاف گیر می‌کند.

اجرای موازی و برش نهایی

تا وقتی گزارش‌های موازی نزدیک نشده‌اند، قطع سیستم قدیم زود است. یک پنجرهٔ کوتاه cutover با بکاپ و rollback تعریف کنید.

پذیرش داده بخشی از UAT است؛ UAT قبل از Go-live را جدی بگیرید.

پاکسازی و نگاشت؛ جایی که مهاجرت واقعاً شکست می‌خورد

کپی فایل اکسل به دیتابیس جدید «مهاجرت» نیست. باید مالک فیلدها، قواعد یکتایی، داده‌های یتیم، و نگاشت کدهای قدیمی مشخص شود. بدون staging و گزارش مغایرت، روز Go-live پر از اصلاح دستی می‌شود.

الگوی Strangler Fig و نگاه مدرن‌سازی اپلیکیشن در AWS یک پیام مشترک دارند: انتقال تدریجی و قابل بازگشت بهتر از قطع یک‌شبه است. مقاله مدرن‌سازی نرم‌افزار قدیمی همین منطق را برای وب و موبایل باز می‌کند.

قبل از ایمپورت انبوه، نیازمندی‌های قبل از شروع و تعریف MVP را مرور کنید تا دامنهٔ دادهٔ نسخهٔ اول باد نکند.

اجرای موازی و معیار پذیرش داده

مدتی سیستم قدیم و وب‌اپ جدید را موازی نگه دارید: همان تراکنش در هر دو، مقایسهٔ روزانه، و آستانهٔ مغایرت قابل قبول. UAT داده جدا از UAT UI است؛ پذیرش UAT قبل از Go-live را جدی بگیرید.

قطع عملیات وقتی خطرناک است که مسیر برگشت ندارید. بکاپ، اسکریپت rollback، و مالک تصمیم Cutover را از قبل بنویسید. اجرای فنی را می‌توانید با توسعه وب‌اپلیکیشن اختصاصی همرانیک جلو ببرید، اما مالک داده باید از کسب‌وکار باشد.

پایلوت داده روی یک زیرمجموعهٔ واقعی

اول یک برش واقعی—مثلاً یک انبار یا یک سال مالی—را migrate کنید و مغایرت را اندازه بگیرید. اگر روی برش کوچک به آستانه نرسیدید، Cutover کامل فقط بحران را بزرگ می‌کند.

گزارش مغایرت باید برای کاربر کسب‌وکار خوانا باشد: کدام رکورد، چرا رد شد، چه کسی باید درستش کند. اسکریپت خام بدون این حلقه، تیم را در اکسل موازی جدید گیر می‌اندازد.

نقش مالک داده و پشتیبانی حین انتقال

مالک فنی اسکریپت می‌نویسد؛ مالک داده تأیید می‌کند کدام رکورد «درست» است. این دو نقش را یکی نکنید. همچنین مسیر پشتیبانی موقت برای کاربران در دورهٔ موازی تعریف کنید تا سراغ فایل‌های سایه نروند.

سیستم‌سازی عملیات یکپارچه و وب‌اپ اختصاصی همرانیک کمک می‌کنند بعد از مهاجرت، دوباره به اکسل برنگردید.

پنجرهٔ Freeze و قانون توقف ورود به اکسل

در Cutover باید لحظه‌ای باشد که ورود دادهٔ جدید به اکسل/سیستم قدیم قفل می‌شود و فقط وب‌اپ منبع حقیقت است. بدون Freeze، کاربران دوباره فایل موازی می‌سازند و مهاجرت بی‌نتیجه می‌ماند.

ارتباط را از یک هفته قبل بگویید، میانبرها را در تیم پخش کنید، و پشتیبانی on-call برای دو روز اول داشته باشید. پایلوت دپارتمانی قبل از rollout سراسری همین منطق کاهش ریسک را دارد.

بعد از Cutover، معیار موفقیت فقط «فایل ایمپورت شد» نیست؛ باید کاربران بدون اکسل سایه کار روزمره را تمام کنند. این را در معیارهای پذیرش UAT صریح بنویسید و دو هفته پایش کنید.

هر ستون اکسل که معنی مبهم دارد را قبل از ایمپورت در جلسه مالک داده تعیین تکلیف کنید؛ حدس توسعه‌دهنده جای مالک کسب‌وکار را نمی‌گیرد.

چک‌لیست مهاجرت بدون قطع عملیات

  • فهرست منبع و مالک داده کامل است؟
  • نگاشت فیلدها سند شده؟
  • پاکسازی روی نمونهٔ واقعی انجام شده؟
  • محیط staging با دادهٔ نزدیک به تولید هست؟
  • گزارش موازی قدیم/جدید تعریف شده؟
  • معیار پذیرش هر موجودیت عددی است؟
  • بکاپ و rollback برای cutover آماده است؟
  • آموزش کاربران روی دادهٔ واقعی دیده شده؟

جمع‌بندی: مهاجرت پروژهٔ داده است، نه دکمهٔ ایمپورت

اکسل و سیستم قدیمی تا وقتی نقشه، پاکسازی و اجرای موازی نباشد، خطر قطع عملیات‌اند. انتقال موفق یعنی تیم روز بعد کارش را ادامه می‌دهد و به عددها اعتماد دارد.

عجله برای cutover بدون معیار پذیرش، گران‌ترین بخش پروژه را می‌سازد.

نقشه مهاجرت را قبل از cutover بنویسیم

اگر از اکسل به وب‌اپ می‌روید و نگران قطع کار هستید، در همرانیک نگاشت، پاکسازی و اجرای موازی را طراحی می‌کنیم.

پرسش‌های پرتکرار

همهٔ تاریخچه باید مهاجرت کند؟

نه لزوماً. گاهی دادهٔ فعال + آرشیو فقط‌خواندنی کافی است؛ دامنه را با ارزش گزارش بسنجید.

چقدر اجرای موازی لازم است؟

تا وقتی اختلاف گزارش‌ها زیر آستانهٔ توافق‌شده بماند—ممکن است چند روز تا چند هفته باشد.

اگر داده خیلی کثیف باشد؟

فاز پاکسازی را جدا قیمت و زمان بدهید؛ قاطی کردن با توسعه UI فقط هر دو را خراب می‌کند.

نقش اکسل بعد از مهاجرت چیست؟

ایده آل: خروجی کنترل‌شده از سیستم، نه منبع حقیقت موازی. منبع دوگانه دوباره مغایرت می‌سازد.