Cách đồng bộ hóa các triển khai (đặc biệt là thay đổi đối tượng cơ sở dữ liệu) trên nhiều môi trường [trùng lặp]


7

Tôi là kỹ sư DevOps và là kỹ sư phần mềm trong một nhóm, vài tháng trước, các nhà phát triển đã chuyển từ có DB trung tâm sang DB trên máy ảo CentOS trên máy tính xách tay cá nhân của họ. Động thái từ một DB trung tâm là để giảm sự phụ thuộc vào các DBA và cũng để loại bỏ các vấn đề xuất phát từ dữ liệu không nhất quán.

Kế hoạch chia sẻ và đảm bảo đồng bộ hóa Cơ sở dữ liệu với mọi người trong nhóm là mỗi người sẽ chia sẻ các tập lệnh thay đổi với mọi người. Vấn đề là chúng tôi sử dụng Skype để liên lạc (chúng tôi chỉ thiết lập chùng nhưng vẫn chưa bắt đầu sử dụng đầy đủ) và mặc dù đôi khi mọi người đăng văn bản của các kịch bản thay đổi DB, một số có thể bị bỏ qua. Vấn đề khác là một số nhà phát triển bỏ lỡ việc đăng các thay đổi. Hơn nữa, các bản phát hành mới được triển khai trong Sản xuất mà không được triển khai trên môi trường Thử nghiệm và Thử nghiệm.

Điều này đã đặt ra một thách thức nghiêm trọng đối với chúng tôi, đặc biệt là bản thân tôi, người gần đây, đã chịu trách nhiệm đảm bảo rằng các triển khai Demo của chúng tôi đồng bộ với các triển khai Sản xuất. Hầu hết các vấn đề đồng bộ hóa biên giới về việc thiếu đồng bộ hóa Cơ sở dữ liệu do thiếu các tập lệnh thay đổi hoặc thiếu các đối tượng DB. Oracle là DB ưu tiên của chúng tôi.

Việc triển khai điển hình trong môi trường Demo là một quá trình rất khó khăn liên quan đến việc kiểm tra một ứng dụng và khi xảy ra sự cố do thiếu các cột trong bảng DB, các hàm, các procs được lưu trữ, chúng ta phải tìm kiếm các đối tượng DB bị thiếu, áp dụng chúng cho DB và sau đó tiếp tục cho đến khi mọi vấn đề được giải quyết

Làm thế nào tôi có thể giải quyết vấn đề này để đảm bảo triển khai trơn tru, không đau và ít tốn thời gian? Việc di chuyển các ứng dụng của chúng tôi sang Docker có thể giúp giải quyết các vấn đề đồng bộ hóa DB và sự thiếu kỷ luật liên quan của các nhà phát triển không? Quá trình nào chúng ta có thể đưa vào để cải thiện trong lĩnh vực này?

Câu trả lời:


9

Tôi sẽ tích hợp quản lý lược đồ vào chính ứng dụng (hoặc cùng với nó).

Bất kỳ thay đổi nào đối với lược đồ nên được cam kết dọc theo mã ứng dụng (và do đó cũng được gắn thẻ).

Đã có một loạt các khả năng được liệt kê trong câu hỏi này: Thực tiễn hoặc công cụ nào cho phép Triển khai Cơ sở dữ liệu liên tục

Với loại công cụ này, sử dụng cơ sở dữ liệu trong bộ nhớ như h2 hoặc cơ sở dữ liệu trung tâm và để ứng dụng kiểm tra phiên bản lược đồ (được lưu trữ trong DB) khi bắt đầu cho phép nhận được lược đồ cơ sở dữ liệu cập nhật khi khởi động ứng dụng.

Điều này sẽ không giải quyết vấn đề kỷ luật của bạn và có thể tạo ra những vấn đề mới, vì điều này thường đi kèm với một phiên bản nghiêm ngặt của lược đồ, việc thực thi phiên bản có thể được thực hiện bằng các móc nối trước nhưng đó là một công việc khó khăn.


4

Trong công ty của chúng tôi, chúng tôi quản lý mã ứng dụng của mình trong một VCS (Git) và hầu hết các ứng dụng chúng tôi làm việc với việc cài đặt cơ sở dữ liệu cốt lõi của chúng từ bên trong các tập lệnh thiết lập đi kèm với ứng dụng.

Nếu chúng tôi phải mở rộng hoặc tùy chỉnh một ứng dụng cho một trong những khách hàng của chúng tôi liên quan đến việc phải mở rộng cơ sở dữ liệu hoặc thực hiện các tùy chỉnh cơ sở dữ liệu, thì chúng tôi sẽ kèm theo mã của chúng tôi với một tập lệnh thiết lập sẽ thực hiện các hoạt động cơ sở dữ liệu thông qua lớp / lớp bọc cơ sở dữ liệu của ứng dụng /người lái xe.

Theo cách này, một khi mã được hợp nhất vào kho lưu trữ VCS, mọi nhà phát triển sẽ kiểm tra mã này, sẽ truy xuất các thay đổi cơ sở dữ liệu này. Ngoài ra sau khi mã được hợp nhất, các thay đổi cơ sở dữ liệu này sẽ kết thúc trên mọi môi trường (các nút kiểm tra, UAT và sản xuất) và theo cách này, tất cả các thay đổi cơ sở dữ liệu sẽ diễn ra suôn sẻ.

Đây là một phương pháp dễ thực hiện. Bạn cũng có thể đi sâu vào các công cụ kiểm soát nguồn dành riêng cho cơ sở dữ liệu nếu bạn cần các khả năng quản lý nâng cao hơn.

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.