Làm cách nào để thiết lập quy trình phát triển cơ sở dữ liệu cục bộ cho nhóm web nhỏ?


14

Lý lịch

Tôi đang làm việc để tạo ra một quy trình phát triển mới cho một nhóm web nhỏ gồm khoảng 4 lập trình viên và 4 nhà thiết kế, với tiềm năng rõ ràng để phát triển nhóm trong tương lai. Sản phẩm của chúng tôi là một ứng dụng trung tâm cung cấp năng lượng cho các trang web của khách hàng mà chúng tôi cũng thiết kế và lưu trữ.

Trước đây, tất cả chúng ta đều làm việc qua FTP trên máy chủ dev, với một cơ sở dữ liệu dev. Nó "hoạt động" * trong một thời gian, nhưng chúng tôi đang chuyển sang một hướng mới, vì vậy đây là lúc để trưởng thành quá trình của chúng tôi.

Chúng tôi sử dụng Percona Server 5.5, nhưng đây không phải là cơ sở dữ liệu, với ý tưởng giữ chi phí thấp.

Mục tiêu :

Tôi đang xem xét việc tạo ra một quy trình tích hợp liên tục (CI) để phát triển cơ sở dữ liệu với ý tưởng sau:

  1. Các nhà phát triển có bản sao dữ liệu cục bộ để chạy mã phát triển
  2. Có thể khôi phục cấu trúc cơ sở dữ liệu để thay đổi trước đó
  3. Có thể tách các thay đổi lược đồ tính năng mới so với thay đổi thiết kế lược đồ
  4. Có thể sửa đổi cấu trúc cơ sở dữ liệu cục bộ để thử nghiệm

Khái niệm ban đầu

