2012-01-09 28 views
12

Tôi được thừa hưởng một hệ thống khi công ty của tôi mua một công ty khác. Hệ thống này là một kết hợp của LAMP và .NET.Di chuyển hệ thống xấu vào hệ thống hiện tại của chúng tôi với rất nhiều dữ liệu

  1. 1 máy chủ Windows chạy asp.net điều khiển xác nhận của bên thứ ba chỉ được sử dụng cho apis và webservice - (chúng ta hãy gọi nó WIN) máy chủ
  2. 8 LAMP (web, báo cáo, cron, kho vv ...) - (chúng ta hãy gọi nó MỚI)

môi trường hiện tại của chúng tôi:

14 máy chủ LAMP (web, mail, kho, vv ...) - (chúng ta hãy gọi nó hIỆN)

Các go od tin tức là mã MỚI là khá straigt foward. Một vài triệu dòng mã (hầu hết là apis, bên thứ ba) và tôi có thể chuyển đổi nó thành hệ thống CURRENT. NEW và CURRENT sử dụng cả hai CentO, điều này sẽ làm cho việc chuyển đổi trở nên dễ dàng, ngoại trừ máy chủ Windows mà tôi không biết phải làm gì bây giờ.

Bây giờ là tin xấu. Lược đồ cơ sở dữ liệu hệ thống MỚI không tốt chút nào. Nó không được chuẩn hóa và các truy vấn chậm (truy vấn cơ sở dữ liệu và mã quá). Ý tưởng đầu tiên của tôi là thiết kế lại chúng cho một cấu trúc bình thường hơn phù hợp với mã CURRENT nhưng tôi không làm việc. Các bảng từ hệ thống MỚI là khổng lồ. Hệ thống MỚI có 7 cơ sở dữ liệu, hơn 10000 bảng, các bảng nhỏ nhất có trên 100 nghìn hàng và một số bảng có hơn 500 triệu hàng. Một trong những cơ sở dữ liệu có hầu hết các bảng với hơn 25 triệu hàng mỗi.

Có an toàn để di chuyển hoặc tôi có nên tiếp tục chạy không? Nếu tôi nên di chuyển, tôi muốn biết giải pháp an toàn nhất cho tôi để di chuyển hệ thống Windows và NEW vào hệ thống CURRENT của tôi là gì?

Trả lời

29

Trước hết, di chuyển hệ thống WIN + NEW vào hệ thống CURRENT sẽ mất thời gian. vì vậy bạn phải đảm bảo khi bạn bắt đầu di chuyển/chuyển đổi mọi thứ, bạn biết bạn sẽ đi đâu. Di chuyển có thể không phải là một nhiệm vụ dễ dàng và bạn có thể gặp phải các vấn đề mà bạn không bao giờ nghĩ sau khi bắt đầu quá trình.

Ý tưởng di chuyển hệ thống MỚI của bạn có ưu điểm và nhược điểm và bạn cần đảm bảo rằng nó diễn ra suôn sẻ để có được sản phẩm tốt và đáng tin cậy ở cuối.

Ưu điểm:

  • chỉ có một hệ thống để duy trì: bạn không muốn duy trì 3 hệ thống;
  • một mã/cơ sở dữ liệu môi trường: PHP vs ASP.NET và MSSQL so với MySQL;
  • mã/cơ sở dữ liệu tập trung;
  • một tiêu chuẩn mã hóa (mã và cơ sở dữ liệu);
  • lưu/bán equiments (bạn sẽ di chuyển mã đến 14 máy chủ của bạn, có lẽ bạn không cần người kia 9 (WIN + MỚI), do đó bạn có thể bán hoặc giữ chúng cho các dự án tiếp theo)

khuyết điểm:

  • cao hơn rủi ro (tai nạn, mâu thuẫn, tính năng chưa được biết bạn cần phải hiểu vv ..);
  • rẻ hơn so với di cư hoặc tái thiết kế tất cả mọi thứ
  • nguy cơ thất bại là thấp hơn so với di cư (kể từ khi bạn đã biết cả hệ thống hoạt động)
  • quy hoạch, kiểm soát, thực hiện, đảm bảo chất lượng: rất xấu nếu một trong những thất bại;
  • tốn kém: di chuyển có thể tốn kém về thời gian và tiền bạc;

Đây là cơ sở dữ liệu lớn, thay đổi/tối ưu hóa việc này sẽ mất một khoản đầu tư đáng kể trong giờ làm việc. Đây không phải là điều bạn có thể dễ dàng làm trong vài giờ. Điều này có thể mất vài tuần có thể vài tháng để di chuyển thành công dữ liệu sang hệ thống CURRENT mà không có lỗi. Nếu bạn có thể, bạn có thể bắt đầu bằng cách di chuyển các điểm chung hoặc tương tự từ cả lược đồ cơ sở dữ liệu, như khách hàng hoặc sản phẩm. Bằng cách này, bạn nhập dữ liệu mà hệ thống CURRENT có thể chạy mà không có lỗi và mã của bạn cũng sẽ nhận ra. Người dùng hệ thống CURRENT của bạn có thể ngay lập tức bắt đầu quản lý các mục/bản ghi này mà không gặp vấn đề gì. Kể từ bản ghi mới hoặc bản ghi mà hệ thống CURRENT của bạn không nhận ra, bạn có thể chỉ cần thiết kế lại các bảng này và di chuyển chúng sang hệ thống CURRENT (sau đó cập nhật mã hiện tại của bạn).

