Điểm:1

Làm cách nào để lưu trữ một ứng dụng cho nhiều khách hàng?

lá cờ cn

Tôi đã tạo một ứng dụng web với NextJS mà tôi bán b2b, nơi người dùng (khách hàng của khách hàng của tôi) có thể đăng ký một vị trí. Họ cung cấp tên của họ và nhận được một số kiểm tra trong. Ứng dụng hiển thị thông tin liên quan đến khách hàng (giờ mở cửa, địa chỉ,â¦)

Phần thứ hai của ứng dụng là bảng quản trị để khách hàng của tôi đăng nhập và xem tất cả các tên cũng như số đăng ký và có thể cung cấp thêm thông tin.

Hiện tại, tôi đang ở giai đoạn thử nghiệm và khách hàng của tôi là các công ty của bạn bè, nhưng ứng dụng đang mở rộng quy mô rất tốt và tôi cần một cách tiếp cận tốt hơn những cách sau:

  • khách hàng của tôi mua VPS và miền
  • Tôi cài đặt ngăn xếp LEMP
  • Tôi proxy tên miền trong nginx thành localhost:3000
  • Tôi định cấu hình cơ sở dữ liệu để lưu trữ khách hàng
  • Tôi sao chép thư mục gốc của ứng dụng của mình vào máy chủ và chạy nó (npm run build && npm run start)

Tôi làm điều này cho mọi khách hàng (hiện tại là 25). Khi có một khách hàng mới hoặc một bản cập nhật của ứng dụng, đó là công việc thủ công khó khăn. Điều rất quan trọng là khách hàng của tôi không thấy rằng có những công ty khác đang sử dụng ứng dụng của tôi.

Điều tôi muốn thực hiện bây giờ là ý tưởng sau đây và tôi muốn biết liệu có cách tiếp cận nào tốt hơn hoặc đây có phải là cách thực hành tốt hay không:

  • Tôi muốn mở rộng quy mô tới hơn 500 khách hàng
  • Tôi sử dụng VPS của riêng mình
  • Mỗi khách hàng có một tên miền phụ của tên miền của riêng tôi (điều này không sao đối với khách hàng của tôi)
  • Khách hàng của tôi không cần thêm máy chủ nữa
  • Tôi tạo một bảng trong cơ sở dữ liệu MySQL của mình với thông tin khách hàng (giờ mở cửa, địa chỉ,â¦)
  • Trong ứng dụng Nextjs, tôi phát hiện tên miền phụ và truy vấn cơ sở dữ liệu của mình
  • Tôi có một bảng dành cho khách hàng đã đăng ký liên quan đến bảng cấu hình
  • tôi bắt đầu một ví dụ về ứng dụng của tôi
  • Tôi định vị tất cả các tên miền phụ cho một phiên bản đó
  • khách hàng của tôi có một màn hình đăng nhập của quản trị viên và sau khi đăng nhập, họ tải dữ liệu liên quan đến thông tin đăng nhập (sử dụng JWT để khách hàng không thể lấy dữ liệu từ các khách hàng khác)
  • Đối với những khách hàng mới, tôi chỉ cần thêm một tên miền phụ mới và một hàng MySQL và họ đã sẵn sàng hoạt động. Điều này rất dễ quản lý và nếu có bản cập nhật, tôi chỉ cập nhật một phiên bản ứng dụng của mình.
lá cờ ua
Xin lỗi, nhưng bạn đang phát minh lại một ứng dụng được triển khai tốt. Câu hỏi của bạn cho thấy rằng bạn có rất nhiều việc phải làm - nhiều hơn những gì sẽ được thảo luận trong một Câu hỏi duy nhất tại đây.
lá cờ jp
Bạn cần xem xét mẫu ứng dụng Nhiều người thuê.
Điểm:0
lá cờ ar

Có lẽ bạn nên xem xét một giải pháp lưu trữ đám mây, chẳng hạn như Azure.

Tôi khuyên bạn nên xem xét việc chứa ứng dụng của mình và liên kết nó với cơ sở dữ liệu bên ngoài theo ý thích của bạn. Azure, AWS và Google đều hỗ trợ chạy bộ chứa docker với ứng dụng của bạn bên trong nó - đây ít nhiều là mục đích của bộ chứa.

Bạn có thể viết kịch bản tạo tài nguyên trong tất cả các dịch vụ đám mây, vì vậy bạn có thể thiết lập giới thiệu đơn giản chỉ bằng một cú nhấp chuột.

Được kết hợp với một kho lưu trữ riêng cho hình ảnh docker, điều này cũng có thể hợp lý hóa việc cập nhật ứng dụng, vì vậy việc bảo trì ít gây đau đầu hơn.

Chi tiết chính xác về cách thiết lập điều này phần lớn phụ thuộc vào cách ứng dụng của bạn được cấu trúc.

PhilHarmonie avatar
lá cờ cn
Tôi không biết quy trình đóng gói sẽ như thế nào, nhưng có vẻ như một khách hàng mới lại cần thời gian chuẩn bị tương tự. Mọi thứ giống như tạo một tên miền phụ mới và một mục nhập MySQL cho cấu hình máy khách là quá nhiều việc phải làm đối với một quy mô. Với miền ký tự đại diện, tôi thậm chí có thể tránh được việc tạo miền phụ và nó chỉ cần đăng lên cơ sở dữ liệu của tôi là xong. Nhưng đây có phải là một cách tiếp cận đáng tin cậy?
vidarlo avatar
lá cờ ar
Chắc chắn rồi, bạn có thể chạy nhiều khách hàng trên một vùng chứa nếu muốn. Nhưng tôi ủng hộ việc tách khách hàng càng xa càng tốt và việc đóng gói có thể giảm thiểu thời gian thiết lập.
PhilHarmonie avatar
lá cờ cn
Khi mỗi ứng dụng chạy trong một vùng chứa khác nhau, tất cả chúng sẽ chạy trên các cổng khác nhau. Vì vậy, tôi cần quan tâm đến việc ánh xạ tên miền phụ, cổng và cấu hình. Đó là một cấp độ nữa, mà tôi cần phải chăm sóc, đúng không?
vidarlo avatar
lá cờ ar
Nó phụ thuộc. Nếu bạn chạy nó trên dịch vụ của nhà cung cấp đám mây, họ sẽ xử lý điều kỳ diệu đó. Nếu bạn chạy với hộp của riêng mình, bạn cần có một proxy ngược hoặc tương tự ở phía trước hộp.
PhilHarmonie avatar
lá cờ cn
Tôi muốn thích VPS của tôi hơn. Tôi có thể ủy quyền ở đó bằng nginx.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.