Cách deploy APIs và trang admin viết trong cùng một bộ source ở 2 host với 2 domain khác nhau
Chào mọi người, mình có chút vấn đề khi deploy mong mọi người giúp đỡ. Hiện tại bộ source dự án của mình đang viết chung cho cả APIs và trang quản lý, bây giờ mình muốn deploy 2 cái trên 2 host khác nhau và 2 tên miền khác nhau và cả hai đều cùng trỏ chung vào một database (đặt ở host deploy phần API) thì có được không nhỉ. Có cách nào đảm bảo là domain cho API thì chỉ gọi dc API và domain cho trang quản trị thì chỉ được vào trang quản trị thôi. Nếu trang quản trị gọi database đặt ở host đang deploy phần API thì có bị chậm đi nhiều không nhỉ. Nếu bây giờ viết lại phần quản trị ở bộ source khác thì hơi thốn nên mong mọi người giúp đỡ, cho mình chút lời khuyên ạ, cảm ơn ạ
1 CÂU TRẢ LỜI
Chào mọi người, mình có chút vấn đề khi deploy mong mọi người giúp đỡ. Hiện tại bộ source dự án của mình đang viết chung cho cả APIs và trang quản lý, bây giờ mình muốn deploy 2 cái trên 2 host khác nhau và 2 tên miền khác nhau và cả hai đều cùng trỏ chung vào một database (đặt ở host deploy phần API) thì có được không nhỉ.
Hoàn toàn được nhé bạn
Có cách nào đảm bảo là domain cho API thì chỉ gọi dc API và domain cho trang quản trị thì chỉ được vào trang quản trị thôi.
Ý bạn là ở phần server API thì không cho phép người dùng vào trang quản trị, còn ở trang quản trị thì không cho phép người dùng gọi API đúng không nhỉ Không rõ bạn đang sử dụng ngôn ngữ gì để viết backend, nên mình cũng không dám đưa ra hướng dẫn chi tiết, nhưng bạn có thể tìm cách disable hết các route liên quan đến trang admin khi deploy ở server API, và ngược lại
Nếu trang quản trị gọi database đặt ở host đang deploy phần API thì có bị chậm đi nhiều không nhỉ.
Tuỳ thuộc vào 2 server bạn sử dụng ở trường hợp này là như thế nào. Nếu bạn dùng 2 server thuộc cùng một nhà cung cấp, cùng một vùng địa lý thì tốc độ mạng giữa chúng chắc sẽ rất tốt. Bạn cứ thử vào một trong 2 server để ping đến server kia xem sao. Ping time giữa chúng rơi vào hàng 1ms, hoặc thấp hơn, thì bạn có thể yên tâm là tốc độ service cũng không bị ảnh hưởng nhiều đâu, bởi thời gian đó nhỏ hơn nhiều so với thời gian Database của bạn thực hiện truy vấn để trả về dữ liệu
Nếu bây giờ viết lại phần quản trị ở bộ source khác thì hơi thốn nên mong mọi người giúp đỡ, cho mình chút lời khuyên ạ, cảm ơn ạ
Bạn cũng không cần phải viết lại toàn bộ phần quản trị mà, chỉ là tách riêng nó ra để quản lý ở một repository khác, và remove các phần code không cần thiết (của API) đi Phần source code của API bạn cũng làm tương tự, như vậy thì cũng có thể giải quyết được vấn đề bạn đề cập ở trên, là không cho truy cập phần API từ service quản trị ... Có thể nó sẽ khiến bạn tốn nhiều công sức ban đầu để chỉnh sửa lại code, nhưng đó là cách mà mình nghĩ bạn nên cân nhắc thực hiện sau này, để có thể quản lý, và maintain codes tốt hơn
nhưng bạn có thể tìm cách disable hết các route liên ban đến trang admin khi deploy ở server API, và ngược lại 😄
Nếu là mình thì mình sẽ đặt biến môi trường định nghĩa role của từng server, khi vào controller thì check biến môi trường, không đúng role thì báo lỗi luôn 😃
Source mình đang dùng Laravel, nếu viết Middleware để ràng buộc để host Deploy API chỉ gọi được API và host deploy trang Admin chỉ vào được trang Admin thì có ok không nhỉ
@vhung Đúng rồi bạn, bạn thiết lập một biến trong file .env
để phân biệt 2 service, rồi dựa vào giá trị trong .env
đó để disable các route tương ứng.
Và các logic đó bạn có thể để trong một middleware.
Mình làm được rồi, cảm ơn bạn