2009-04-22 23 views
6

Đây là tình huống của tôi ...Khi nào bảo trì máy chủ sẽ ảnh hưởng đến các giải pháp thực thi?

Tôi đang viết hệ thống bảo mật .Net/C# (ủy quyền và xác thực) cho một bộ sưu tập lớn các ứng dụng web yêu cầu quá trình đăng nhập một lần. Tôi đang sử dụng Active Directory như một kho dữ liệu và đã viết một mẫu thử nghiệm rất tốt đẹp để giao tiếp với AD thông qua LDAP. Thành phần này lấy thông tin về người dùng đã đăng nhập mà tôi đã lưu trữ trong AD mà sau đó tôi sử dụng để thiết lập vai trò bảo mật của họ trong xác thực biểu mẫu .Net.

1) Tất cả đều tốt.

Không phải là Quản trị viên hệ thống hoặc Kỹ sư mạng, tôi không quen với số lượng quản trị hệ thống liên quan đến việc thiết lập một cá thể AD. Tôi không biết rằng đối với mỗi tên miền, tôi cần một máy chủ và bộ điều khiển miền riêng biệt. Khi nó quay ra, có như 9 lĩnh vực khác nhau mà đội của tôi đòi hỏi phải được thiết lập cho tất cả các môi trường khác nhau mà chúng ta sẽ được truy cập vào AD ...

  • env1.dev.mycompany.com
  • env1.qa.mycompany.com
  • env1.stage.mycompany.com
  • env2.dev.mycompany.com
  • vv

... Vì vậy, bây giờ tôi đã đặt trên trên bản thân mình som ewhat của một nhức đầu hành chính bởi vì tôi sẽ phải duy trì tất cả các máy này (hoặc VM), mà là một cái gì đó mà tôi không nhất thiết phải chắc chắn tôi muốn làm.

2) Tất cả đều không tốt. Nguyên mẫu thực sự chắc chắn, và AD làm cho một cơ sở dữ liệu rất tốt cho giải pháp, nhưng bây giờ tôi tự hỏi nếu tôi nên loại bỏ mã và viết một nhà cung cấp dữ liệu SQL Server thay thế (tôi biết. Net đã cung cấp một , nhưng nó không phải một mình phù hợp với yêu cầu kinh doanh của tôi để ủy quyền).

Dù sao, vì vậy tôi đang cố gắng suy nghĩ qua vấn đề này từ góc độ cao. Nói chung, tôi tiếp tục vấp ngã trên thực tế là tôi sẽ ném một giải pháp thực sự tốt chỉ vì một số bảo trì máy chủ? Tôi tự hỏi nếu có ai ở đây đã trải qua một kịch bản như thế này và chính xác những gì bạn quyết định làm.

Không cần phải cụ thể cho AD, hoặc chỉ là tình huống mà bạn phải đánh giá giữa giải pháp phần mềm tốt và hạn chế bảo trì máy chủ của nó.

+0

có lỗi đánh máy trong thẻ cuối cùng: 'lập trình-descisions' –

+0

Thẻ "quyết định lập trình" ngay cả * có nghĩa là gì *? Có vẻ như vô dụng ... –

Trả lời

4

Nói chung, khả năng sử dụng của sản phẩm là điều khiến mọi người lựa chọn giữa sản phẩm và các sản phẩm tương tự. Nếu sản phẩm có khả năng sử dụng kém, người dùng sẽ không quan tâm mã của nó có chất lượng cao như thế nào - tất cả những gì quan trọng đối với họ là cách sử dụng dễ dàng và hiệu quả và mức độ đáp ứng nhu cầu của họ.

Bảo trì có thể được coi là một khía cạnh của khả năng sử dụng. Tôi sẽ ưu tiên hàng đầu để có một sản phẩm dễ bảo trì. Về lâu dài sẽ tiết kiệm được nhiều giờ làm việc từ các quản trị viên.

Một cách để suy nghĩ về điều này, trước hết là thiết kế giải pháp có thể sử dụng nhất từ ​​quan điểm của người dùng/quản trị viên là gì và sau đó làm cho nó trở thành một thách thức trí tuệ để thực sự triển khai giải pháp tối ưu đó. Nó có lẽ sẽ đòi hỏi nhiều nỗ lực hơn từ lập trình viên, nhưng kết quả cuối cùng sẽ tốt hơn.

Ví dụ ZFS là một sản phẩm được bảo trì tốt (mặc dù tôi chưa từng sử dụng nó). Khi nó được thiết kế, nhiều nỗ lực đã được đưa vào để dễ dàng quản trị hệ thống tệp bằng các công cụ dòng lệnh của ZFS - và các quyết định thiết kế đó ảnh hưởng đến tất cả các cấp của ZFS (ví dụ các nhóm lưu trữ).

