Di chuyển DB và các vị trí triển khai Azure


15

Tôi đang dự định đẩy một ứng dụng web mới lên Dịch vụ ứng dụng web Azure (Trang web Azure cũ). Tôi muốn sử dụng các vị trí triển khai để có thể kiểm tra việc triển khai của mình trước khi đẩy nó vào sản xuất. Đó là tất cả tốt miễn là không có thay đổi lược đồ DB yêu cầu. Nhưng nếu có thay đổi lược đồ, tôi không thể có hai phiên bản phần mềm hoạt động trên cùng một phiên bản db. Vì tôi đang sử dụng EF Migration, việc đẩy vào vị trí dàn sẽ ngay lập tức dẫn đến việc cập nhật DB lên phiên bản mới nhất.

Vì vậy, câu hỏi của tôi là, liệu có sử dụng các vị trí triển khai khi cần di chuyển db không?

Làm thế nào nó được thực hiện cho các nhà cung cấp SaaS lớn. Có phải họ đang thực hiện di chuyển DB ngay lập tức với phiên bản mới? Điều đó chắc chắn sẽ gây ra một số thời gian chết.

Tôi chỉ có thể nghĩ ra các giải pháp khá phức tạp cho vấn đề này, có gì đơn giản không?


Vì vậy, bạn không có cơ sở dữ liệu dev?
JeffO

Vâng, chúng tôi có một hệ thống dev và QA. Hệ thống được mô tả ở trên là dành cho mục đích sản xuất.
Sam7

@ Sam7 bạn đã tìm được giải pháp cho vấn đề này chưa? Chúc mừng
WestDiscGolf

Tôi không sợ. Chúng tôi hiện đang thử nghiệm thay đổi di chuyển trong một môi trường riêng biệt.
Sam7

@ Sam7: Tôi nghĩ rằng bạn có thể quản lý điều này bằng một tệp .config riêng biệt với một chuỗi kết nối riêng với db của bạn. nhưng bạn đã đúng, khi bạn triển khai từ giai đoạn đến sản xuất, lợi ích của việc khôi phục lại không còn hiệu quả nữa. các thay đổi db sẽ được áp dụng ngay lập tức. Tôi tò mò về một giải pháp trong tương lai gần ...
Roger S.

Câu trả lời:


3

Có thể phát hành thời gian chết bằng cách sử dụng các vị trí Dịch vụ ứng dụng Azure và cơ sở dữ liệu duy nhất được chia sẻ bởi Staging and Production - nhưng bạn cần đảm bảo rằng tất cả các thay đổi cơ sở dữ liệu đều tương thích ngược, sao cho các phiên bản mới và hiện tại của ứng dụng web có thể chạy đồng thời các vị trí dàn và sản xuất.

Một số quy tắc đảm bảo điều này hoạt động:

  • Bất kỳ cột cơ sở dữ liệu mới nào cũng phải có giá trị hoặc có giá trị mặc định
  • Đổi tên cột không được phép
  • Không được phép thả cột

Khi bạn cần thực hiện các thay đổi mang tính hủy diệt, chẳng hạn như đổi tên hoặc thả cột, bạn cần 2 bản phát hành để thực hiện việc này:

  1. Phiên bản mới của ứng dụng web sẽ được phát hành, loại bỏ sự phụ thuộc vào các cột được đổi tên / bỏ
  2. Một bản phát hành bổ sung được thực hiện để thực hiện các thay đổi mang tính hủy diệt

Mặc dù điều này nghe có vẻ hơi phức tạp, nhưng trong thực tế, bạn có thể sẽ không thực hiện các thay đổi mang tính hủy diệt rất thường xuyên.


0

Bạn đã xem các mục cấu hình dành riêng cho khe cắm chưa? Trong WebApp / Cài đặt / Cài đặt ứng dụng, bạn có thể chỉ định cài đặt cho ứng dụng web nhưng cũng xác định liệu nó chỉ áp dụng cho vị trí này hay không.

Do đó, bạn có thể có một chuỗi kết nối dành riêng cho vị trí cho vị trí dàn của mình và cũng áp dụng di chuyển trên các vị trí hoán đổi.


2
Điều đó đi ngược lại với ý tưởng của tôi về việc trang web dàn dựng hoạt động cùng một bộ dữ liệu chính xác (-> cơ sở dữ liệu) như sản xuất.
Sam7
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.