Khi di chuyển mã, nếu mã từ hệ thống MỚI đủ tốt và phù hợp với tiêu chuẩn của bạn, bạn có thể giữ nó. Điều này sẽ tiết kiệm thời gian trong việc phát triển, chỉ cần đảm bảo bạn cập nhật các truy vấn và các kết nối máy chủ. Mặt khác, nếu nó giống như mã spaghetti, bạn sẽ phải hiểu những gì mã làm. Điều này cũng có thể mất một khoản đầu tư đáng kể trong giờ lao động. Tôi có thể giới thiệu ở đây để chuẩn hóa cái này và tổ chức mã của bạn giống như cách bạn tổ chức nó trên CURRENT. Bạn có thể tập trung mã của mình vào một thư mục chung bằng cách sử dụng cấu trúc thư mục và tệp chung. Bạn có thể đặt tất cả các thư viện chung của bạn, bên thứ ba, vv .. ở đó khi bạn gọi CURRENT và mã MỚI, nó sẽ nạp cùng một lớp PHP. Điều này sẽ giúp bạn dễ dàng chuyển đổi từ hệ thống MỚI sang CURRENT. Bằng cách này, bạn biết tất cả các tệp được yêu cầu của bạn ở cùng một nơi và rất dễ bảo trì. Đặc biệt nếu mã của bạn yêu cầu các tệp yêu cầu yêu cầu tệp. Nếu mã của bạn là tất cả xung quanh máy chủ của bạn, bạn có thể tạo một NFS nếu bạn thích ý tưởng này.

Bây giờ, những gì tôi có thể đề xuất là bắt đầu bằng Parallel Adoption. Bằng cách này bạn chắc chắn rằng tất cả các hệ thống đều hoạt động tốt và khỏe mạnh. Sau đó, từ từ di chuyển dữ liệu/mã sang hệ thống CURRENT cho đến khi mọi thứ được hoàn thành. Điều này sẽ không dễ dàng và bạn phải xác định phần nào của hệ thống NEW + WIN mà bạn phải di chuyển trước tiên. Khuyến nghị của tôi là di chuyển hệ thống WIN. Bởi vì điều này là độc lập với các hệ thống CURRENT và NEW, miễn là bạn hiển thị cùng một đầu ra, bạn nên ổn. Tìm kiếm mã nguồn mở hoặc các xác thực tương tự trong PHP hoặc nếu bạn không thể tìm thấy bất kỳ mã nào, hãy xây dựng chúng.Bằng cách này, hệ thống WIN này có thể dễ dàng được chuyển sang cấu trúc tổ chức hiện tại của bạn và các tiêu chuẩn mã hóa. Thực hiện các bài kiểm tra và đảm bảo chất lượng sẽ dễ dàng và bạn có thể hoàn thành rất nhanh chóng.

Khi WIN này được di chuyển, bạn cần phải xác định những gì bạn cần chuyển trước tiên cho hệ thống CURRENT. Ví dụ: nếu hệ thống MỚI và CURRENT có "khách hàng", hãy thu thập tất cả thông tin từ hệ thống MỚI và chuyển chúng sang hệ thống CURRENT bằng cách sử dụng tập lệnh (theo cách thủ công hoặc theo kịch bản). Sau đó, bạn có thể di chuyển các phần tử của khách hàng như sản phẩm, bảng sao kê thanh toán hoặc bất kỳ hồ sơ nào khác có liên quan đến những khách hàng này). Lặp lại các bước này cho đến khi tất cả dữ liệu được di chuyển. Bằng cách này, bạn không phải thiết kế lại bất kỳ bảng nào hoặc thay đổi bất kỳ mã nào từ hệ thống MỚI, mọi thứ được lưu trên hệ thống CURRENT và mọi thứ hoạt động chính xác.

Tôi sẽ không đề xuất số big bang adoption cho trường hợp này.

2

Tôi nên di chuyển không thực sự là quyết định của bạn nhưng bạn quyết định nhiều hơn.

Để biết cách thực hiện, tùy thuộc vào lượng dữ liệu bạn cần phải thực hiện. Tôi rõ ràng sẽ khuyên bạn nên làm việc dữ liệu từ SQL đến SQL bằng cách sử dụng các câu lệnh liên cơ sở dữ liệu nhưng điều đó không phải lúc nào cũng khả thi.

Lý do đầu tiên là bạn có thể cần phải chuyển đổi dữ liệu thực sự phức tạp thành một biểu mẫu khác và không thể thực hiện bằng SQL thuần túy. Thứ hai, sẽ là nếu mã hóa một kịch bản chuyển giao bằng PHP hoặc bất kỳ ngôn ngữ nào khác sẽ tốn nhiều công sức hơn so với thực hiện trong SQL thuần túy, bạn nên thực hiện nó trong PHP để khi bạn có thứ gì đó thay đổi bạn chắc chắn rằng nó sẽ có thể và không bị mắc kẹt với thực tế là bạn đang ở trong SQL và cần phải recode tất cả mọi thứ.

Nhìn chung, bạn có một phân tích rất lớn để thực hiện để hiểu tất cả dữ liệu bạn đang xử lý và lập kế hoạch chuyển khoản của bạn. Với số lượng bảng và hàng bạn đang nói về bạn có một chuyến đi trước bạn, tôi nghĩ tylenol sẽ là người bạn tốt nhất của bạn.

Chúc may mắn

+1

well Tôi là ông chủ – aki

+0

Darn, sau đó bạn chỉ cần có cho mình một quyết định khó khăn hơn để có;) –

+0

yup! tôi biết, đó là lý do tại sao tôi muốn hỏi ở đây nhưng tôi đoán mọi người không thích những loại câu hỏi này ... – aki

Các vấn đề liên quan