Một ví dụ khác, gần đây tôi đã lên kế hoạch làm thế nào để bảo trì trong một dự án tương lai của tôi - một cơ sở dữ liệu phân tán và máy chủ ứng dụng. Suy nghĩ về cách các nhiệm vụ quản trị điển hình sẽ xảy ra (cài đặt/nâng cấp ứng dụng, thêm/xóa các máy chủ trong cluster, giải quyết lỗi phần cứng, vv), đã giúp tôi phân loại một số quyết định thiết kế. Một số người trong số họ đi khá sâu vào kiến ​​trúc của hệ thống (ví dụ như các ứng dụng và các phần mở rộng được nạp như thế nào trong thời gian chạy, và cách các máy chủ tìm các máy chủ khác trong cụm).

+1

+1 cho ý kiến ​​về suy nghĩ của "nhiệm vụ quản trị điển hình". Rõ ràng hệ thống kinh doanh avg được sử dụng trong 7 năm. Đáng xem xét bảo trì. – Karl

1

Nếu thiết lập một dấu hiệu đơn trên hệ thống cho hệ thống Windows, tôi rất thích sử dụng AD. Là quản trị viên của sys. Tôi cố gắng tuân theo chính sách một nguồn dữ liệu. AD đã nắm giữ nhiều người dùng Windows/dữ liệu bảo mật của tôi. Tôi muốn có tất cả trong đó hơn là một hệ thống thứ hai.

Khi thiết lập môi trường dev/test/prod Tôi cố gắng đảm bảo rằng đối sánh chặt chẽ với sản phẩm Prod, đặc biệt nhất trong khu vực đang được thực hiện (nơi các nỗ lực phát triển đang được đặt, v.v ...). Vì vậy, nếu thiết lập hệ thống để phát triển một giao diện với AD, tôi có thể sẽ có nhiều máy chủ AD.

Tùy chọn nào có thể đơn giản hóa quản trị viên?

Bạn có thể có 1 máy chủ chính mà bạn duy trì theo cách tiêu chuẩn và sử dụng một cái gì đó giống như quy trình sao chép VMware để duy trì tất cả hoặc hầu hết các ứng dụng khác không?Thay vì làm điều gì đó cho 9 máy chủ, hãy giữ 8 bản kia làm bản sao của tấm gương đó, trừ các thay đổi được thực hiện để hỗ trợ dev/test?

Bạn có thể chạy nhiều miền Dev hoặc Kiểm tra từ 1 máy chủ AD không?

Bạn có thể viết hành động không?

Bạn có thể giảm số lượng môi trường, đặc biệt là khi kết thúc thử nghiệm cao hơn không? Ví dụ. cung cấp nhiều môi trường dev và đưa các bản phát hành vào một thử nghiệm đơn lẻ?

+0

> Bạn có thể chạy nhiều miền Dev hoặc Kiểm tra từ 1 máy chủ AD không? Tôi không nghĩ bạn có thể Karl. Đây là những gì tôi muốn làm nhưng tôi đã đọc cho ngày về điều này và tôi không thể tìm ra cách. –

+0

Tôi đã không nghĩ đến nhiều máy chủ/máy chủ; thay vì có thể 2 trường hợp của bạn ứng dụng/mã cơ sở chạy trên một hệ thống AD? Tôi đã làm điều này với DBs, nó sẽ làm việc cho AD của bạn? – Karl

1

Tại sao không chỉ sử dụng các OU thay vì các tên miền riêng biệt khi thử nghiệm? Tức là, có một tên miền, nhưng chỉ định rằng người dùng cho các phiên bản cụ thể phải được tìm thấy trong một OU cụ thể bên trong miền đó. Những gì bạn sẽ làm là trong các chức năng tìm kiếm của bạn để tìm kiếm người dùng, bạn sẽ chỉ định OU cụ thể làm gốc tìm kiếm thay vì gốc của tên miền. Trong mỗi OU bạn có thể có id mà kết hợp với môi trường để giữ cho chúng độc đáo, ví dụ user_env1_dev, user_env2_dev, user_env1_qa ...

tôi sử dụng AD rất nhiều cho ứng dụng của tôi và không bao giờ thiết lập các lĩnh vực riêng biệt cho phát triển/kiểm tra.

+0

Nó được xem xét nhưng nó sẽ không hoạt động vì 1) Chúng tôi đang sử dụng OU để đại diện cho các đối tượng khác và kết hợp hai tập quán có thể gây nhầm lẫn và 2) cân nhắc ràng buộc an ninh; trong khi đó là sự thật, bạn có thể chỉ định rằng người dùng thuộc về là thành viên của một nhóm trong và OU, họ vẫn có thể xác thực về mặt kỹ thuật đối với miền. –

1

Sử dụng mẫu nhà cung cấp và tóm tắt các cuộc gọi nguồn dữ liệu của bạn.

Sau đó, bạn có thể định cấu hình để sử dụng AD hoặc SQL khi đang di chuyển.

+0

Lời khuyên tốt nhưng tôi đã làm điều đó :-) Tôi có một JSONDataProvider mà tôi sử dụng để kiểm tra tất cả. Công việc mà tôi sẽ phải vứt bỏ là tất cả công việc tôi đã làm để xây dựng thư viện "ActiveDirectoryDataProvider" của tôi. –

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