Tôi đã phác thảo một quy trình dưới đây bằng SVN và LiquiBase, mặc dù nó hoàn toàn loại bỏ #4.

  • tạo một nhánh 'phát triển' từ thân cây
  • máy chủ db 'phát triển' trung tâm chạy khỏi nhánh 'phát triển'
  • các nhà phát triển địa phương được thiết lập làm nô lệ cho nhánh phát triển (cung cấp #1ở trên)
  • Các bộ thay đổi hóa lỏng được cam kết thường xuyên cho nhánh phát triển, thực thi một móc nối sau cam kết để cập nhật cơ sở dữ liệu phát triển trung tâm (sẽ chuyển xuống các máy cục bộ đang hoạt động như nô lệ cho máy chủ phát triển này) (Liquidibase cung cấp #2ở trên)
  • khi các tính năng hoặc sửa lỗi lược đồ đã sẵn sàng để đi đến QA, DBA (tôi) sẽ hợp nhất các thay đổi phù hợp từ nhánh phát triển vào trung kế. Hành động này sẽ tạo ra một kịch bản sql để áp dụng cho một máy chủ cơ sở dữ liệu dàn dựng.
  • Máy chủ dàn sẽ phản ánh TRUNK, có cấu trúc giống như Sản xuất, cộng với các thay đổi trong QA
  • Sau khi thực hiện tập lệnh sql trên máy chủ dàn, thực hiện một số QA về các thay đổi.
  • Nếu tất cả có vẻ tốt, TAG cấu trúc. Điều này sẽ tạo ra tập lệnh .sql được DBA chạy trong sản xuất thủ công (cho giờ thấp điểm nếu được yêu cầu)

Quá trình này yêu cầu tất cả các nhà phát triển chạy cùng một nhánh 'phát triển', nghĩa là chỉ có một phiên bản của lược đồ cơ sở dữ liệu tại bất kỳ thời điểm nào (không chắc chắn rằng tôi muốn điều này).

Điều đó cũng có nghĩa là mọi thay đổi đối với lược đồ không thể được kiểm tra cục bộ và có thể ảnh hưởng đến các nhà phát triển khác nếu không được thực hiện đúng. Trong môi trường của chúng tôi, các nhà phát triển có thể thêm các bảng mới nhưng hiếm khi sửa đổi cấu trúc hiện có. Là DBA, sửa lỗi thiết kế được thực hiện bởi tôi. Nhưng việc không thể kiểm tra các bản sửa lỗi cục bộ là quá trình treo máy lớn nhất của tôi.

Làm thế nào quá trình trên có thể được điều chỉnh để cho phép phát triển cục bộ, trong khi vẫn duy trì một bản sao dữ liệu tương đối cập nhật (như được cung cấp bởi sao chép trong quy trình đề xuất của tôi)? Tôi không yêu cầu dữ liệu phải được cập nhật cho đến tuần trước.


* Bởi 'đã hoạt động', ý tôi là nó không hiệu quả nhưng là Pita.

Câu trả lời:


12

Quản lý môi trường

Tôi nghĩ bạn chắc chắn không muốn bị ép buộc vào một phiên bản cơ sở dữ liệu duy nhất. Bạn đã có đủ nhà phát triển mà chắc chắn bạn sẽ có nhiều luồng công việc phát triển và yêu cầu áp dụng các bản vá cho môi trường sản xuất hiện tại không phụ thuộc vào quy trình phát triển.

Bạn có thể sử dụng Liquibase hoặc một quy trình thủ công để tạo các tập lệnh vá để nâng cấp các phiên bản. Tôi đề nghị bắt đầu với một quy trình thủ công và sử dụng công cụ so sánh lược đồ cho QA trên các bản vá. Sạch sẽ, tự động, đồng bộ hóa minh bạch của một cơ sở dữ liệu phức tạp không cần thiết là một điều không tưởng.

Mô hình dữ liệu trung tâm của bạn có thể được giữ trong bất kỳ hệ thống nào bạn thích. Tôi đã sử dụng mọi thứ từ các công cụ lưu trữ doanh nghiệp tẻ nhạt để tạo tập lệnh bảng. Tạo các kịch bản bảng chơi độc đáo với các công cụ kiểm soát nguồn thông thường như lật đổ và không phải tất cả các công cụ lưu trữ đều làm tốt công việc tạo phiên bản.

Bất cứ điều gì bạn sử dụng làm kho lưu trữ mô hình dữ liệu chủ của bạn, bạn cần một cơ chế khá sạch sẽ để triển khai một môi trường từ mô hình đó. Nó nên được cấu trúc để việc triển khai đến một môi trường dễ dàng. Bạn cũng cần một cơ chế để vá từ một phiên bản được phát hành sang phiên bản tiếp theo.

Những điều tôi đã làm

Tôi đã làm những điều sau đây khi tôi đang quản lý môi trường phát triển. Nó không phải là công nghệ cao đặc biệt, nhưng nó có thể điều khiển phiên bản và các bản dựng tự động, do đó giúp dễ dàng đưa ra một môi trường cho một phiên bản cụ thể và việc tạo ra một số lượng lớn môi trường là khá thực tế.

Duy trì kho lưu trữ trung tâm: Đây có thể là một tập hợp các tập lệnh tạo cơ sở dữ liệu được giữ trong một hệ thống kiểm soát phiên bản hoặc mô hình kho lưu trữ trong một công cụ mô hình hóa dữ liệu. Bạn chọn đi. Mô hình này nên có một cơ chế xây dựng cho phép môi trường được triển khai từ các tập lệnh mà không cần nhiều sự can thiệp thủ công.

Nếu bạn có nhiều dữ liệu tham khảo, bạn sẽ cần một cơ chế tải cho nó. Tùy thuộc vào cách bạn muốn làm điều đó, bạn có thể giữ điều này trong cơ sở dữ liệu hoặc trong một tập hợp các tệp. Ưu điểm của tệp là chúng cũng có thể được phiên bản và dán nhãn từ cùng hệ thống kiểm soát phiên bản với cơ sở mã của bạn. Một loạt các tệp CSV và tập lệnh trình tải hàng loạt trong kho lưu trữ kiểm soát nguồn có thể thực hiện việc này đủ dễ dàng.

Một tùy chọn để triển khai các môi trường phát triển là lấy các bản sao lưu của cơ sở dữ liệu sản xuất được vá vào phiên bản phù hợp và cung cấp chúng cho các nhà phát triển để khôi phục vào môi trường phát triển.

Giúp dễ dàng triển khai: Giống như bất kỳ quy trình xây dựng CI nào, cơ sở dữ liệu nên được triển khai từ một tập lệnh duy nhất. Thiết lập nó để các kết nối cơ sở dữ liệu có thể được tham số hóa hoặc tập lệnh độc lập với vị trí và chỉ có thể chạy qua kết nối.

Các kịch bản vá lỗi: Bạn sẽ cần cuộn tiến và có thể khôi phục các tập lệnh từ mỗi phiên bản được phát hành.

Xây dựng môi trường thử nghiệm từ mô hình kho lưu trữ: Điều này đảm bảo rằng sự phát triển trên các môi trường không đồng bộ với kho lưu trữ sẽ bị bắt trong thử nghiệm.

Kiểm tra quá trình triển khai: Các kịch bản vá tự động, tuy nhiên chúng được tạo nên có thể kiểm tra được. Các công cụ so sánh lược đồ khá tốt cho việc này, ngay cả khi bạn không sử dụng chúng để tạo các tập lệnh vá.

  • Tạo môi trường tham chiếu với mô hình kho lưu trữ mà bạn đã thử nghiệm

  • Tạo môi trường kiểm tra khói với bản sao lưu của bản phát hành sản xuất của bạn hoặc bản dựng dựa trên phiên bản được phát hành hiện tại.

  • Chạy kịch bản vá chống lại môi trường kiểm tra khói.

  • Sử dụng công cụ so sánh lược đồ để so sánh môi trường kiểm tra khói với môi trường tham chiếu. Kịch bản vá sẽ dẫn đến hai cơ sở dữ liệu giống hệt nhau, vì vậy bạn có thể điều tra bất kỳ sự khác biệt nào.

Những gì tôi thích về quá trình này

Đây là một chút nặng nề, và được thiết kế để triển khai vào môi trường sản xuất khá quan liêu và mờ đục. Tuy nhiên, nó có những điểm mạnh sau:

  • Các nhà phát triển có thể tinker nơi họ cần.

  • Nhiều nhánh và dòng phát triển có thể được cung cấp.

  • Các kịch bản triển khai có thể được kiểm tra theo cách lặp lại. Điều này rất hữu ích để tắt các cuộc đấu tranh triển khai, vì độ lặp lại có thể được chứng minh.

  • Các công cụ so sánh lược đồ cung cấp QA trên chính việc triển khai.

  • Việc kiểm tra luôn được thực hiện đối với những gì dự kiến ​​sẽ được phát hành và điều này sẽ bắt được các vấn đề phát sinh từ các môi trường không đồng bộ.

  • Triển khai dựa trên các mô hình kho lưu trữ và các kịch bản vá có nghĩa là rác không được kiểm soát không được di chuyển từ môi trường phát triển vào sản xuất.

  • Rất nhiều quá trình có thể được tự động hóa, mặc dù thường mong muốn chuẩn bị và kiểm tra các kịch bản vá triển khai bằng tay.

  • Môi trường rẻ và dễ triển khai mà không cần phải nhảy qua vòng.

  • Các nhà phát triển buộc phải tạo ra một hệ thống phù hợp với quy trình xây dựng và triển khai đơn giản.

  • Các nhà phát triển buộc phải học các nhiệm vụ quản trị cơ sở dữ liệu cơ bản, nhưng môi trường thử nghiệm và sản xuất được cách ly khỏi các lỗi không liên quan.

Làm thế nào nó giải quyết yêu cầu của bạn

  1. Các nhà phát triển có bản sao dữ liệu cục bộ để chạy mã phát triển dựa trên

    các tập lệnh triển khai hoặc hình ảnh DB có nghĩa là họ có thể thiết lập một môi trường từ bất kỳ phiên bản nào có sẵn.

  2. Có thể khôi phục cấu trúc cơ sở dữ liệu về một thay đổi trước đó

    Một lần nữa, được sắp xếp theo các tập lệnh triển khai. Thông qua DDL hoặc kiểm tra hình ảnh sao lưu cơ sở dữ liệu được tạo thông qua quy trình được kiểm soát, nhà phát triển có thể đưa ra một môi trường cho bất kỳ phiên bản cụ thể nào bạn có.

  3. Có thể tách các thay đổi lược đồ tính năng mới so với thay đổi thiết kế lược đồ

    Các bản vá lỗi thành phiên bản chung có thể được duy trì trong một ngã ba riêng trong cây svn. Nếu các bản sao lưu cơ sở dữ liệu được sử dụng làm môi trường tham chiếu thì chúng cần được lưu trữ ở một nơi nào đó có cùng cấu trúc thư mục với sự phân nhánh của các dự án kiểm soát nguồn.

  4. Có thể sửa đổi cấu trúc cơ sở dữ liệu cục bộ để kiểm tra

    Quá trình triển khai đơn giản cho phép các nhà phát triển sửa đổi và dễ dàng khôi phục môi trường về trạng thái cục bộ hoặc đưa ra một môi trường tham chiếu để so sánh và thực hiện các thay đổi.

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.