2012-07-03 26 views
13

Tôi đã có các thiết lập sau đây trong Windows Azure:Azure: Thực hành tốt nhất để thử nghiệm trong một môi trường Staging với Mã Đầu tiên Migrations

  • A "thử nghiệm" tổ chức dịch vụ kết nối với cơ sở dữ liệu "thử nghiệm" riêng của mình.
  • Dịch vụ được lưu trữ "sản xuất" được kết nối với cơ sở dữ liệu "sản xuất" của riêng mình.

Khi xây dựng đã được xác minh khi thử nghiệm và sẵn sàng chuyển sang sản xuất, chúng tôi sẽ triển khai "dàn dựng" trong dịch vụ lưu trữ sản xuất và thực hiện kiểm tra khói nhanh để đảm bảo bản dựng mới không hoàn toàn tan vỡ. Ví dụ dàn dựng được triển khai với các bit chính xác sẽ được triển khai để sản xuất, vì vậy nó nói chuyện với cơ sở dữ liệu sản xuất. Khi dàn dựng được may mắn, chúng tôi nhấn nút "VIP Swap", và xây dựng là sống trên sản xuất. Mọi thứ đều tốt.

Sự cố xảy ra khi mô hình cơ sở dữ liệu thay đổi. Tôi đã có Code First Migrations hoạt động hoàn hảo. Tôi có thể thêm các di chuyển mới, áp dụng chúng cục bộ với bảng điều khiển quản lý gói và sau đó tạo các kịch bản lệnh SQL để nâng cấp cơ sở dữ liệu thử nghiệm khi tôi đẩy một xây dựng mới để kiểm tra. Câu hỏi đặt ra là, cách tốt nhất để sử dụng Code First Migrations cùng với triển khai dàn dựng/sản xuất là gì? Khi tôi triển khai một bản dựng mới để dàn dựng với các thay đổi mô hình, nó hy vọng sẽ tìm thấy một cơ sở dữ liệu phù hợp với mô hình của nó. Nhưng sau đó nếu tôi áp dụng các thay đổi mô hình cho cơ sở dữ liệu sản xuất, cá thể sản xuất than phiền vì mô hình của nó không khớp.

Tôi vừa bỏ qua bài kiểm tra khói dàn dựng. Tôi tải lên để dàn dựng, sau đó cập nhật cơ sở dữ liệu sản xuất và nhấn nút "VIP Swap" khá nhiều cùng một lúc. Sau đó kiểm tra khói trên sản xuất. Nếu một cái gì đó bị hỏng nặng, hãy "Hoán đổi VIP" và hoàn nguyên các thay đổi về cơ sở dữ liệu.

Có cách nào tốt hơn để thực hiện việc này hay không?

Cảm ơn!

+0

Tôi đang gặp vấn đề tương tự, điều duy nhất tôi có thể nghĩ đến ngay lúc này là vô hiệu hóa tự động "nâng cấp lên mới nhất", hoặc mở rộng DbMigrator của riêng tôi nếu có một số cách phân biệt giữa dàn dựng và sản xuất. Cách tốt nhất là nhắm mục tiêu một db dàn dựng, có thể được phép nâng cấp, và sau đó khi bạn đổi mục tiêu DB khác .. nhưng vì không có gì thực sự "xảy ra" khi bạn trao đổi, tôi không thể thấy điều đó sẽ xảy ra như thế nào. – FRoZeN

+0

Điều này thực sự bị hỏng. Dàn dựng và di chuyển không tương thích. Không có cách nào để di chuyển và làm ấm máy chủ web dàn dựng trước khi trao đổi. Máy chủ web sản xuất sẽ ngừng hoạt động ngay khi việc di chuyển được áp dụng. Tôi giả định rằng khung thực thể sẽ có thể xử lý các thay đổi tiến bộ (thêm một bảng ví dụ). Có vẻ như cách duy nhất để làm điều này là với một cơ sở dữ liệu dàn dựng riêng biệt. –

Trả lời

0

Tôi không chắc chắn về cách thực hành tốt nhất vì tôi không thể tìm thấy bất kỳ điều gì và dường như người dùng đang sử dụng những gì phù hợp nhất cho dự án của họ và làm việc cho họ. Trong một kịch bản, giải pháp tương tự như kế hoạch của bạn như bạn đã mô tả trong đó Trong khi DB sản xuất có cơ sở dữ liệu rỗng và dàn dựng được tạo bằng mã EF đầu tiên và di chuyển được áp dụng. Sau khi thử nghiệm đã được thực hiện các kịch bản đã được chuyển giao cho cơ sở dữ liệu khác mà sau đó được kết nối với sản xuất.

+0

Cảm ơn. Đã hy vọng có một số ma thuật tôi đã mất tích, nhưng dường như không phải như vậy. – ManicBlowfish

0

Tôi đã làm việc trên Azure, EF, v.v. và các chủ đề tương tự như bạn. Tôi không biết thực hành tốt nhất cho kịch bản của bạn vào lúc này là gì. Tuy nhiên, tôi tin rằng việc sử dụng các công cụ tích hợp liên tục của TFS và/hoặc Github có ý nghĩa để giảm thiểu rủi ro triển khai. Tôi hy vọng bài viết sau sẽ cung cấp cho bạn một quan điểm.

Click here

Chúc may mắn

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